diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index c63d8fd4..c1ce2c41 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "4.35.0"
+ ".": "4.36.0"
}
diff --git a/.stats.yml b/.stats.yml
index 3114caa3..e670c774 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,2 +1,2 @@
-configured_endpoints: 96
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/orb%2Forb-1345a8e288e34d5477b0e189877225f83939a59078c22fbb5367712e376c5d19.yml
+configured_endpoints: 97
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/orb%2Forb-bf3e71b33372f4a9307f4b6cb689ea46b3cf583ecc5d79eee9601cd0b0467c9a.yml
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 379a552a..b6b1c707 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 4.36.0 (2024-11-15)
+
+Full Changelog: [v4.35.0...v4.36.0](https://github.com/orbcorp/orb-node/compare/v4.35.0...v4.36.0)
+
+### Features
+
+* **api:** api update ([#394](https://github.com/orbcorp/orb-node/issues/394)) ([abc8949](https://github.com/orbcorp/orb-node/commit/abc894968c9ad04705f73a84d560225781d6b8a9))
+
## 4.35.0 (2024-11-06)
Full Changelog: [v4.34.0...v4.35.0](https://github.com/orbcorp/orb-node/compare/v4.34.0...v4.35.0)
diff --git a/README.md b/README.md
index 81a5054f..77d948a4 100644
--- a/README.md
+++ b/README.md
@@ -164,7 +164,7 @@ for (const coupon of page.data) {
// Convenience methods are provided for manually paginating:
while (page.hasNextPage()) {
- page = page.getNextPage();
+ page = await page.getNextPage();
// ...
}
```
@@ -350,6 +350,15 @@ TypeScript >= 4.5 is supported.
The following runtimes are supported:
+- Web browsers (Up-to-date Chrome, Firefox, Safari, Edge, and more)
+- Node.js 18 LTS or later ([non-EOL](https://endoflife.date/nodejs)) versions.
+- Deno v1.28.0 or higher, using `import Orb from "npm:orb-billing"`.
+- Bun 1.0 or later.
+- Cloudflare Workers.
+- Vercel Edge Runtime.
+- Jest 28 or greater with the `"node"` environment (`"jsdom"` is not supported at this time).
+- Nitro v2.6 or greater.
+
Note that React Native is not supported at this time.
If you are interested in other runtime environments, please open or upvote an issue on GitHub.
diff --git a/api.md b/api.md
index 6c79ad3e..301500a0 100644
--- a/api.md
+++ b/api.md
@@ -207,6 +207,7 @@ Methods:
- client.invoices.fetchUpcoming({ ...params }) -> InvoiceFetchUpcomingResponse
- client.invoices.issue(invoiceId, { ...params }) -> Invoice
- client.invoices.markPaid(invoiceId, { ...params }) -> Invoice
+- client.invoices.pay(invoiceId) -> Invoice
- client.invoices.void(invoiceId) -> Invoice
# Items
diff --git a/package.json b/package.json
index ba767c92..f132328d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "orb-billing",
- "version": "4.35.0",
+ "version": "4.36.0",
"description": "The official TypeScript library for the Orb API",
"author": "Orb ",
"types": "dist/index.d.ts",
@@ -45,7 +45,6 @@
"jest": "^29.4.0",
"prettier": "^3.0.0",
"ts-jest": "^29.1.0",
- "ts-morph": "^19.0.0",
"ts-node": "^10.5.0",
"tsc-multi": "^1.1.0",
"tsconfig-paths": "^4.0.0",
diff --git a/src/index.ts b/src/index.ts
index 5b9da9e5..49104834 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -328,37 +328,6 @@ export class Orb extends Core.APIClient {
static fileFromPath = Uploads.fileFromPath;
}
-export {
- OrbError,
- APIError,
- APIConnectionError,
- APIConnectionTimeoutError,
- APIUserAbortError,
- URLNotFound,
- NotFoundError,
- ConflictError,
- RateLimitError,
- BadRequestError,
- RequestTooLarge,
- TooManyRequests,
- ResourceNotFound,
- ResourceConflict,
- ResourceTooLarge,
- AuthenticationError,
- InternalServerError,
- ConstraintViolation,
- FeatureNotAvailable,
- PermissionDeniedError,
- RequestValidationError,
- OrbAuthenticationError,
- OrbInternalServerError,
- UnprocessableEntityError,
- DuplicateResourceCreation,
-} from './error';
-
-export import toFile = Uploads.toFile;
-export import fileFromPath = Uploads.fileFromPath;
-
Orb.TopLevel = TopLevel;
Orb.Coupons = Coupons;
Orb.CouponsPage = CouponsPage;
@@ -382,7 +351,6 @@ Orb.SubscriptionsPage = SubscriptionsPage;
Orb.SubscriptionFetchScheduleResponsesPage = SubscriptionFetchScheduleResponsesPage;
Orb.Alerts = Alerts;
Orb.AlertsPage = AlertsPage;
-
export declare namespace Orb {
export type RequestOptions = Core.RequestOptions;
@@ -539,4 +507,33 @@ export declare namespace Orb {
export type TrialDiscount = API.TrialDiscount;
}
+export { toFile, fileFromPath } from './uploads';
+export {
+ OrbError,
+ APIError,
+ APIConnectionError,
+ APIConnectionTimeoutError,
+ APIUserAbortError,
+ URLNotFound,
+ NotFoundError,
+ ConflictError,
+ RateLimitError,
+ BadRequestError,
+ RequestTooLarge,
+ TooManyRequests,
+ ResourceNotFound,
+ ResourceConflict,
+ ResourceTooLarge,
+ AuthenticationError,
+ InternalServerError,
+ ConstraintViolation,
+ FeatureNotAvailable,
+ PermissionDeniedError,
+ RequestValidationError,
+ OrbAuthenticationError,
+ OrbInternalServerError,
+ UnprocessableEntityError,
+ DuplicateResourceCreation,
+} from './error';
+
export default Orb;
diff --git a/src/resources/invoices.ts b/src/resources/invoices.ts
index 3a127ac9..eaa2e10c 100644
--- a/src/resources/invoices.ts
+++ b/src/resources/invoices.ts
@@ -114,6 +114,14 @@ export class Invoices extends APIResource {
return this._client.post(`/invoices/${invoiceId}/mark_paid`, { body, ...options });
}
+ /**
+ * This endpoint collects payment for an invoice using the customer's default
+ * payment method. This action can only be taken on invoices with status "issued".
+ */
+ pay(invoiceId: string, options?: Core.RequestOptions): Core.APIPromise {
+ return this._client.post(`/invoices/${invoiceId}/pay`, options);
+ }
+
/**
* This endpoint allows an invoice's status to be set the `void` status. This can
* only be done to invoices that are in the `issued` status.
@@ -368,6 +376,11 @@ export interface Invoice {
*/
paid_at: string | null;
+ /**
+ * A list of payment attempts associated with the invoice
+ */
+ payment_attempts: Array;
+
/**
* If payment was attempted on this invoice but failed, this will be the time of
* the most recent attempt.
@@ -1292,6 +1305,38 @@ export namespace Invoice {
minimum_amount: string;
}
+ export interface PaymentAttempt {
+ /**
+ * The ID of the payment attempt.
+ */
+ id: string;
+
+ /**
+ * The amount of the payment attempt.
+ */
+ amount: string;
+
+ /**
+ * The time at which the payment attempt was created.
+ */
+ created_at: string;
+
+ /**
+ * The payment provider that attempted to collect the payment.
+ */
+ payment_provider: 'stripe' | null;
+
+ /**
+ * The ID of the payment attempt in the payment provider.
+ */
+ payment_provider_id: string | null;
+
+ /**
+ * Whether the payment attempt succeeded.
+ */
+ succeeded: boolean;
+ }
+
export interface ShippingAddress {
city: string | null;
@@ -1537,6 +1582,11 @@ export interface InvoiceFetchUpcomingResponse {
*/
paid_at: string | null;
+ /**
+ * A list of payment attempts associated with the invoice
+ */
+ payment_attempts: Array;
+
/**
* If payment was attempted on this invoice but failed, this will be the time of
* the most recent attempt.
@@ -2466,6 +2516,38 @@ export namespace InvoiceFetchUpcomingResponse {
minimum_amount: string;
}
+ export interface PaymentAttempt {
+ /**
+ * The ID of the payment attempt.
+ */
+ id: string;
+
+ /**
+ * The amount of the payment attempt.
+ */
+ amount: string;
+
+ /**
+ * The time at which the payment attempt was created.
+ */
+ created_at: string;
+
+ /**
+ * The payment provider that attempted to collect the payment.
+ */
+ payment_provider: 'stripe' | null;
+
+ /**
+ * The ID of the payment attempt in the payment provider.
+ */
+ payment_provider_id: string | null;
+
+ /**
+ * Whether the payment attempt succeeded.
+ */
+ succeeded: boolean;
+ }
+
export interface ShippingAddress {
city: string | null;
diff --git a/src/version.ts b/src/version.ts
index 7ca672a0..460925ca 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '4.35.0'; // x-release-please-version
+export const VERSION = '4.36.0'; // x-release-please-version
diff --git a/tests/api-resources/invoices.test.ts b/tests/api-resources/invoices.test.ts
index 585d58b4..54c45eb8 100644
--- a/tests/api-resources/invoices.test.ts
+++ b/tests/api-resources/invoices.test.ts
@@ -201,6 +201,24 @@ describe('resource invoices', () => {
});
});
+ test('pay', async () => {
+ const responsePromise = client.invoices.pay('invoice_id');
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ test('pay: request options instead of params are passed correctly', async () => {
+ // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
+ await expect(client.invoices.pay('invoice_id', { path: '/_stainless_unknown_path' })).rejects.toThrow(
+ Orb.NotFoundError,
+ );
+ });
+
test('void', async () => {
const responsePromise = client.invoices.void('invoice_id');
const rawResponse = await responsePromise.asResponse();
diff --git a/yarn.lock b/yarn.lock
index 10ebd6d6..6ea24703 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -759,16 +759,6 @@
dependencies:
"@swc/counter" "^0.1.3"
-"@ts-morph/common@~0.20.0":
- version "0.20.0"
- resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.20.0.tgz#3f161996b085ba4519731e4d24c35f6cba5b80af"
- integrity sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q==
- dependencies:
- fast-glob "^3.2.12"
- minimatch "^7.4.3"
- mkdirp "^2.1.6"
- path-browserify "^1.0.1"
-
"@tsconfig/node10@^1.0.7":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9"
@@ -1314,11 +1304,6 @@ co@^4.6.0:
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
-code-block-writer@^12.0.0:
- version "12.0.0"
- resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-12.0.0.tgz#4dd58946eb4234105aff7f0035977b2afdc2a770"
- integrity sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==
-
collect-v8-coverage@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9"
@@ -2681,23 +2666,11 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
dependencies:
brace-expansion "^1.1.7"
-minimatch@^7.4.3:
- version "7.4.6"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb"
- integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==
- dependencies:
- brace-expansion "^2.0.1"
-
minimist@^1.2.6:
version "1.2.6"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
-mkdirp@^2.1.6:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19"
- integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==
-
ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
@@ -2861,11 +2834,6 @@ parse-json@^5.2.0:
json-parse-even-better-errors "^2.3.0"
lines-and-columns "^1.1.6"
-path-browserify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
- integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
-
path-exists@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
@@ -3279,14 +3247,6 @@ ts-jest@^29.1.0:
semver "^7.5.3"
yargs-parser "^21.0.1"
-ts-morph@^19.0.0:
- version "19.0.0"
- resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-19.0.0.tgz#43e95fb0156c3fe3c77c814ac26b7d0be2f93169"
- integrity sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ==
- dependencies:
- "@ts-morph/common" "~0.20.0"
- code-block-writer "^12.0.0"
-
ts-node@^10.5.0:
version "10.7.0"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5"