release: 1.9.0#20
Conversation
|
🧪 Testing To try out this version of the SDK: Expires at: Thu, 02 Jul 2026 21:44:18 GMT |
6d92ed8 to
ddcf565
Compare
ddcf565 to
0bb0b25
Compare
0bb0b25 to
ca3e49f
Compare
ca3e49f to
47f7a2c
Compare
47f7a2c to
58f03d2
Compare
58f03d2 to
26db534
Compare
26db534 to
d258a43
Compare
d258a43 to
d09fc51
Compare
Greptile SummaryThis is the automated Stainless SDK release for v1.9.0, adding
Confidence Score: 3/5Several 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 src/resources/customers/customers.ts (method rename + typo), src/resources/auth/sessions.ts (parameter restructuring), src/resources/transactions.ts (refund type relocation)
|
| 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>"]
Comments Outside Diff (1)
-
src/resources/auth/sessions.ts, line 195-198 (link)Breaking parameter shape change in a minor version:
SessionRefreshParams.clientPublicKeywas a top-level body param and is now wrapped insideAuthSessionRefreshRequest. Any caller that was passing{ clientPublicKey: '...' }will now send an empty body with the key silently dropped, because the destructuring pullsAuthSessionRefreshRequest(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>; |
There was a problem hiding this 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.
| 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( |
There was a problem hiding this 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.
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 { | |||
| /** | |||
There was a problem hiding this 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.
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!
Automated Release PR
1.9.0 (2026-06-02)
Full Changelog: v1.8.0...v1.9.0
Features
Documentation
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