chore: Sync account schemas - #374

Closed
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338
Closed

chore: Sync account schemas#374
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338

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 22, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 22, 2026 11:06pm

Request Review

@github-actions

github-actionsBot commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to accounts, require nationality, remove helpers, update GTQ/USD fields

openapi

fix(types): flatten account schemas, require paymentRails, add bankName/phoneNumber/nationality

python

feat(api): add bank_name to accounts, update GTQ/USD, require nationality in beneficiaries

typescript

feat(api): add bankName/phoneNumber fields, update payment rails in account types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

New diagnostics (60 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.
grid-pythonstudio · code · diff

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

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-22 23:10:49 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This auto-synced PR flattens all *AccountInfo schemas from allOf: [*AccountInfoBase, {paymentRails}] into self-contained type: object definitions, inlining full field definitions and validation constraints derived from sparkcore VASP adapter definitions. The *AccountInfoBase schemas remain unchanged and continue to be referenced by the *ExternalAccountCreateInfo schemas.

  • P1 — UsdAccountInfo new required fields: phoneNumber and bankName are now required; any existing USD payment instruction payload missing these fields will fail schema validation. MOBILE_MONEY is also newly added as a USD payment rail, which is unconventional — worth confirming this corridor is live and intentional.
  • P1 — Beneficiary nationality promoted to required: 10 beneficiary schemas (BwpBeneficiary, ZarBeneficiary, and 8 others) now require nationality. Existing callers that omit this field will break.

Confidence Score: 4/5

Safe to merge only after confirming the backend already enforces the new required fields and all API consumers are prepared for the breaking changes.

Two P1 concerns: new required fields on UsdAccountInfo (phoneNumber, bankName) and nationality promoted to required on 10 beneficiary schemas. Both are breaking changes for existing API consumers if the backend started enforcing these before clients updated. The rest of the changes (schema flattening, IBAN/SWIFT validation, rail additions for non-USD currencies) are well-structured and consistent.

openapi/components/schemas/common/UsdAccountInfo.yaml (MOBILE_MONEY rail + new required fields) and all 10 updated *Beneficiary.yaml files where nationality is now required.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf+Base to a standalone schema; adds paymentRails, bankName, phoneNumber as required, and adds MOBILE_MONEY as a payment rail — notable for a USD schema.
openapi/components/schemas/common/BwpBeneficiary.yamlPromotes nationality to required — a breaking change for callers submitting BWP beneficiaries without this field. Same pattern applies to 9 other beneficiary schemas.
openapi/components/schemas/common/CopBeneficiary.yamlReorders address before documentType/documentNumber — cosmetic property ordering change, no functional impact.
openapi.yamlBundled spec updated in sync with component YAML changes; removes all *AccountInfoBase named schemas and flattens them into the *AccountInfo schemas. Mirrors mintlify/openapi.yaml exactly.
mintlify/openapi.yamlKept in exact sync with openapi.yaml — no divergence detected.
openapi/components/schemas/common/BdtAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber, branchCode (required), swiftCode (optional), phoneNumber (required), with correct regex patterns.
openapi/components/schemas/common/EgpAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber (required), iban and swiftCode (optional) with correct IBAN and SWIFT regex patterns.
openapi/components/schemas/common/ZarBeneficiary.yamlPromotes nationality to required — breaking change for ZAR beneficiary submissions missing this field.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/*AccountInfo.yaml]
A -->|auto-sync| C[common/*Beneficiary.yaml]
B -->|used by| D[PaymentInstructions oneOf]
C -->|used by| E[*ExternalAccountCreateInfo.yaml]
F[common/*AccountInfoBase.yaml\nunchanged] -->|$ref| E
E -->|bundled into| G[openapi.yaml]
G -->|copied to| H[mintlify/openapi.yaml]
B -->|flattened allOf removed| I["Before: allOf[*Base + paymentRails]"]
B -->|now standalone| J["After: flat type:object with all fields"]
style I fill:#f9a,stroke:#f00
style J fill:#afa,stroke:#090
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: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
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/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
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 +19 to +26
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY
accountNumber:
type: string

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 added to USD payment rails

MOBILE_MONEY has been added as a valid payment rail for UsdAccountInfo, alongside the existing US-specific rails (ACH, WIRE, RTP, FEDNOW, BANK_TRANSFER). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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

Comment on lines +2 to +8
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.

P1New required fields may be a breaking schema change

phoneNumber and bankName are newly required in UsdAccountInfo. Previously, UsdAccountInfo (via UsdAccountInfoBase + paymentRails) did not mandate these fields. Any existing API consumer that reads or validates against UsdAccountInfo (e.g., in PaymentInstructions) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 4 to +6
- beneficiaryType
- fullName
- nationality

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.

P1nationality promoted to required — potential breaking change

nationality is now required on BwpBeneficiary (and similarly on ZarBeneficiary, KesBeneficiary, MwkBeneficiary, NgnBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZmwBeneficiary). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send nationality. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

- FEDNOW
- BANK_TRANSFER
type: object
required:

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.

@AaryamanBhute this looks fishy. I had to add some fields for colombia and other thunes corridors, but the el salvador ones (which transact in USD) are adding some things here. Im concerned these fields will be a breaking change, what do you think?

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.

as long as these are optional, I don't think they're a breaking chage. Looks like these are optional right?

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.

https://github.com/lightsparkdev/webdev/blob/9374a2634a00091b752dd12c06884a1aea633673/sparkcore/sparkcore/bridge/extend_integration/thunes_fields_provider.py#L43 yeah I think it's baed on these? I have to update it anyway though, el salvador is just going to use 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.

something wierd is going on with the generator, it shouldn't be inlining these objects - investigating

@AaryamanBhuteAaryamanBhute left a comment

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.

wait for generator investigation

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #383

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260422-214338 branch April 23, 2026 17:51
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.

3 participants

@matthappens@AaryamanBhute@JasonCWang
, '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 - #374

Closed
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338
Closed

chore: Sync account schemas#374
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338

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 22, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 22, 2026 11:06pm

Request Review

@github-actions

github-actionsBot commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to accounts, require nationality, remove helpers, update GTQ/USD fields

openapi

fix(types): flatten account schemas, require paymentRails, add bankName/phoneNumber/nationality

python

feat(api): add bank_name to accounts, update GTQ/USD, require nationality in beneficiaries

typescript

feat(api): add bankName/phoneNumber fields, update payment rails in account types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

New diagnostics (60 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.
grid-pythonstudio · code · diff

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

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-22 23:10:49 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This auto-synced PR flattens all *AccountInfo schemas from allOf: [*AccountInfoBase, {paymentRails}] into self-contained type: object definitions, inlining full field definitions and validation constraints derived from sparkcore VASP adapter definitions. The *AccountInfoBase schemas remain unchanged and continue to be referenced by the *ExternalAccountCreateInfo schemas.

  • P1 — UsdAccountInfo new required fields: phoneNumber and bankName are now required; any existing USD payment instruction payload missing these fields will fail schema validation. MOBILE_MONEY is also newly added as a USD payment rail, which is unconventional — worth confirming this corridor is live and intentional.
  • P1 — Beneficiary nationality promoted to required: 10 beneficiary schemas (BwpBeneficiary, ZarBeneficiary, and 8 others) now require nationality. Existing callers that omit this field will break.

Confidence Score: 4/5

Safe to merge only after confirming the backend already enforces the new required fields and all API consumers are prepared for the breaking changes.

Two P1 concerns: new required fields on UsdAccountInfo (phoneNumber, bankName) and nationality promoted to required on 10 beneficiary schemas. Both are breaking changes for existing API consumers if the backend started enforcing these before clients updated. The rest of the changes (schema flattening, IBAN/SWIFT validation, rail additions for non-USD currencies) are well-structured and consistent.

openapi/components/schemas/common/UsdAccountInfo.yaml (MOBILE_MONEY rail + new required fields) and all 10 updated *Beneficiary.yaml files where nationality is now required.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf+Base to a standalone schema; adds paymentRails, bankName, phoneNumber as required, and adds MOBILE_MONEY as a payment rail — notable for a USD schema.
openapi/components/schemas/common/BwpBeneficiary.yamlPromotes nationality to required — a breaking change for callers submitting BWP beneficiaries without this field. Same pattern applies to 9 other beneficiary schemas.
openapi/components/schemas/common/CopBeneficiary.yamlReorders address before documentType/documentNumber — cosmetic property ordering change, no functional impact.
openapi.yamlBundled spec updated in sync with component YAML changes; removes all *AccountInfoBase named schemas and flattens them into the *AccountInfo schemas. Mirrors mintlify/openapi.yaml exactly.
mintlify/openapi.yamlKept in exact sync with openapi.yaml — no divergence detected.
openapi/components/schemas/common/BdtAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber, branchCode (required), swiftCode (optional), phoneNumber (required), with correct regex patterns.
openapi/components/schemas/common/EgpAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber (required), iban and swiftCode (optional) with correct IBAN and SWIFT regex patterns.
openapi/components/schemas/common/ZarBeneficiary.yamlPromotes nationality to required — breaking change for ZAR beneficiary submissions missing this field.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/*AccountInfo.yaml]
A -->|auto-sync| C[common/*Beneficiary.yaml]
B -->|used by| D[PaymentInstructions oneOf]
C -->|used by| E[*ExternalAccountCreateInfo.yaml]
F[common/*AccountInfoBase.yaml\nunchanged] -->|$ref| E
E -->|bundled into| G[openapi.yaml]
G -->|copied to| H[mintlify/openapi.yaml]
B -->|flattened allOf removed| I["Before: allOf[*Base + paymentRails]"]
B -->|now standalone| J["After: flat type:object with all fields"]
style I fill:#f9a,stroke:#f00
style J fill:#afa,stroke:#090
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: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
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/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
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 +19 to +26
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY
accountNumber:
type: string

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 added to USD payment rails

MOBILE_MONEY has been added as a valid payment rail for UsdAccountInfo, alongside the existing US-specific rails (ACH, WIRE, RTP, FEDNOW, BANK_TRANSFER). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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

Comment on lines +2 to +8
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.

P1New required fields may be a breaking schema change

phoneNumber and bankName are newly required in UsdAccountInfo. Previously, UsdAccountInfo (via UsdAccountInfoBase + paymentRails) did not mandate these fields. Any existing API consumer that reads or validates against UsdAccountInfo (e.g., in PaymentInstructions) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 4 to +6
- beneficiaryType
- fullName
- nationality

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.

P1nationality promoted to required — potential breaking change

nationality is now required on BwpBeneficiary (and similarly on ZarBeneficiary, KesBeneficiary, MwkBeneficiary, NgnBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZmwBeneficiary). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send nationality. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

- FEDNOW
- BANK_TRANSFER
type: object
required:

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.

@AaryamanBhute this looks fishy. I had to add some fields for colombia and other thunes corridors, but the el salvador ones (which transact in USD) are adding some things here. Im concerned these fields will be a breaking change, what do you think?

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.

as long as these are optional, I don't think they're a breaking chage. Looks like these are optional right?

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.

https://github.com/lightsparkdev/webdev/blob/9374a2634a00091b752dd12c06884a1aea633673/sparkcore/sparkcore/bridge/extend_integration/thunes_fields_provider.py#L43 yeah I think it's baed on these? I have to update it anyway though, el salvador is just going to use 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.

something wierd is going on with the generator, it shouldn't be inlining these objects - investigating

@AaryamanBhuteAaryamanBhute left a comment

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.

wait for generator investigation

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #383

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260422-214338 branch April 23, 2026 17:51
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.

3 participants

@matthappens@AaryamanBhute@JasonCWang
, '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 - #374

Closed
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338
Closed

chore: Sync account schemas#374
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338

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 22, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 22, 2026 11:06pm

Request Review

@github-actions

github-actionsBot commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to accounts, require nationality, remove helpers, update GTQ/USD fields

openapi

fix(types): flatten account schemas, require paymentRails, add bankName/phoneNumber/nationality

python

feat(api): add bank_name to accounts, update GTQ/USD, require nationality in beneficiaries

typescript

feat(api): add bankName/phoneNumber fields, update payment rails in account types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

New diagnostics (60 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.
grid-pythonstudio · code · diff

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

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-22 23:10:49 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This auto-synced PR flattens all *AccountInfo schemas from allOf: [*AccountInfoBase, {paymentRails}] into self-contained type: object definitions, inlining full field definitions and validation constraints derived from sparkcore VASP adapter definitions. The *AccountInfoBase schemas remain unchanged and continue to be referenced by the *ExternalAccountCreateInfo schemas.

  • P1 — UsdAccountInfo new required fields: phoneNumber and bankName are now required; any existing USD payment instruction payload missing these fields will fail schema validation. MOBILE_MONEY is also newly added as a USD payment rail, which is unconventional — worth confirming this corridor is live and intentional.
  • P1 — Beneficiary nationality promoted to required: 10 beneficiary schemas (BwpBeneficiary, ZarBeneficiary, and 8 others) now require nationality. Existing callers that omit this field will break.

Confidence Score: 4/5

Safe to merge only after confirming the backend already enforces the new required fields and all API consumers are prepared for the breaking changes.

Two P1 concerns: new required fields on UsdAccountInfo (phoneNumber, bankName) and nationality promoted to required on 10 beneficiary schemas. Both are breaking changes for existing API consumers if the backend started enforcing these before clients updated. The rest of the changes (schema flattening, IBAN/SWIFT validation, rail additions for non-USD currencies) are well-structured and consistent.

openapi/components/schemas/common/UsdAccountInfo.yaml (MOBILE_MONEY rail + new required fields) and all 10 updated *Beneficiary.yaml files where nationality is now required.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf+Base to a standalone schema; adds paymentRails, bankName, phoneNumber as required, and adds MOBILE_MONEY as a payment rail — notable for a USD schema.
openapi/components/schemas/common/BwpBeneficiary.yamlPromotes nationality to required — a breaking change for callers submitting BWP beneficiaries without this field. Same pattern applies to 9 other beneficiary schemas.
openapi/components/schemas/common/CopBeneficiary.yamlReorders address before documentType/documentNumber — cosmetic property ordering change, no functional impact.
openapi.yamlBundled spec updated in sync with component YAML changes; removes all *AccountInfoBase named schemas and flattens them into the *AccountInfo schemas. Mirrors mintlify/openapi.yaml exactly.
mintlify/openapi.yamlKept in exact sync with openapi.yaml — no divergence detected.
openapi/components/schemas/common/BdtAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber, branchCode (required), swiftCode (optional), phoneNumber (required), with correct regex patterns.
openapi/components/schemas/common/EgpAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber (required), iban and swiftCode (optional) with correct IBAN and SWIFT regex patterns.
openapi/components/schemas/common/ZarBeneficiary.yamlPromotes nationality to required — breaking change for ZAR beneficiary submissions missing this field.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/*AccountInfo.yaml]
A -->|auto-sync| C[common/*Beneficiary.yaml]
B -->|used by| D[PaymentInstructions oneOf]
C -->|used by| E[*ExternalAccountCreateInfo.yaml]
F[common/*AccountInfoBase.yaml\nunchanged] -->|$ref| E
E -->|bundled into| G[openapi.yaml]
G -->|copied to| H[mintlify/openapi.yaml]
B -->|flattened allOf removed| I["Before: allOf[*Base + paymentRails]"]
B -->|now standalone| J["After: flat type:object with all fields"]
style I fill:#f9a,stroke:#f00
style J fill:#afa,stroke:#090
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: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
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/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
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 +19 to +26
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY
accountNumber:
type: string

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 added to USD payment rails

MOBILE_MONEY has been added as a valid payment rail for UsdAccountInfo, alongside the existing US-specific rails (ACH, WIRE, RTP, FEDNOW, BANK_TRANSFER). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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

Comment on lines +2 to +8
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.

P1New required fields may be a breaking schema change

phoneNumber and bankName are newly required in UsdAccountInfo. Previously, UsdAccountInfo (via UsdAccountInfoBase + paymentRails) did not mandate these fields. Any existing API consumer that reads or validates against UsdAccountInfo (e.g., in PaymentInstructions) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 4 to +6
- beneficiaryType
- fullName
- nationality

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.

P1nationality promoted to required — potential breaking change

nationality is now required on BwpBeneficiary (and similarly on ZarBeneficiary, KesBeneficiary, MwkBeneficiary, NgnBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZmwBeneficiary). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send nationality. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

- FEDNOW
- BANK_TRANSFER
type: object
required:

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.

@AaryamanBhute this looks fishy. I had to add some fields for colombia and other thunes corridors, but the el salvador ones (which transact in USD) are adding some things here. Im concerned these fields will be a breaking change, what do you think?

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.

as long as these are optional, I don't think they're a breaking chage. Looks like these are optional right?

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.

https://github.com/lightsparkdev/webdev/blob/9374a2634a00091b752dd12c06884a1aea633673/sparkcore/sparkcore/bridge/extend_integration/thunes_fields_provider.py#L43 yeah I think it's baed on these? I have to update it anyway though, el salvador is just going to use 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.

something wierd is going on with the generator, it shouldn't be inlining these objects - investigating

@AaryamanBhuteAaryamanBhute left a comment

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.

wait for generator investigation

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #383

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260422-214338 branch April 23, 2026 17:51
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.

3 participants

@matthappens@AaryamanBhute@JasonCWang
, '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 - #374

Closed
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338
Closed

chore: Sync account schemas#374
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338

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 22, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 22, 2026 11:06pm

Request Review

@github-actions

github-actionsBot commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to accounts, require nationality, remove helpers, update GTQ/USD fields

openapi

fix(types): flatten account schemas, require paymentRails, add bankName/phoneNumber/nationality

python

feat(api): add bank_name to accounts, update GTQ/USD, require nationality in beneficiaries

typescript

feat(api): add bankName/phoneNumber fields, update payment rails in account types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

New diagnostics (60 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.
grid-pythonstudio · code · diff

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

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-22 23:10:49 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This auto-synced PR flattens all *AccountInfo schemas from allOf: [*AccountInfoBase, {paymentRails}] into self-contained type: object definitions, inlining full field definitions and validation constraints derived from sparkcore VASP adapter definitions. The *AccountInfoBase schemas remain unchanged and continue to be referenced by the *ExternalAccountCreateInfo schemas.

  • P1 — UsdAccountInfo new required fields: phoneNumber and bankName are now required; any existing USD payment instruction payload missing these fields will fail schema validation. MOBILE_MONEY is also newly added as a USD payment rail, which is unconventional — worth confirming this corridor is live and intentional.
  • P1 — Beneficiary nationality promoted to required: 10 beneficiary schemas (BwpBeneficiary, ZarBeneficiary, and 8 others) now require nationality. Existing callers that omit this field will break.

Confidence Score: 4/5

Safe to merge only after confirming the backend already enforces the new required fields and all API consumers are prepared for the breaking changes.

Two P1 concerns: new required fields on UsdAccountInfo (phoneNumber, bankName) and nationality promoted to required on 10 beneficiary schemas. Both are breaking changes for existing API consumers if the backend started enforcing these before clients updated. The rest of the changes (schema flattening, IBAN/SWIFT validation, rail additions for non-USD currencies) are well-structured and consistent.

openapi/components/schemas/common/UsdAccountInfo.yaml (MOBILE_MONEY rail + new required fields) and all 10 updated *Beneficiary.yaml files where nationality is now required.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf+Base to a standalone schema; adds paymentRails, bankName, phoneNumber as required, and adds MOBILE_MONEY as a payment rail — notable for a USD schema.
openapi/components/schemas/common/BwpBeneficiary.yamlPromotes nationality to required — a breaking change for callers submitting BWP beneficiaries without this field. Same pattern applies to 9 other beneficiary schemas.
openapi/components/schemas/common/CopBeneficiary.yamlReorders address before documentType/documentNumber — cosmetic property ordering change, no functional impact.
openapi.yamlBundled spec updated in sync with component YAML changes; removes all *AccountInfoBase named schemas and flattens them into the *AccountInfo schemas. Mirrors mintlify/openapi.yaml exactly.
mintlify/openapi.yamlKept in exact sync with openapi.yaml — no divergence detected.
openapi/components/schemas/common/BdtAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber, branchCode (required), swiftCode (optional), phoneNumber (required), with correct regex patterns.
openapi/components/schemas/common/EgpAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber (required), iban and swiftCode (optional) with correct IBAN and SWIFT regex patterns.
openapi/components/schemas/common/ZarBeneficiary.yamlPromotes nationality to required — breaking change for ZAR beneficiary submissions missing this field.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/*AccountInfo.yaml]
A -->|auto-sync| C[common/*Beneficiary.yaml]
B -->|used by| D[PaymentInstructions oneOf]
C -->|used by| E[*ExternalAccountCreateInfo.yaml]
F[common/*AccountInfoBase.yaml\nunchanged] -->|$ref| E
E -->|bundled into| G[openapi.yaml]
G -->|copied to| H[mintlify/openapi.yaml]
B -->|flattened allOf removed| I["Before: allOf[*Base + paymentRails]"]
B -->|now standalone| J["After: flat type:object with all fields"]
style I fill:#f9a,stroke:#f00
style J fill:#afa,stroke:#090
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: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
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/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
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 +19 to +26
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY
accountNumber:
type: string

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 added to USD payment rails

MOBILE_MONEY has been added as a valid payment rail for UsdAccountInfo, alongside the existing US-specific rails (ACH, WIRE, RTP, FEDNOW, BANK_TRANSFER). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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

Comment on lines +2 to +8
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.

P1New required fields may be a breaking schema change

phoneNumber and bankName are newly required in UsdAccountInfo. Previously, UsdAccountInfo (via UsdAccountInfoBase + paymentRails) did not mandate these fields. Any existing API consumer that reads or validates against UsdAccountInfo (e.g., in PaymentInstructions) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 4 to +6
- beneficiaryType
- fullName
- nationality

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.

P1nationality promoted to required — potential breaking change

nationality is now required on BwpBeneficiary (and similarly on ZarBeneficiary, KesBeneficiary, MwkBeneficiary, NgnBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZmwBeneficiary). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send nationality. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

- FEDNOW
- BANK_TRANSFER
type: object
required:

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.

@AaryamanBhute this looks fishy. I had to add some fields for colombia and other thunes corridors, but the el salvador ones (which transact in USD) are adding some things here. Im concerned these fields will be a breaking change, what do you think?

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.

as long as these are optional, I don't think they're a breaking chage. Looks like these are optional right?

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.

https://github.com/lightsparkdev/webdev/blob/9374a2634a00091b752dd12c06884a1aea633673/sparkcore/sparkcore/bridge/extend_integration/thunes_fields_provider.py#L43 yeah I think it's baed on these? I have to update it anyway though, el salvador is just going to use 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.

something wierd is going on with the generator, it shouldn't be inlining these objects - investigating

@AaryamanBhuteAaryamanBhute left a comment

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.

wait for generator investigation

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #383

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260422-214338 branch April 23, 2026 17:51
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.

3 participants

@matthappens@AaryamanBhute@JasonCWang
, '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 - #374

Closed
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338
Closed

chore: Sync account schemas#374
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338

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 22, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 22, 2026 11:06pm

Request Review

@github-actions

github-actionsBot commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to accounts, require nationality, remove helpers, update GTQ/USD fields

openapi

fix(types): flatten account schemas, require paymentRails, add bankName/phoneNumber/nationality

python

feat(api): add bank_name to accounts, update GTQ/USD, require nationality in beneficiaries

typescript

feat(api): add bankName/phoneNumber fields, update payment rails in account types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

New diagnostics (60 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.
grid-pythonstudio · code · diff

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

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-22 23:10:49 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This auto-synced PR flattens all *AccountInfo schemas from allOf: [*AccountInfoBase, {paymentRails}] into self-contained type: object definitions, inlining full field definitions and validation constraints derived from sparkcore VASP adapter definitions. The *AccountInfoBase schemas remain unchanged and continue to be referenced by the *ExternalAccountCreateInfo schemas.

  • P1 — UsdAccountInfo new required fields: phoneNumber and bankName are now required; any existing USD payment instruction payload missing these fields will fail schema validation. MOBILE_MONEY is also newly added as a USD payment rail, which is unconventional — worth confirming this corridor is live and intentional.
  • P1 — Beneficiary nationality promoted to required: 10 beneficiary schemas (BwpBeneficiary, ZarBeneficiary, and 8 others) now require nationality. Existing callers that omit this field will break.

Confidence Score: 4/5

Safe to merge only after confirming the backend already enforces the new required fields and all API consumers are prepared for the breaking changes.

Two P1 concerns: new required fields on UsdAccountInfo (phoneNumber, bankName) and nationality promoted to required on 10 beneficiary schemas. Both are breaking changes for existing API consumers if the backend started enforcing these before clients updated. The rest of the changes (schema flattening, IBAN/SWIFT validation, rail additions for non-USD currencies) are well-structured and consistent.

openapi/components/schemas/common/UsdAccountInfo.yaml (MOBILE_MONEY rail + new required fields) and all 10 updated *Beneficiary.yaml files where nationality is now required.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf+Base to a standalone schema; adds paymentRails, bankName, phoneNumber as required, and adds MOBILE_MONEY as a payment rail — notable for a USD schema.
openapi/components/schemas/common/BwpBeneficiary.yamlPromotes nationality to required — a breaking change for callers submitting BWP beneficiaries without this field. Same pattern applies to 9 other beneficiary schemas.
openapi/components/schemas/common/CopBeneficiary.yamlReorders address before documentType/documentNumber — cosmetic property ordering change, no functional impact.
openapi.yamlBundled spec updated in sync with component YAML changes; removes all *AccountInfoBase named schemas and flattens them into the *AccountInfo schemas. Mirrors mintlify/openapi.yaml exactly.
mintlify/openapi.yamlKept in exact sync with openapi.yaml — no divergence detected.
openapi/components/schemas/common/BdtAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber, branchCode (required), swiftCode (optional), phoneNumber (required), with correct regex patterns.
openapi/components/schemas/common/EgpAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber (required), iban and swiftCode (optional) with correct IBAN and SWIFT regex patterns.
openapi/components/schemas/common/ZarBeneficiary.yamlPromotes nationality to required — breaking change for ZAR beneficiary submissions missing this field.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/*AccountInfo.yaml]
A -->|auto-sync| C[common/*Beneficiary.yaml]
B -->|used by| D[PaymentInstructions oneOf]
C -->|used by| E[*ExternalAccountCreateInfo.yaml]
F[common/*AccountInfoBase.yaml\nunchanged] -->|$ref| E
E -->|bundled into| G[openapi.yaml]
G -->|copied to| H[mintlify/openapi.yaml]
B -->|flattened allOf removed| I["Before: allOf[*Base + paymentRails]"]
B -->|now standalone| J["After: flat type:object with all fields"]
style I fill:#f9a,stroke:#f00
style J fill:#afa,stroke:#090
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: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
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/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
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 +19 to +26
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY
accountNumber:
type: string

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 added to USD payment rails

MOBILE_MONEY has been added as a valid payment rail for UsdAccountInfo, alongside the existing US-specific rails (ACH, WIRE, RTP, FEDNOW, BANK_TRANSFER). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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

Comment on lines +2 to +8
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.

P1New required fields may be a breaking schema change

phoneNumber and bankName are newly required in UsdAccountInfo. Previously, UsdAccountInfo (via UsdAccountInfoBase + paymentRails) did not mandate these fields. Any existing API consumer that reads or validates against UsdAccountInfo (e.g., in PaymentInstructions) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 4 to +6
- beneficiaryType
- fullName
- nationality

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.

P1nationality promoted to required — potential breaking change

nationality is now required on BwpBeneficiary (and similarly on ZarBeneficiary, KesBeneficiary, MwkBeneficiary, NgnBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZmwBeneficiary). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send nationality. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

- FEDNOW
- BANK_TRANSFER
type: object
required:

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.

@AaryamanBhute this looks fishy. I had to add some fields for colombia and other thunes corridors, but the el salvador ones (which transact in USD) are adding some things here. Im concerned these fields will be a breaking change, what do you think?

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.

as long as these are optional, I don't think they're a breaking chage. Looks like these are optional right?

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.

https://github.com/lightsparkdev/webdev/blob/9374a2634a00091b752dd12c06884a1aea633673/sparkcore/sparkcore/bridge/extend_integration/thunes_fields_provider.py#L43 yeah I think it's baed on these? I have to update it anyway though, el salvador is just going to use 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.

something wierd is going on with the generator, it shouldn't be inlining these objects - investigating

@AaryamanBhuteAaryamanBhute left a comment

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.

wait for generator investigation

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #383

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260422-214338 branch April 23, 2026 17:51
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.

3 participants

@matthappens@AaryamanBhute@JasonCWang
, '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 - #374

Closed
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338
Closed

chore: Sync account schemas#374
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338

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 22, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 22, 2026 11:06pm

Request Review

@github-actions

github-actionsBot commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to accounts, require nationality, remove helpers, update GTQ/USD fields

openapi

fix(types): flatten account schemas, require paymentRails, add bankName/phoneNumber/nationality

python

feat(api): add bank_name to accounts, update GTQ/USD, require nationality in beneficiaries

typescript

feat(api): add bankName/phoneNumber fields, update payment rails in account types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

New diagnostics (60 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.
grid-pythonstudio · code · diff

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

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-22 23:10:49 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This auto-synced PR flattens all *AccountInfo schemas from allOf: [*AccountInfoBase, {paymentRails}] into self-contained type: object definitions, inlining full field definitions and validation constraints derived from sparkcore VASP adapter definitions. The *AccountInfoBase schemas remain unchanged and continue to be referenced by the *ExternalAccountCreateInfo schemas.

  • P1 — UsdAccountInfo new required fields: phoneNumber and bankName are now required; any existing USD payment instruction payload missing these fields will fail schema validation. MOBILE_MONEY is also newly added as a USD payment rail, which is unconventional — worth confirming this corridor is live and intentional.
  • P1 — Beneficiary nationality promoted to required: 10 beneficiary schemas (BwpBeneficiary, ZarBeneficiary, and 8 others) now require nationality. Existing callers that omit this field will break.

Confidence Score: 4/5

Safe to merge only after confirming the backend already enforces the new required fields and all API consumers are prepared for the breaking changes.

Two P1 concerns: new required fields on UsdAccountInfo (phoneNumber, bankName) and nationality promoted to required on 10 beneficiary schemas. Both are breaking changes for existing API consumers if the backend started enforcing these before clients updated. The rest of the changes (schema flattening, IBAN/SWIFT validation, rail additions for non-USD currencies) are well-structured and consistent.

openapi/components/schemas/common/UsdAccountInfo.yaml (MOBILE_MONEY rail + new required fields) and all 10 updated *Beneficiary.yaml files where nationality is now required.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf+Base to a standalone schema; adds paymentRails, bankName, phoneNumber as required, and adds MOBILE_MONEY as a payment rail — notable for a USD schema.
openapi/components/schemas/common/BwpBeneficiary.yamlPromotes nationality to required — a breaking change for callers submitting BWP beneficiaries without this field. Same pattern applies to 9 other beneficiary schemas.
openapi/components/schemas/common/CopBeneficiary.yamlReorders address before documentType/documentNumber — cosmetic property ordering change, no functional impact.
openapi.yamlBundled spec updated in sync with component YAML changes; removes all *AccountInfoBase named schemas and flattens them into the *AccountInfo schemas. Mirrors mintlify/openapi.yaml exactly.
mintlify/openapi.yamlKept in exact sync with openapi.yaml — no divergence detected.
openapi/components/schemas/common/BdtAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber, branchCode (required), swiftCode (optional), phoneNumber (required), with correct regex patterns.
openapi/components/schemas/common/EgpAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber (required), iban and swiftCode (optional) with correct IBAN and SWIFT regex patterns.
openapi/components/schemas/common/ZarBeneficiary.yamlPromotes nationality to required — breaking change for ZAR beneficiary submissions missing this field.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/*AccountInfo.yaml]
A -->|auto-sync| C[common/*Beneficiary.yaml]
B -->|used by| D[PaymentInstructions oneOf]
C -->|used by| E[*ExternalAccountCreateInfo.yaml]
F[common/*AccountInfoBase.yaml\nunchanged] -->|$ref| E
E -->|bundled into| G[openapi.yaml]
G -->|copied to| H[mintlify/openapi.yaml]
B -->|flattened allOf removed| I["Before: allOf[*Base + paymentRails]"]
B -->|now standalone| J["After: flat type:object with all fields"]
style I fill:#f9a,stroke:#f00
style J fill:#afa,stroke:#090
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: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
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/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
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 +19 to +26
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY
accountNumber:
type: string

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 added to USD payment rails

MOBILE_MONEY has been added as a valid payment rail for UsdAccountInfo, alongside the existing US-specific rails (ACH, WIRE, RTP, FEDNOW, BANK_TRANSFER). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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

Comment on lines +2 to +8
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.

P1New required fields may be a breaking schema change

phoneNumber and bankName are newly required in UsdAccountInfo. Previously, UsdAccountInfo (via UsdAccountInfoBase + paymentRails) did not mandate these fields. Any existing API consumer that reads or validates against UsdAccountInfo (e.g., in PaymentInstructions) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 4 to +6
- beneficiaryType
- fullName
- nationality

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.

P1nationality promoted to required — potential breaking change

nationality is now required on BwpBeneficiary (and similarly on ZarBeneficiary, KesBeneficiary, MwkBeneficiary, NgnBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZmwBeneficiary). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send nationality. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

- FEDNOW
- BANK_TRANSFER
type: object
required:

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.

@AaryamanBhute this looks fishy. I had to add some fields for colombia and other thunes corridors, but the el salvador ones (which transact in USD) are adding some things here. Im concerned these fields will be a breaking change, what do you think?

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.

as long as these are optional, I don't think they're a breaking chage. Looks like these are optional right?

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.

https://github.com/lightsparkdev/webdev/blob/9374a2634a00091b752dd12c06884a1aea633673/sparkcore/sparkcore/bridge/extend_integration/thunes_fields_provider.py#L43 yeah I think it's baed on these? I have to update it anyway though, el salvador is just going to use 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.

something wierd is going on with the generator, it shouldn't be inlining these objects - investigating

@AaryamanBhuteAaryamanBhute left a comment

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.

wait for generator investigation

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #383

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260422-214338 branch April 23, 2026 17:51
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.

3 participants

@matthappens@AaryamanBhute@JasonCWang
, '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 - #374

Closed
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338
Closed

chore: Sync account schemas#374
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338

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 22, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 22, 2026 11:06pm

Request Review

@github-actions

github-actionsBot commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to accounts, require nationality, remove helpers, update GTQ/USD fields

openapi

fix(types): flatten account schemas, require paymentRails, add bankName/phoneNumber/nationality

python

feat(api): add bank_name to accounts, update GTQ/USD, require nationality in beneficiaries

typescript

feat(api): add bankName/phoneNumber fields, update payment rails in account types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

New diagnostics (60 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.
grid-pythonstudio · code · diff

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

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-22 23:10:49 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This auto-synced PR flattens all *AccountInfo schemas from allOf: [*AccountInfoBase, {paymentRails}] into self-contained type: object definitions, inlining full field definitions and validation constraints derived from sparkcore VASP adapter definitions. The *AccountInfoBase schemas remain unchanged and continue to be referenced by the *ExternalAccountCreateInfo schemas.

  • P1 — UsdAccountInfo new required fields: phoneNumber and bankName are now required; any existing USD payment instruction payload missing these fields will fail schema validation. MOBILE_MONEY is also newly added as a USD payment rail, which is unconventional — worth confirming this corridor is live and intentional.
  • P1 — Beneficiary nationality promoted to required: 10 beneficiary schemas (BwpBeneficiary, ZarBeneficiary, and 8 others) now require nationality. Existing callers that omit this field will break.

Confidence Score: 4/5

Safe to merge only after confirming the backend already enforces the new required fields and all API consumers are prepared for the breaking changes.

Two P1 concerns: new required fields on UsdAccountInfo (phoneNumber, bankName) and nationality promoted to required on 10 beneficiary schemas. Both are breaking changes for existing API consumers if the backend started enforcing these before clients updated. The rest of the changes (schema flattening, IBAN/SWIFT validation, rail additions for non-USD currencies) are well-structured and consistent.

openapi/components/schemas/common/UsdAccountInfo.yaml (MOBILE_MONEY rail + new required fields) and all 10 updated *Beneficiary.yaml files where nationality is now required.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf+Base to a standalone schema; adds paymentRails, bankName, phoneNumber as required, and adds MOBILE_MONEY as a payment rail — notable for a USD schema.
openapi/components/schemas/common/BwpBeneficiary.yamlPromotes nationality to required — a breaking change for callers submitting BWP beneficiaries without this field. Same pattern applies to 9 other beneficiary schemas.
openapi/components/schemas/common/CopBeneficiary.yamlReorders address before documentType/documentNumber — cosmetic property ordering change, no functional impact.
openapi.yamlBundled spec updated in sync with component YAML changes; removes all *AccountInfoBase named schemas and flattens them into the *AccountInfo schemas. Mirrors mintlify/openapi.yaml exactly.
mintlify/openapi.yamlKept in exact sync with openapi.yaml — no divergence detected.
openapi/components/schemas/common/BdtAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber, branchCode (required), swiftCode (optional), phoneNumber (required), with correct regex patterns.
openapi/components/schemas/common/EgpAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber (required), iban and swiftCode (optional) with correct IBAN and SWIFT regex patterns.
openapi/components/schemas/common/ZarBeneficiary.yamlPromotes nationality to required — breaking change for ZAR beneficiary submissions missing this field.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/*AccountInfo.yaml]
A -->|auto-sync| C[common/*Beneficiary.yaml]
B -->|used by| D[PaymentInstructions oneOf]
C -->|used by| E[*ExternalAccountCreateInfo.yaml]
F[common/*AccountInfoBase.yaml\nunchanged] -->|$ref| E
E -->|bundled into| G[openapi.yaml]
G -->|copied to| H[mintlify/openapi.yaml]
B -->|flattened allOf removed| I["Before: allOf[*Base + paymentRails]"]
B -->|now standalone| J["After: flat type:object with all fields"]
style I fill:#f9a,stroke:#f00
style J fill:#afa,stroke:#090
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: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
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/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
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 +19 to +26
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY
accountNumber:
type: string

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 added to USD payment rails

MOBILE_MONEY has been added as a valid payment rail for UsdAccountInfo, alongside the existing US-specific rails (ACH, WIRE, RTP, FEDNOW, BANK_TRANSFER). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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

Comment on lines +2 to +8
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.

P1New required fields may be a breaking schema change

phoneNumber and bankName are newly required in UsdAccountInfo. Previously, UsdAccountInfo (via UsdAccountInfoBase + paymentRails) did not mandate these fields. Any existing API consumer that reads or validates against UsdAccountInfo (e.g., in PaymentInstructions) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 4 to +6
- beneficiaryType
- fullName
- nationality

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.

P1nationality promoted to required — potential breaking change

nationality is now required on BwpBeneficiary (and similarly on ZarBeneficiary, KesBeneficiary, MwkBeneficiary, NgnBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZmwBeneficiary). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send nationality. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

- FEDNOW
- BANK_TRANSFER
type: object
required:

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.

@AaryamanBhute this looks fishy. I had to add some fields for colombia and other thunes corridors, but the el salvador ones (which transact in USD) are adding some things here. Im concerned these fields will be a breaking change, what do you think?

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.

as long as these are optional, I don't think they're a breaking chage. Looks like these are optional right?

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.

https://github.com/lightsparkdev/webdev/blob/9374a2634a00091b752dd12c06884a1aea633673/sparkcore/sparkcore/bridge/extend_integration/thunes_fields_provider.py#L43 yeah I think it's baed on these? I have to update it anyway though, el salvador is just going to use 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.

something wierd is going on with the generator, it shouldn't be inlining these objects - investigating

@AaryamanBhuteAaryamanBhute left a comment

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.

wait for generator investigation

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #383

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260422-214338 branch April 23, 2026 17:51
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.

3 participants

@matthappens@AaryamanBhute@JasonCWang
, '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 - #374

Closed
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338
Closed

chore: Sync account schemas#374
lightspark-copybara[bot] wants to merge 2 commits into
mainfrom
auto/sync-grid-schemas-20260422-214338

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 22, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 22, 2026 11:06pm

Request Review

@github-actions

github-actionsBot commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to accounts, require nationality, remove helpers, update GTQ/USD fields

openapi

fix(types): flatten account schemas, require paymentRails, add bankName/phoneNumber/nationality

python

feat(api): add bank_name to accounts, update GTQ/USD, require nationality in beneficiaries

typescript

feat(api): add bankName/phoneNumber fields, update payment rails in account types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

Your SDK build had at least one new note diagnostic, which is a regression from the base state.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

New diagnostics (60 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.
grid-pythonstudio · code · diff

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

Your SDK build had at least one "error" diagnostic, but this did not represent a regression.
generate ❗build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ✅

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

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-22 23:10:49 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This auto-synced PR flattens all *AccountInfo schemas from allOf: [*AccountInfoBase, {paymentRails}] into self-contained type: object definitions, inlining full field definitions and validation constraints derived from sparkcore VASP adapter definitions. The *AccountInfoBase schemas remain unchanged and continue to be referenced by the *ExternalAccountCreateInfo schemas.

  • P1 — UsdAccountInfo new required fields: phoneNumber and bankName are now required; any existing USD payment instruction payload missing these fields will fail schema validation. MOBILE_MONEY is also newly added as a USD payment rail, which is unconventional — worth confirming this corridor is live and intentional.
  • P1 — Beneficiary nationality promoted to required: 10 beneficiary schemas (BwpBeneficiary, ZarBeneficiary, and 8 others) now require nationality. Existing callers that omit this field will break.

Confidence Score: 4/5

Safe to merge only after confirming the backend already enforces the new required fields and all API consumers are prepared for the breaking changes.

Two P1 concerns: new required fields on UsdAccountInfo (phoneNumber, bankName) and nationality promoted to required on 10 beneficiary schemas. Both are breaking changes for existing API consumers if the backend started enforcing these before clients updated. The rest of the changes (schema flattening, IBAN/SWIFT validation, rail additions for non-USD currencies) are well-structured and consistent.

openapi/components/schemas/common/UsdAccountInfo.yaml (MOBILE_MONEY rail + new required fields) and all 10 updated *Beneficiary.yaml files where nationality is now required.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlFlattened from allOf+Base to a standalone schema; adds paymentRails, bankName, phoneNumber as required, and adds MOBILE_MONEY as a payment rail — notable for a USD schema.
openapi/components/schemas/common/BwpBeneficiary.yamlPromotes nationality to required — a breaking change for callers submitting BWP beneficiaries without this field. Same pattern applies to 9 other beneficiary schemas.
openapi/components/schemas/common/CopBeneficiary.yamlReorders address before documentType/documentNumber — cosmetic property ordering change, no functional impact.
openapi.yamlBundled spec updated in sync with component YAML changes; removes all *AccountInfoBase named schemas and flattens them into the *AccountInfo schemas. Mirrors mintlify/openapi.yaml exactly.
mintlify/openapi.yamlKept in exact sync with openapi.yaml — no divergence detected.
openapi/components/schemas/common/BdtAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber, branchCode (required), swiftCode (optional), phoneNumber (required), with correct regex patterns.
openapi/components/schemas/common/EgpAccountInfo.yamlFlattened to standalone schema; adds bankName, accountNumber (required), iban and swiftCode (optional) with correct IBAN and SWIFT regex patterns.
openapi/components/schemas/common/ZarBeneficiary.yamlPromotes nationality to required — breaking change for ZAR beneficiary submissions missing this field.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/*AccountInfo.yaml]
A -->|auto-sync| C[common/*Beneficiary.yaml]
B -->|used by| D[PaymentInstructions oneOf]
C -->|used by| E[*ExternalAccountCreateInfo.yaml]
F[common/*AccountInfoBase.yaml\nunchanged] -->|$ref| E
E -->|bundled into| G[openapi.yaml]
G -->|copied to| H[mintlify/openapi.yaml]
B -->|flattened allOf removed| I["Before: allOf[*Base + paymentRails]"]
B -->|now standalone| J["After: flat type:object with all fields"]
style I fill:#f9a,stroke:#f00
style J fill:#afa,stroke:#090
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: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
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/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
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 +19 to +26
- ACH
- WIRE
- RTP
- FEDNOW
- BANK_TRANSFER
- MOBILE_MONEY
accountNumber:
type: string

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 added to USD payment rails

MOBILE_MONEY has been added as a valid payment rail for UsdAccountInfo, alongside the existing US-specific rails (ACH, WIRE, RTP, FEDNOW, BANK_TRANSFER). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 19-26
Comment:
**`MOBILE_MONEY` added to USD payment rails**`MOBILE_MONEY` has been added as a valid payment rail for `UsdAccountInfo`, alongside the existing US-specific rails (`ACH`, `WIRE`, `RTP`, `FEDNOW`, `BANK_TRANSFER`). USD + mobile money is an unusual pairing — traditional US dollar payments don't go over mobile money networks. If this is intended to cover specific corridors (e.g., El Salvador or other dollarized economies), it's worth confirming that the backend already supports this rail for USD and that the discriminator logic downstream handles it correctly.
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

Comment on lines +2 to +8
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.

P1New required fields may be a breaking schema change

phoneNumber and bankName are newly required in UsdAccountInfo. Previously, UsdAccountInfo (via UsdAccountInfoBase + paymentRails) did not mandate these fields. Any existing API consumer that reads or validates against UsdAccountInfo (e.g., in PaymentInstructions) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 2-8
Comment:
**New required fields may be a breaking schema change**`phoneNumber` and `bankName` are newly required in `UsdAccountInfo`. Previously, `UsdAccountInfo` (via `UsdAccountInfoBase` + `paymentRails`) did not mandate these fields. Any existing API consumer that reads or validates against `UsdAccountInfo` (e.g., in `PaymentInstructions`) without these fields will now fail schema validation. Please confirm the backend always returns both fields for USD account info payloads before merging, or consider making them optional for backward compatibility.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 4 to +6
- beneficiaryType
- fullName
- nationality

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.

P1nationality promoted to required — potential breaking change

nationality is now required on BwpBeneficiary (and similarly on ZarBeneficiary, KesBeneficiary, MwkBeneficiary, NgnBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZmwBeneficiary). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send nationality. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4-6
Comment:
**`nationality` promoted to required — potential breaking change**`nationality` is now required on `BwpBeneficiary` (and similarly on `ZarBeneficiary`, `KesBeneficiary`, `MwkBeneficiary`, `NgnBeneficiary`, `RwfBeneficiary`, `TzsBeneficiary`, `UgxBeneficiary`, `XafBeneficiary`, `XofBeneficiary`, `ZmwBeneficiary`). This is a breaking change for callers creating or submitting beneficiaries for these currencies who don't currently send `nationality`. Please confirm the backend enforces this field and that all existing stored beneficiaries for these currencies will continue to pass validation.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

- FEDNOW
- BANK_TRANSFER
type: object
required:

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.

@AaryamanBhute this looks fishy. I had to add some fields for colombia and other thunes corridors, but the el salvador ones (which transact in USD) are adding some things here. Im concerned these fields will be a breaking change, what do you think?

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.

as long as these are optional, I don't think they're a breaking chage. Looks like these are optional right?

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.

https://github.com/lightsparkdev/webdev/blob/9374a2634a00091b752dd12c06884a1aea633673/sparkcore/sparkcore/bridge/extend_integration/thunes_fields_provider.py#L43 yeah I think it's baed on these? I have to update it anyway though, el salvador is just going to use 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.

something wierd is going on with the generator, it shouldn't be inlining these objects - investigating

@AaryamanBhuteAaryamanBhute left a comment

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.

wait for generator investigation

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #383

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260422-214338 branch April 23, 2026 17:51
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.

3 participants

@matthappens@AaryamanBhute@JasonCWang