chore: Sync account schemas - #353

Closed
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444
Closed

chore: Sync account schemas#353
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

These schemas are generated from VASP adapter field definitions in sparkcore.

Synced schemas:

  • common/ — per-currency account info, beneficiary, and payment account schemas
  • common/PaymentInstructions.yaml — payment instructions oneOf (new currencies added)
  • external_accounts/ — per-currency external account schemas (reference common/)

Please review the changes before merging.

@vercel

vercelBot commented Apr 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 20, 2026 6:05pm

Request Review

@github-actions

github-actionsBot commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

This PR will update the grid SDKs with the following commit messages.

kotlin

fix(types): make nationality required in beneficiaries, add bankName/phoneNumber to accounts

openapi

fix(types): add required fields to account/beneficiary types across currencies

python

feat(api): add bank_name to accounts, phone_number to USD, require nationality in beneficiaries

typescript

feat(api): add bankName to account types, phoneNumber to USD, require beneficiary nationality

Edit this comment to update them. They will appear in their respective SDK's changelogs.

grid-pythonstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/be55e59f22b687ee38249894b007effcf1f2d89e/grid-0.0.1-py3-none-any.whl
grid-openapistudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅

grid-typescriptstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

npm install https://pkg.stainless.com/s/grid-typescript/918bcbd0d20ba8db60500d5d55656d7e0254549e/dist.tar.gz
grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ✅build ✅lint ✅test ✅

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.

This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push.
If you push custom code to the preview branch, re-run this workflow to update the comment.
Last updated: 2026-04-20 18:10:46 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs auto-generated account schemas from sparkcore VASP adapter definitions, adding support for ~15 new currency corridors (AED, BDT, BWP, COP, EGP, GHS, GTQ, HTG, JMD, MWK, MYR, PKR, RWF, SGD, THB, VND, etc.) and flattening the previous *AccountInfoBase/*AccountInfo allOf split into single flat schemas.

  • UsdAccountInfo has two new required fields (bankName, phoneNumber) that did not exist before. This is a breaking change for any consumer that constructs or validates UsdAccountInfo payloads — verify existing integrations are prepared for the stricter schema before merging.
  • MOBILE_MONEY is listed as a valid paymentRails value for USD — worth confirming this is intentional and not a copy-paste artifact from mobile-money corridor schemas.

Confidence Score: 4/5

Safe to merge once the UsdAccountInfo breaking-change additions are confirmed intentional by the sparkcore team.

One P1 finding: bankName and phoneNumber added as required fields on UsdAccountInfo is a breaking schema change for existing API consumers. This needs explicit confirmation that downstream integrations have been updated before merging. All other changes (new currencies, schema flattening, new beneficiary types) look clean.

openapi/components/schemas/common/UsdAccountInfo.yaml and its reflection in mintlify/openapi.yaml / openapi.yaml — the new required fields are the only concern.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf pattern; adds bankName and phoneNumber as new required fields (breaking change) and adds MOBILE_MONEY to paymentRails enum (unusual for USD)
openapi/components/schemas/common/AedAccountInfo.yamlNew AED schema with IBAN and SWIFT fields; clean structure with proper regex validation
openapi/components/schemas/common/GhsAccountInfo.yamlNew GHS schema supporting both BANK_TRANSFER and MOBILE_MONEY rails; requires bankName, accountNumber, and phoneNumber
openapi/components/schemas/common/KesAccountInfo.yamlNew KES mobile money schema; phone number constrained to Kenyan prefix (+254) with 9-digit suffix
openapi/components/schemas/common/KesBeneficiary.yamlNew beneficiary schema (one of several identical INDIVIDUAL beneficiary schemas added in this PR)
openapi/components/schemas/common/PaymentInstructions.yamlNew currencies added to oneOf list and discriminator mapping; all new entries have matching discriminator keys
mintlify/openapi.yamlBundled spec updated to reflect all schema changes including the flattening, new currencies, and the UsdAccountInfo breaking-change additions
openapi/components/schemas/common/MxnAccountInfo.yamlFlattened from allOf pattern; no new required fields, only structural simplification
openapi/components/schemas/common/BwpBeneficiary.yamlNew beneficiary schema, identical structure to all other new *Beneficiary files (INDIVIDUAL type only)

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
PI[PaymentInstructions.yaml\noneOf + discriminator] --> USD[PaymentUsdAccountInfo]
PI --> MXN[PaymentMxnAccountInfo]
PI --> EUR[PaymentEurAccountInfo]
PI --> GBP[PaymentGbpAccountInfo]
PI --> NGN[PaymentNgnAccountInfo]
PI --> KES[PaymentKesAccountInfo]
PI --> NEW["New Corridors\nAED, BDT, BWP, COP, EGP\nGHS, GTQ, HTG, JMD, MWK\nMYR, PKR, RWF, SGD, THB, VND\nXAF, ZAR, ZMW ..."]
USD -->|allOf| UsdBase[UsdAccountInfo\n⚠️ bankName + phoneNumber\nnow REQUIRED]
MXN -->|allOf| MxnBase[MxnAccountInfo\nflattened]
KES -->|allOf| KesBase[KesAccountInfo\n+254 phone regex]
KES -.->|beneficiary| KesBen[KesBeneficiary\nINDIVIDUAL only]
NGN -.->|beneficiary| NgnBen[NgnBeneficiary\nINDIVIDUAL only]
NEW -.->|beneficiary| NewBen["*Beneficiary schemas\n(BWP/MWK/RWF/TZS/UGX\nXAF/XOF/ZAR/ZMW)\nall identical structure"]
Loading

Fix All in Claude Code

Prompt To Fix All With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "chore: Sync account schemas" | Re-trigger Greptile

Comment on lines +1 to +8
type: object
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change: bankName and phoneNumber now required

bankName and phoneNumber have been added to the required list of UsdAccountInfo. Previously only accountType, paymentRails, accountNumber, and routingNumber were required. Any existing API consumer that constructs or validates a UsdAccountInfo payload without these two fields will now fail schema validation.

Additionally, phoneNumber in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the MOBILE_MONEY rail but not for the standard domestic banking rails. If phoneNumber is only needed when the payment rail is MOBILE_MONEY, consider making it conditionally required (e.g., via if/then in JSON Schema) rather than unconditionally required.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +17 to +24
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2MOBILE_MONEY rail in USD schema is unexpected

MOBILE_MONEY is included in the paymentRails enum for UsdAccountInfo. USD transfers are typically ACH, WIRE, RTP, or FedNow — MOBILE_MONEY is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
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!

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #374

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260420-180444 branch April 22, 2026 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

chore: Sync account schemas - #353

Closed
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444
Closed

chore: Sync account schemas#353
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

These schemas are generated from VASP adapter field definitions in sparkcore.

Synced schemas:

  • common/ — per-currency account info, beneficiary, and payment account schemas
  • common/PaymentInstructions.yaml — payment instructions oneOf (new currencies added)
  • external_accounts/ — per-currency external account schemas (reference common/)

Please review the changes before merging.

@vercel

vercelBot commented Apr 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 20, 2026 6:05pm

Request Review

@github-actions

github-actionsBot commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

This PR will update the grid SDKs with the following commit messages.

kotlin

fix(types): make nationality required in beneficiaries, add bankName/phoneNumber to accounts

openapi

fix(types): add required fields to account/beneficiary types across currencies

python

feat(api): add bank_name to accounts, phone_number to USD, require nationality in beneficiaries

typescript

feat(api): add bankName to account types, phoneNumber to USD, require beneficiary nationality

Edit this comment to update them. They will appear in their respective SDK's changelogs.

grid-pythonstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/be55e59f22b687ee38249894b007effcf1f2d89e/grid-0.0.1-py3-none-any.whl
grid-openapistudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅

grid-typescriptstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

npm install https://pkg.stainless.com/s/grid-typescript/918bcbd0d20ba8db60500d5d55656d7e0254549e/dist.tar.gz
grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ✅build ✅lint ✅test ✅

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.

This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push.
If you push custom code to the preview branch, re-run this workflow to update the comment.
Last updated: 2026-04-20 18:10:46 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs auto-generated account schemas from sparkcore VASP adapter definitions, adding support for ~15 new currency corridors (AED, BDT, BWP, COP, EGP, GHS, GTQ, HTG, JMD, MWK, MYR, PKR, RWF, SGD, THB, VND, etc.) and flattening the previous *AccountInfoBase/*AccountInfo allOf split into single flat schemas.

  • UsdAccountInfo has two new required fields (bankName, phoneNumber) that did not exist before. This is a breaking change for any consumer that constructs or validates UsdAccountInfo payloads — verify existing integrations are prepared for the stricter schema before merging.
  • MOBILE_MONEY is listed as a valid paymentRails value for USD — worth confirming this is intentional and not a copy-paste artifact from mobile-money corridor schemas.

Confidence Score: 4/5

Safe to merge once the UsdAccountInfo breaking-change additions are confirmed intentional by the sparkcore team.

One P1 finding: bankName and phoneNumber added as required fields on UsdAccountInfo is a breaking schema change for existing API consumers. This needs explicit confirmation that downstream integrations have been updated before merging. All other changes (new currencies, schema flattening, new beneficiary types) look clean.

openapi/components/schemas/common/UsdAccountInfo.yaml and its reflection in mintlify/openapi.yaml / openapi.yaml — the new required fields are the only concern.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf pattern; adds bankName and phoneNumber as new required fields (breaking change) and adds MOBILE_MONEY to paymentRails enum (unusual for USD)
openapi/components/schemas/common/AedAccountInfo.yamlNew AED schema with IBAN and SWIFT fields; clean structure with proper regex validation
openapi/components/schemas/common/GhsAccountInfo.yamlNew GHS schema supporting both BANK_TRANSFER and MOBILE_MONEY rails; requires bankName, accountNumber, and phoneNumber
openapi/components/schemas/common/KesAccountInfo.yamlNew KES mobile money schema; phone number constrained to Kenyan prefix (+254) with 9-digit suffix
openapi/components/schemas/common/KesBeneficiary.yamlNew beneficiary schema (one of several identical INDIVIDUAL beneficiary schemas added in this PR)
openapi/components/schemas/common/PaymentInstructions.yamlNew currencies added to oneOf list and discriminator mapping; all new entries have matching discriminator keys
mintlify/openapi.yamlBundled spec updated to reflect all schema changes including the flattening, new currencies, and the UsdAccountInfo breaking-change additions
openapi/components/schemas/common/MxnAccountInfo.yamlFlattened from allOf pattern; no new required fields, only structural simplification
openapi/components/schemas/common/BwpBeneficiary.yamlNew beneficiary schema, identical structure to all other new *Beneficiary files (INDIVIDUAL type only)

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
PI[PaymentInstructions.yaml\noneOf + discriminator] --> USD[PaymentUsdAccountInfo]
PI --> MXN[PaymentMxnAccountInfo]
PI --> EUR[PaymentEurAccountInfo]
PI --> GBP[PaymentGbpAccountInfo]
PI --> NGN[PaymentNgnAccountInfo]
PI --> KES[PaymentKesAccountInfo]
PI --> NEW["New Corridors\nAED, BDT, BWP, COP, EGP\nGHS, GTQ, HTG, JMD, MWK\nMYR, PKR, RWF, SGD, THB, VND\nXAF, ZAR, ZMW ..."]
USD -->|allOf| UsdBase[UsdAccountInfo\n⚠️ bankName + phoneNumber\nnow REQUIRED]
MXN -->|allOf| MxnBase[MxnAccountInfo\nflattened]
KES -->|allOf| KesBase[KesAccountInfo\n+254 phone regex]
KES -.->|beneficiary| KesBen[KesBeneficiary\nINDIVIDUAL only]
NGN -.->|beneficiary| NgnBen[NgnBeneficiary\nINDIVIDUAL only]
NEW -.->|beneficiary| NewBen["*Beneficiary schemas\n(BWP/MWK/RWF/TZS/UGX\nXAF/XOF/ZAR/ZMW)\nall identical structure"]
Loading

Fix All in Claude Code

Prompt To Fix All With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "chore: Sync account schemas" | Re-trigger Greptile

Comment on lines +1 to +8
type: object
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change: bankName and phoneNumber now required

bankName and phoneNumber have been added to the required list of UsdAccountInfo. Previously only accountType, paymentRails, accountNumber, and routingNumber were required. Any existing API consumer that constructs or validates a UsdAccountInfo payload without these two fields will now fail schema validation.

Additionally, phoneNumber in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the MOBILE_MONEY rail but not for the standard domestic banking rails. If phoneNumber is only needed when the payment rail is MOBILE_MONEY, consider making it conditionally required (e.g., via if/then in JSON Schema) rather than unconditionally required.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +17 to +24
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2MOBILE_MONEY rail in USD schema is unexpected

MOBILE_MONEY is included in the paymentRails enum for UsdAccountInfo. USD transfers are typically ACH, WIRE, RTP, or FedNow — MOBILE_MONEY is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
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!

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #374

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260420-180444 branch April 22, 2026 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: Sync account schemas - #353

Closed
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444
Closed

chore: Sync account schemas#353
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

These schemas are generated from VASP adapter field definitions in sparkcore.

Synced schemas:

  • common/ — per-currency account info, beneficiary, and payment account schemas
  • common/PaymentInstructions.yaml — payment instructions oneOf (new currencies added)
  • external_accounts/ — per-currency external account schemas (reference common/)

Please review the changes before merging.

@vercel

vercelBot commented Apr 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 20, 2026 6:05pm

Request Review

@github-actions

github-actionsBot commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

This PR will update the grid SDKs with the following commit messages.

kotlin

fix(types): make nationality required in beneficiaries, add bankName/phoneNumber to accounts

openapi

fix(types): add required fields to account/beneficiary types across currencies

python

feat(api): add bank_name to accounts, phone_number to USD, require nationality in beneficiaries

typescript

feat(api): add bankName to account types, phoneNumber to USD, require beneficiary nationality

Edit this comment to update them. They will appear in their respective SDK's changelogs.

grid-pythonstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/be55e59f22b687ee38249894b007effcf1f2d89e/grid-0.0.1-py3-none-any.whl
grid-openapistudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅

grid-typescriptstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

npm install https://pkg.stainless.com/s/grid-typescript/918bcbd0d20ba8db60500d5d55656d7e0254549e/dist.tar.gz
grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ✅build ✅lint ✅test ✅

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.

This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push.
If you push custom code to the preview branch, re-run this workflow to update the comment.
Last updated: 2026-04-20 18:10:46 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs auto-generated account schemas from sparkcore VASP adapter definitions, adding support for ~15 new currency corridors (AED, BDT, BWP, COP, EGP, GHS, GTQ, HTG, JMD, MWK, MYR, PKR, RWF, SGD, THB, VND, etc.) and flattening the previous *AccountInfoBase/*AccountInfo allOf split into single flat schemas.

  • UsdAccountInfo has two new required fields (bankName, phoneNumber) that did not exist before. This is a breaking change for any consumer that constructs or validates UsdAccountInfo payloads — verify existing integrations are prepared for the stricter schema before merging.
  • MOBILE_MONEY is listed as a valid paymentRails value for USD — worth confirming this is intentional and not a copy-paste artifact from mobile-money corridor schemas.

Confidence Score: 4/5

Safe to merge once the UsdAccountInfo breaking-change additions are confirmed intentional by the sparkcore team.

One P1 finding: bankName and phoneNumber added as required fields on UsdAccountInfo is a breaking schema change for existing API consumers. This needs explicit confirmation that downstream integrations have been updated before merging. All other changes (new currencies, schema flattening, new beneficiary types) look clean.

openapi/components/schemas/common/UsdAccountInfo.yaml and its reflection in mintlify/openapi.yaml / openapi.yaml — the new required fields are the only concern.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf pattern; adds bankName and phoneNumber as new required fields (breaking change) and adds MOBILE_MONEY to paymentRails enum (unusual for USD)
openapi/components/schemas/common/AedAccountInfo.yamlNew AED schema with IBAN and SWIFT fields; clean structure with proper regex validation
openapi/components/schemas/common/GhsAccountInfo.yamlNew GHS schema supporting both BANK_TRANSFER and MOBILE_MONEY rails; requires bankName, accountNumber, and phoneNumber
openapi/components/schemas/common/KesAccountInfo.yamlNew KES mobile money schema; phone number constrained to Kenyan prefix (+254) with 9-digit suffix
openapi/components/schemas/common/KesBeneficiary.yamlNew beneficiary schema (one of several identical INDIVIDUAL beneficiary schemas added in this PR)
openapi/components/schemas/common/PaymentInstructions.yamlNew currencies added to oneOf list and discriminator mapping; all new entries have matching discriminator keys
mintlify/openapi.yamlBundled spec updated to reflect all schema changes including the flattening, new currencies, and the UsdAccountInfo breaking-change additions
openapi/components/schemas/common/MxnAccountInfo.yamlFlattened from allOf pattern; no new required fields, only structural simplification
openapi/components/schemas/common/BwpBeneficiary.yamlNew beneficiary schema, identical structure to all other new *Beneficiary files (INDIVIDUAL type only)

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
PI[PaymentInstructions.yaml\noneOf + discriminator] --> USD[PaymentUsdAccountInfo]
PI --> MXN[PaymentMxnAccountInfo]
PI --> EUR[PaymentEurAccountInfo]
PI --> GBP[PaymentGbpAccountInfo]
PI --> NGN[PaymentNgnAccountInfo]
PI --> KES[PaymentKesAccountInfo]
PI --> NEW["New Corridors\nAED, BDT, BWP, COP, EGP\nGHS, GTQ, HTG, JMD, MWK\nMYR, PKR, RWF, SGD, THB, VND\nXAF, ZAR, ZMW ..."]
USD -->|allOf| UsdBase[UsdAccountInfo\n⚠️ bankName + phoneNumber\nnow REQUIRED]
MXN -->|allOf| MxnBase[MxnAccountInfo\nflattened]
KES -->|allOf| KesBase[KesAccountInfo\n+254 phone regex]
KES -.->|beneficiary| KesBen[KesBeneficiary\nINDIVIDUAL only]
NGN -.->|beneficiary| NgnBen[NgnBeneficiary\nINDIVIDUAL only]
NEW -.->|beneficiary| NewBen["*Beneficiary schemas\n(BWP/MWK/RWF/TZS/UGX\nXAF/XOF/ZAR/ZMW)\nall identical structure"]
Loading

Fix All in Claude Code

Prompt To Fix All With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "chore: Sync account schemas" | Re-trigger Greptile

Comment on lines +1 to +8
type: object
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change: bankName and phoneNumber now required

bankName and phoneNumber have been added to the required list of UsdAccountInfo. Previously only accountType, paymentRails, accountNumber, and routingNumber were required. Any existing API consumer that constructs or validates a UsdAccountInfo payload without these two fields will now fail schema validation.

Additionally, phoneNumber in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the MOBILE_MONEY rail but not for the standard domestic banking rails. If phoneNumber is only needed when the payment rail is MOBILE_MONEY, consider making it conditionally required (e.g., via if/then in JSON Schema) rather than unconditionally required.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +17 to +24
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2MOBILE_MONEY rail in USD schema is unexpected

MOBILE_MONEY is included in the paymentRails enum for UsdAccountInfo. USD transfers are typically ACH, WIRE, RTP, or FedNow — MOBILE_MONEY is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
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!

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #374

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260420-180444 branch April 22, 2026 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: Sync account schemas - #353

Closed
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444
Closed

chore: Sync account schemas#353
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

These schemas are generated from VASP adapter field definitions in sparkcore.

Synced schemas:

  • common/ — per-currency account info, beneficiary, and payment account schemas
  • common/PaymentInstructions.yaml — payment instructions oneOf (new currencies added)
  • external_accounts/ — per-currency external account schemas (reference common/)

Please review the changes before merging.

@vercel

vercelBot commented Apr 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 20, 2026 6:05pm

Request Review

@github-actions

github-actionsBot commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

This PR will update the grid SDKs with the following commit messages.

kotlin

fix(types): make nationality required in beneficiaries, add bankName/phoneNumber to accounts

openapi

fix(types): add required fields to account/beneficiary types across currencies

python

feat(api): add bank_name to accounts, phone_number to USD, require nationality in beneficiaries

typescript

feat(api): add bankName to account types, phoneNumber to USD, require beneficiary nationality

Edit this comment to update them. They will appear in their respective SDK's changelogs.

grid-pythonstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/be55e59f22b687ee38249894b007effcf1f2d89e/grid-0.0.1-py3-none-any.whl
grid-openapistudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅

grid-typescriptstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

npm install https://pkg.stainless.com/s/grid-typescript/918bcbd0d20ba8db60500d5d55656d7e0254549e/dist.tar.gz
grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ✅build ✅lint ✅test ✅

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.

This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push.
If you push custom code to the preview branch, re-run this workflow to update the comment.
Last updated: 2026-04-20 18:10:46 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs auto-generated account schemas from sparkcore VASP adapter definitions, adding support for ~15 new currency corridors (AED, BDT, BWP, COP, EGP, GHS, GTQ, HTG, JMD, MWK, MYR, PKR, RWF, SGD, THB, VND, etc.) and flattening the previous *AccountInfoBase/*AccountInfo allOf split into single flat schemas.

  • UsdAccountInfo has two new required fields (bankName, phoneNumber) that did not exist before. This is a breaking change for any consumer that constructs or validates UsdAccountInfo payloads — verify existing integrations are prepared for the stricter schema before merging.
  • MOBILE_MONEY is listed as a valid paymentRails value for USD — worth confirming this is intentional and not a copy-paste artifact from mobile-money corridor schemas.

Confidence Score: 4/5

Safe to merge once the UsdAccountInfo breaking-change additions are confirmed intentional by the sparkcore team.

One P1 finding: bankName and phoneNumber added as required fields on UsdAccountInfo is a breaking schema change for existing API consumers. This needs explicit confirmation that downstream integrations have been updated before merging. All other changes (new currencies, schema flattening, new beneficiary types) look clean.

openapi/components/schemas/common/UsdAccountInfo.yaml and its reflection in mintlify/openapi.yaml / openapi.yaml — the new required fields are the only concern.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf pattern; adds bankName and phoneNumber as new required fields (breaking change) and adds MOBILE_MONEY to paymentRails enum (unusual for USD)
openapi/components/schemas/common/AedAccountInfo.yamlNew AED schema with IBAN and SWIFT fields; clean structure with proper regex validation
openapi/components/schemas/common/GhsAccountInfo.yamlNew GHS schema supporting both BANK_TRANSFER and MOBILE_MONEY rails; requires bankName, accountNumber, and phoneNumber
openapi/components/schemas/common/KesAccountInfo.yamlNew KES mobile money schema; phone number constrained to Kenyan prefix (+254) with 9-digit suffix
openapi/components/schemas/common/KesBeneficiary.yamlNew beneficiary schema (one of several identical INDIVIDUAL beneficiary schemas added in this PR)
openapi/components/schemas/common/PaymentInstructions.yamlNew currencies added to oneOf list and discriminator mapping; all new entries have matching discriminator keys
mintlify/openapi.yamlBundled spec updated to reflect all schema changes including the flattening, new currencies, and the UsdAccountInfo breaking-change additions
openapi/components/schemas/common/MxnAccountInfo.yamlFlattened from allOf pattern; no new required fields, only structural simplification
openapi/components/schemas/common/BwpBeneficiary.yamlNew beneficiary schema, identical structure to all other new *Beneficiary files (INDIVIDUAL type only)

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
PI[PaymentInstructions.yaml\noneOf + discriminator] --> USD[PaymentUsdAccountInfo]
PI --> MXN[PaymentMxnAccountInfo]
PI --> EUR[PaymentEurAccountInfo]
PI --> GBP[PaymentGbpAccountInfo]
PI --> NGN[PaymentNgnAccountInfo]
PI --> KES[PaymentKesAccountInfo]
PI --> NEW["New Corridors\nAED, BDT, BWP, COP, EGP\nGHS, GTQ, HTG, JMD, MWK\nMYR, PKR, RWF, SGD, THB, VND\nXAF, ZAR, ZMW ..."]
USD -->|allOf| UsdBase[UsdAccountInfo\n⚠️ bankName + phoneNumber\nnow REQUIRED]
MXN -->|allOf| MxnBase[MxnAccountInfo\nflattened]
KES -->|allOf| KesBase[KesAccountInfo\n+254 phone regex]
KES -.->|beneficiary| KesBen[KesBeneficiary\nINDIVIDUAL only]
NGN -.->|beneficiary| NgnBen[NgnBeneficiary\nINDIVIDUAL only]
NEW -.->|beneficiary| NewBen["*Beneficiary schemas\n(BWP/MWK/RWF/TZS/UGX\nXAF/XOF/ZAR/ZMW)\nall identical structure"]
Loading

Fix All in Claude Code

Prompt To Fix All With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "chore: Sync account schemas" | Re-trigger Greptile

Comment on lines +1 to +8
type: object
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change: bankName and phoneNumber now required

bankName and phoneNumber have been added to the required list of UsdAccountInfo. Previously only accountType, paymentRails, accountNumber, and routingNumber were required. Any existing API consumer that constructs or validates a UsdAccountInfo payload without these two fields will now fail schema validation.

Additionally, phoneNumber in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the MOBILE_MONEY rail but not for the standard domestic banking rails. If phoneNumber is only needed when the payment rail is MOBILE_MONEY, consider making it conditionally required (e.g., via if/then in JSON Schema) rather than unconditionally required.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +17 to +24
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2MOBILE_MONEY rail in USD schema is unexpected

MOBILE_MONEY is included in the paymentRails enum for UsdAccountInfo. USD transfers are typically ACH, WIRE, RTP, or FedNow — MOBILE_MONEY is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
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!

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #374

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260420-180444 branch April 22, 2026 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

chore: Sync account schemas - #353

Closed
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444
Closed

chore: Sync account schemas#353
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

These schemas are generated from VASP adapter field definitions in sparkcore.

Synced schemas:

  • common/ — per-currency account info, beneficiary, and payment account schemas
  • common/PaymentInstructions.yaml — payment instructions oneOf (new currencies added)
  • external_accounts/ — per-currency external account schemas (reference common/)

Please review the changes before merging.

@vercel

vercelBot commented Apr 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 20, 2026 6:05pm

Request Review

@github-actions

github-actionsBot commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

This PR will update the grid SDKs with the following commit messages.

kotlin

fix(types): make nationality required in beneficiaries, add bankName/phoneNumber to accounts

openapi

fix(types): add required fields to account/beneficiary types across currencies

python

feat(api): add bank_name to accounts, phone_number to USD, require nationality in beneficiaries

typescript

feat(api): add bankName to account types, phoneNumber to USD, require beneficiary nationality

Edit this comment to update them. They will appear in their respective SDK's changelogs.

grid-pythonstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/be55e59f22b687ee38249894b007effcf1f2d89e/grid-0.0.1-py3-none-any.whl
grid-openapistudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅

grid-typescriptstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

npm install https://pkg.stainless.com/s/grid-typescript/918bcbd0d20ba8db60500d5d55656d7e0254549e/dist.tar.gz
grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ✅build ✅lint ✅test ✅

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.

This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push.
If you push custom code to the preview branch, re-run this workflow to update the comment.
Last updated: 2026-04-20 18:10:46 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs auto-generated account schemas from sparkcore VASP adapter definitions, adding support for ~15 new currency corridors (AED, BDT, BWP, COP, EGP, GHS, GTQ, HTG, JMD, MWK, MYR, PKR, RWF, SGD, THB, VND, etc.) and flattening the previous *AccountInfoBase/*AccountInfo allOf split into single flat schemas.

  • UsdAccountInfo has two new required fields (bankName, phoneNumber) that did not exist before. This is a breaking change for any consumer that constructs or validates UsdAccountInfo payloads — verify existing integrations are prepared for the stricter schema before merging.
  • MOBILE_MONEY is listed as a valid paymentRails value for USD — worth confirming this is intentional and not a copy-paste artifact from mobile-money corridor schemas.

Confidence Score: 4/5

Safe to merge once the UsdAccountInfo breaking-change additions are confirmed intentional by the sparkcore team.

One P1 finding: bankName and phoneNumber added as required fields on UsdAccountInfo is a breaking schema change for existing API consumers. This needs explicit confirmation that downstream integrations have been updated before merging. All other changes (new currencies, schema flattening, new beneficiary types) look clean.

openapi/components/schemas/common/UsdAccountInfo.yaml and its reflection in mintlify/openapi.yaml / openapi.yaml — the new required fields are the only concern.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf pattern; adds bankName and phoneNumber as new required fields (breaking change) and adds MOBILE_MONEY to paymentRails enum (unusual for USD)
openapi/components/schemas/common/AedAccountInfo.yamlNew AED schema with IBAN and SWIFT fields; clean structure with proper regex validation
openapi/components/schemas/common/GhsAccountInfo.yamlNew GHS schema supporting both BANK_TRANSFER and MOBILE_MONEY rails; requires bankName, accountNumber, and phoneNumber
openapi/components/schemas/common/KesAccountInfo.yamlNew KES mobile money schema; phone number constrained to Kenyan prefix (+254) with 9-digit suffix
openapi/components/schemas/common/KesBeneficiary.yamlNew beneficiary schema (one of several identical INDIVIDUAL beneficiary schemas added in this PR)
openapi/components/schemas/common/PaymentInstructions.yamlNew currencies added to oneOf list and discriminator mapping; all new entries have matching discriminator keys
mintlify/openapi.yamlBundled spec updated to reflect all schema changes including the flattening, new currencies, and the UsdAccountInfo breaking-change additions
openapi/components/schemas/common/MxnAccountInfo.yamlFlattened from allOf pattern; no new required fields, only structural simplification
openapi/components/schemas/common/BwpBeneficiary.yamlNew beneficiary schema, identical structure to all other new *Beneficiary files (INDIVIDUAL type only)

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
PI[PaymentInstructions.yaml\noneOf + discriminator] --> USD[PaymentUsdAccountInfo]
PI --> MXN[PaymentMxnAccountInfo]
PI --> EUR[PaymentEurAccountInfo]
PI --> GBP[PaymentGbpAccountInfo]
PI --> NGN[PaymentNgnAccountInfo]
PI --> KES[PaymentKesAccountInfo]
PI --> NEW["New Corridors\nAED, BDT, BWP, COP, EGP\nGHS, GTQ, HTG, JMD, MWK\nMYR, PKR, RWF, SGD, THB, VND\nXAF, ZAR, ZMW ..."]
USD -->|allOf| UsdBase[UsdAccountInfo\n⚠️ bankName + phoneNumber\nnow REQUIRED]
MXN -->|allOf| MxnBase[MxnAccountInfo\nflattened]
KES -->|allOf| KesBase[KesAccountInfo\n+254 phone regex]
KES -.->|beneficiary| KesBen[KesBeneficiary\nINDIVIDUAL only]
NGN -.->|beneficiary| NgnBen[NgnBeneficiary\nINDIVIDUAL only]
NEW -.->|beneficiary| NewBen["*Beneficiary schemas\n(BWP/MWK/RWF/TZS/UGX\nXAF/XOF/ZAR/ZMW)\nall identical structure"]
Loading

Fix All in Claude Code

Prompt To Fix All With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "chore: Sync account schemas" | Re-trigger Greptile

Comment on lines +1 to +8
type: object
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change: bankName and phoneNumber now required

bankName and phoneNumber have been added to the required list of UsdAccountInfo. Previously only accountType, paymentRails, accountNumber, and routingNumber were required. Any existing API consumer that constructs or validates a UsdAccountInfo payload without these two fields will now fail schema validation.

Additionally, phoneNumber in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the MOBILE_MONEY rail but not for the standard domestic banking rails. If phoneNumber is only needed when the payment rail is MOBILE_MONEY, consider making it conditionally required (e.g., via if/then in JSON Schema) rather than unconditionally required.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +17 to +24
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2MOBILE_MONEY rail in USD schema is unexpected

MOBILE_MONEY is included in the paymentRails enum for UsdAccountInfo. USD transfers are typically ACH, WIRE, RTP, or FedNow — MOBILE_MONEY is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
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!

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #374

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260420-180444 branch April 22, 2026 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: Sync account schemas - #353

Closed
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444
Closed

chore: Sync account schemas#353
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

These schemas are generated from VASP adapter field definitions in sparkcore.

Synced schemas:

  • common/ — per-currency account info, beneficiary, and payment account schemas
  • common/PaymentInstructions.yaml — payment instructions oneOf (new currencies added)
  • external_accounts/ — per-currency external account schemas (reference common/)

Please review the changes before merging.

@vercel

vercelBot commented Apr 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 20, 2026 6:05pm

Request Review

@github-actions

github-actionsBot commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

This PR will update the grid SDKs with the following commit messages.

kotlin

fix(types): make nationality required in beneficiaries, add bankName/phoneNumber to accounts

openapi

fix(types): add required fields to account/beneficiary types across currencies

python

feat(api): add bank_name to accounts, phone_number to USD, require nationality in beneficiaries

typescript

feat(api): add bankName to account types, phoneNumber to USD, require beneficiary nationality

Edit this comment to update them. They will appear in their respective SDK's changelogs.

grid-pythonstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/be55e59f22b687ee38249894b007effcf1f2d89e/grid-0.0.1-py3-none-any.whl
grid-openapistudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅

grid-typescriptstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

npm install https://pkg.stainless.com/s/grid-typescript/918bcbd0d20ba8db60500d5d55656d7e0254549e/dist.tar.gz
grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ✅build ✅lint ✅test ✅

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.

This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push.
If you push custom code to the preview branch, re-run this workflow to update the comment.
Last updated: 2026-04-20 18:10:46 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs auto-generated account schemas from sparkcore VASP adapter definitions, adding support for ~15 new currency corridors (AED, BDT, BWP, COP, EGP, GHS, GTQ, HTG, JMD, MWK, MYR, PKR, RWF, SGD, THB, VND, etc.) and flattening the previous *AccountInfoBase/*AccountInfo allOf split into single flat schemas.

  • UsdAccountInfo has two new required fields (bankName, phoneNumber) that did not exist before. This is a breaking change for any consumer that constructs or validates UsdAccountInfo payloads — verify existing integrations are prepared for the stricter schema before merging.
  • MOBILE_MONEY is listed as a valid paymentRails value for USD — worth confirming this is intentional and not a copy-paste artifact from mobile-money corridor schemas.

Confidence Score: 4/5

Safe to merge once the UsdAccountInfo breaking-change additions are confirmed intentional by the sparkcore team.

One P1 finding: bankName and phoneNumber added as required fields on UsdAccountInfo is a breaking schema change for existing API consumers. This needs explicit confirmation that downstream integrations have been updated before merging. All other changes (new currencies, schema flattening, new beneficiary types) look clean.

openapi/components/schemas/common/UsdAccountInfo.yaml and its reflection in mintlify/openapi.yaml / openapi.yaml — the new required fields are the only concern.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf pattern; adds bankName and phoneNumber as new required fields (breaking change) and adds MOBILE_MONEY to paymentRails enum (unusual for USD)
openapi/components/schemas/common/AedAccountInfo.yamlNew AED schema with IBAN and SWIFT fields; clean structure with proper regex validation
openapi/components/schemas/common/GhsAccountInfo.yamlNew GHS schema supporting both BANK_TRANSFER and MOBILE_MONEY rails; requires bankName, accountNumber, and phoneNumber
openapi/components/schemas/common/KesAccountInfo.yamlNew KES mobile money schema; phone number constrained to Kenyan prefix (+254) with 9-digit suffix
openapi/components/schemas/common/KesBeneficiary.yamlNew beneficiary schema (one of several identical INDIVIDUAL beneficiary schemas added in this PR)
openapi/components/schemas/common/PaymentInstructions.yamlNew currencies added to oneOf list and discriminator mapping; all new entries have matching discriminator keys
mintlify/openapi.yamlBundled spec updated to reflect all schema changes including the flattening, new currencies, and the UsdAccountInfo breaking-change additions
openapi/components/schemas/common/MxnAccountInfo.yamlFlattened from allOf pattern; no new required fields, only structural simplification
openapi/components/schemas/common/BwpBeneficiary.yamlNew beneficiary schema, identical structure to all other new *Beneficiary files (INDIVIDUAL type only)

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
PI[PaymentInstructions.yaml\noneOf + discriminator] --> USD[PaymentUsdAccountInfo]
PI --> MXN[PaymentMxnAccountInfo]
PI --> EUR[PaymentEurAccountInfo]
PI --> GBP[PaymentGbpAccountInfo]
PI --> NGN[PaymentNgnAccountInfo]
PI --> KES[PaymentKesAccountInfo]
PI --> NEW["New Corridors\nAED, BDT, BWP, COP, EGP\nGHS, GTQ, HTG, JMD, MWK\nMYR, PKR, RWF, SGD, THB, VND\nXAF, ZAR, ZMW ..."]
USD -->|allOf| UsdBase[UsdAccountInfo\n⚠️ bankName + phoneNumber\nnow REQUIRED]
MXN -->|allOf| MxnBase[MxnAccountInfo\nflattened]
KES -->|allOf| KesBase[KesAccountInfo\n+254 phone regex]
KES -.->|beneficiary| KesBen[KesBeneficiary\nINDIVIDUAL only]
NGN -.->|beneficiary| NgnBen[NgnBeneficiary\nINDIVIDUAL only]
NEW -.->|beneficiary| NewBen["*Beneficiary schemas\n(BWP/MWK/RWF/TZS/UGX\nXAF/XOF/ZAR/ZMW)\nall identical structure"]
Loading

Fix All in Claude Code

Prompt To Fix All With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "chore: Sync account schemas" | Re-trigger Greptile

Comment on lines +1 to +8
type: object
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change: bankName and phoneNumber now required

bankName and phoneNumber have been added to the required list of UsdAccountInfo. Previously only accountType, paymentRails, accountNumber, and routingNumber were required. Any existing API consumer that constructs or validates a UsdAccountInfo payload without these two fields will now fail schema validation.

Additionally, phoneNumber in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the MOBILE_MONEY rail but not for the standard domestic banking rails. If phoneNumber is only needed when the payment rail is MOBILE_MONEY, consider making it conditionally required (e.g., via if/then in JSON Schema) rather than unconditionally required.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +17 to +24
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2MOBILE_MONEY rail in USD schema is unexpected

MOBILE_MONEY is included in the paymentRails enum for UsdAccountInfo. USD transfers are typically ACH, WIRE, RTP, or FedNow — MOBILE_MONEY is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
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!

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #374

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260420-180444 branch April 22, 2026 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: Sync account schemas - #353

Closed
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444
Closed

chore: Sync account schemas#353
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

These schemas are generated from VASP adapter field definitions in sparkcore.

Synced schemas:

  • common/ — per-currency account info, beneficiary, and payment account schemas
  • common/PaymentInstructions.yaml — payment instructions oneOf (new currencies added)
  • external_accounts/ — per-currency external account schemas (reference common/)

Please review the changes before merging.

@vercel

vercelBot commented Apr 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 20, 2026 6:05pm

Request Review

@github-actions

github-actionsBot commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

This PR will update the grid SDKs with the following commit messages.

kotlin

fix(types): make nationality required in beneficiaries, add bankName/phoneNumber to accounts

openapi

fix(types): add required fields to account/beneficiary types across currencies

python

feat(api): add bank_name to accounts, phone_number to USD, require nationality in beneficiaries

typescript

feat(api): add bankName to account types, phoneNumber to USD, require beneficiary nationality

Edit this comment to update them. They will appear in their respective SDK's changelogs.

grid-pythonstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/be55e59f22b687ee38249894b007effcf1f2d89e/grid-0.0.1-py3-none-any.whl
grid-openapistudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅

grid-typescriptstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

npm install https://pkg.stainless.com/s/grid-typescript/918bcbd0d20ba8db60500d5d55656d7e0254549e/dist.tar.gz
grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ✅build ✅lint ✅test ✅

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.

This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push.
If you push custom code to the preview branch, re-run this workflow to update the comment.
Last updated: 2026-04-20 18:10:46 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs auto-generated account schemas from sparkcore VASP adapter definitions, adding support for ~15 new currency corridors (AED, BDT, BWP, COP, EGP, GHS, GTQ, HTG, JMD, MWK, MYR, PKR, RWF, SGD, THB, VND, etc.) and flattening the previous *AccountInfoBase/*AccountInfo allOf split into single flat schemas.

  • UsdAccountInfo has two new required fields (bankName, phoneNumber) that did not exist before. This is a breaking change for any consumer that constructs or validates UsdAccountInfo payloads — verify existing integrations are prepared for the stricter schema before merging.
  • MOBILE_MONEY is listed as a valid paymentRails value for USD — worth confirming this is intentional and not a copy-paste artifact from mobile-money corridor schemas.

Confidence Score: 4/5

Safe to merge once the UsdAccountInfo breaking-change additions are confirmed intentional by the sparkcore team.

One P1 finding: bankName and phoneNumber added as required fields on UsdAccountInfo is a breaking schema change for existing API consumers. This needs explicit confirmation that downstream integrations have been updated before merging. All other changes (new currencies, schema flattening, new beneficiary types) look clean.

openapi/components/schemas/common/UsdAccountInfo.yaml and its reflection in mintlify/openapi.yaml / openapi.yaml — the new required fields are the only concern.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf pattern; adds bankName and phoneNumber as new required fields (breaking change) and adds MOBILE_MONEY to paymentRails enum (unusual for USD)
openapi/components/schemas/common/AedAccountInfo.yamlNew AED schema with IBAN and SWIFT fields; clean structure with proper regex validation
openapi/components/schemas/common/GhsAccountInfo.yamlNew GHS schema supporting both BANK_TRANSFER and MOBILE_MONEY rails; requires bankName, accountNumber, and phoneNumber
openapi/components/schemas/common/KesAccountInfo.yamlNew KES mobile money schema; phone number constrained to Kenyan prefix (+254) with 9-digit suffix
openapi/components/schemas/common/KesBeneficiary.yamlNew beneficiary schema (one of several identical INDIVIDUAL beneficiary schemas added in this PR)
openapi/components/schemas/common/PaymentInstructions.yamlNew currencies added to oneOf list and discriminator mapping; all new entries have matching discriminator keys
mintlify/openapi.yamlBundled spec updated to reflect all schema changes including the flattening, new currencies, and the UsdAccountInfo breaking-change additions
openapi/components/schemas/common/MxnAccountInfo.yamlFlattened from allOf pattern; no new required fields, only structural simplification
openapi/components/schemas/common/BwpBeneficiary.yamlNew beneficiary schema, identical structure to all other new *Beneficiary files (INDIVIDUAL type only)

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
PI[PaymentInstructions.yaml\noneOf + discriminator] --> USD[PaymentUsdAccountInfo]
PI --> MXN[PaymentMxnAccountInfo]
PI --> EUR[PaymentEurAccountInfo]
PI --> GBP[PaymentGbpAccountInfo]
PI --> NGN[PaymentNgnAccountInfo]
PI --> KES[PaymentKesAccountInfo]
PI --> NEW["New Corridors\nAED, BDT, BWP, COP, EGP\nGHS, GTQ, HTG, JMD, MWK\nMYR, PKR, RWF, SGD, THB, VND\nXAF, ZAR, ZMW ..."]
USD -->|allOf| UsdBase[UsdAccountInfo\n⚠️ bankName + phoneNumber\nnow REQUIRED]
MXN -->|allOf| MxnBase[MxnAccountInfo\nflattened]
KES -->|allOf| KesBase[KesAccountInfo\n+254 phone regex]
KES -.->|beneficiary| KesBen[KesBeneficiary\nINDIVIDUAL only]
NGN -.->|beneficiary| NgnBen[NgnBeneficiary\nINDIVIDUAL only]
NEW -.->|beneficiary| NewBen["*Beneficiary schemas\n(BWP/MWK/RWF/TZS/UGX\nXAF/XOF/ZAR/ZMW)\nall identical structure"]
Loading

Fix All in Claude Code

Prompt To Fix All With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "chore: Sync account schemas" | Re-trigger Greptile

Comment on lines +1 to +8
type: object
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change: bankName and phoneNumber now required

bankName and phoneNumber have been added to the required list of UsdAccountInfo. Previously only accountType, paymentRails, accountNumber, and routingNumber were required. Any existing API consumer that constructs or validates a UsdAccountInfo payload without these two fields will now fail schema validation.

Additionally, phoneNumber in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the MOBILE_MONEY rail but not for the standard domestic banking rails. If phoneNumber is only needed when the payment rail is MOBILE_MONEY, consider making it conditionally required (e.g., via if/then in JSON Schema) rather than unconditionally required.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +17 to +24
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2MOBILE_MONEY rail in USD schema is unexpected

MOBILE_MONEY is included in the paymentRails enum for UsdAccountInfo. USD transfers are typically ACH, WIRE, RTP, or FedNow — MOBILE_MONEY is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
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!

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #374

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260420-180444 branch April 22, 2026 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

chore: Sync account schemas - #353

Closed
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444
Closed

chore: Sync account schemas#353
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260420-180444

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

These schemas are generated from VASP adapter field definitions in sparkcore.

Synced schemas:

  • common/ — per-currency account info, beneficiary, and payment account schemas
  • common/PaymentInstructions.yaml — payment instructions oneOf (new currencies added)
  • external_accounts/ — per-currency external account schemas (reference common/)

Please review the changes before merging.

@vercel

vercelBot commented Apr 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 20, 2026 6:05pm

Request Review

@github-actions

github-actionsBot commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

This PR will update the grid SDKs with the following commit messages.

kotlin

fix(types): make nationality required in beneficiaries, add bankName/phoneNumber to accounts

openapi

fix(types): add required fields to account/beneficiary types across currencies

python

feat(api): add bank_name to accounts, phone_number to USD, require nationality in beneficiaries

typescript

feat(api): add bankName to account types, phoneNumber to USD, require beneficiary nationality

Edit this comment to update them. They will appear in their respective SDK's changelogs.

grid-pythonstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/be55e59f22b687ee38249894b007effcf1f2d89e/grid-0.0.1-py3-none-any.whl
grid-openapistudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅

grid-typescriptstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

npm install https://pkg.stainless.com/s/grid-typescript/918bcbd0d20ba8db60500d5d55656d7e0254549e/dist.tar.gz
grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ✅build ✅lint ✅test ✅

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.

This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push.
If you push custom code to the preview branch, re-run this workflow to update the comment.
Last updated: 2026-04-20 18:10:46 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs auto-generated account schemas from sparkcore VASP adapter definitions, adding support for ~15 new currency corridors (AED, BDT, BWP, COP, EGP, GHS, GTQ, HTG, JMD, MWK, MYR, PKR, RWF, SGD, THB, VND, etc.) and flattening the previous *AccountInfoBase/*AccountInfo allOf split into single flat schemas.

  • UsdAccountInfo has two new required fields (bankName, phoneNumber) that did not exist before. This is a breaking change for any consumer that constructs or validates UsdAccountInfo payloads — verify existing integrations are prepared for the stricter schema before merging.
  • MOBILE_MONEY is listed as a valid paymentRails value for USD — worth confirming this is intentional and not a copy-paste artifact from mobile-money corridor schemas.

Confidence Score: 4/5

Safe to merge once the UsdAccountInfo breaking-change additions are confirmed intentional by the sparkcore team.

One P1 finding: bankName and phoneNumber added as required fields on UsdAccountInfo is a breaking schema change for existing API consumers. This needs explicit confirmation that downstream integrations have been updated before merging. All other changes (new currencies, schema flattening, new beneficiary types) look clean.

openapi/components/schemas/common/UsdAccountInfo.yaml and its reflection in mintlify/openapi.yaml / openapi.yaml — the new required fields are the only concern.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf pattern; adds bankName and phoneNumber as new required fields (breaking change) and adds MOBILE_MONEY to paymentRails enum (unusual for USD)
openapi/components/schemas/common/AedAccountInfo.yamlNew AED schema with IBAN and SWIFT fields; clean structure with proper regex validation
openapi/components/schemas/common/GhsAccountInfo.yamlNew GHS schema supporting both BANK_TRANSFER and MOBILE_MONEY rails; requires bankName, accountNumber, and phoneNumber
openapi/components/schemas/common/KesAccountInfo.yamlNew KES mobile money schema; phone number constrained to Kenyan prefix (+254) with 9-digit suffix
openapi/components/schemas/common/KesBeneficiary.yamlNew beneficiary schema (one of several identical INDIVIDUAL beneficiary schemas added in this PR)
openapi/components/schemas/common/PaymentInstructions.yamlNew currencies added to oneOf list and discriminator mapping; all new entries have matching discriminator keys
mintlify/openapi.yamlBundled spec updated to reflect all schema changes including the flattening, new currencies, and the UsdAccountInfo breaking-change additions
openapi/components/schemas/common/MxnAccountInfo.yamlFlattened from allOf pattern; no new required fields, only structural simplification
openapi/components/schemas/common/BwpBeneficiary.yamlNew beneficiary schema, identical structure to all other new *Beneficiary files (INDIVIDUAL type only)

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
PI[PaymentInstructions.yaml\noneOf + discriminator] --> USD[PaymentUsdAccountInfo]
PI --> MXN[PaymentMxnAccountInfo]
PI --> EUR[PaymentEurAccountInfo]
PI --> GBP[PaymentGbpAccountInfo]
PI --> NGN[PaymentNgnAccountInfo]
PI --> KES[PaymentKesAccountInfo]
PI --> NEW["New Corridors\nAED, BDT, BWP, COP, EGP\nGHS, GTQ, HTG, JMD, MWK\nMYR, PKR, RWF, SGD, THB, VND\nXAF, ZAR, ZMW ..."]
USD -->|allOf| UsdBase[UsdAccountInfo\n⚠️ bankName + phoneNumber\nnow REQUIRED]
MXN -->|allOf| MxnBase[MxnAccountInfo\nflattened]
KES -->|allOf| KesBase[KesAccountInfo\n+254 phone regex]
KES -.->|beneficiary| KesBen[KesBeneficiary\nINDIVIDUAL only]
NGN -.->|beneficiary| NgnBen[NgnBeneficiary\nINDIVIDUAL only]
NEW -.->|beneficiary| NewBen["*Beneficiary schemas\n(BWP/MWK/RWF/TZS/UGX\nXAF/XOF/ZAR/ZMW)\nall identical structure"]
Loading

Fix All in Claude Code

Prompt To Fix All With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "chore: Sync account schemas" | Re-trigger Greptile

Comment on lines +1 to +8
type: object
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change: bankName and phoneNumber now required

bankName and phoneNumber have been added to the required list of UsdAccountInfo. Previously only accountType, paymentRails, accountNumber, and routingNumber were required. Any existing API consumer that constructs or validates a UsdAccountInfo payload without these two fields will now fail schema validation.

Additionally, phoneNumber in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the MOBILE_MONEY rail but not for the standard domestic banking rails. If phoneNumber is only needed when the payment rail is MOBILE_MONEY, consider making it conditionally required (e.g., via if/then in JSON Schema) rather than unconditionally required.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 1-8
Comment:
**Breaking change: `bankName` and `phoneNumber` now required**`bankName` and `phoneNumber` have been added to the `required` list of `UsdAccountInfo`. Previously only `accountType`, `paymentRails`, `accountNumber`, and `routingNumber` were required. Any existing API consumer that constructs or validates a `UsdAccountInfo` payload without these two fields will now fail schema validation.
Additionally, `phoneNumber` in a USD bank account context (ACH / WIRE / RTP / FedNow) is unusual — it makes sense for the `MOBILE_MONEY` rail but not for the standard domestic banking rails. If `phoneNumber` is only needed when the payment rail is `MOBILE_MONEY`, consider making it conditionally required (e.g., via `if/then` in JSON Schema) rather than unconditionally required.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +17 to +24
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2MOBILE_MONEY rail in USD schema is unexpected

MOBILE_MONEY is included in the paymentRails enum for UsdAccountInfo. USD transfers are typically ACH, WIRE, RTP, or FedNow — MOBILE_MONEY is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 17-24
Comment:
**`MOBILE_MONEY` rail in USD schema is unexpected**`MOBILE_MONEY` is included in the `paymentRails` enum for `UsdAccountInfo`. USD transfers are typically ACH, WIRE, RTP, or FedNow — `MOBILE_MONEY` is primarily associated with African/Asian mobile payment networks. If this is intentional (e.g., for a specific USD-denominated mobile money corridor), it may be worth adding a comment or description to clarify the use case so API consumers understand when to set this value.
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!

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #374

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260420-180444 branch April 22, 2026 21:43
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants