Repository: intuit/auto
Pull request #1146 (2020-04-13 15:58:14)

Bump @octokit/rest from 16.43.1 to 17.2.1
Bumps [@octokit/rest](https://github.com/octokit/rest.js) from 16.43.1 to 17.2.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/octokit/rest.js/releases">@octokit/rest's releases</a>.</em></p>
<blockquote>
<h2>v17.2.1</h2>
<h2><a href="https://github.com/octokit/rest.js/compare/v17.2.0...v17.2.1">17.2.1</a> (2020-04-12)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>TypeScript:</strong> method description updates (<a href="https://github-redirect.dependabot.com/octokit/rest.js/issues/1671">#1671</a>) (<a href="https://github.com/octokit/rest.js/commit/3fba786c32c5a77dd7e6842dca7f8f6dbe06b87d">3fba786</a>)</li>
</ul>
<h2>v17.2.0</h2>
<h1><a href="https://github.com/octokit/rest.js/compare/v17.1.4...v17.2.0">17.2.0</a> (2020-04-08)</h1>
<h3>Features</h3>
<ul>
<li>maintain and triage user permissions in orgs, gambit preview graduated (<a href="https://github-redirect.dependabot.com/octokit/rest.js/issues/32">#32</a>) (<a href="https://github-redirect.dependabot.com/octokit/rest.js/issues/1665">#1665</a>) (<a href="https://github.com/octokit/rest.js/commit/76f7fbe61af930294e55c3883284e14d0948f8c6">76f7fbe</a>)</li>
</ul>
<h2>v17.1.4</h2>
<h3>Renames</h3>
<p>The previous methods have been deprecated.</p>
<ul>
<li><code>octokit.activity.checkStarringRepo()</code> -&gt; <code>octokit.activity.checkRepoIsStarredByAuthenticatedUser()</code></li>
<li><code>octokit.activity.listEventsForOrg()</code> -&gt; <code>octokit.activity.listOrgEventsForAuthenticatedUser()</code></li>
<li><code>octokit.activity.listEventsForUser()</code> -&gt; <code>octokit.activity.listEventsForAuthenticatedUser()</code></li>
<li><code>octokit.activity.listFeeds()</code> -&gt; <code>octokit.activity.getFeeds()</code></li>
<li><code>octokit.activity.listNotifications()</code> -&gt; <code>octokit.activity.listNotificationsForAuthenticatedUser()</code></li>
<li><code>octokit.activity.listNotificationsForRepo()</code> -&gt; <code>octokit.activity.listRepoNotificationsForAuthenticatedUser()</code></li>
<li><code>octokit.activity.listPublicEventsForOrg()</code> -&gt; <code>octokit.activity.listPublicOrgEvents()</code></li>
<li><code>octokit.activity.markAsRead()</code> -&gt; <code>octokit.activity.markNotificationsAsRead()</code></li>
<li><code>octokit.activity.markNotificationsAsReadForRepo()</code> -&gt; <code>octokit.activity.markRepoNotificationsAsRead()</code></li>
<li><code>octokit.activity.starRepo()</code> -&gt; <code>octokit.activity.starRepoForAuthenticatedUser()</code></li>
<li><code>octokit.activity.unstarRepo()</code> -&gt; <code>octokit.activity.unstarRepoForAuthenticatedUser()</code></li>
</ul>
<h2>v17.1.3</h2>
<h2><a href="https://github.com/octokit/rest.js/compare/v17.1.2...v17.1.3">17.1.3</a> (2020-03-25)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>update @octokit/plugin-rest-endpoint-methods to version 3.3.3 and pin versino in package.json (<a href="https://github.com/octokit/rest.js/commit/a492db42786e2be8111b36bd976116d4b4fb0a39">a492db4</a>), closes <a href="https://github-redirect.dependabot.com/octokit/rest.js/issues/1657">#1657</a></li>
</ul>
<h2>v17.1.2</h2>
<h2><a href="https://github.com/octokit/rest.js/compare/v17.1.1...v17.1.2">17.1.2</a> (2020-03-24)</h2>
</tr></table> ... (truncated)
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/octokit/rest.js/commit/3fba786c32c5a77dd7e6842dca7f8f6dbe06b87d"><code>3fba786</code></a> fix(TypeScript): method description updates (<a href="https://github-redirect.dependabot.com/octokit/rest.js/issues/1671">#1671</a>)</li>
<li><a href="https://github.com/octokit/rest.js/commit/76f7fbe61af930294e55c3883284e14d0948f8c6"><code>76f7fbe</code></a> feat: maintain and triage user permissions in orgs, gambit preview graduated ...</li>
<li><a href="https://github.com/octokit/rest.js/commit/596ab00a39557d6128810be86d4aa920d2b925f2"><code>596ab00</code></a> docs: close nav menu when link is clicked on mobile (<a href="https://github-redirect.dependabot.com/octokit/rest.js/issues/1663">#1663</a>)</li>
<li><a href="https://github.com/octokit/rest.js/commit/722d621e9ff35282b7870ab491f573e791a4e4f7"><code>722d621</code></a> fix(package): update @octokit/plugin-rest-endpoint-methods to version 3.4.0 (...</li>
<li><a href="https://github.com/octokit/rest.js/commit/a492db42786e2be8111b36bd976116d4b4fb0a39"><code>a492db4</code></a> fix: update @octokit/plugin-rest-endpoint-methods to version 3.3.3 and pin ve...</li>
<li><a href="https://github.com/octokit/rest.js/commit/1c1df88f8936b456c8c00691f9392fd1b913f51f"><code>1c1df88</code></a> fix: update <code>Octokit.plugin()</code> API to remove deprecation</li>
<li><a href="https://github.com/octokit/rest.js/commit/ee4a65a7956fb12215ca408098ca2e0299efc455"><code>ee4a65a</code></a> docs: update <code>Octokit.plugin()</code> API from array argument to multiple arguments</li>
<li><a href="https://github.com/octokit/rest.js/commit/1f884fb8cc76fa87cfd7aa9b89ab7bfc923c0b4d"><code>1f884fb</code></a> build: update dependencies</li>
<li><a href="https://github.com/octokit/rest.js/commit/710cfe6342f144df7173f71135f4cfd04ce155ec"><code>710cfe6</code></a> chore(package): update lockfile package-lock.json</li>
<li><a href="https://github.com/octokit/rest.js/commit/0cf5838c6f9400b31e0183ac853c1fe350495eb6"><code>0cf5838</code></a> chore(package): update prettier to version 2.0.0</li>
<li>Additional commits viewable in <a href="https://github.com/octokit/rest.js/compare/v16.43.1...v17.2.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=@octokit/rest&package-manager=npm_and_yarn&previous-version=16.43.1&new-version=17.2.1)](https://dependabot.com/compatibility-score/?dependency-name=@octokit/rest&package-manager=npm_and_yarn&previous-version=16.43.1&new-version=17.2.1)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)



</details>
<!-- GITHUB_RELEASE PR BODY: canary-version -->
<details>
  <summary>📦 Published PR as canary version: <code>under canary scope @auto-canary@9.32.4-canary.1146.15654.0</code></summary>
  <br />
  
  :sparkles: Test out this PR locally via:
  
  ```sh
  npm install @auto-canary/bot-list@9.32.4-canary.1146.15654.0
  npm install @auto-canary/auto@9.32.4-canary.1146.15654.0
  npm install @auto-canary/core@9.32.4-canary.1146.15654.0
  npm install @auto-canary/all-contributors@9.32.4-canary.1146.15654.0
  npm install @auto-canary/brew@9.32.4-canary.1146.15654.0
  npm install @auto-canary/chrome@9.32.4-canary.1146.15654.0
  npm install @auto-canary/cocoapods@9.32.4-canary.1146.15654.0
  npm install @auto-canary/conventional-commits@9.32.4-canary.1146.15654.0
  npm install @auto-canary/crates@9.32.4-canary.1146.15654.0
  npm install @auto-canary/exec@9.32.4-canary.1146.15654.0
  npm install @auto-canary/first-time-contributor@9.32.4-canary.1146.15654.0
  npm install @auto-canary/gh-pages@9.32.4-canary.1146.15654.0
  npm install @auto-canary/git-tag@9.32.4-canary.1146.15654.0
  npm install @auto-canary/gradle@9.32.4-canary.1146.15654.0
  npm install @auto-canary/jira@9.32.4-canary.1146.15654.0
  npm install @auto-canary/maven@9.32.4-canary.1146.15654.0
  npm install @auto-canary/npm@9.32.4-canary.1146.15654.0
  npm install @auto-canary/omit-commits@9.32.4-canary.1146.15654.0
  npm install @auto-canary/omit-release-notes@9.32.4-canary.1146.15654.0
  npm install @auto-canary/released@9.32.4-canary.1146.15654.0
  npm install @auto-canary/s3@9.32.4-canary.1146.15654.0
  npm install @auto-canary/slack@9.32.4-canary.1146.15654.0
  npm install @auto-canary/twitter@9.32.4-canary.1146.15654.0
  npm install @auto-canary/upload-assets@9.32.4-canary.1146.15654.0
  # or 
  yarn add @auto-canary/bot-list@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/auto@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/core@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/all-contributors@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/brew@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/chrome@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/cocoapods@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/conventional-commits@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/crates@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/exec@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/first-time-contributor@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/gh-pages@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/git-tag@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/gradle@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/jira@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/maven@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/npm@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/omit-commits@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/omit-release-notes@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/released@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/s3@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/slack@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/twitter@9.32.4-canary.1146.15654.0
  yarn add @auto-canary/upload-assets@9.32.4-canary.1146.15654.0
  ```
</details>
<!-- GITHUB_RELEASE PR BODY: canary-version -->


dependabot-preview[bot]: A newer version of \@octokit/rest exists, but since this PR has been edited by someone other than Dependabot I haven't updated it. You'll get a PR for the updated version as normal once this PR is merged.

Patch:
diff --git a/package.json b/package.json
index cd7e0d55..8fb9d9ab 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,7 @@
     "eslint-config-xo": "^0.29.1",
     "eslint-plugin-import": "^2.18.2",
     "eslint-plugin-jest": "^23.0.1",
-    "eslint-plugin-jsdoc": "^25.2.0",
+    "eslint-plugin-jsdoc": "^24.0.0",
     "eslint-plugin-prettier": "^3.1.1",
     "graphql": "^15.0.0",
     "husky": "^4.0.7",
@@ -71,6 +71,7 @@
     "rimraf": "^3.0.0",
     "title-case": "^3.0.2",
     "ts-jest": "^25.0.0",
+    "type-fest": "^0.13.1",
     "typescript": "~3.8.3"
   },
   "husky": {
diff --git a/packages/core/package.json b/packages/core/package.json
index 0ee7c9eb..f2e23115 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -38,12 +38,11 @@
   },
   "dependencies": {
     "@auto-it/bot-list": "link:../../packages/bot-list",
-    "@octokit/core": "2.4.2",
-    "@octokit/graphql": "4.3.1",
-    "@octokit/plugin-enterprise-compatibility": "1.2.2",
-    "@octokit/plugin-retry": "3.0.1",
+    "@octokit/graphql": "^4.4.0",
+    "@octokit/plugin-enterprise-compatibility": "^1.2.2",
+    "@octokit/plugin-retry": "^3.0.1",
     "@octokit/plugin-throttling": "^3.2.0",
-    "@octokit/rest": "16.43.1",
+    "@octokit/rest": "^17.9.0",
     "await-to-js": "^2.1.1",
     "chalk": "^4.0.0",
     "cosmiconfig": "6.0.0",
diff --git a/packages/core/src/auto.ts b/packages/core/src/auto.ts
index 96b8f35a..f4b5ec62 100644
--- a/packages/core/src/auto.ts
+++ b/packages/core/src/auto.ts
@@ -1,4 +1,4 @@
-import { Octokit } from "@octokit/rest";
+import { RestEndpointMethodTypes } from "@octokit/rest";
 import dotenv from "dotenv";
 import envCi from "env-ci";
 import fs from "fs";
@@ -117,6 +117,8 @@ interface BeforeShipitContext {
   releaseType: ShipitRelease;
 }
 
+type PublishResponse = RestEndpointMethodTypes["repos"]["createRelease"]["response"];
+
 export interface IAutoHooks {
   /** Modify what is in the config. You must return the config in this hook. */
   modifyConfig: SyncWaterfallHook<[LoadedAutoRc]>;
@@ -154,9 +156,7 @@ export interface IAutoHooks {
         /** The generated release notes for the commits */
         releaseNotes: string;
         /** The response from creating the new release. */
-        response?:
-          | Octokit.Response<Octokit.ReposCreateReleaseResponse>
-          | Array<Octokit.Response<Octokit.ReposCreateReleaseResponse>>;
+        response?: PublishResponse | PublishResponse[];
       }
     ]
   >;
@@ -178,9 +178,7 @@ export interface IAutoHooks {
         commits: IExtendedCommit[];
       }
     ],
-    | Octokit.Response<Octokit.ReposCreateReleaseResponse>
-    | Array<Octokit.Response<Octokit.ReposCreateReleaseResponse>>
-    | void
+    PublishResponse | PublishResponse[] | void
   >;
   /** Get git author. Typically from a package distribution description file. */
   getAuthor: AsyncSeriesBailHook<[], Partial<AuthorInformation> | void>;
@@ -728,6 +726,8 @@ export default class Auto {
 
   /**
    * Create all of the user's labels on the git remote if the don't already exist
+   *
+   * @param options - Options for the createLabels functionality
    */
   async createLabels(options: ICreateLabelsOptions = {}) {
     if (!this.release || !this.labels) {
@@ -739,6 +739,8 @@ export default class Auto {
 
   /**
    * Get the labels on a specific PR. Defaults to the labels of the last merged PR
+   *
+   * @param options - Options for the createLabels functionality
    */
   async label({ pr }: ILabelOptions = {}) {
     if (!this.git) {
@@ -775,6 +777,8 @@ export default class Auto {
 
   /**
    * Create a status on a PR.
+   *
+   * @param options - Options for the pr status functionality
    */
   async prStatus({ dryRun, pr, url, ...options }: IPRStatusOptions) {
     if (!this.git) {
@@ -828,6 +832,8 @@ export default class Auto {
 
   /**
    * Check that a PR has a SEMVER label. Set a success status on the PR.
+   *
+   * @param options - Options for the pr check functionality
    */
   async prCheck({ dryRun, pr, url, ...options }: IPRCheckOptions) {
     if (!this.git || !this.release || !this.semVerLabels) {
@@ -923,6 +929,8 @@ export default class Auto {
   /**
    * Comment on a PR. Only one comment will be present on the PR, Older comments are removed.
    * You can use the "context" option to multiple comments on a PR.
+   *
+   * @param args - Options for the comment functionality
    */
   async comment(args: ICommentOptions) {
     const options = { ...this.getCommandDefault("comment"), ...args };
@@ -980,6 +988,8 @@ export default class Auto {
    * Update the body of a PR with a message. Only one message will be present in the PR,
    * Older messages are removed. You can use the "context" option to multiple message
    * in a PR body.
+   *
+   * @param options - Options
    */
   async prBody(options: ICommentOptions) {
     const {
diff --git a/packages/core/src/git.ts b/packages/core/src/git.ts
index f9873b9d..001eef77 100644
--- a/packages/core/src/git.ts
+++ b/packages/core/src/git.ts
@@ -3,7 +3,7 @@ import { enterpriseCompatibility } from "@octokit/plugin-enterprise-compatibilit
 import path from "path";
 import { retry } from "@octokit/plugin-retry";
 import { throttling } from "@octokit/plugin-throttling";
-import { Octokit } from "@octokit/rest";
+import { Octokit, RestEndpointMethodTypes } from "@octokit/rest";
 import { gitlogPromise as gitlog } from "gitlog";
 import { HttpsProxyAgent } from "https-proxy-agent";
 import tinyColor from "tinycolor2";
@@ -23,7 +23,10 @@ import { buildSearchQuery, ISearchResult } from "./match-sha-to-pr";
 type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>> &
   Partial<Pick<T, K>>;
 
-export type IPRInfo = Omit<Octokit.ReposCreateStatusParams, "owner" | "repo">;
+export type IPRInfo = Omit<
+  RestEndpointMethodTypes["repos"]["createStatus"]["parameters"],
+  "owner" | "repo"
+>;
 
 export interface IGitOptions {
   /** Github repo owner (user) */
@@ -118,7 +121,7 @@ export default class Git {
             return true;
           }
         },
-        onAbuseLimit: (retryAfter: number, opts: ThrottleOpts) => {
+        onAbuseLimit: (_: number, opts: ThrottleOpts) => {
           // does not retry, only logs an error
           this.logger.log.error(
             `Went over abuse rate limit ${opts.method} ${opts.url}`
@@ -218,7 +221,7 @@ export default class Git {
   async getLabels(prNumber: number) {
     this.logger.verbose.info(`Getting labels for PR: ${prNumber}`);
 
-    const args: Octokit.IssuesListLabelsOnIssueParams = {
+    const args: RestEndpointMethodTypes["issues"]["listLabelsOnIssue"]["parameters"] = {
       owner: this.options.owner,
       repo: this.options.repo,
       issue_number: prNumber,
@@ -245,7 +248,7 @@ export default class Git {
   async getPr(prNumber: number) {
     this.logger.verbose.info(`Getting info for PR: ${prNumber}`);
 
-    const args: Octokit.IssuesListLabelsOnIssueParams = {
+    const args: RestEndpointMethodTypes["issues"]["get"]["parameters"] = {
       owner: this.options.owner,
       repo: this.options.repo,
       issue_number: prNumber,
@@ -295,8 +298,9 @@ export default class Git {
     };
 
     try {
-      const labels: Octokit.IssuesListLabelsForRepoResponse = await this.github.paginate(
-        this.github.issues.listLabelsForRepo.endpoint(args)
+      const labels = await this.github.paginate(
+        this.github.issues.listLabelsForRepo,
+        args
       );
 
       this.logger.veryVerbose.info(
@@ -440,7 +444,7 @@ export default class Git {
   async getPullRequest(pr: number) {
     this.logger.verbose.info(`Getting Pull Request: ${pr}`);
 
-    const args: Octokit.PullsGetParams = {
+    const args: RestEndpointMethodTypes["pulls"]["get"]["parameters"] = {
       owner: this.options.owner,
       repo: this.options.repo,
       pull_number: pr,
@@ -457,7 +461,9 @@ export default class Git {
   }
 
   /** Search to GitHub project's issue and pull requests */
-  async searchRepo(options: Octokit.SearchIssuesAndPullRequestsParams) {
+  async searchRepo(
+    options: RestEndpointMethodTypes["search"]["issuesAndPullRequests"]["parameters"]
+  ) {
     const repo = `repo:${this.options.owner}/${this.options.repo}`;
     options.q = `${repo} ${options.q}`;
 
@@ -497,7 +503,9 @@ export default class Git {
 
     this.logger.verbose.info("Creating status using:\n", args);
 
-    const result = await this.github.repos.createStatus(args);
+    const result = await this.github.repos.createStatus(
+      args as RestEndpointMethodTypes["repos"]["createStatus"]["parameters"]
+    );
 
     this.logger.veryVerbose.info("Got response from createStatues\n", result);
     this.logger.verbose.info("Created status on GitHub.");
@@ -621,7 +629,9 @@ export default class Git {
   }
 
   /** Get all the pull requests for a project */
-  async getPullRequests(options?: Partial<Octokit.PullsListParams>) {
+  async getPullRequests(
+    options?: Partial<RestEndpointMethodTypes["pulls"]["list"]["parameters"]>
+  ) {
     this.logger.verbose.info("Getting pull requests...");
 
     const result = (
@@ -640,18 +650,14 @@ export default class Git {
 
   /** Get all the commits for a PR */
   @memoize()
-  async getCommitsForPR(
-    pr: number
-  ): Promise<Octokit.PullsListCommitsResponseItem[]> {
+  async getCommitsForPR(pr: number) {
     this.logger.verbose.info(`Getting commits for PR #${pr}`);
 
-    const result = await this.github.paginate(
-      this.github.pulls.listCommits.endpoint({
-        owner: this.options.owner.toLowerCase(),
-        repo: this.options.repo.toLowerCase(),
-        pull_number: pr,
-      })
-    );
+    const result = await this.github.paginate(this.github.pulls.listCommits, {
+      owner: this.options.owner.toLowerCase(),
+      repo: this.options.repo.toLowerCase(),
+      pull_number: pr,
+    });
 
     this.logger.veryVerbose.info(`Got response from PR #${pr}\n`, result);
     this.logger.verbose.info(`Got commits for PR #${pr}.`);
diff --git a/packages/core/src/release.ts b/packages/core/src/release.ts
index 491ddc2b..22c6e86f 100644
--- a/packages/core/src/release.ts
+++ b/packages/core/src/release.ts
@@ -1,8 +1,4 @@
-import {
-  GraphQlQueryResponse,
-  GraphQlQueryResponseData,
-} from "@octokit/graphql/dist-types/types";
-import { Octokit } from "@octokit/rest";
+import { AsyncReturnType } from "type-fest";
 import on from "await-to-js";
 import * as fs from "fs";
 import chunk from "lodash.chunk";
@@ -252,7 +248,10 @@ export default class Release {
         .filter((q): q is string => Boolean(q))
         .map((q) => this.git.graphql(q))
     );
-    const data = queries.filter((q): q is GraphQlQueryResponse => Boolean(q));
+    type GraphQlQueryResponseData = NonNullable<typeof queries[number]>;
+    const data = queries.filter((q): q is GraphQlQueryResponseData =>
+      Boolean(q)
+    );
 
     if (!data.length) {
       return uniqueCommits;
@@ -265,9 +264,9 @@ export default class Release {
 
     type QueryEntry = [string, GraphQlQueryResponseData];
 
-    const entries = data.reduce(
+    const entries = data.reduce<QueryEntry[]>(
       (acc, result) => [...acc, ...(Object.entries(result) as QueryEntry[])],
-      [] as QueryEntry[]
+      []
     );
 
     await Promise.all(
@@ -630,7 +629,7 @@ export default class Release {
    */
   private getPRForRebasedCommits(
     commit: IExtendedCommit,
-    pullRequests: Octokit.PullsGetResponse[]
+    pullRequests: Array<AsyncReturnType<Git["getPullRequest"]>["data"]>
   ) {
     const matchPr = pullRequests.find(
       (pr) => pr.merge_commit_sha === commit.hash
@@ -655,7 +654,7 @@ export default class Release {
           /** The GitHub user name of the git committer */
           login?: string;
         })
-      | Partial<Octokit.UsersGetByUsernameResponse>
+      | Partial<AsyncReturnType<Git["getUserByUsername"]>>
     > = [];
 
     // If there is a pull request we will attempt to get the authors
diff --git a/plugins/all-contributors/src/index.ts b/plugins/all-contributors/src/index.ts
index 180e2a86..91bed4ac 100644
--- a/plugins/all-contributors/src/index.ts
+++ b/plugins/all-contributors/src/index.ts
@@ -49,11 +49,12 @@ const contributionTypes = [
 ] as const;
 type Contribution = typeof contributionTypes[number];
 
-/** Determine if it's a valid contribution type */
-const isContribution = (
-  contribution: string | Contribution
-): contribution is Contribution =>
-  contributionTypes.includes(contribution as Contribution);
+const isContribution =
+  /**
+ccccccccccccccccccccccc *
+ccccccccccccccccccccccc */
+  (contribution: string | Contribution): contribution is Contribution =>
+    contributionTypes.includes(contribution as Contribution);
 
 /** Get an rc file if there is one. */
 function getRcFile() {
@@ -227,20 +228,17 @@ export default class AllContributorsPlugin implements IPlugin {
             ? endent`
               The following contributions will be added to all-contributors (as well as any code contributions) when this PR is released :tada::
 
-              ${Object.entries(extra)
-                .map(([username, contributions]) => {
-                  const validContributions = [...contributions].filter(
-                    isContribution
-                  );
+              ${Object.entries(extra).map(([username, contributions]) => {
+                const validContributions = [...contributions].filter(
+                  isContribution
+                );
 
-                  if (!validContributions.length) {
-                    return "";
-                  }
+                if (!validContributions.length) {
+                  return "";
+                }
 
-                  return `- @${username} - ${validContributions.join(", ")}`;
-                })
-                .filter(Boolean)
-                .join("\n")}
+                return `- @${username} - ${validContributions.join(", ")}`;
+              }).filter(Boolean).join('\n')}
             `
             : "No valid contribution types found!"
         }
diff --git a/plugins/npm/src/index.ts b/plugins/npm/src/index.ts
index 490b6ea3..66b6f4f3 100644
--- a/plugins/npm/src/index.ts
+++ b/plugins/npm/src/index.ts
@@ -3,7 +3,7 @@ import * as fs from "fs";
 import parseAuthor from "parse-author";
 import path from "path";
 import { Memoize as memoize } from "typescript-memoize";
-import { Octokit } from "@octokit/rest";
+import { RestEndpointMethodTypes } from "@octokit/rest";
 import * as t from "io-ts";
 import { execSync } from "child_process";
 import on from "await-to-js";
@@ -1013,9 +1013,12 @@ export default class NPMPlugin implements IPlugin {
 
         this.renderMonorepoChangelog = false;
 
-        return releases.filter((release): release is Octokit.Response<
-          Octokit.ReposCreateReleaseResponse
-        > => Boolean(release));
+        return releases.filter(
+          (
+            release
+          ): release is RestEndpointMethodTypes["repos"]["createRelease"]["response"] =>
+            Boolean(release)
+        );
       }
     });
   }
diff --git a/plugins/released/src/index.ts b/plugins/released/src/index.ts
index 60aeca8f..e34a28a3 100644
--- a/plugins/released/src/index.ts
+++ b/plugins/released/src/index.ts
@@ -1,6 +1,6 @@
 import { Auto, IPlugin, validatePluginConfiguration } from "@auto-it/core";
 import { IExtendedCommit } from "@auto-it/core/dist/log-parse";
-import { Octokit } from "@octokit/rest";
+import { RestEndpointMethodTypes } from "@octokit/rest";
 
 import merge from "deepmerge";
 import * as t from "io-ts";
@@ -114,7 +114,9 @@ export default class ReleasedLabelPlugin implements IPlugin {
   private async addReleased(
     auto: Auto,
     commit: IExtendedCommit,
-    releases: Array<Octokit.Response<Octokit.ReposCreateReleaseResponse>>
+    releases: Array<
+      RestEndpointMethodTypes["repos"]["createRelease"]["response"]
+    >
   ) {
     const messages = [commit.subject];
     const isPrerelease = releases.some((r) => r.data.prerelease);
@@ -185,7 +187,9 @@ export default class ReleasedLabelPlugin implements IPlugin {
     /** Whether the release was a prerelease */
     isPrerelease?: boolean;
     /** All of the releases that happened */
-    releases: Array<Octokit.Response<Octokit.ReposCreateReleaseResponse>>;
+    releases: Array<
+      RestEndpointMethodTypes["repos"]["createRelease"]["response"]
+    >;
   }) {
     // leave a comment with the new version
     const urls = releases.map((release) =>
diff --git a/plugins/slack/package.json b/plugins/slack/package.json
index 8e51fc37..ad464a4b 100644
--- a/plugins/slack/package.json
+++ b/plugins/slack/package.json
@@ -39,7 +39,7 @@
   "dependencies": {
     "@atomist/slack-messages": "~1.1.0",
     "@auto-it/core": "link:../../packages/core",
-    "@octokit/rest": "16.43.1",
+    "@octokit/rest": "^17.9.0",
     "fp-ts": "^2.5.3",
     "https-proxy-agent": "^5.0.0",
     "io-ts": "^2.1.2",
diff --git a/plugins/slack/src/index.ts b/plugins/slack/src/index.ts
index 9837453e..80cbaa08 100644
--- a/plugins/slack/src/index.ts
+++ b/plugins/slack/src/index.ts
@@ -1,5 +1,5 @@
 import { githubToSlack } from "@atomist/slack-messages";
-import { Octokit } from "@octokit/rest";
+import { RestEndpointMethodTypes } from "@octokit/rest";
 import createHttpsProxyAgent from "https-proxy-agent";
 
 import {
@@ -135,7 +135,9 @@ export default class SlackPlugin implements IPlugin {
     auto: Auto,
     newVersion: string,
     releaseNotes: string,
-    releases: Array<Octokit.Response<Octokit.ReposCreateReleaseResponse>>
+    releases: Array<
+      RestEndpointMethodTypes["repos"]["createRelease"]["response"]
+    >
   ) {
     if (!auto.git) {
       return;
@@ -163,7 +165,7 @@ export default class SlackPlugin implements IPlugin {
         link_names: 1,
       }),
       headers: { "Content-Type": "application/json" },
-      agent: proxyUrl ? createHttpsProxyAgent(proxyUrl) : undefined
+      agent: proxyUrl ? createHttpsProxyAgent(proxyUrl) : undefined,
     });
 
     auto.logger.verbose.info("Posted release notes to slack.");
diff --git a/plugins/upload-assets/package.json b/plugins/upload-assets/package.json
index 503bf077..19cc643d 100644
--- a/plugins/upload-assets/package.json
+++ b/plugins/upload-assets/package.json
@@ -47,6 +47,6 @@
     "tslib": "1.11.1"
   },
   "devDependencies": {
-    "@octokit/rest": "^16.28.1"
+    "@octokit/rest": "^17.9.0"
   }
 }
diff --git a/plugins/upload-assets/src/index.ts b/plugins/upload-assets/src/index.ts
index d2d021cd..ef6ba68b 100644
--- a/plugins/upload-assets/src/index.ts
+++ b/plugins/upload-assets/src/index.ts
@@ -67,8 +67,10 @@ export default class UploadAssetsPlugin implements IPlugin {
           const type = await FileType.fromBuffer(file);
 
           const options = {
-            data: file,
+            data: file.toString(),
             name: path.basename(asset),
+            owner: auto.git.options.owner,
+            repo: auto.git.options.repo,
             headers: {
               "content-length": stats.size,
               "content-type": type ? type.mime : "application/octet-stream",
@@ -81,14 +83,14 @@ export default class UploadAssetsPlugin implements IPlugin {
               response.map((r) =>
                 auto.git!.github.repos.uploadReleaseAsset({
                   ...options,
-                  url: r.data.upload_url,
+                  release_id: r.data.id,
                 })
               )
             );
           } else {
             await auto.git.github.repos.uploadReleaseAsset({
               ...options,
-              url: response.data.upload_url,
+              release_id: response.data.id,
             });
           }
 
diff --git a/typings/octokit-enterprise.d.ts b/typings/octokit-enterprise.d.ts
deleted file mode 100644
index b8261943..00000000
--- a/typings/octokit-enterprise.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-// TODO: delete when @octokit/rest@17.0.0 is out
-declare module '@octokit/plugin-enterprise-compatibility';
diff --git a/typings/octokit-plugin-retry.d.ts b/typings/octokit-plugin-retry.d.ts
deleted file mode 100644
index ef5f23d4..00000000
--- a/typings/octokit-plugin-retry.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-// TODO: delete when @octokit/rest@17.0.0 is out
-declare module '@octokit/plugin-retry';
diff --git a/typings/octokit-plugin-throttling.d.ts b/typings/octokit-plugin-throttling.d.ts
deleted file mode 100644
index 2750512e..00000000
--- a/typings/octokit-plugin-throttling.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-// TODO: delete when @octokit/rest@17.0.0 is out
-declare module '@octokit/plugin-throttling';
diff --git a/yarn.lock b/yarn.lock
index 3c0e3f6b..49a070d3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8,18 +8,17 @@
   integrity sha512-m2OzlTDbhvzK4hgswH9Lx0cdpq1AntXu53Klz5RGkFfuoDvKsnlU7tmtVfNWtUiP0zZbGtrb/BZYH7aB6TRnMA==
 
 "@auto-it/bot-list@link:packages/bot-list":
-  version "9.32.0"
+  version "9.32.3"
 
 "@auto-it/core@link:packages/core":
-  version "9.32.0"
+  version "9.32.3"
   dependencies:
     "@auto-it/bot-list" "link:packages/bot-list"
-    "@octokit/core" "2.4.2"
-    "@octokit/graphql" "4.3.1"
-    "@octokit/plugin-enterprise-compatibility" "1.2.2"
-    "@octokit/plugin-retry" "3.0.1"
+    "@octokit/graphql" "^4.4.0"
+    "@octokit/plugin-enterprise-compatibility" "^1.2.2"
+    "@octokit/plugin-retry" "^3.0.1"
     "@octokit/plugin-throttling" "^3.2.0"
-    "@octokit/rest" "16.43.1"
+    "@octokit/rest" "^17.9.0"
     await-to-js "^2.1.1"
     chalk "^4.0.0"
     cosmiconfig "6.0.0"
@@ -50,7 +49,7 @@
     url-join "^4.0.0"
 
 "@auto-it/npm@link:plugins/npm":
-  version "9.32.0"
+  version "9.32.3"
   dependencies:
     "@auto-it/core" "link:packages/core"
     await-to-js "^2.1.1"
@@ -68,7 +67,7 @@
     user-home "^2.0.0"
 
 "@auto-it/released@link:plugins/released":
-  version "9.32.0"
+  version "9.32.3"
   dependencies:
     "@auto-it/core" "link:packages/core"
     deepmerge "^4.0.0"
@@ -2377,28 +2376,28 @@
   dependencies:
     "@octokit/types" "^2.0.0"
 
-"@octokit/core@2.4.2":
-  version "2.4.2"
-  resolved "https://registry.yarnpkg.com/@octokit/core/-/core-2.4.2.tgz#c22e583afc97e74015ea5bfd3ffb3ffc56c186ed"
-  integrity sha512-fUx/Qt774cgiPhb3HRKfdl6iufVL/ltECkwkCg373I4lIPYvAPY4cbidVZqyVqHI+ThAIlFlTW8FT4QHChv3Sg==
+"@octokit/core@^2.4.3":
+  version "2.5.0"
+  resolved "https://registry.yarnpkg.com/@octokit/core/-/core-2.5.0.tgz#4706258893a7ac6ab35d58d2fb9f2d2ba19a41a5"
+  integrity sha512-uvzmkemQrBgD8xuGbjhxzJN1darJk9L2cS+M99cHrDG2jlSVpxNJVhoV86cXdYBqdHCc9Z995uLCczaaHIYA6Q==
   dependencies:
     "@octokit/auth-token" "^2.4.0"
     "@octokit/graphql" "^4.3.1"
-    "@octokit/request" "^5.3.1"
+    "@octokit/request" "^5.4.0"
     "@octokit/types" "^2.0.0"
     before-after-hook "^2.1.0"
     universal-user-agent "^5.0.0"
 
-"@octokit/endpoint@^5.5.0":
-  version "5.5.0"
-  resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-5.5.0.tgz#d7e7960ffe39096cb67062f07efa84db52b20edb"
-  integrity sha512-TXYS6zXeBImNB9BVj+LneMDqXX+H0exkOpyXobvp92O3B1348QsKnNioISFKgOMsb3ibZvQGwCdpiwQd3KAjIA==
+"@octokit/endpoint@^6.0.0":
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.0.tgz#4c7acd79ab72df78732a7d63b09be53ec5a2230b"
+  integrity sha512-3nx+MEYoZeD0uJ+7F/gvELLvQJzLXhep2Az0bBSXagbApDvDW0LWwpnAIY/hb0Jwe17A0fJdz0O12dPh05cj7A==
   dependencies:
-    "@octokit/types" "^1.0.0"
+    "@octokit/types" "^2.0.0"
     is-plain-object "^3.0.0"
-    universal-user-agent "^4.0.0"
+    universal-user-agent "^5.0.0"
 
-"@octokit/graphql@4.3.1", "@octokit/graphql@^4.3.1":
+"@octokit/graphql@^4.3.1":
   version "4.3.1"
   resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.3.1.tgz#9ee840e04ed2906c7d6763807632de84cdecf418"
   integrity sha512-hCdTjfvrK+ilU2keAdqNBWOk+gm1kai1ZcdjRfB30oA3/T6n53UVJb7w0L5cR3/rhU91xT3HSqCd+qbvH06yxA==
@@ -2407,7 +2406,16 @@
     "@octokit/types" "^2.0.0"
     universal-user-agent "^4.0.0"
 
-"@octokit/plugin-enterprise-compatibility@1.2.2":
+"@octokit/graphql@^4.4.0":
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.4.0.tgz#4540b48bbf796b837b311ba6ea5104760db530ca"
+  integrity sha512-Du3hAaSROQ8EatmYoSAJjzAz3t79t9Opj/WY1zUgxVUGfIKn0AEjg+hlOLscF6fv6i/4y/CeUvsWgIfwMkTccw==
+  dependencies:
+    "@octokit/request" "^5.3.0"
+    "@octokit/types" "^2.0.0"
+    universal-user-agent "^5.0.0"
+
+"@octokit/plugin-enterprise-compatibility@^1.2.2":
   version "1.2.2"
   resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-compatibility/-/plugin-enterprise-compatibility-1.2.2.tgz#a30b635b63760e1504e57af5cf54da058b32a1de"
   integrity sha512-LjESzkcoQHm1JN3drgjttbSk5fYNI8EPtcAiDqpnok0oL69vWIb5tcjyKrg7fPwzyRl/+A+UQbkIOsG2LJh09w==
@@ -2427,6 +2435,13 @@
   dependencies:
     "@octokit/types" "^2.0.1"
 
+"@octokit/plugin-paginate-rest@^2.2.0":
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.2.0.tgz#9ae0c14c1b90ec0d96d2ef1b44706b4505a91cee"
+  integrity sha512-KoNxC3PLNar8UJwR+1VMQOw2IoOrrFdo5YOiDKnBhpVbKpw+zkBKNMNKwM44UWL25Vkn0Sl3nYIEGKY+gW5ebw==
+  dependencies:
+    "@octokit/types" "^2.12.1"
+
 "@octokit/plugin-request-log@^1.0.0":
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e"
@@ -2440,7 +2455,15 @@
     "@octokit/types" "^2.0.1"
     deprecation "^2.3.1"
 
-"@octokit/plugin-retry@3.0.1":
+"@octokit/plugin-rest-endpoint-methods@3.11.0":
+  version "3.11.0"
+  resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-3.11.0.tgz#96e69d7904bcbb6172be2bc1c70757ff1377fbfe"
+  integrity sha512-D31cBYhlOt6Om2xNkCNZUjyWdaDKUfa4HwpLwL8Dnu8aDuVuuOPLUhFMUDE0GvfqlNQFrNtU7n5HaZm+KmRdsw==
+  dependencies:
+    "@octokit/types" "^2.16.0"
+    deprecation "^2.3.1"
+
+"@octokit/plugin-retry@^3.0.1":
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-3.0.1.tgz#4f17e4349b89754fd06951b548f08e2d8e7dd311"
   integrity sha512-X+VALkeYyE4XGMHOoOnRS1/OvwvleZ2Xe3yxshaAKJrA4pbjBYptDx7IAY9xQj5JYY9vlCKUsXEZMWLRNxfViw==
@@ -2456,7 +2479,7 @@
     "@octokit/types" "^2.0.1"
     bottleneck "^2.15.3"
 
-"@octokit/request-error@^1.0.1", "@octokit/request-error@^1.0.2":
+"@octokit/request-error@^1.0.2":
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.0.tgz#a64d2a9d7a13555570cd79722de4a4d76371baaa"
   integrity sha512-DNBhROBYjjV/I9n7A8kVkmQNkqFAMem90dSxqvPq57e2hBr7mNTX98y3R2zDpqMQHVRpBDjsvsfIGgBzy+4PAg==
@@ -2474,21 +2497,21 @@
     deprecation "^2.0.0"
     once "^1.4.0"
 
-"@octokit/request@^5.2.0", "@octokit/request@^5.3.0", "@octokit/request@^5.3.1":
-  version "5.3.1"
-  resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.3.1.tgz#3a1ace45e6f88b1be4749c5da963b3a3b4a2f120"
-  integrity sha512-5/X0AL1ZgoU32fAepTfEoggFinO3rxsMLtzhlUX+RctLrusn/CApJuGFCd0v7GMFhF+8UiCsTTfsu7Fh1HnEJg==
+"@octokit/request@^5.2.0", "@octokit/request@^5.3.0", "@octokit/request@^5.4.0":
+  version "5.4.0"
+  resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.0.tgz#52382c830f0cf3295b5a03e308872ac0f5ccba9b"
+  integrity sha512-uAJO6GI8z8VHBqtY7VTL9iFy1Y+UTp5ShpI97tY5z0qBfYKE9rZCRsCm23VmF00x+IoNJ7a0nuVITs/+wS9/mg==
   dependencies:
-    "@octokit/endpoint" "^5.5.0"
-    "@octokit/request-error" "^1.0.1"
-    "@octokit/types" "^2.0.0"
+    "@octokit/endpoint" "^6.0.0"
+    "@octokit/request-error" "^2.0.0"
+    "@octokit/types" "^2.8.2"
     deprecation "^2.0.0"
     is-plain-object "^3.0.0"
     node-fetch "^2.3.0"
     once "^1.4.0"
-    universal-user-agent "^4.0.0"
+    universal-user-agent "^5.0.0"
 
-"@octokit/rest@16.43.1", "@octokit/rest@^16.28.1", "@octokit/rest@^16.28.4":
+"@octokit/rest@^16.28.4":
   version "16.43.1"
   resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.1.tgz#3b11e7d1b1ac2bbeeb23b08a17df0b20947eda6b"
   integrity sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==
@@ -2510,12 +2533,15 @@
     once "^1.4.0"
     universal-user-agent "^4.0.0"
 
-"@octokit/types@^1.0.0":
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/@octokit/types/-/types-1.1.0.tgz#6c9b286f9766f8cc6c5bab9fd3eb6a7aa019c586"
-  integrity sha512-t4ZD74UnNVMq6kZBDZceflRKK3q4o5PoCKMAGht0RK84W57tqonqKL3vCxJHtbGExdan9RwV8r7VJBZxIM1O7Q==
+"@octokit/rest@^17.9.0":
+  version "17.9.0"
+  resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-17.9.0.tgz#48d20196eb3dbe1cb507d0e46e01d17c24cc3d0e"
+  integrity sha512-Ff2jwS2OizWVaiCozOJevQ97V+mKjlQAt//lU6a/lhWDfHsZLXm/k1RsyTKVbyuiriDi7pg899wCU59nYfKnmQ==
   dependencies:
-    "@types/node" "^12.11.1"
+    "@octokit/core" "^2.4.3"
+    "@octokit/plugin-paginate-rest" "^2.2.0"
+    "@octokit/plugin-request-log" "^1.0.0"
+    "@octokit/plugin-rest-endpoint-methods" "3.11.0"
 
 "@octokit/types@^2.0.0", "@octokit/types@^2.0.1":
   version "2.1.1"
@@ -2524,6 +2550,27 @@
   dependencies:
     "@types/node" ">= 8"
 
+"@octokit/types@^2.12.1", "@octokit/types@^2.16.0":
+  version "2.16.2"
+  resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2"
+  integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==
+  dependencies:
+    "@types/node" ">= 8"
+
+"@octokit/types@^2.8.2":
+  version "2.8.2"
+  resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.8.2.tgz#08d1165354637ef32c3134b4b39b7f17bdc17aef"
+  integrity sha512-8cs4DjRAzFoGo1ieUhDyrTdPK016V3JD/H00nbnojSCUYfOXnnJ1owUaAT/3OebTzp/tgdTG6M+8PdCTJzI+/w==
+  dependencies:
+    "@types/node" ">= 8"
+
+"@octokit/types@^3.0.1":
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/@octokit/types/-/types-3.0.1.tgz#0706510a6a4edd1925a2ef539773b1b6bfd62d74"
+  integrity sha512-hSWiTHlXO66VVkZQRXr2Le7xeR29CxOsrKOpKlr6/Oua9vnGBncelaNSnS8Ybjbcy0NJD6QgooQWGsbNK4hl2g==
+  dependencies:
+    "@types/node" ">= 8"
+
 "@samverschueren/stream-to-observable@^0.3.0":
   version "0.3.0"
   resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
@@ -2755,11 +2802,6 @@
   resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.6.tgz#9cbfcb62c50947217f4d88d4d274cc40c22625a9"
   integrity sha512-Fvm24+u85lGmV4hT5G++aht2C5I4Z4dYlWZIh62FAfFO/TfzXtPpoLI6I7AuBWkIFqZCnhFOoTT7RjjaIL5Fjg==
 
-"@types/node@^12.11.1":
-  version "12.12.21"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.21.tgz#aa44a6363291c7037111c47e4661ad210aded23f"
-  integrity sha512-8sRGhbpU+ck1n0PGAUgVrWrWdjSW2aqNeyC15W88GRsMpSwzv6RJGlLhE7s2RhVSOdyDmxbqlWSeThq4/7xqlA==
-
 "@types/normalize-package-data@^2.4.0":
   version "2.4.0"
   resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
@@ -4782,10 +4824,10 @@ commander@~2.8.1:
   dependencies:
     graceful-readlink ">= 1.0.0"
 
-comment-parser@^0.7.4:
-  version "0.7.4"
-  resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.4.tgz#f5eb83cbae323cae6533c057f41d52692361c83a"
-  integrity sha512-Nnl77/mt6sj1BiYSVMeMWzvD0183F2MFOJyFRmZHimUVDYS9J40AvXpiFA7RpU5pQH+HkvYc0dnsHpwW2xmbyQ==
+comment-parser@^0.7.2:
+  version "0.7.2"
+  resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.2.tgz#baf6d99b42038678b81096f15b630d18142f4b8a"
+  integrity sha512-4Rjb1FnxtOcv9qsfuaNuVsmmVn4ooVoBHzYfyKteiXwIU84PClyGA5jASoFMwPV93+FPh9spwueXauxFJZkGAg==
 
 commondir@^1.0.1:
   version "1.0.1"
@@ -6295,12 +6337,12 @@ eslint-plugin-jest@^23.0.1:
   dependencies:
     "@typescript-eslint/experimental-utils" "^2.5.0"
 
-eslint-plugin-jsdoc@^25.2.0:
-  version "25.2.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-25.2.0.tgz#dd90f0a11778888637ea3aaaae1a6d3bfa3f3132"
-  integrity sha512-P+3zIyu5fSEZlAtoKI+pGxO8XWwWG7RlO7Zm25+sZTcWUb4jGteYSYLt04ChMauHjoDJSzhwfTXhAn2gVUijpQ==
+eslint-plugin-jsdoc@^24.0.0:
+  version "24.0.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-24.0.0.tgz#41c7b06d33741e41e80a8f08c82aaa58ceef2e4b"
+  integrity sha512-AGAc9PYpramsJGVmqtxnXBYlq+AMh+hIZdbJ52OLvyJS3f+PaT/PzuckRFOLnth2uhCDv4IjgsB3r5jUFWqUnw==
   dependencies:
-    comment-parser "^0.7.4"
+    comment-parser "^0.7.2"
     debug "^4.1.1"
     jsdoctypeparser "^6.1.0"
     lodash "^4.17.15"
@@ -14916,6 +14958,11 @@ type-detect@4.0.8:
   resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
   integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
 
+type-fest@^0.13.1:
+  version "0.13.1"
+  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
+  integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
+
 type-fest@^0.3.0:
   version "0.3.1"
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"


Test patch:
diff --git a/packages/core/src/__tests__/git.test.ts b/packages/core/src/__tests__/git.test.ts
index c6e22d5f..49b75f0c 100644
--- a/packages/core/src/__tests__/git.test.ts
+++ b/packages/core/src/__tests__/git.test.ts
@@ -496,7 +496,7 @@ describe("github", () => {
     });
 
     await gh.getCommitsForPR(22);
-    expect(listCommits).toHaveBeenCalled();
+    expect(paginate).toHaveBeenCalled();
   });
 
   test("getPullRequests", async () => {
@@ -672,8 +672,7 @@ describe("github", () => {
 
   describe("error hook", () => {
     test("strip authorization headers from error", () => {
-      type HookError = import("@octokit/rest").Octokit.HookError;
-      const error = (headers = {}): HookError => ({
+      const error = (headers = {}) => ({
         name: "Request failed",
         message: "The request has failed",
         status: 404,
@@ -685,9 +684,7 @@ describe("github", () => {
 
       expect(errorHook).toHaveBeenCalled();
 
-      const errorHandler = errorHook.mock.calls[0][1] as (
-        error: HookError
-      ) => void;
+      const errorHandler = errorHook.mock.calls[0][1] as (error: Error) => void;
 
       expect(
         errorHandler.bind(undefined, error({ authorization: "token abc" }))
diff --git a/plugins/first-time-contributor/__tests__/first-time-contributor.test.ts b/plugins/first-time-contributor/__tests__/first-time-contributor.test.ts
index 920036d5..b3aa6f76 100644
--- a/plugins/first-time-contributor/__tests__/first-time-contributor.test.ts
+++ b/plugins/first-time-contributor/__tests__/first-time-contributor.test.ts
@@ -1,7 +1,7 @@
 import * as Auto from "@auto-it/core";
 import makeCommitFromMsg from "@auto-it/core/dist/__tests__/make-commit-from-msg";
 import Changelog from "@auto-it/core/dist/changelog";
-import { Octokit } from "@octokit/rest";
+import { RestEndpointMethodTypes } from "@octokit/rest";
 import {
   makeChangelogHooks,
   makeHooks,
@@ -16,7 +16,11 @@ exec.mockReturnValue("");
 jest.spyOn(Auto, "execPromise").mockImplementation(exec);
 
 const setup = (
-  contributors: Array<Partial<Octokit.ReposListContributorsResponseItem>> = []
+  contributors: Array<
+    Partial<
+      RestEndpointMethodTypes["repos"]["listContributors"]["response"]["data"][number]
+    >
+  > = []
 ) => {
   const plugin = new FirstTimeContributor();
   const hooks = makeHooks();
diff --git a/plugins/upload-assets/__tests__/upload-assets.test.ts b/plugins/upload-assets/__tests__/upload-assets.test.ts
index 2c7dfdcd..95bbf15d 100644
--- a/plugins/upload-assets/__tests__/upload-assets.test.ts
+++ b/plugins/upload-assets/__tests__/upload-assets.test.ts
@@ -1,11 +1,16 @@
 import Auto from "@auto-it/core";
 import { makeHooks } from "@auto-it/core/dist/utils/make-hooks";
-import { Octokit } from "@octokit/rest";
+import { RestEndpointMethodTypes } from "@octokit/rest";
 import path from "path";
 
 import { dummyLog } from "@auto-it/core/dist/utils/logger";
 import UploadAssets from "../src";
 
+const options = {
+  owner: "test",
+  repo: "repo",
+};
+
 describe("Upload Assets Plugin", () => {
   test("should do nothing without a response", async () => {
     const plugin = new UploadAssets([
@@ -17,7 +22,7 @@ describe("Upload Assets Plugin", () => {
     plugin.apply(({
       hooks,
       logger: dummyLog(),
-      git: { github: { repos: { uploadReleaseAsset } } },
+      git: { options, github: { repos: { uploadReleaseAsset } } },
     } as unknown) as Auto);
 
     await hooks.afterRelease.promise({
@@ -40,7 +45,7 @@ describe("Upload Assets Plugin", () => {
     plugin.apply(({
       hooks,
       logger: dummyLog(),
-      git: { github: { repos: { uploadReleaseAsset } } },
+      git: { options, github: { repos: { uploadReleaseAsset } } },
     } as unknown) as Auto);
 
     await hooks.afterRelease.promise({
@@ -49,8 +54,8 @@ describe("Upload Assets Plugin", () => {
       commits: [],
       releaseNotes: "",
       response: {
-        data: { upload_url: "https://foo.com" },
-      } as Octokit.Response<Octokit.ReposCreateReleaseResponse>,
+        data: { id: "123" },
+      } as any,
     });
 
     expect(uploadReleaseAsset).toHaveBeenCalledWith(
@@ -60,7 +65,7 @@ describe("Upload Assets Plugin", () => {
           "content-type": "application/octet-stream",
         },
         name: "macos",
-        url: "https://foo.com",
+        release_id: "123",
       })
     );
   });
@@ -78,7 +83,7 @@ describe("Upload Assets Plugin", () => {
     plugin.apply(({
       hooks,
       logger: dummyLog(),
-      git: { github: { repos: { uploadReleaseAsset } } },
+      git: { options, github: { repos: { uploadReleaseAsset } } },
     } as unknown) as Auto);
 
     await hooks.afterRelease.promise({
@@ -88,7 +93,7 @@ describe("Upload Assets Plugin", () => {
       releaseNotes: "",
       response: {
         data: { upload_url: "https://foo.com" },
-      } as Octokit.Response<Octokit.ReposCreateReleaseResponse>,
+      } as RestEndpointMethodTypes["repos"]["createRelease"]["response"],
     });
 
     expect(uploadReleaseAsset).toHaveBeenCalledTimes(2);
@@ -104,7 +109,7 @@ describe("Upload Assets Plugin", () => {
     plugin.apply(({
       hooks,
       logger: dummyLog(),
-      git: { github: { repos: { uploadReleaseAsset } } },
+      git: { options, github: { repos: { uploadReleaseAsset } } },
     } as unknown) as Auto);
 
     await hooks.afterRelease.promise({
@@ -114,7 +119,7 @@ describe("Upload Assets Plugin", () => {
       releaseNotes: "",
       response: {
         data: { upload_url: "https://foo.com" },
-      } as Octokit.Response<Octokit.ReposCreateReleaseResponse>,
+      } as RestEndpointMethodTypes["repos"]["createRelease"]["response"],
     });
 
     expect(uploadReleaseAsset).toHaveBeenCalledTimes(2);