Skip to content

release: 1.9.0#20

Open
stainless-app[bot] wants to merge 10 commits into
mainfrom
release-please--branches--main--changes--next--components--grid
Open

release: 1.9.0#20
stainless-app[bot] wants to merge 10 commits into
mainfrom
release-please--branches--main--changes--next--components--grid

Conversation

@stainless-app
Copy link
Copy Markdown
Contributor

@stainless-app stainless-app Bot commented May 28, 2026

Automated Release PR

1.9.0 (2026-06-02)

Full Changelog: v1.8.0...v1.9.0

Features

  • api: add receiptDeliveryConfirmedAt to transaction responses (c6d1dba)
  • api: add SWIFT account type, update COP/EGP account requirements (23edde7)
  • api: manual updates (bcb7d4c)
  • api: manual updates (605f969)
  • api: manual updates (96b093a)
  • api: manual updates (3e10796)
  • transfers: allow selecting payment rail on transfer-out destination (11e1ce3)

Documentation

  • api: add KYB requirements to verifications submit method (8cac5e8)
  • types: document passkey assertion in auth credentials (4bbc90c)

This pull request is managed by Stainless's GitHub App.

The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.

For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.

🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions

@stainless-app
Copy link
Copy Markdown
Contributor Author

stainless-app Bot commented May 28, 2026

🧪 Testing

To try out this version of the SDK:

npm install 'https://pkg.stainless.com/s/grid-typescript/c6d1dbac640733dcef2e55d8f32276a26188439b/dist.tar.gz'

Expires at: Thu, 02 Jul 2026 21:44:18 GMT
Updated at: Tue, 02 Jun 2026 21:44:18 GMT

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next--components--grid branch from 6d92ed8 to ddcf565 Compare May 28, 2026 23:17
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next--components--grid branch from ddcf565 to 0bb0b25 Compare May 28, 2026 23:35
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next--components--grid branch from 0bb0b25 to ca3e49f Compare May 28, 2026 23:51
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next--components--grid branch from ca3e49f to 47f7a2c Compare May 29, 2026 05:53
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next--components--grid branch from 47f7a2c to 58f03d2 Compare May 29, 2026 19:15
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next--components--grid branch from 58f03d2 to 26db534 Compare May 30, 2026 00:16
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next--components--grid branch from 26db534 to d258a43 Compare June 1, 2026 21:08
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next--components--grid branch from d258a43 to d09fc51 Compare June 2, 2026 21:43
@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented Jun 2, 2026

Greptile Summary

This is the automated Stainless SDK release for v1.9.0, adding receiptDeliveryConfirmedAt to transaction responses, introducing paymentRail selection on transfer-out destinations, adding a SWIFT account type, updating COP/EGP account requirements, and consolidating several duplicated type definitions.

  • New features: paymentRail optional field on TransferOutCreateParams.Destination, receiptDeliveryConfirmedAt on both IncomingTransaction and OutgoingTransaction, AuthCredentialChallengeRequest type with passkey docs, and expanded KYB documentation on verifications.submit().
  • Type consolidation: BusinessCustomer/IndividualCustomer now extend a shared Customer base, duplicate response types (CustomerCreateResponse, VerificationRetrieveResponse, etc.) replaced with single canonical types (CustomerOneOf, Verification), and BusinessInfoUpdate removed in favour of inline definitions.
  • Breaking changes in a minor bump: generateKYCLink renamed to createKYCLink with a new wrapped param shape, SessionRefreshParams.clientPublicKey moved inside AuthSessionRefreshRequest, OutgoingTransaction.Refund namespace removed in favour of SimulateAPI.Refund, and a typo (CustomerOneovesDefaultPagination) introduced in the public API surface.

Confidence Score: 3/5

Several method renames and parameter restructurings will silently break existing callers, and a typo in a public type name is baked into the exported API surface.

The generateKYCLinkcreateKYCLink rename removes a method entirely from the public surface; callers will get a runtime error rather than a type error. SessionRefreshParams.clientPublicKey moved from a flat body param into a nested wrapper, so existing code will compile but send an empty body and receive a server error. OutgoingTransaction.Refund is gone as a namespace, breaking TypeScript consumers who referenced it directly. On top of these, CustomerOneovesDefaultPagination ships as a misspelled public type name. Together these issues span core auth, customer, and transaction paths.

src/resources/customers/customers.ts (method rename + typo), src/resources/auth/sessions.ts (parameter restructuring), src/resources/transactions.ts (refund type relocation)

Important Files Changed

Filename Overview
src/resources/customers/customers.ts Major refactor: response types unified to CustomerOneOf, generateKYCLink renamed to createKYCLink with new param shape, updateInternalAccount body now wrapped in InternalAccountUpdateRequest — all breaking changes in a minor bump; also contains a typo CustomerOneovesDefaultPagination in the public API.
src/resources/auth/sessions.ts SessionRefreshParams.clientPublicKey moved inside a new AuthSessionRefreshRequest wrapper, breaking the existing flat parameter shape for all callers of sessions.refresh().
src/resources/transactions.ts Adds receiptDeliveryConfirmedAt to both IncomingTransaction and OutgoingTransaction; removes OutgoingTransaction.Refund namespace in favour of SimulateAPI.Refund (a sandbox sub-module type), which is a breaking type reference change; adds TransactionListResponse.
src/resources/shared.ts Large cleanup: BusinessCustomer and IndividualCustomer now extend CustomersAPI.Customer (removing duplicated fields), BusinessInfoUpdate removed, EgpBeneficiary required fields relaxed to optional, EgpExternalAccountCreateInfo gains phoneNumber/iban and drops accountNumber/bankName/swiftCode.
src/resources/transfer-out.ts Adds paymentRail optional field to TransferOutCreateParams.Destination and exports new TransferOutRequest type; no breaking changes.
src/resources/verifications.ts Response types consolidated to a single Verification interface; VerificationListResponse repurposed as a paginated envelope; adds KYB documentation to submit(); no functional logic changes.
src/version.ts Version bumped from 1.8.0 to 1.9.0.
src/resources/auth/credentials.ts Exports new AuthCredentialChallengeRequest type and adds JSDoc to PasskeyAssertion; additive-only changes.
packages/mcp-server/src/methods.ts MCP method registry updated to reflect createKYCLink rename and swapped ordering of export/createKYCLink entries; consistent with the SDK method rename.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Client v1.9.0] --> B[customers.createKYCLink]
    A --> C[customers.generateKYCLink ❌ removed]
    A --> D[sessions.refresh]
    A --> E[transfer-out.create]

    B --> B1["POST /customers/{customerId}/kyc-link\nbody: KycLinkCreateRequest wrapper"]
    C --> C1["⚠️ Breaking: method no longer exists\n(was flat redirectUri param)"]
    D --> D1["POST /auth/sessions/{id}/refresh\nbody: AuthSessionRefreshRequest wrapper\n⚠️ Breaking: was flat clientPublicKey"]
    E --> E1["POST /transfer-out\ndestination.paymentRail ✅ new optional field"]

    F[OutgoingTransaction] --> G["refund: SimulateAPI.Refund\n⚠️ moved from OutgoingTransaction.Refund namespace"]
    H[CustomerOneOf] --> I["IndividualCustomer | BusinessCustomer\nboth now extend CustomersAPI.Customer"]
    J["CustomerOneovesDefaultPagination\n⚠️ typo in public type name"] --> K["DefaultPagination<CustomerOneOf>"]
Loading

Comments Outside Diff (1)

  1. src/resources/auth/sessions.ts, line 195-198 (link)

    P1 Breaking parameter shape change in a minor version: SessionRefreshParams.clientPublicKey was a top-level body param and is now wrapped inside AuthSessionRefreshRequest. Any caller that was passing { clientPublicKey: '...' } will now send an empty body with the key silently dropped, because the destructuring pulls AuthSessionRefreshRequest (undefined) as the body instead. The session refresh will likely fail or succeed with a missing key, producing a confusing error.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: src/resources/auth/sessions.ts
    Line: 195-198
    
    Comment:
    Breaking parameter shape change in a minor version: `SessionRefreshParams.clientPublicKey` was a top-level body param and is now wrapped inside `AuthSessionRefreshRequest`. Any caller that was passing `{ clientPublicKey: '...' }` will now send an empty body with the key silently dropped, because the destructuring pulls `AuthSessionRefreshRequest` (undefined) as the body instead. The session refresh will likely fail or succeed with a missing key, producing a confusing error.
    
    How can I resolve this? If you propose a fix, please make it concise.
Prompt To Fix All With AI
Fix the following 4 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 4
src/resources/customers/customers.ts:394
Typo in exported type name: `CustomerOneovesDefaultPagination` appears to be a garbled spelling of what should be `CustomersDefaultPagination` (or `CustomerOneOfDefaultPagination`). Because this type is re-exported as a public API symbol (in `src/resources/customers/index.ts` and `src/resources/index.ts`), the misspelling is now baked into the public contract and will be visible to every downstream consumer.

```suggestion
export type CustomersDefaultPagination = DefaultPagination<CustomerOneOf>;
```

### Issue 2 of 4
src/resources/auth/sessions.ts:195-198
Breaking parameter shape change in a minor version: `SessionRefreshParams.clientPublicKey` was a top-level body param and is now wrapped inside `AuthSessionRefreshRequest`. Any caller that was passing `{ clientPublicKey: '...' }` will now send an empty body with the key silently dropped, because the destructuring pulls `AuthSessionRefreshRequest` (undefined) as the body instead. The session refresh will likely fail or succeed with a missing key, producing a confusing error.

### Issue 3 of 4
src/resources/customers/customers.ts:242
Breaking rename from `generateKYCLink` to `createKYCLink` in a minor (1.8.0 → 1.9.0) release. Existing callers invoking `client.customers.generateKYCLink(...)` will get a runtime `TypeError: client.customers.generateKYCLink is not a function`. The parameter shape also changed: `redirectUri` is no longer a flat body field but is now nested inside `KycLinkCreateRequest`, so any caller passing the old shape will silently send a missing body.

### Issue 4 of 4
src/resources/transactions.ts:383
The `refund` field type on `OutgoingTransaction` was changed from the locally-defined `OutgoingTransaction.Refund` namespace type to `SimulateAPI.Refund` (imported from the sandbox cards simulate module). Any consumers type-checking against the old `OutgoingTransaction.Refund` path will get a TS compile error. More surprisingly, a production `OutgoingTransaction` object now references a type defined inside the `sandbox` package sub-tree, which may feel semantically incorrect to readers of the API surface.

Reviews (1): Last reviewed commit: "release: 1.9.0" | Re-trigger Greptile

export type CustomerCreateResponse = Shared.IndividualCustomer | Shared.BusinessCustomer;

export type CustomerRetrieveResponse = Shared.IndividualCustomer | Shared.BusinessCustomer;
export type CustomerOneovesDefaultPagination = DefaultPagination<CustomerOneOf>;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Typo in exported type name: CustomerOneovesDefaultPagination appears to be a garbled spelling of what should be CustomersDefaultPagination (or CustomerOneOfDefaultPagination). Because this type is re-exported as a public API symbol (in src/resources/customers/index.ts and src/resources/index.ts), the misspelling is now baked into the public contract and will be visible to every downstream consumer.

Suggested change
export type CustomerOneovesDefaultPagination = DefaultPagination<CustomerOneOf>;
export type CustomersDefaultPagination = DefaultPagination<CustomerOneOf>;
Prompt To Fix With AI
This is a comment left during a code review.
Path: src/resources/customers/customers.ts
Line: 394

Comment:
Typo in exported type name: `CustomerOneovesDefaultPagination` appears to be a garbled spelling of what should be `CustomersDefaultPagination` (or `CustomerOneOfDefaultPagination`). Because this type is re-exported as a public API symbol (in `src/resources/customers/index.ts` and `src/resources/index.ts`), the misspelling is now baked into the public contract and will be visible to every downstream consumer.

```suggestion
export type CustomersDefaultPagination = DefaultPagination<CustomerOneOf>;
```

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

* await client.customers.createKYCLink('customerId');
* ```
*/
createKYCLink(
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Breaking rename from generateKYCLink to createKYCLink in a minor (1.8.0 → 1.9.0) release. Existing callers invoking client.customers.generateKYCLink(...) will get a runtime TypeError: client.customers.generateKYCLink is not a function. The parameter shape also changed: redirectUri is no longer a flat body field but is now nested inside KycLinkCreateRequest, so any caller passing the old shape will silently send a missing body.

Prompt To Fix With AI
This is a comment left during a code review.
Path: src/resources/customers/customers.ts
Line: 242

Comment:
Breaking rename from `generateKYCLink` to `createKYCLink` in a minor (1.8.0 → 1.9.0) release. Existing callers invoking `client.customers.generateKYCLink(...)` will get a runtime `TypeError: client.customers.generateKYCLink is not a function`. The parameter shape also changed: `redirectUri` is no longer a flat body field but is now nested inside `KycLinkCreateRequest`, so any caller passing the old shape will silently send a missing body.

How can I resolve this? If you propose a fix, please make it concise.

@@ -370,7 +383,7 @@ export interface OutgoingTransaction {
/**
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 The refund field type on OutgoingTransaction was changed from the locally-defined OutgoingTransaction.Refund namespace type to SimulateAPI.Refund (imported from the sandbox cards simulate module). Any consumers type-checking against the old OutgoingTransaction.Refund path will get a TS compile error. More surprisingly, a production OutgoingTransaction object now references a type defined inside the sandbox package sub-tree, which may feel semantically incorrect to readers of the API surface.

Prompt To Fix With AI
This is a comment left during a code review.
Path: src/resources/transactions.ts
Line: 383

Comment:
The `refund` field type on `OutgoingTransaction` was changed from the locally-defined `OutgoingTransaction.Refund` namespace type to `SimulateAPI.Refund` (imported from the sandbox cards simulate module). Any consumers type-checking against the old `OutgoingTransaction.Refund` path will get a TS compile error. More surprisingly, a production `OutgoingTransaction` object now references a type defined inside the `sandbox` package sub-tree, which may feel semantically incorrect to readers of the API surface.

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants