Repository: stripe/stripe-node
Pull request #1200 (2021-07-27 15:57:48)

Add support for fullPath on methods.
### Notify

r? @richardm-stripe 

### Summary

Adds support for `fullPath` to StripeMethod, letting methods specify a full path (ie. a path that is not a suffix of the resource base).

This is necessary for search URLs and in the future we plan on migrating all methods to this, removing some of the URL magic behind the scenes.

### Test plan

Added unit tests.


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0f6abac9..1f560b9b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,15 @@
 # CHANGELOG
 
+## 8.166.0 - 2021-07-28
+* [#1203](https://github.com/stripe/stripe-node/pull/1203) API Updates
+  * Bugfix: add missing autopagination methods to `Quote.listLineItems` and `Quote.listComputedUpfrontLineItems`
+  * Add support for `account_type` on `BankAccount`, `ExternalAccountUpdateParams`, and `TokenCreateParams.bank_account`
+  * Add support for `category_code` on `Issuing.Authorization.merchant_data` and `Issuing.Transaction.merchant_data`
+  * Add support for new value `redacted` on enum `Review.closed_reason`
+  * Remove duplicate type definition for `Account.retrieve`.
+  * Fix some `attributes` fields mistakenly defined as `Stripe.Metadata`
+* [#1097](https://github.com/stripe/stripe-node/pull/1097) fix error arguments
+
 ## 8.165.0 - 2021-07-22
 * [#1197](https://github.com/stripe/stripe-node/pull/1197) API Updates
   * Add support for new values `hr`, `ko`, and `vi` on enums `CheckoutSessionCreateParams.locale` and `Checkout.Session.locale`
diff --git a/VERSION b/VERSION
index 5aae098c..24be86a1 100644
--- a/VERSION
+++ b/VERSION
@@ -1,1 +1,1 @@
-8.165.0
+8.166.0
diff --git a/lib/StripeMethod.js b/lib/StripeMethod.js
index ace8febf..4c6c544d 100644
--- a/lib/StripeMethod.js
+++ b/lib/StripeMethod.js
@@ -11,6 +11,8 @@ const makeAutoPaginationMethods = require('./autoPagination')
  * @param [spec.method='GET'] Request Method (POST, GET, DELETE, PUT)
  * @param [spec.path=''] Path to be appended to the API BASE_PATH, joined with
  *  the instance's path (e.g. 'charges' or 'customers')
+ * @param [spec.fullPath=''] Fully qualified path to the method (eg. /v1/a/b/c).
+ *  If this is specified, path should not be specified.
  * @param [spec.urlParams=[]] Array of required arguments in the order that they
  *  must be passed by the consumer of the API. Subsequent optional arguments are
  *  optionally passed through a hash (Object) as the penultimate argument
@@ -20,11 +22,16 @@ const makeAutoPaginationMethods = require('./autoPagination')
  * @param [spec.host] Hostname for the request.
  */
 function stripeMethod(spec) {
+  if (spec.path !== undefined && spec.fullPath !== undefined) {
+    throw new Error(
+      `Method spec specified both a 'path' (${spec.path}) and a 'fullPath' (${spec.fullPath}).`
+    );
+  }
   return function(...args) {
     const callback = typeof args[args.length - 1] == 'function' && args.pop();
 
     spec.urlParams = utils.extractUrlParams(
-      this.createResourcePathWithSymbols(spec.path || '')
+      spec.fullPath || this.createResourcePathWithSymbols(spec.path || '')
     );
 
     const requestPromise = utils.callbackifyPromiseWithTimeout(
diff --git a/lib/makeRequest.js b/lib/makeRequest.js
index 8944b30b..89a1c6bd 100644
--- a/lib/makeRequest.js
+++ b/lib/makeRequest.js
@@ -4,11 +4,20 @@ const utils = require('./utils');
 
 function getRequestOpts(self, requestArgs, spec, overrideData) {
   // Extract spec values with defaults.
-  const commandPath = utils.makeURLInterpolator(spec.path || '');
   const requestMethod = (spec.method || 'GET').toUpperCase();
   const urlParams = spec.urlParams || [];
   const encode = spec.encode || ((data) => data);
-  const path = self.createResourcePathWithSymbols(spec.path);
+
+  const isUsingFullPath = !!spec.fullPath;
+  const commandPath = utils.makeURLInterpolator(
+    isUsingFullPath ? spec.fullPath : spec.path || ''
+  );
+
+  // When using fullPath, we ignore the resource path as it should already be
+  // fully qualified.
+  const path = isUsingFullPath
+    ? spec.fullPath
+    : self.createResourcePathWithSymbols(spec.path);
 
   // Don't mutate args externally.
   const args = [].slice.call(requestArgs);
@@ -39,7 +48,11 @@ function getRequestOpts(self, requestArgs, spec, overrideData) {
     );
   }
 
-  const requestPath = self.createFullPath(commandPath, urlData);
+  // When using full path, we can just invoke the URL interpolator directly
+  // as we don't need to use the resource to create a full path.
+  const requestPath = isUsingFullPath
+    ? commandPath(urlData)
+    : self.createFullPath(commandPath, urlData);
   const headers = Object.assign(options.headers, spec.headers);
 
   if (spec.validator) {
diff --git a/lib/resources/Quotes.js b/lib/resources/Quotes.js
index 444a01b1..e3988122 100644
--- a/lib/resources/Quotes.js
+++ b/lib/resources/Quotes.js
@@ -28,11 +28,13 @@ module.exports = StripeResource.extend({
   listComputedUpfrontLineItems: stripeMethod({
     method: 'GET',
     path: '/{quote}/computed_upfront_line_items',
+    methodType: 'list',
   }),
 
   listLineItems: stripeMethod({
     method: 'GET',
     path: '/{quote}/line_items',
+    methodType: 'list',
   }),
 
   pdf: stripeMethod({
diff --git a/package.json b/package.json
index 9bf438f4..7a696536 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "stripe",
-  "version": "8.165.0",
+  "version": "8.166.0",
   "description": "Stripe API wrapper",
   "keywords": [
     "stripe",
diff --git a/types/2020-08-27/Accounts.d.ts b/types/2020-08-27/Accounts.d.ts
index 13d383e3..9a75bcc5 100644
--- a/types/2020-08-27/Accounts.d.ts
+++ b/types/2020-08-27/Accounts.d.ts
@@ -981,36 +981,8 @@ declare module 'stripe' {
       }
 
       namespace BusinessProfile {
-        interface SupportAddress {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface SupportAddress extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
       }
 
@@ -1383,36 +1355,8 @@ declare module 'stripe' {
       }
 
       namespace Company {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
 
         type Structure =
@@ -1670,36 +1614,8 @@ declare module 'stripe' {
       }
 
       namespace Individual {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
 
         interface Dob {
@@ -1966,13 +1882,6 @@ declare module 'stripe' {
       expand?: Array<string>;
     }
 
-    interface AccountRetrieveParams {
-      /**
-       * Specifies which fields in the response should be expanded.
-       */
-      expand?: Array<string>;
-    }
-
     interface AccountUpdateParams {
       /**
        * An [account token](https://stripe.com/docs/api#create_account_token), used to securely provide details to the account.
@@ -2091,36 +2000,8 @@ declare module 'stripe' {
       }
 
       namespace BusinessProfile {
-        interface SupportAddress {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface SupportAddress extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
       }
 
@@ -2493,36 +2374,8 @@ declare module 'stripe' {
       }
 
       namespace Company {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
 
         type Structure =
@@ -2743,36 +2596,8 @@ declare module 'stripe' {
       }
 
       namespace Individual {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
 
         interface Dob {
diff --git a/types/2020-08-27/BankAccounts.d.ts b/types/2020-08-27/BankAccounts.d.ts
index 1d4436c6..b047cb48 100644
--- a/types/2020-08-27/BankAccounts.d.ts
+++ b/types/2020-08-27/BankAccounts.d.ts
@@ -31,6 +31,11 @@ declare module 'stripe' {
        */
       account_holder_type: string | null;
 
+      /**
+       * The bank account type. This can only be `checking` or `savings` in most countries. In Japan, this can only be `futsu` or `toza`.
+       */
+      account_type: string | null;
+
       /**
        * A set of available payout methods for this bank account. Only values from this set should be passed as the `method` when creating a payout.
        */
diff --git a/types/2020-08-27/Charges.d.ts b/types/2020-08-27/Charges.d.ts
index a513e995..0246f5d7 100644
--- a/types/2020-08-27/Charges.d.ts
+++ b/types/2020-08-27/Charges.d.ts
@@ -1729,7 +1729,7 @@ declare module 'stripe' {
         /**
          * Shipping address.
          */
-        address: Stripe.AddressParam;
+        address: Shipping.Address;
 
         /**
          * The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
@@ -1752,6 +1752,12 @@ declare module 'stripe' {
         tracking_number?: string;
       }
 
+      namespace Shipping {
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
+          line1?: string;
+        }
+      }
+
       interface TransferData {
         /**
          * The amount transferred to the destination account, if specified. By default, the entire charge amount is transferred to the destination account.
@@ -1830,7 +1836,7 @@ declare module 'stripe' {
         /**
          * Shipping address.
          */
-        address: Stripe.AddressParam;
+        address: Shipping.Address;
 
         /**
          * The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
@@ -1852,6 +1858,12 @@ declare module 'stripe' {
          */
         tracking_number?: string;
       }
+
+      namespace Shipping {
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
+          line1?: string;
+        }
+      }
     }
 
     interface ChargeListParams extends PaginationParams {
diff --git a/types/2020-08-27/CustomerSources.d.ts b/types/2020-08-27/CustomerSources.d.ts
index 0f88ae96..69052d8c 100644
--- a/types/2020-08-27/CustomerSources.d.ts
+++ b/types/2020-08-27/CustomerSources.d.ts
@@ -121,36 +121,8 @@ declare module 'stripe' {
       }
 
       namespace Owner {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
       }
     }
diff --git a/types/2020-08-27/Customers.d.ts b/types/2020-08-27/Customers.d.ts
index 5a937ee6..e8abe4b7 100644
--- a/types/2020-08-27/Customers.d.ts
+++ b/types/2020-08-27/Customers.d.ts
@@ -390,7 +390,7 @@ declare module 'stripe' {
         /**
          * Customer shipping address.
          */
-        address: Stripe.AddressParam;
+        address: Shipping.Address;
 
         /**
          * Customer name.
@@ -403,6 +403,12 @@ declare module 'stripe' {
         phone?: string;
       }
 
+      namespace Shipping {
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
+          line1?: string;
+        }
+      }
+
       interface Tax {
         /**
          * A recent IP address of the customer used for tax reporting and tax location inference. Stripe recommends updating the IP address when a new PaymentMethod is attached or the address field on the customer is updated. We recommend against updating this field more frequently since it could result in unexpected tax location/reporting outcomes.
@@ -610,7 +616,7 @@ declare module 'stripe' {
         /**
          * Customer shipping address.
          */
-        address: Stripe.AddressParam;
+        address: Shipping.Address;
 
         /**
          * Customer name.
@@ -623,6 +629,12 @@ declare module 'stripe' {
         phone?: string;
       }
 
+      namespace Shipping {
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
+          line1?: string;
+        }
+      }
+
       interface Tax {
         /**
          * A recent IP address of the customer used for tax reporting and tax location inference. Stripe recommends updating the IP address when a new PaymentMethod is attached or the address field on the customer is updated. We recommend against updating this field more frequently since it could result in unexpected tax location/reporting outcomes.
diff --git a/types/2020-08-27/ExternalAccounts.d.ts b/types/2020-08-27/ExternalAccounts.d.ts
index 2bcca6f0..c8be4f17 100644
--- a/types/2020-08-27/ExternalAccounts.d.ts
+++ b/types/2020-08-27/ExternalAccounts.d.ts
@@ -44,6 +44,11 @@ declare module 'stripe' {
         ExternalAccountUpdateParams.AccountHolderType
       >;
 
+      /**
+       * The bank account type. This can only be `checking` or `savings` in most countries. In Japan, this can only be `futsu` or `toza`.
+       */
+      account_type?: ExternalAccountUpdateParams.AccountType;
+
       /**
        * City/District/Suburb/Town/Village.
        */
@@ -107,6 +112,8 @@ declare module 'stripe' {
 
     namespace ExternalAccountUpdateParams {
       type AccountHolderType = 'company' | 'individual';
+
+      type AccountType = 'checking' | 'futsu' | 'savings' | 'toza';
     }
 
     interface ExternalAccountListParams extends PaginationParams {
diff --git a/types/2020-08-27/InvoiceLineItems.d.ts b/types/2020-08-27/InvoiceLineItems.d.ts
index 9e2dacfc..1dd6ba6c 100644
--- a/types/2020-08-27/InvoiceLineItems.d.ts
+++ b/types/2020-08-27/InvoiceLineItems.d.ts
@@ -309,43 +309,15 @@ declare module 'stripe' {
       }
 
       namespace CustomerDetails {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
 
         interface Shipping {
           /**
            * Customer shipping address.
            */
-          address: Stripe.AddressParam;
+          address: Shipping.Address;
 
           /**
            * Customer name.
@@ -358,6 +330,12 @@ declare module 'stripe' {
           phone?: string;
         }
 
+        namespace Shipping {
+          interface Address extends Omit<Stripe.AddressParam, 'line1'> {
+            line1?: string;
+          }
+        }
+
         interface Tax {
           /**
            * A recent IP address of the customer used for tax reporting and tax location inference. Stripe recommends updating the IP address when a new PaymentMethod is attached or the address field on the customer is updated. We recommend against updating this field more frequently since it could result in unexpected tax location/reporting outcomes.
@@ -599,7 +577,7 @@ declare module 'stripe' {
         plan?: string;
 
         /**
-         * The ID of the price object.
+         * The ID of the price object. When changing a subscription item's price, `quantity` is set to 1 unless a `quantity` parameter is provided.
          */
         price?: string;
 
diff --git a/types/2020-08-27/Invoices.d.ts b/types/2020-08-27/Invoices.d.ts
index 345048e8..70485a3b 100644
--- a/types/2020-08-27/Invoices.d.ts
+++ b/types/2020-08-27/Invoices.d.ts
@@ -1441,43 +1441,15 @@ declare module 'stripe' {
       }
 
       namespace CustomerDetails {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
 
         interface Shipping {
           /**
            * Customer shipping address.
            */
-          address: Stripe.AddressParam;
+          address: Shipping.Address;
 
           /**
            * Customer name.
@@ -1490,6 +1462,12 @@ declare module 'stripe' {
           phone?: string;
         }
 
+        namespace Shipping {
+          interface Address extends Omit<Stripe.AddressParam, 'line1'> {
+            line1?: string;
+          }
+        }
+
         interface Tax {
           /**
            * A recent IP address of the customer used for tax reporting and tax location inference. Stripe recommends updating the IP address when a new PaymentMethod is attached or the address field on the customer is updated. We recommend against updating this field more frequently since it could result in unexpected tax location/reporting outcomes.
@@ -1731,7 +1709,7 @@ declare module 'stripe' {
         plan?: string;
 
         /**
-         * The ID of the price object.
+         * The ID of the price object. When changing a subscription item's price, `quantity` is set to 1 unless a `quantity` parameter is provided.
          */
         price?: string;
 
diff --git a/types/2020-08-27/Issuing/Authorizations.d.ts b/types/2020-08-27/Issuing/Authorizations.d.ts
index a9699a0f..f076b198 100644
--- a/types/2020-08-27/Issuing/Authorizations.d.ts
+++ b/types/2020-08-27/Issuing/Authorizations.d.ts
@@ -133,6 +133,11 @@ declare module 'stripe' {
            */
           category: string;
 
+          /**
+           * The merchant category code for the seller's business
+           */
+          category_code: string;
+
           /**
            * City where the seller is located
            */
diff --git a/types/2020-08-27/Issuing/Transactions.d.ts b/types/2020-08-27/Issuing/Transactions.d.ts
index c6ad5c61..9088fc0b 100644
--- a/types/2020-08-27/Issuing/Transactions.d.ts
+++ b/types/2020-08-27/Issuing/Transactions.d.ts
@@ -114,6 +114,11 @@ declare module 'stripe' {
            */
           category: string;
 
+          /**
+           * The merchant category code for the seller's business
+           */
+          category_code: string;
+
           /**
            * City where the seller is located
            */
diff --git a/types/2020-08-27/Orders.d.ts b/types/2020-08-27/Orders.d.ts
index a73342b9..ebbeeb6d 100644
--- a/types/2020-08-27/Orders.d.ts
+++ b/types/2020-08-27/Orders.d.ts
@@ -292,7 +292,7 @@ declare module 'stripe' {
         /**
          * Customer shipping address.
          */
-        address: Stripe.AddressParam;
+        address: Shipping.Address;
 
         /**
          * Customer name.
@@ -304,6 +304,12 @@ declare module 'stripe' {
          */
         phone?: string;
       }
+
+      namespace Shipping {
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
+          line1?: string;
+        }
+      }
     }
 
     interface OrderRetrieveParams {
diff --git a/types/2020-08-27/PaymentIntents.d.ts b/types/2020-08-27/PaymentIntents.d.ts
index 8cba16f9..c56ef1f3 100644
--- a/types/2020-08-27/PaymentIntents.d.ts
+++ b/types/2020-08-27/PaymentIntents.d.ts
@@ -1172,36 +1172,8 @@ declare module 'stripe' {
         }
 
         namespace BillingDetails {
-          interface Address {
-            /**
-             * City, district, suburb, town, or village.
-             */
-            city?: string;
-
-            /**
-             * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-             */
-            country?: string;
-
-            /**
-             * Address line 1 (e.g., street, PO Box, or company name).
-             */
+          interface Address extends Omit<Stripe.AddressParam, 'line1'> {
             line1?: string;
-
-            /**
-             * Address line 2 (e.g., apartment, suite, unit, or building).
-             */
-            line2?: string;
-
-            /**
-             * ZIP or postal code.
-             */
-            postal_code?: string;
-
-            /**
-             * State, county, province, or region.
-             */
-            state?: string;
           }
         }
 
@@ -1692,7 +1664,7 @@ declare module 'stripe' {
         /**
          * Shipping address.
          */
-        address: Stripe.AddressParam;
+        address: Shipping.Address;
 
         /**
          * The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
@@ -1715,6 +1687,12 @@ declare module 'stripe' {
         tracking_number?: string;
       }
 
+      namespace Shipping {
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
+          line1?: string;
+        }
+      }
+
       interface TransferData {
         /**
          * The amount that will be transferred automatically when a charge succeeds.
@@ -2034,36 +2012,8 @@ declare module 'stripe' {
         }
 
         namespace BillingDetails {
-          interface Address {
-            /**
-             * City, district, suburb, town, or village.
-             */
-            city?: string;
-
-            /**
-             * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-             */
-            country?: string;
-
-            /**
-             * Address line 1 (e.g., street, PO Box, or company name).
-             */
+          interface Address extends Omit<Stripe.AddressParam, 'line1'> {
             line1?: string;
-
-            /**
-             * Address line 2 (e.g., apartment, suite, unit, or building).
-             */
-            line2?: string;
-
-            /**
-             * ZIP or postal code.
-             */
-            postal_code?: string;
-
-            /**
-             * State, county, province, or region.
-             */
-            state?: string;
           }
         }
 
@@ -2554,7 +2504,7 @@ declare module 'stripe' {
         /**
          * Shipping address.
          */
-        address: Stripe.AddressParam;
+        address: Shipping.Address;
 
         /**
          * The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
@@ -2577,6 +2527,12 @@ declare module 'stripe' {
         tracking_number?: string;
       }
 
+      namespace Shipping {
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
+          line1?: string;
+        }
+      }
+
       interface TransferData {
         /**
          * The amount that will be transferred automatically when a charge succeeds.
@@ -3010,36 +2966,8 @@ declare module 'stripe' {
         }
 
         namespace BillingDetails {
-          interface Address {
-            /**
-             * City, district, suburb, town, or village.
-             */
-            city?: string;
-
-            /**
-             * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-             */
-            country?: string;
-
-            /**
-             * Address line 1 (e.g., street, PO Box, or company name).
-             */
+          interface Address extends Omit<Stripe.AddressParam, 'line1'> {
             line1?: string;
-
-            /**
-             * Address line 2 (e.g., apartment, suite, unit, or building).
-             */
-            line2?: string;
-
-            /**
-             * ZIP or postal code.
-             */
-            postal_code?: string;
-
-            /**
-             * State, county, province, or region.
-             */
-            state?: string;
           }
         }
 
@@ -3530,7 +3458,7 @@ declare module 'stripe' {
         /**
          * Shipping address.
          */
-        address: Stripe.AddressParam;
+        address: Shipping.Address;
 
         /**
          * The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
@@ -3552,6 +3480,12 @@ declare module 'stripe' {
          */
         tracking_number?: string;
       }
+
+      namespace Shipping {
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
+          line1?: string;
+        }
+      }
     }
 
     class PaymentIntentsResource {
diff --git a/types/2020-08-27/PaymentMethods.d.ts b/types/2020-08-27/PaymentMethods.d.ts
index ab8ed3f0..5a1fb45c 100644
--- a/types/2020-08-27/PaymentMethods.d.ts
+++ b/types/2020-08-27/PaymentMethods.d.ts
@@ -821,36 +821,8 @@ declare module 'stripe' {
       }
 
       namespace BillingDetails {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
       }
 
@@ -1151,36 +1123,8 @@ declare module 'stripe' {
       }
 
       namespace BillingDetails {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
       }
 
diff --git a/types/2020-08-27/Persons.d.ts b/types/2020-08-27/Persons.d.ts
index 50ce5ab5..6d829117 100644
--- a/types/2020-08-27/Persons.d.ts
+++ b/types/2020-08-27/Persons.d.ts
@@ -562,36 +562,8 @@ declare module 'stripe' {
     }
 
     namespace PersonCreateParams {
-      interface Address {
-        /**
-         * City, district, suburb, town, or village.
-         */
-        city?: string;
-
-        /**
-         * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-         */
-        country?: string;
-
-        /**
-         * Address line 1 (e.g., street, PO Box, or company name).
-         */
+      interface Address extends Omit<Stripe.AddressParam, 'line1'> {
         line1?: string;
-
-        /**
-         * Address line 2 (e.g., apartment, suite, unit, or building).
-         */
-        line2?: string;
-
-        /**
-         * ZIP or postal code.
-         */
-        postal_code?: string;
-
-        /**
-         * State, county, province, or region.
-         */
-        state?: string;
       }
 
       interface Dob {
@@ -852,36 +824,8 @@ declare module 'stripe' {
     }
 
     namespace PersonUpdateParams {
-      interface Address {
-        /**
-         * City, district, suburb, town, or village.
-         */
-        city?: string;
-
-        /**
-         * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-         */
-        country?: string;
-
-        /**
-         * Address line 1 (e.g., street, PO Box, or company name).
-         */
+      interface Address extends Omit<Stripe.AddressParam, 'line1'> {
         line1?: string;
-
-        /**
-         * Address line 2 (e.g., apartment, suite, unit, or building).
-         */
-        line2?: string;
-
-        /**
-         * ZIP or postal code.
-         */
-        postal_code?: string;
-
-        /**
-         * State, county, province, or region.
-         */
-        state?: string;
       }
 
       interface Dob {
diff --git a/types/2020-08-27/Reviews.d.ts b/types/2020-08-27/Reviews.d.ts
index 33bdec56..a90e91b0 100644
--- a/types/2020-08-27/Reviews.d.ts
+++ b/types/2020-08-27/Reviews.d.ts
@@ -27,7 +27,7 @@ declare module 'stripe' {
       charge: string | Stripe.Charge | null;
 
       /**
-       * The reason the review was closed, or null if it has not yet been closed. One of `approved`, `refunded`, `refunded_as_fraud`, or `disputed`.
+       * The reason the review was closed, or null if it has not yet been closed. One of `approved`, `refunded`, `refunded_as_fraud`, `disputed`, or `redacted`.
        */
       closed_reason: Review.ClosedReason | null;
 
@@ -67,7 +67,7 @@ declare module 'stripe' {
       payment_intent?: string | Stripe.PaymentIntent;
 
       /**
-       * The reason the review is currently open or closed. One of `rule`, `manual`, `approved`, `refunded`, `refunded_as_fraud`, or `disputed`.
+       * The reason the review is currently open or closed. One of `rule`, `manual`, `approved`, `refunded`, `refunded_as_fraud`, `disputed`, or `redacted`.
        */
       reason: string;
 
@@ -81,6 +81,7 @@ declare module 'stripe' {
       type ClosedReason =
         | 'approved'
         | 'disputed'
+        | 'redacted'
         | 'refunded'
         | 'refunded_as_fraud';
 
diff --git a/types/2020-08-27/SKUs.d.ts b/types/2020-08-27/SKUs.d.ts
index 467da5c3..4ba115c9 100644
--- a/types/2020-08-27/SKUs.d.ts
+++ b/types/2020-08-27/SKUs.d.ts
@@ -168,7 +168,9 @@ declare module 'stripe' {
       /**
        * A dictionary of attributes and values for the attributes defined by the product. If, for example, a product's attributes are `["size", "gender"]`, a valid SKU has the following dictionary of attributes: `{"size": "Medium", "gender": "Unisex"}`.
        */
-      attributes?: Stripe.Metadata;
+      attributes?: {
+        [key: string]: string;
+      };
 
       /**
        * Specifies which fields in the response should be expanded.
@@ -259,7 +261,9 @@ declare module 'stripe' {
       /**
        * A dictionary of attributes and values for the attributes defined by the product. When specified, `attributes` will partially update the existing attributes dictionary on the product, with the postcondition that a value must be present for each attribute key on the product.
        */
-      attributes?: Stripe.Metadata;
+      attributes?: {
+        [key: string]: string;
+      };
 
       /**
        * Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
@@ -358,7 +362,9 @@ declare module 'stripe' {
       /**
        * Only return SKUs that have the specified key-value pairs in this partially constructed dictionary. Can be specified only if `product` is also supplied. For instance, if the associated product has attributes `["color", "size"]`, passing in `attributes[color]=red` returns all the SKUs for this product that have `color` set to `red`.
        */
-      attributes?: Stripe.Metadata;
+      attributes?: {
+        [key: string]: string;
+      };
 
       /**
        * Specifies which fields in the response should be expanded.
diff --git a/types/2020-08-27/Sources.d.ts b/types/2020-08-27/Sources.d.ts
index e45f160f..661f1f1b 100644
--- a/types/2020-08-27/Sources.d.ts
+++ b/types/2020-08-27/Sources.d.ts
@@ -934,36 +934,8 @@ declare module 'stripe' {
       }
 
       namespace Owner {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
       }
 
@@ -1226,36 +1198,8 @@ declare module 'stripe' {
       }
 
       namespace Owner {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
       }
 
diff --git a/types/2020-08-27/SubscriptionItems.d.ts b/types/2020-08-27/SubscriptionItems.d.ts
index 5e1880a7..202ccbd3 100644
--- a/types/2020-08-27/SubscriptionItems.d.ts
+++ b/types/2020-08-27/SubscriptionItems.d.ts
@@ -290,7 +290,7 @@ declare module 'stripe' {
       plan?: string;
 
       /**
-       * The ID of the price object.
+       * The ID of the price object. When changing a subscription item's price, `quantity` is set to 1 unless a `quantity` parameter is provided.
        */
       price?: string;
 
diff --git a/types/2020-08-27/Subscriptions.d.ts b/types/2020-08-27/Subscriptions.d.ts
index bc069494..88d1962b 100644
--- a/types/2020-08-27/Subscriptions.d.ts
+++ b/types/2020-08-27/Subscriptions.d.ts
@@ -1066,7 +1066,7 @@ declare module 'stripe' {
         plan?: string;
 
         /**
-         * The ID of the price object.
+         * The ID of the price object. When changing a subscription item's price, `quantity` is set to 1 unless a `quantity` parameter is provided.
          */
         price?: string;
 
diff --git a/types/2020-08-27/Terminal/Locations.d.ts b/types/2020-08-27/Terminal/Locations.d.ts
index a531e99d..f39df88c 100644
--- a/types/2020-08-27/Terminal/Locations.d.ts
+++ b/types/2020-08-27/Terminal/Locations.d.ts
@@ -143,36 +143,8 @@ declare module 'stripe' {
       }
 
       namespace LocationUpdateParams {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
       }
 
diff --git a/types/2020-08-27/Tokens.d.ts b/types/2020-08-27/Tokens.d.ts
index 6009a32a..539f102b 100644
--- a/types/2020-08-27/Tokens.d.ts
+++ b/types/2020-08-27/Tokens.d.ts
@@ -214,36 +214,8 @@ declare module 'stripe' {
         }
 
         namespace Company {
-          interface Address {
-            /**
-             * City, district, suburb, town, or village.
-             */
-            city?: string;
-
-            /**
-             * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-             */
-            country?: string;
-
-            /**
-             * Address line 1 (e.g., street, PO Box, or company name).
-             */
+          interface Address extends Omit<Stripe.AddressParam, 'line1'> {
             line1?: string;
-
-            /**
-             * Address line 2 (e.g., apartment, suite, unit, or building).
-             */
-            line2?: string;
-
-            /**
-             * ZIP or postal code.
-             */
-            postal_code?: string;
-
-            /**
-             * State, county, province, or region.
-             */
-            state?: string;
           }
 
           type Structure =
@@ -388,36 +360,8 @@ declare module 'stripe' {
         }
 
         namespace Individual {
-          interface Address {
-            /**
-             * City, district, suburb, town, or village.
-             */
-            city?: string;
-
-            /**
-             * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-             */
-            country?: string;
-
-            /**
-             * Address line 1 (e.g., street, PO Box, or company name).
-             */
+          interface Address extends Omit<Stripe.AddressParam, 'line1'> {
             line1?: string;
-
-            /**
-             * Address line 2 (e.g., apartment, suite, unit, or building).
-             */
-            line2?: string;
-
-            /**
-             * ZIP or postal code.
-             */
-            postal_code?: string;
-
-            /**
-             * State, county, province, or region.
-             */
-            state?: string;
           }
 
           interface Dob {
@@ -495,6 +439,11 @@ declare module 'stripe' {
          */
         account_number: string;
 
+        /**
+         * The bank account type. This can only be `checking` or `savings` in most countries. In Japan, this can only be `futsu` or `toza`.
+         */
+        account_type?: BankAccount.AccountType;
+
         /**
          * The country in which the bank account is located.
          */
@@ -513,6 +462,8 @@ declare module 'stripe' {
 
       namespace BankAccount {
         type AccountHolderType = 'company' | 'individual';
+
+        type AccountType = 'checking' | 'futsu' | 'savings' | 'toza';
       }
 
       interface Card {
@@ -661,36 +612,8 @@ declare module 'stripe' {
       }
 
       namespace Person {
-        interface Address {
-          /**
-           * City, district, suburb, town, or village.
-           */
-          city?: string;
-
-          /**
-           * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
-           */
-          country?: string;
-
-          /**
-           * Address line 1 (e.g., street, PO Box, or company name).
-           */
+        interface Address extends Omit<Stripe.AddressParam, 'line1'> {
           line1?: string;
-
-          /**
-           * Address line 2 (e.g., apartment, suite, unit, or building).
-           */
-          line2?: string;
-
-          /**
-           * ZIP or postal code.
-           */
-          postal_code?: string;
-
-          /**
-           * State, county, province, or region.
-           */
-          state?: string;
         }
 
         interface Dob {
diff --git a/types/2020-08-27/index.d.ts b/types/2020-08-27/index.d.ts
index 489f2dce..5c7f8f15 100644
--- a/types/2020-08-27/index.d.ts
+++ b/types/2020-08-27/index.d.ts
@@ -173,7 +173,9 @@ declare module 'stripe' {
       configurations: Stripe.BillingPortal.ConfigurationsResource;
       sessions: Stripe.BillingPortal.SessionsResource;
     };
-    checkout: {sessions: Stripe.Checkout.SessionsResource};
+    checkout: {
+      sessions: Stripe.Checkout.SessionsResource;
+    };
     identity: {
       verificationReports: Stripe.Identity.VerificationReportsResource;
       verificationSessions: Stripe.Identity.VerificationSessionsResource;
@@ -194,13 +196,14 @@ declare module 'stripe' {
       reportRuns: Stripe.Reporting.ReportRunsResource;
       reportTypes: Stripe.Reporting.ReportTypesResource;
     };
-    sigma: {scheduledQueryRuns: Stripe.Sigma.ScheduledQueryRunsResource};
+    sigma: {
+      scheduledQueryRuns: Stripe.Sigma.ScheduledQueryRunsResource;
+    };
     terminal: {
       connectionTokens: Stripe.Terminal.ConnectionTokensResource;
       locations: Stripe.Terminal.LocationsResource;
       readers: Stripe.Terminal.ReadersResource;
     };
-
     /**
      * API Errors
      */
diff --git a/types/lib.d.ts b/types/lib.d.ts
index 45d396a0..cb090ab5 100644
--- a/types/lib.d.ts
+++ b/types/lib.d.ts
@@ -16,7 +16,8 @@ declare module 'stripe' {
       >(spec: T): StripeResource & T;
       static method(spec: {
         method: string;
-        path: string;
+        path?: string;
+        fullPath?: string;
         methodType?: 'list';
       }): (...args: any[]) => object; //eslint-disable-line @typescript-eslint/no-explicit-any
       static BASIC_METHODS: {


Test patch:
diff --git a/test/StripeResource.spec.js b/test/StripeResource.spec.js
index 18b1f2a5..2f5ec6cc 100644
--- a/test/StripeResource.spec.js
+++ b/test/StripeResource.spec.js
@@ -642,6 +642,38 @@ describe('StripeResource', () => {
     });
   });
 
+  describe('method with fullPath', () => {
+    it('interpolates in parameters', (callback) => {
+      const handleRequest = (req, res) => {
+        expect(req.url).to.equal('/v1/parent/hello/child/world');
+
+        // Write back JSON to close out the server.
+        res.write('{}');
+        res.end();
+      };
+
+      testUtils.getTestServerStripe(
+        {},
+        handleRequest,
+        (err, stripe, closeServer) => {
+          const resource = new (StripeResource.extend({
+            test: stripeMethod({
+              method: 'GET',
+              fullPath: '/v1/parent/{param1}/child/{param2}',
+            }),
+          }))(stripe);
+
+          return resource.test('hello', 'world', (err, res) => {
+            closeServer();
+            // Spot check that we received a response.
+            expect(res).to.deep.equal({});
+            return callback(err);
+          });
+        }
+      );
+    });
+  });
+
   describe('streaming', () => {
     /**
      * Defines a fake resource with a `pdf` method
diff --git a/test/makeRequest.spec.js b/test/makeRequest.spec.js
index 93fe5e67..c333594d 100644
--- a/test/makeRequest.spec.js
+++ b/test/makeRequest.spec.js
@@ -3,6 +3,7 @@
 require('../testUtils');
 
 const makeRequest = require('../lib/makeRequest');
+const utils = require('../lib/utils');
 const expect = require('chai').expect;
 
 describe('makeRequest', () => {
@@ -26,4 +27,42 @@ describe('makeRequest', () => {
       ]);
     });
   });
+
+  describe('makeRequest with fullPath', () => {
+    it('handles urlData', async () => {
+      const args = ['hello', 'world'];
+
+      const fullPath = '/v1/parent/{param1}/child/{param2}';
+      const spec = {
+        fullPath,
+        urlParams: utils.extractUrlParams(fullPath),
+      };
+
+      let actualPath;
+      const mockSelf = {
+        // These two methods shouldn't be called when using a fullPath, as they
+        // don't rely on the resource path.
+        createResourcePathWithSymbols: () => {
+          throw new Error('Unexpected call to createResourcePathWithSymbols.');
+        },
+        createFullPath: () => {
+          throw new Error('Unexpected call to createFullPath.');
+        },
+        _request: (
+          _method,
+          _host,
+          path,
+          _body,
+          _auth,
+          _headers,
+          requestCallback
+        ) => {
+          actualPath = path;
+          requestCallback(null, 'response');
+        },
+      };
+      await makeRequest(mockSelf, args, spec, {});
+      expect(actualPath).to.equal('/v1/parent/hello/child/world');
+    });
+  });
 });
diff --git a/types/test/typescriptTest.ts b/types/test/typescriptTest.ts
index d93e3bde..9c763be3 100644
--- a/types/test/typescriptTest.ts
+++ b/types/test/typescriptTest.ts
@@ -180,6 +180,10 @@ Stripe.StripeResource.extend({
     method: 'create',
     path: 'foo',
   }),
+  fooFullPath: Stripe.StripeResource.method({
+    method: 'create',
+    fullPath: '/v1/full/path',
+  }),
 });
 
 const maxBufferedRequestMetrics: number =