chore: Sync account schemas - #383

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

chore: Sync account schemas#383
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260423-175120

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 5:52pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

fix(types): make nationality required, add bankName fields, update USD/COP/GTQ account types

openapi

fix(types): add paymentRails/nationality required, restructure account schemas, update field reqs

python

fix(types): add bank_name to accounts, update field requirements in beneficiaries

typescript

fix(types): update field requirements in external account and beneficiary 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 (61 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-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/7f6d79df68e4362dbabab00d15cbe1184a4144e4/dist.tar.gz
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/a43b7fc02910c911c6d828fe3a93e9e97dd63da4/grid-0.0.1-py3-none-any.whl

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-23 17:57:18 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs account and beneficiary schemas from sparkcore VASP adapter definitions, flattening the existing allOf+Base pattern into self-contained objects and adding field-level constraints (patterns, min/max lengths, examples) across ~30 currencies. The majority of changes look correct, but three P1 issues require review before merging:

  • UsdAccountInfo: phoneNumber is now required, BANK_TRANSFER is replaced by MOBILE_MONEY, and bankAccountType (CHECKING/SAVINGS, documented as needed for El Salvador corridors) is removed entirely — these changes could break existing USD bank-transfer integrations.
  • CopBeneficiary: required fields changed from countryOfResidence to documentNumber+documentType, which is a breaking change for existing payloads.
  • 12 beneficiary schemas (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, and others): nationality added to required, which would invalidate any existing beneficiary record that omits it.

Confidence Score: 3/5

Not safe to merge without confirming the USD and beneficiary schema breaking changes are intentional and downstream callers are updated.

Three P1 findings — the USD account schema has multiple breaking changes (required phoneNumber, dropped BANK_TRANSFER/bankAccountType), CopBeneficiary swaps required fields, and 12 beneficiary schemas newly require nationality — all of which could silently break existing integrations or validation in production.

openapi/components/schemas/common/UsdAccountInfo.yaml, openapi/components/schemas/common/CopBeneficiary.yaml, and the 12 Beneficiary YAML files that now require nationality (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZarBeneficiary, KesBeneficiary, MwkBeneficiary, GtqBeneficiary).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlBreaking changes: phoneNumber made required, BANK_TRANSFER replaced with MOBILE_MONEY in payment rails, and bankAccountType (CHECKING/SAVINGS, needed for El Salvador) removed entirely.
openapi/components/schemas/common/CopBeneficiary.yamlBreaking required-field change: countryOfResidence replaced by documentNumber+documentType in required list; property ordering also changed.
openapi/components/schemas/common/BwpBeneficiary.yamlnationality added as required — same pattern applies to 11 other beneficiary schemas (Ngn, Zmw, Rwf, Tzs, Ugx, Xaf, Xof, Zar, Kes, Mwk, Gtq).
openapi/components/schemas/common/EurAccountInfo.yamlFlattened from allOf+Base ref to a standalone object; fields (accountType, paymentRails, iban, swiftCode) look correct for EUR/SEPA.
openapi/components/schemas/common/GbpAccountInfo.yamlFlattened schema; sortCode and accountNumber with correct UK patterns added; looks correct.
openapi/components/schemas/common/DkkAccountInfo.yamlFlattened schema; uses SEPA/SEPA_INSTANT rails for DKK — Denmark is not in the Eurozone but SEPA inclusion may be intentional.
openapi.yamlConsolidated bundle reflects all schema changes; same P1 issues present here as in the individual YAML files (USD phoneNumber required, BANK_TRANSFER→MOBILE_MONEY, bankAccountType removed).
mintlify/openapi.yamlMirror of openapi.yaml for the Mintlify docs site; carries the same breaking changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[AccountInfo Schema Sync] --> B[AccountInfo Schemas ~30 currencies]
A --> C[Beneficiary Schemas ~13 currencies]
A --> D[openapi.yaml / mintlify/openapi.yaml Bundle rebuild]
B --> B1[Flattened allOf+Base refs into standalone objects]
B --> B2[accountType discriminator added as required]
B --> B3[Payment-specific fields added]
B3 --> USD[UsdAccountInfo ⚠️ phoneNumber now required, BANK_TRANSFER removed, bankAccountType removed]
B3 --> EUR[EurAccountInfo ✅ IBAN + SEPA rails]
B3 --> GBP[GbpAccountInfo ✅ sortCode + accountNumber]
C --> C1[nationality added as required in 12 schemas ⚠️]
C --> C2[CopBeneficiary ⚠️ countryOfResidence no longer required]
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: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
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: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
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/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
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
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
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 +5 to +7
- accountNumber
- routingNumber
- 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.

P1phoneNumber required for all USD bank accounts

phoneNumber is now in the required list alongside accountNumber and routingNumber. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If phoneNumber is only needed for MOBILE_MONEY rails, it should be optional at the schema level or use a discriminated union rather than being universally required.

Suggested change
- accountNumber
- routingNumber
- phoneNumber
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

hm, this one we may want to drop. this conflation of el salvador (which receives in USD) with usa is causing phone # to be required
we might need to make phone number optional instead, and have the business logic validate the SLV receiver paths. alternatively we can drop SLV for now

Comment on lines +20 to +24
- RTP
- FEDNOW
- 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.

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

BANK_TRANSFER was present in the previous schema and is now replaced by MOBILE_MONEY. USD is not a currency typically associated with mobile money rails, and any existing integrations using BANK_TRANSFER for USD will now receive a validation error. Additionally, the previous bankAccountType field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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://app.graphite.com/github/pr/lightsparkdev/webdev/26611 mobile money is added for el salvador. is removing bank transfer correct? all the other rails are USA specific

Comment on lines 4 to +6
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change to required beneficiary fields

countryOfResidence is no longer required and documentNumber+documentType are now required. Any existing COP beneficiary payload that includes countryOfResidence but not documentNumber/documentType will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

this is fine, and correct for production accounts

@@ -3,6 +3,7 @@ type: object
required:
- beneficiaryType

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 now required across multiple beneficiary schemas

nationality has been added as a required field in BwpBeneficiary.yaml and follows the same pattern in NgnBeneficiary.yaml, ZmwBeneficiary.yaml, RwfBeneficiary.yaml, TzsBeneficiary.yaml, UgxBeneficiary.yaml, XafBeneficiary.yaml, XofBeneficiary.yaml, ZarBeneficiary.yaml, KesBeneficiary.yaml, MwkBeneficiary.yaml, and GtqBeneficiary.yaml. Any existing beneficiary record missing nationality will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

I think this is deliberate?

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #384

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-175120 branch April 23, 2026 18:02
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.

1 participant

@matthappens
, '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 - #383

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

chore: Sync account schemas#383
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260423-175120

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 5:52pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

fix(types): make nationality required, add bankName fields, update USD/COP/GTQ account types

openapi

fix(types): add paymentRails/nationality required, restructure account schemas, update field reqs

python

fix(types): add bank_name to accounts, update field requirements in beneficiaries

typescript

fix(types): update field requirements in external account and beneficiary 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 (61 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-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/7f6d79df68e4362dbabab00d15cbe1184a4144e4/dist.tar.gz
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/a43b7fc02910c911c6d828fe3a93e9e97dd63da4/grid-0.0.1-py3-none-any.whl

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-23 17:57:18 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs account and beneficiary schemas from sparkcore VASP adapter definitions, flattening the existing allOf+Base pattern into self-contained objects and adding field-level constraints (patterns, min/max lengths, examples) across ~30 currencies. The majority of changes look correct, but three P1 issues require review before merging:

  • UsdAccountInfo: phoneNumber is now required, BANK_TRANSFER is replaced by MOBILE_MONEY, and bankAccountType (CHECKING/SAVINGS, documented as needed for El Salvador corridors) is removed entirely — these changes could break existing USD bank-transfer integrations.
  • CopBeneficiary: required fields changed from countryOfResidence to documentNumber+documentType, which is a breaking change for existing payloads.
  • 12 beneficiary schemas (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, and others): nationality added to required, which would invalidate any existing beneficiary record that omits it.

Confidence Score: 3/5

Not safe to merge without confirming the USD and beneficiary schema breaking changes are intentional and downstream callers are updated.

Three P1 findings — the USD account schema has multiple breaking changes (required phoneNumber, dropped BANK_TRANSFER/bankAccountType), CopBeneficiary swaps required fields, and 12 beneficiary schemas newly require nationality — all of which could silently break existing integrations or validation in production.

openapi/components/schemas/common/UsdAccountInfo.yaml, openapi/components/schemas/common/CopBeneficiary.yaml, and the 12 Beneficiary YAML files that now require nationality (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZarBeneficiary, KesBeneficiary, MwkBeneficiary, GtqBeneficiary).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlBreaking changes: phoneNumber made required, BANK_TRANSFER replaced with MOBILE_MONEY in payment rails, and bankAccountType (CHECKING/SAVINGS, needed for El Salvador) removed entirely.
openapi/components/schemas/common/CopBeneficiary.yamlBreaking required-field change: countryOfResidence replaced by documentNumber+documentType in required list; property ordering also changed.
openapi/components/schemas/common/BwpBeneficiary.yamlnationality added as required — same pattern applies to 11 other beneficiary schemas (Ngn, Zmw, Rwf, Tzs, Ugx, Xaf, Xof, Zar, Kes, Mwk, Gtq).
openapi/components/schemas/common/EurAccountInfo.yamlFlattened from allOf+Base ref to a standalone object; fields (accountType, paymentRails, iban, swiftCode) look correct for EUR/SEPA.
openapi/components/schemas/common/GbpAccountInfo.yamlFlattened schema; sortCode and accountNumber with correct UK patterns added; looks correct.
openapi/components/schemas/common/DkkAccountInfo.yamlFlattened schema; uses SEPA/SEPA_INSTANT rails for DKK — Denmark is not in the Eurozone but SEPA inclusion may be intentional.
openapi.yamlConsolidated bundle reflects all schema changes; same P1 issues present here as in the individual YAML files (USD phoneNumber required, BANK_TRANSFER→MOBILE_MONEY, bankAccountType removed).
mintlify/openapi.yamlMirror of openapi.yaml for the Mintlify docs site; carries the same breaking changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[AccountInfo Schema Sync] --> B[AccountInfo Schemas ~30 currencies]
A --> C[Beneficiary Schemas ~13 currencies]
A --> D[openapi.yaml / mintlify/openapi.yaml Bundle rebuild]
B --> B1[Flattened allOf+Base refs into standalone objects]
B --> B2[accountType discriminator added as required]
B --> B3[Payment-specific fields added]
B3 --> USD[UsdAccountInfo ⚠️ phoneNumber now required, BANK_TRANSFER removed, bankAccountType removed]
B3 --> EUR[EurAccountInfo ✅ IBAN + SEPA rails]
B3 --> GBP[GbpAccountInfo ✅ sortCode + accountNumber]
C --> C1[nationality added as required in 12 schemas ⚠️]
C --> C2[CopBeneficiary ⚠️ countryOfResidence no longer required]
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: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
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: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
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/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
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
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
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 +5 to +7
- accountNumber
- routingNumber
- 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.

P1phoneNumber required for all USD bank accounts

phoneNumber is now in the required list alongside accountNumber and routingNumber. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If phoneNumber is only needed for MOBILE_MONEY rails, it should be optional at the schema level or use a discriminated union rather than being universally required.

Suggested change
- accountNumber
- routingNumber
- phoneNumber
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

hm, this one we may want to drop. this conflation of el salvador (which receives in USD) with usa is causing phone # to be required
we might need to make phone number optional instead, and have the business logic validate the SLV receiver paths. alternatively we can drop SLV for now

Comment on lines +20 to +24
- RTP
- FEDNOW
- 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.

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

BANK_TRANSFER was present in the previous schema and is now replaced by MOBILE_MONEY. USD is not a currency typically associated with mobile money rails, and any existing integrations using BANK_TRANSFER for USD will now receive a validation error. Additionally, the previous bankAccountType field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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://app.graphite.com/github/pr/lightsparkdev/webdev/26611 mobile money is added for el salvador. is removing bank transfer correct? all the other rails are USA specific

Comment on lines 4 to +6
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change to required beneficiary fields

countryOfResidence is no longer required and documentNumber+documentType are now required. Any existing COP beneficiary payload that includes countryOfResidence but not documentNumber/documentType will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

this is fine, and correct for production accounts

@@ -3,6 +3,7 @@ type: object
required:
- beneficiaryType

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 now required across multiple beneficiary schemas

nationality has been added as a required field in BwpBeneficiary.yaml and follows the same pattern in NgnBeneficiary.yaml, ZmwBeneficiary.yaml, RwfBeneficiary.yaml, TzsBeneficiary.yaml, UgxBeneficiary.yaml, XafBeneficiary.yaml, XofBeneficiary.yaml, ZarBeneficiary.yaml, KesBeneficiary.yaml, MwkBeneficiary.yaml, and GtqBeneficiary.yaml. Any existing beneficiary record missing nationality will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

I think this is deliberate?

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #384

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-175120 branch April 23, 2026 18:02
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.

1 participant

@matthappens
, '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 - #383

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

chore: Sync account schemas#383
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260423-175120

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 5:52pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

fix(types): make nationality required, add bankName fields, update USD/COP/GTQ account types

openapi

fix(types): add paymentRails/nationality required, restructure account schemas, update field reqs

python

fix(types): add bank_name to accounts, update field requirements in beneficiaries

typescript

fix(types): update field requirements in external account and beneficiary 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 (61 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-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/7f6d79df68e4362dbabab00d15cbe1184a4144e4/dist.tar.gz
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/a43b7fc02910c911c6d828fe3a93e9e97dd63da4/grid-0.0.1-py3-none-any.whl

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-23 17:57:18 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs account and beneficiary schemas from sparkcore VASP adapter definitions, flattening the existing allOf+Base pattern into self-contained objects and adding field-level constraints (patterns, min/max lengths, examples) across ~30 currencies. The majority of changes look correct, but three P1 issues require review before merging:

  • UsdAccountInfo: phoneNumber is now required, BANK_TRANSFER is replaced by MOBILE_MONEY, and bankAccountType (CHECKING/SAVINGS, documented as needed for El Salvador corridors) is removed entirely — these changes could break existing USD bank-transfer integrations.
  • CopBeneficiary: required fields changed from countryOfResidence to documentNumber+documentType, which is a breaking change for existing payloads.
  • 12 beneficiary schemas (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, and others): nationality added to required, which would invalidate any existing beneficiary record that omits it.

Confidence Score: 3/5

Not safe to merge without confirming the USD and beneficiary schema breaking changes are intentional and downstream callers are updated.

Three P1 findings — the USD account schema has multiple breaking changes (required phoneNumber, dropped BANK_TRANSFER/bankAccountType), CopBeneficiary swaps required fields, and 12 beneficiary schemas newly require nationality — all of which could silently break existing integrations or validation in production.

openapi/components/schemas/common/UsdAccountInfo.yaml, openapi/components/schemas/common/CopBeneficiary.yaml, and the 12 Beneficiary YAML files that now require nationality (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZarBeneficiary, KesBeneficiary, MwkBeneficiary, GtqBeneficiary).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlBreaking changes: phoneNumber made required, BANK_TRANSFER replaced with MOBILE_MONEY in payment rails, and bankAccountType (CHECKING/SAVINGS, needed for El Salvador) removed entirely.
openapi/components/schemas/common/CopBeneficiary.yamlBreaking required-field change: countryOfResidence replaced by documentNumber+documentType in required list; property ordering also changed.
openapi/components/schemas/common/BwpBeneficiary.yamlnationality added as required — same pattern applies to 11 other beneficiary schemas (Ngn, Zmw, Rwf, Tzs, Ugx, Xaf, Xof, Zar, Kes, Mwk, Gtq).
openapi/components/schemas/common/EurAccountInfo.yamlFlattened from allOf+Base ref to a standalone object; fields (accountType, paymentRails, iban, swiftCode) look correct for EUR/SEPA.
openapi/components/schemas/common/GbpAccountInfo.yamlFlattened schema; sortCode and accountNumber with correct UK patterns added; looks correct.
openapi/components/schemas/common/DkkAccountInfo.yamlFlattened schema; uses SEPA/SEPA_INSTANT rails for DKK — Denmark is not in the Eurozone but SEPA inclusion may be intentional.
openapi.yamlConsolidated bundle reflects all schema changes; same P1 issues present here as in the individual YAML files (USD phoneNumber required, BANK_TRANSFER→MOBILE_MONEY, bankAccountType removed).
mintlify/openapi.yamlMirror of openapi.yaml for the Mintlify docs site; carries the same breaking changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[AccountInfo Schema Sync] --> B[AccountInfo Schemas ~30 currencies]
A --> C[Beneficiary Schemas ~13 currencies]
A --> D[openapi.yaml / mintlify/openapi.yaml Bundle rebuild]
B --> B1[Flattened allOf+Base refs into standalone objects]
B --> B2[accountType discriminator added as required]
B --> B3[Payment-specific fields added]
B3 --> USD[UsdAccountInfo ⚠️ phoneNumber now required, BANK_TRANSFER removed, bankAccountType removed]
B3 --> EUR[EurAccountInfo ✅ IBAN + SEPA rails]
B3 --> GBP[GbpAccountInfo ✅ sortCode + accountNumber]
C --> C1[nationality added as required in 12 schemas ⚠️]
C --> C2[CopBeneficiary ⚠️ countryOfResidence no longer required]
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: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
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: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
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/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
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
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
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 +5 to +7
- accountNumber
- routingNumber
- 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.

P1phoneNumber required for all USD bank accounts

phoneNumber is now in the required list alongside accountNumber and routingNumber. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If phoneNumber is only needed for MOBILE_MONEY rails, it should be optional at the schema level or use a discriminated union rather than being universally required.

Suggested change
- accountNumber
- routingNumber
- phoneNumber
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

hm, this one we may want to drop. this conflation of el salvador (which receives in USD) with usa is causing phone # to be required
we might need to make phone number optional instead, and have the business logic validate the SLV receiver paths. alternatively we can drop SLV for now

Comment on lines +20 to +24
- RTP
- FEDNOW
- 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.

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

BANK_TRANSFER was present in the previous schema and is now replaced by MOBILE_MONEY. USD is not a currency typically associated with mobile money rails, and any existing integrations using BANK_TRANSFER for USD will now receive a validation error. Additionally, the previous bankAccountType field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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://app.graphite.com/github/pr/lightsparkdev/webdev/26611 mobile money is added for el salvador. is removing bank transfer correct? all the other rails are USA specific

Comment on lines 4 to +6
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change to required beneficiary fields

countryOfResidence is no longer required and documentNumber+documentType are now required. Any existing COP beneficiary payload that includes countryOfResidence but not documentNumber/documentType will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

this is fine, and correct for production accounts

@@ -3,6 +3,7 @@ type: object
required:
- beneficiaryType

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 now required across multiple beneficiary schemas

nationality has been added as a required field in BwpBeneficiary.yaml and follows the same pattern in NgnBeneficiary.yaml, ZmwBeneficiary.yaml, RwfBeneficiary.yaml, TzsBeneficiary.yaml, UgxBeneficiary.yaml, XafBeneficiary.yaml, XofBeneficiary.yaml, ZarBeneficiary.yaml, KesBeneficiary.yaml, MwkBeneficiary.yaml, and GtqBeneficiary.yaml. Any existing beneficiary record missing nationality will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

I think this is deliberate?

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #384

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-175120 branch April 23, 2026 18:02
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.

1 participant

@matthappens
, '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 - #383

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

chore: Sync account schemas#383
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260423-175120

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 5:52pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

fix(types): make nationality required, add bankName fields, update USD/COP/GTQ account types

openapi

fix(types): add paymentRails/nationality required, restructure account schemas, update field reqs

python

fix(types): add bank_name to accounts, update field requirements in beneficiaries

typescript

fix(types): update field requirements in external account and beneficiary 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 (61 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-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/7f6d79df68e4362dbabab00d15cbe1184a4144e4/dist.tar.gz
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/a43b7fc02910c911c6d828fe3a93e9e97dd63da4/grid-0.0.1-py3-none-any.whl

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-23 17:57:18 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs account and beneficiary schemas from sparkcore VASP adapter definitions, flattening the existing allOf+Base pattern into self-contained objects and adding field-level constraints (patterns, min/max lengths, examples) across ~30 currencies. The majority of changes look correct, but three P1 issues require review before merging:

  • UsdAccountInfo: phoneNumber is now required, BANK_TRANSFER is replaced by MOBILE_MONEY, and bankAccountType (CHECKING/SAVINGS, documented as needed for El Salvador corridors) is removed entirely — these changes could break existing USD bank-transfer integrations.
  • CopBeneficiary: required fields changed from countryOfResidence to documentNumber+documentType, which is a breaking change for existing payloads.
  • 12 beneficiary schemas (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, and others): nationality added to required, which would invalidate any existing beneficiary record that omits it.

Confidence Score: 3/5

Not safe to merge without confirming the USD and beneficiary schema breaking changes are intentional and downstream callers are updated.

Three P1 findings — the USD account schema has multiple breaking changes (required phoneNumber, dropped BANK_TRANSFER/bankAccountType), CopBeneficiary swaps required fields, and 12 beneficiary schemas newly require nationality — all of which could silently break existing integrations or validation in production.

openapi/components/schemas/common/UsdAccountInfo.yaml, openapi/components/schemas/common/CopBeneficiary.yaml, and the 12 Beneficiary YAML files that now require nationality (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZarBeneficiary, KesBeneficiary, MwkBeneficiary, GtqBeneficiary).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlBreaking changes: phoneNumber made required, BANK_TRANSFER replaced with MOBILE_MONEY in payment rails, and bankAccountType (CHECKING/SAVINGS, needed for El Salvador) removed entirely.
openapi/components/schemas/common/CopBeneficiary.yamlBreaking required-field change: countryOfResidence replaced by documentNumber+documentType in required list; property ordering also changed.
openapi/components/schemas/common/BwpBeneficiary.yamlnationality added as required — same pattern applies to 11 other beneficiary schemas (Ngn, Zmw, Rwf, Tzs, Ugx, Xaf, Xof, Zar, Kes, Mwk, Gtq).
openapi/components/schemas/common/EurAccountInfo.yamlFlattened from allOf+Base ref to a standalone object; fields (accountType, paymentRails, iban, swiftCode) look correct for EUR/SEPA.
openapi/components/schemas/common/GbpAccountInfo.yamlFlattened schema; sortCode and accountNumber with correct UK patterns added; looks correct.
openapi/components/schemas/common/DkkAccountInfo.yamlFlattened schema; uses SEPA/SEPA_INSTANT rails for DKK — Denmark is not in the Eurozone but SEPA inclusion may be intentional.
openapi.yamlConsolidated bundle reflects all schema changes; same P1 issues present here as in the individual YAML files (USD phoneNumber required, BANK_TRANSFER→MOBILE_MONEY, bankAccountType removed).
mintlify/openapi.yamlMirror of openapi.yaml for the Mintlify docs site; carries the same breaking changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[AccountInfo Schema Sync] --> B[AccountInfo Schemas ~30 currencies]
A --> C[Beneficiary Schemas ~13 currencies]
A --> D[openapi.yaml / mintlify/openapi.yaml Bundle rebuild]
B --> B1[Flattened allOf+Base refs into standalone objects]
B --> B2[accountType discriminator added as required]
B --> B3[Payment-specific fields added]
B3 --> USD[UsdAccountInfo ⚠️ phoneNumber now required, BANK_TRANSFER removed, bankAccountType removed]
B3 --> EUR[EurAccountInfo ✅ IBAN + SEPA rails]
B3 --> GBP[GbpAccountInfo ✅ sortCode + accountNumber]
C --> C1[nationality added as required in 12 schemas ⚠️]
C --> C2[CopBeneficiary ⚠️ countryOfResidence no longer required]
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: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
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: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
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/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
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
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
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 +5 to +7
- accountNumber
- routingNumber
- 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.

P1phoneNumber required for all USD bank accounts

phoneNumber is now in the required list alongside accountNumber and routingNumber. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If phoneNumber is only needed for MOBILE_MONEY rails, it should be optional at the schema level or use a discriminated union rather than being universally required.

Suggested change
- accountNumber
- routingNumber
- phoneNumber
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

hm, this one we may want to drop. this conflation of el salvador (which receives in USD) with usa is causing phone # to be required
we might need to make phone number optional instead, and have the business logic validate the SLV receiver paths. alternatively we can drop SLV for now

Comment on lines +20 to +24
- RTP
- FEDNOW
- 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.

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

BANK_TRANSFER was present in the previous schema and is now replaced by MOBILE_MONEY. USD is not a currency typically associated with mobile money rails, and any existing integrations using BANK_TRANSFER for USD will now receive a validation error. Additionally, the previous bankAccountType field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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://app.graphite.com/github/pr/lightsparkdev/webdev/26611 mobile money is added for el salvador. is removing bank transfer correct? all the other rails are USA specific

Comment on lines 4 to +6
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change to required beneficiary fields

countryOfResidence is no longer required and documentNumber+documentType are now required. Any existing COP beneficiary payload that includes countryOfResidence but not documentNumber/documentType will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

this is fine, and correct for production accounts

@@ -3,6 +3,7 @@ type: object
required:
- beneficiaryType

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 now required across multiple beneficiary schemas

nationality has been added as a required field in BwpBeneficiary.yaml and follows the same pattern in NgnBeneficiary.yaml, ZmwBeneficiary.yaml, RwfBeneficiary.yaml, TzsBeneficiary.yaml, UgxBeneficiary.yaml, XafBeneficiary.yaml, XofBeneficiary.yaml, ZarBeneficiary.yaml, KesBeneficiary.yaml, MwkBeneficiary.yaml, and GtqBeneficiary.yaml. Any existing beneficiary record missing nationality will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

I think this is deliberate?

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #384

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-175120 branch April 23, 2026 18:02
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.

1 participant

@matthappens
, '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 - #383

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

chore: Sync account schemas#383
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260423-175120

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 5:52pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

fix(types): make nationality required, add bankName fields, update USD/COP/GTQ account types

openapi

fix(types): add paymentRails/nationality required, restructure account schemas, update field reqs

python

fix(types): add bank_name to accounts, update field requirements in beneficiaries

typescript

fix(types): update field requirements in external account and beneficiary 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 (61 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-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/7f6d79df68e4362dbabab00d15cbe1184a4144e4/dist.tar.gz
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/a43b7fc02910c911c6d828fe3a93e9e97dd63da4/grid-0.0.1-py3-none-any.whl

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-23 17:57:18 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs account and beneficiary schemas from sparkcore VASP adapter definitions, flattening the existing allOf+Base pattern into self-contained objects and adding field-level constraints (patterns, min/max lengths, examples) across ~30 currencies. The majority of changes look correct, but three P1 issues require review before merging:

  • UsdAccountInfo: phoneNumber is now required, BANK_TRANSFER is replaced by MOBILE_MONEY, and bankAccountType (CHECKING/SAVINGS, documented as needed for El Salvador corridors) is removed entirely — these changes could break existing USD bank-transfer integrations.
  • CopBeneficiary: required fields changed from countryOfResidence to documentNumber+documentType, which is a breaking change for existing payloads.
  • 12 beneficiary schemas (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, and others): nationality added to required, which would invalidate any existing beneficiary record that omits it.

Confidence Score: 3/5

Not safe to merge without confirming the USD and beneficiary schema breaking changes are intentional and downstream callers are updated.

Three P1 findings — the USD account schema has multiple breaking changes (required phoneNumber, dropped BANK_TRANSFER/bankAccountType), CopBeneficiary swaps required fields, and 12 beneficiary schemas newly require nationality — all of which could silently break existing integrations or validation in production.

openapi/components/schemas/common/UsdAccountInfo.yaml, openapi/components/schemas/common/CopBeneficiary.yaml, and the 12 Beneficiary YAML files that now require nationality (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZarBeneficiary, KesBeneficiary, MwkBeneficiary, GtqBeneficiary).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlBreaking changes: phoneNumber made required, BANK_TRANSFER replaced with MOBILE_MONEY in payment rails, and bankAccountType (CHECKING/SAVINGS, needed for El Salvador) removed entirely.
openapi/components/schemas/common/CopBeneficiary.yamlBreaking required-field change: countryOfResidence replaced by documentNumber+documentType in required list; property ordering also changed.
openapi/components/schemas/common/BwpBeneficiary.yamlnationality added as required — same pattern applies to 11 other beneficiary schemas (Ngn, Zmw, Rwf, Tzs, Ugx, Xaf, Xof, Zar, Kes, Mwk, Gtq).
openapi/components/schemas/common/EurAccountInfo.yamlFlattened from allOf+Base ref to a standalone object; fields (accountType, paymentRails, iban, swiftCode) look correct for EUR/SEPA.
openapi/components/schemas/common/GbpAccountInfo.yamlFlattened schema; sortCode and accountNumber with correct UK patterns added; looks correct.
openapi/components/schemas/common/DkkAccountInfo.yamlFlattened schema; uses SEPA/SEPA_INSTANT rails for DKK — Denmark is not in the Eurozone but SEPA inclusion may be intentional.
openapi.yamlConsolidated bundle reflects all schema changes; same P1 issues present here as in the individual YAML files (USD phoneNumber required, BANK_TRANSFER→MOBILE_MONEY, bankAccountType removed).
mintlify/openapi.yamlMirror of openapi.yaml for the Mintlify docs site; carries the same breaking changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[AccountInfo Schema Sync] --> B[AccountInfo Schemas ~30 currencies]
A --> C[Beneficiary Schemas ~13 currencies]
A --> D[openapi.yaml / mintlify/openapi.yaml Bundle rebuild]
B --> B1[Flattened allOf+Base refs into standalone objects]
B --> B2[accountType discriminator added as required]
B --> B3[Payment-specific fields added]
B3 --> USD[UsdAccountInfo ⚠️ phoneNumber now required, BANK_TRANSFER removed, bankAccountType removed]
B3 --> EUR[EurAccountInfo ✅ IBAN + SEPA rails]
B3 --> GBP[GbpAccountInfo ✅ sortCode + accountNumber]
C --> C1[nationality added as required in 12 schemas ⚠️]
C --> C2[CopBeneficiary ⚠️ countryOfResidence no longer required]
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: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
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: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
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/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
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
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
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 +5 to +7
- accountNumber
- routingNumber
- 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.

P1phoneNumber required for all USD bank accounts

phoneNumber is now in the required list alongside accountNumber and routingNumber. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If phoneNumber is only needed for MOBILE_MONEY rails, it should be optional at the schema level or use a discriminated union rather than being universally required.

Suggested change
- accountNumber
- routingNumber
- phoneNumber
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

hm, this one we may want to drop. this conflation of el salvador (which receives in USD) with usa is causing phone # to be required
we might need to make phone number optional instead, and have the business logic validate the SLV receiver paths. alternatively we can drop SLV for now

Comment on lines +20 to +24
- RTP
- FEDNOW
- 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.

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

BANK_TRANSFER was present in the previous schema and is now replaced by MOBILE_MONEY. USD is not a currency typically associated with mobile money rails, and any existing integrations using BANK_TRANSFER for USD will now receive a validation error. Additionally, the previous bankAccountType field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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://app.graphite.com/github/pr/lightsparkdev/webdev/26611 mobile money is added for el salvador. is removing bank transfer correct? all the other rails are USA specific

Comment on lines 4 to +6
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change to required beneficiary fields

countryOfResidence is no longer required and documentNumber+documentType are now required. Any existing COP beneficiary payload that includes countryOfResidence but not documentNumber/documentType will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

this is fine, and correct for production accounts

@@ -3,6 +3,7 @@ type: object
required:
- beneficiaryType

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 now required across multiple beneficiary schemas

nationality has been added as a required field in BwpBeneficiary.yaml and follows the same pattern in NgnBeneficiary.yaml, ZmwBeneficiary.yaml, RwfBeneficiary.yaml, TzsBeneficiary.yaml, UgxBeneficiary.yaml, XafBeneficiary.yaml, XofBeneficiary.yaml, ZarBeneficiary.yaml, KesBeneficiary.yaml, MwkBeneficiary.yaml, and GtqBeneficiary.yaml. Any existing beneficiary record missing nationality will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

I think this is deliberate?

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #384

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-175120 branch April 23, 2026 18:02
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.

1 participant

@matthappens
, '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 - #383

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

chore: Sync account schemas#383
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260423-175120

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 5:52pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

fix(types): make nationality required, add bankName fields, update USD/COP/GTQ account types

openapi

fix(types): add paymentRails/nationality required, restructure account schemas, update field reqs

python

fix(types): add bank_name to accounts, update field requirements in beneficiaries

typescript

fix(types): update field requirements in external account and beneficiary 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 (61 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-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/7f6d79df68e4362dbabab00d15cbe1184a4144e4/dist.tar.gz
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/a43b7fc02910c911c6d828fe3a93e9e97dd63da4/grid-0.0.1-py3-none-any.whl

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-23 17:57:18 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs account and beneficiary schemas from sparkcore VASP adapter definitions, flattening the existing allOf+Base pattern into self-contained objects and adding field-level constraints (patterns, min/max lengths, examples) across ~30 currencies. The majority of changes look correct, but three P1 issues require review before merging:

  • UsdAccountInfo: phoneNumber is now required, BANK_TRANSFER is replaced by MOBILE_MONEY, and bankAccountType (CHECKING/SAVINGS, documented as needed for El Salvador corridors) is removed entirely — these changes could break existing USD bank-transfer integrations.
  • CopBeneficiary: required fields changed from countryOfResidence to documentNumber+documentType, which is a breaking change for existing payloads.
  • 12 beneficiary schemas (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, and others): nationality added to required, which would invalidate any existing beneficiary record that omits it.

Confidence Score: 3/5

Not safe to merge without confirming the USD and beneficiary schema breaking changes are intentional and downstream callers are updated.

Three P1 findings — the USD account schema has multiple breaking changes (required phoneNumber, dropped BANK_TRANSFER/bankAccountType), CopBeneficiary swaps required fields, and 12 beneficiary schemas newly require nationality — all of which could silently break existing integrations or validation in production.

openapi/components/schemas/common/UsdAccountInfo.yaml, openapi/components/schemas/common/CopBeneficiary.yaml, and the 12 Beneficiary YAML files that now require nationality (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZarBeneficiary, KesBeneficiary, MwkBeneficiary, GtqBeneficiary).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlBreaking changes: phoneNumber made required, BANK_TRANSFER replaced with MOBILE_MONEY in payment rails, and bankAccountType (CHECKING/SAVINGS, needed for El Salvador) removed entirely.
openapi/components/schemas/common/CopBeneficiary.yamlBreaking required-field change: countryOfResidence replaced by documentNumber+documentType in required list; property ordering also changed.
openapi/components/schemas/common/BwpBeneficiary.yamlnationality added as required — same pattern applies to 11 other beneficiary schemas (Ngn, Zmw, Rwf, Tzs, Ugx, Xaf, Xof, Zar, Kes, Mwk, Gtq).
openapi/components/schemas/common/EurAccountInfo.yamlFlattened from allOf+Base ref to a standalone object; fields (accountType, paymentRails, iban, swiftCode) look correct for EUR/SEPA.
openapi/components/schemas/common/GbpAccountInfo.yamlFlattened schema; sortCode and accountNumber with correct UK patterns added; looks correct.
openapi/components/schemas/common/DkkAccountInfo.yamlFlattened schema; uses SEPA/SEPA_INSTANT rails for DKK — Denmark is not in the Eurozone but SEPA inclusion may be intentional.
openapi.yamlConsolidated bundle reflects all schema changes; same P1 issues present here as in the individual YAML files (USD phoneNumber required, BANK_TRANSFER→MOBILE_MONEY, bankAccountType removed).
mintlify/openapi.yamlMirror of openapi.yaml for the Mintlify docs site; carries the same breaking changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[AccountInfo Schema Sync] --> B[AccountInfo Schemas ~30 currencies]
A --> C[Beneficiary Schemas ~13 currencies]
A --> D[openapi.yaml / mintlify/openapi.yaml Bundle rebuild]
B --> B1[Flattened allOf+Base refs into standalone objects]
B --> B2[accountType discriminator added as required]
B --> B3[Payment-specific fields added]
B3 --> USD[UsdAccountInfo ⚠️ phoneNumber now required, BANK_TRANSFER removed, bankAccountType removed]
B3 --> EUR[EurAccountInfo ✅ IBAN + SEPA rails]
B3 --> GBP[GbpAccountInfo ✅ sortCode + accountNumber]
C --> C1[nationality added as required in 12 schemas ⚠️]
C --> C2[CopBeneficiary ⚠️ countryOfResidence no longer required]
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: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
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: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
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/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
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
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
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 +5 to +7
- accountNumber
- routingNumber
- 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.

P1phoneNumber required for all USD bank accounts

phoneNumber is now in the required list alongside accountNumber and routingNumber. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If phoneNumber is only needed for MOBILE_MONEY rails, it should be optional at the schema level or use a discriminated union rather than being universally required.

Suggested change
- accountNumber
- routingNumber
- phoneNumber
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

hm, this one we may want to drop. this conflation of el salvador (which receives in USD) with usa is causing phone # to be required
we might need to make phone number optional instead, and have the business logic validate the SLV receiver paths. alternatively we can drop SLV for now

Comment on lines +20 to +24
- RTP
- FEDNOW
- 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.

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

BANK_TRANSFER was present in the previous schema and is now replaced by MOBILE_MONEY. USD is not a currency typically associated with mobile money rails, and any existing integrations using BANK_TRANSFER for USD will now receive a validation error. Additionally, the previous bankAccountType field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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://app.graphite.com/github/pr/lightsparkdev/webdev/26611 mobile money is added for el salvador. is removing bank transfer correct? all the other rails are USA specific

Comment on lines 4 to +6
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change to required beneficiary fields

countryOfResidence is no longer required and documentNumber+documentType are now required. Any existing COP beneficiary payload that includes countryOfResidence but not documentNumber/documentType will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

this is fine, and correct for production accounts

@@ -3,6 +3,7 @@ type: object
required:
- beneficiaryType

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 now required across multiple beneficiary schemas

nationality has been added as a required field in BwpBeneficiary.yaml and follows the same pattern in NgnBeneficiary.yaml, ZmwBeneficiary.yaml, RwfBeneficiary.yaml, TzsBeneficiary.yaml, UgxBeneficiary.yaml, XafBeneficiary.yaml, XofBeneficiary.yaml, ZarBeneficiary.yaml, KesBeneficiary.yaml, MwkBeneficiary.yaml, and GtqBeneficiary.yaml. Any existing beneficiary record missing nationality will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

I think this is deliberate?

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #384

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-175120 branch April 23, 2026 18:02
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.

1 participant

@matthappens
, '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 - #383

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

chore: Sync account schemas#383
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260423-175120

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 5:52pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

fix(types): make nationality required, add bankName fields, update USD/COP/GTQ account types

openapi

fix(types): add paymentRails/nationality required, restructure account schemas, update field reqs

python

fix(types): add bank_name to accounts, update field requirements in beneficiaries

typescript

fix(types): update field requirements in external account and beneficiary 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 (61 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-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/7f6d79df68e4362dbabab00d15cbe1184a4144e4/dist.tar.gz
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/a43b7fc02910c911c6d828fe3a93e9e97dd63da4/grid-0.0.1-py3-none-any.whl

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-23 17:57:18 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs account and beneficiary schemas from sparkcore VASP adapter definitions, flattening the existing allOf+Base pattern into self-contained objects and adding field-level constraints (patterns, min/max lengths, examples) across ~30 currencies. The majority of changes look correct, but three P1 issues require review before merging:

  • UsdAccountInfo: phoneNumber is now required, BANK_TRANSFER is replaced by MOBILE_MONEY, and bankAccountType (CHECKING/SAVINGS, documented as needed for El Salvador corridors) is removed entirely — these changes could break existing USD bank-transfer integrations.
  • CopBeneficiary: required fields changed from countryOfResidence to documentNumber+documentType, which is a breaking change for existing payloads.
  • 12 beneficiary schemas (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, and others): nationality added to required, which would invalidate any existing beneficiary record that omits it.

Confidence Score: 3/5

Not safe to merge without confirming the USD and beneficiary schema breaking changes are intentional and downstream callers are updated.

Three P1 findings — the USD account schema has multiple breaking changes (required phoneNumber, dropped BANK_TRANSFER/bankAccountType), CopBeneficiary swaps required fields, and 12 beneficiary schemas newly require nationality — all of which could silently break existing integrations or validation in production.

openapi/components/schemas/common/UsdAccountInfo.yaml, openapi/components/schemas/common/CopBeneficiary.yaml, and the 12 Beneficiary YAML files that now require nationality (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZarBeneficiary, KesBeneficiary, MwkBeneficiary, GtqBeneficiary).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlBreaking changes: phoneNumber made required, BANK_TRANSFER replaced with MOBILE_MONEY in payment rails, and bankAccountType (CHECKING/SAVINGS, needed for El Salvador) removed entirely.
openapi/components/schemas/common/CopBeneficiary.yamlBreaking required-field change: countryOfResidence replaced by documentNumber+documentType in required list; property ordering also changed.
openapi/components/schemas/common/BwpBeneficiary.yamlnationality added as required — same pattern applies to 11 other beneficiary schemas (Ngn, Zmw, Rwf, Tzs, Ugx, Xaf, Xof, Zar, Kes, Mwk, Gtq).
openapi/components/schemas/common/EurAccountInfo.yamlFlattened from allOf+Base ref to a standalone object; fields (accountType, paymentRails, iban, swiftCode) look correct for EUR/SEPA.
openapi/components/schemas/common/GbpAccountInfo.yamlFlattened schema; sortCode and accountNumber with correct UK patterns added; looks correct.
openapi/components/schemas/common/DkkAccountInfo.yamlFlattened schema; uses SEPA/SEPA_INSTANT rails for DKK — Denmark is not in the Eurozone but SEPA inclusion may be intentional.
openapi.yamlConsolidated bundle reflects all schema changes; same P1 issues present here as in the individual YAML files (USD phoneNumber required, BANK_TRANSFER→MOBILE_MONEY, bankAccountType removed).
mintlify/openapi.yamlMirror of openapi.yaml for the Mintlify docs site; carries the same breaking changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[AccountInfo Schema Sync] --> B[AccountInfo Schemas ~30 currencies]
A --> C[Beneficiary Schemas ~13 currencies]
A --> D[openapi.yaml / mintlify/openapi.yaml Bundle rebuild]
B --> B1[Flattened allOf+Base refs into standalone objects]
B --> B2[accountType discriminator added as required]
B --> B3[Payment-specific fields added]
B3 --> USD[UsdAccountInfo ⚠️ phoneNumber now required, BANK_TRANSFER removed, bankAccountType removed]
B3 --> EUR[EurAccountInfo ✅ IBAN + SEPA rails]
B3 --> GBP[GbpAccountInfo ✅ sortCode + accountNumber]
C --> C1[nationality added as required in 12 schemas ⚠️]
C --> C2[CopBeneficiary ⚠️ countryOfResidence no longer required]
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: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
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: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
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/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
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
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
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 +5 to +7
- accountNumber
- routingNumber
- 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.

P1phoneNumber required for all USD bank accounts

phoneNumber is now in the required list alongside accountNumber and routingNumber. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If phoneNumber is only needed for MOBILE_MONEY rails, it should be optional at the schema level or use a discriminated union rather than being universally required.

Suggested change
- accountNumber
- routingNumber
- phoneNumber
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

hm, this one we may want to drop. this conflation of el salvador (which receives in USD) with usa is causing phone # to be required
we might need to make phone number optional instead, and have the business logic validate the SLV receiver paths. alternatively we can drop SLV for now

Comment on lines +20 to +24
- RTP
- FEDNOW
- 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.

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

BANK_TRANSFER was present in the previous schema and is now replaced by MOBILE_MONEY. USD is not a currency typically associated with mobile money rails, and any existing integrations using BANK_TRANSFER for USD will now receive a validation error. Additionally, the previous bankAccountType field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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://app.graphite.com/github/pr/lightsparkdev/webdev/26611 mobile money is added for el salvador. is removing bank transfer correct? all the other rails are USA specific

Comment on lines 4 to +6
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change to required beneficiary fields

countryOfResidence is no longer required and documentNumber+documentType are now required. Any existing COP beneficiary payload that includes countryOfResidence but not documentNumber/documentType will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

this is fine, and correct for production accounts

@@ -3,6 +3,7 @@ type: object
required:
- beneficiaryType

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 now required across multiple beneficiary schemas

nationality has been added as a required field in BwpBeneficiary.yaml and follows the same pattern in NgnBeneficiary.yaml, ZmwBeneficiary.yaml, RwfBeneficiary.yaml, TzsBeneficiary.yaml, UgxBeneficiary.yaml, XafBeneficiary.yaml, XofBeneficiary.yaml, ZarBeneficiary.yaml, KesBeneficiary.yaml, MwkBeneficiary.yaml, and GtqBeneficiary.yaml. Any existing beneficiary record missing nationality will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

I think this is deliberate?

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #384

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-175120 branch April 23, 2026 18:02
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.

1 participant

@matthappens
, '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 - #383

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

chore: Sync account schemas#383
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260423-175120

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 5:52pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

fix(types): make nationality required, add bankName fields, update USD/COP/GTQ account types

openapi

fix(types): add paymentRails/nationality required, restructure account schemas, update field reqs

python

fix(types): add bank_name to accounts, update field requirements in beneficiaries

typescript

fix(types): update field requirements in external account and beneficiary 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 (61 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-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/7f6d79df68e4362dbabab00d15cbe1184a4144e4/dist.tar.gz
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/a43b7fc02910c911c6d828fe3a93e9e97dd63da4/grid-0.0.1-py3-none-any.whl

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-23 17:57:18 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs account and beneficiary schemas from sparkcore VASP adapter definitions, flattening the existing allOf+Base pattern into self-contained objects and adding field-level constraints (patterns, min/max lengths, examples) across ~30 currencies. The majority of changes look correct, but three P1 issues require review before merging:

  • UsdAccountInfo: phoneNumber is now required, BANK_TRANSFER is replaced by MOBILE_MONEY, and bankAccountType (CHECKING/SAVINGS, documented as needed for El Salvador corridors) is removed entirely — these changes could break existing USD bank-transfer integrations.
  • CopBeneficiary: required fields changed from countryOfResidence to documentNumber+documentType, which is a breaking change for existing payloads.
  • 12 beneficiary schemas (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, and others): nationality added to required, which would invalidate any existing beneficiary record that omits it.

Confidence Score: 3/5

Not safe to merge without confirming the USD and beneficiary schema breaking changes are intentional and downstream callers are updated.

Three P1 findings — the USD account schema has multiple breaking changes (required phoneNumber, dropped BANK_TRANSFER/bankAccountType), CopBeneficiary swaps required fields, and 12 beneficiary schemas newly require nationality — all of which could silently break existing integrations or validation in production.

openapi/components/schemas/common/UsdAccountInfo.yaml, openapi/components/schemas/common/CopBeneficiary.yaml, and the 12 Beneficiary YAML files that now require nationality (BwpBeneficiary, NgnBeneficiary, ZmwBeneficiary, RwfBeneficiary, TzsBeneficiary, UgxBeneficiary, XafBeneficiary, XofBeneficiary, ZarBeneficiary, KesBeneficiary, MwkBeneficiary, GtqBeneficiary).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlBreaking changes: phoneNumber made required, BANK_TRANSFER replaced with MOBILE_MONEY in payment rails, and bankAccountType (CHECKING/SAVINGS, needed for El Salvador) removed entirely.
openapi/components/schemas/common/CopBeneficiary.yamlBreaking required-field change: countryOfResidence replaced by documentNumber+documentType in required list; property ordering also changed.
openapi/components/schemas/common/BwpBeneficiary.yamlnationality added as required — same pattern applies to 11 other beneficiary schemas (Ngn, Zmw, Rwf, Tzs, Ugx, Xaf, Xof, Zar, Kes, Mwk, Gtq).
openapi/components/schemas/common/EurAccountInfo.yamlFlattened from allOf+Base ref to a standalone object; fields (accountType, paymentRails, iban, swiftCode) look correct for EUR/SEPA.
openapi/components/schemas/common/GbpAccountInfo.yamlFlattened schema; sortCode and accountNumber with correct UK patterns added; looks correct.
openapi/components/schemas/common/DkkAccountInfo.yamlFlattened schema; uses SEPA/SEPA_INSTANT rails for DKK — Denmark is not in the Eurozone but SEPA inclusion may be intentional.
openapi.yamlConsolidated bundle reflects all schema changes; same P1 issues present here as in the individual YAML files (USD phoneNumber required, BANK_TRANSFER→MOBILE_MONEY, bankAccountType removed).
mintlify/openapi.yamlMirror of openapi.yaml for the Mintlify docs site; carries the same breaking changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[AccountInfo Schema Sync] --> B[AccountInfo Schemas ~30 currencies]
A --> C[Beneficiary Schemas ~13 currencies]
A --> D[openapi.yaml / mintlify/openapi.yaml Bundle rebuild]
B --> B1[Flattened allOf+Base refs into standalone objects]
B --> B2[accountType discriminator added as required]
B --> B3[Payment-specific fields added]
B3 --> USD[UsdAccountInfo ⚠️ phoneNumber now required, BANK_TRANSFER removed, bankAccountType removed]
B3 --> EUR[EurAccountInfo ✅ IBAN + SEPA rails]
B3 --> GBP[GbpAccountInfo ✅ sortCode + accountNumber]
C --> C1[nationality added as required in 12 schemas ⚠️]
C --> C2[CopBeneficiary ⚠️ countryOfResidence no longer required]
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: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
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: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
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/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
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
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
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 +5 to +7
- accountNumber
- routingNumber
- 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.

P1phoneNumber required for all USD bank accounts

phoneNumber is now in the required list alongside accountNumber and routingNumber. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If phoneNumber is only needed for MOBILE_MONEY rails, it should be optional at the schema level or use a discriminated union rather than being universally required.

Suggested change
- accountNumber
- routingNumber
- phoneNumber
required:
- accountType
- paymentRails
- accountNumber
- routingNumber
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 5-7
Comment:
**`phoneNumber` required for all USD bank accounts**`phoneNumber` is now in the `required` list alongside `accountNumber` and `routingNumber`. Standard USD bank transfers (ACH, WIRE, FEDNOW, RTP) do not require a phone number — this makes any USD account submission without a phone number invalid, which would break existing integrations. If `phoneNumber` is only needed for `MOBILE_MONEY` rails, it should be optional at the schema level or use a discriminated union rather than being universally required.
```suggestionrequired:- accountType- paymentRails- accountNumber- routingNumber```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

hm, this one we may want to drop. this conflation of el salvador (which receives in USD) with usa is causing phone # to be required
we might need to make phone number optional instead, and have the business logic validate the SLV receiver paths. alternatively we can drop SLV for now

Comment on lines +20 to +24
- RTP
- FEDNOW
- 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.

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

BANK_TRANSFER was present in the previous schema and is now replaced by MOBILE_MONEY. USD is not a currency typically associated with mobile money rails, and any existing integrations using BANK_TRANSFER for USD will now receive a validation error. Additionally, the previous bankAccountType field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 20-24
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**`BANK_TRANSFER` was present in the previous schema and is now replaced by `MOBILE_MONEY`. USD is not a currency typically associated with mobile money rails, and any existing integrations using `BANK_TRANSFER` for USD will now receive a validation error. Additionally, the previous `bankAccountType` field (CHECKING/SAVINGS), described as "Required for certain corridors (e.g., El Salvador)", has been entirely removed from this schema — this will break USD El Salvador corridor flows.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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://app.graphite.com/github/pr/lightsparkdev/webdev/26611 mobile money is added for el salvador. is removing bank transfer correct? all the other rails are USA specific

Comment on lines 4 to +6
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking change to required beneficiary fields

countryOfResidence is no longer required and documentNumber+documentType are now required. Any existing COP beneficiary payload that includes countryOfResidence but not documentNumber/documentType will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 4-6
Comment:
**Breaking change to required beneficiary fields**`countryOfResidence` is no longer required and `documentNumber`+`documentType` are now required. Any existing COP beneficiary payload that includes `countryOfResidence` but not `documentNumber`/`documentType` will fail schema validation after this change. Please confirm this is intentional and that downstream callers have been updated.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

this is fine, and correct for production accounts

@@ -3,6 +3,7 @@ type: object
required:
- beneficiaryType

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 now required across multiple beneficiary schemas

nationality has been added as a required field in BwpBeneficiary.yaml and follows the same pattern in NgnBeneficiary.yaml, ZmwBeneficiary.yaml, RwfBeneficiary.yaml, TzsBeneficiary.yaml, UgxBeneficiary.yaml, XafBeneficiary.yaml, XofBeneficiary.yaml, ZarBeneficiary.yaml, KesBeneficiary.yaml, MwkBeneficiary.yaml, and GtqBeneficiary.yaml. Any existing beneficiary record missing nationality will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BwpBeneficiary.yaml
Line: 4
Comment:
**`nationality` now required across multiple beneficiary schemas**`nationality` has been added as a required field in `BwpBeneficiary.yaml` and follows the same pattern in `NgnBeneficiary.yaml`, `ZmwBeneficiary.yaml`, `RwfBeneficiary.yaml`, `TzsBeneficiary.yaml`, `UgxBeneficiary.yaml`, `XafBeneficiary.yaml`, `XofBeneficiary.yaml`, `ZarBeneficiary.yaml`, `KesBeneficiary.yaml`, `MwkBeneficiary.yaml`, and `GtqBeneficiary.yaml`. Any existing beneficiary record missing `nationality` will fail validation. If this is an intentional tightening of requirements, clients must be updated before this can safely be deployed.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

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.

I think this is deliberate?

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #384

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-175120 branch April 23, 2026 18:02
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.

1 participant

@matthappens