chore: Sync account schemas - #346

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

chore: Sync account schemas#346
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260416-172831

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 16, 2026 5:29pm

Request Review

@github-actions

github-actionsBot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to account types, phoneNumber to USD, MOBILE_MONEY payment rail

openapi

feat(types): add bankName/phoneNumber to account types, require paymentRails across currencies

python

feat(api): add bank_name across account types, phone_number/payment_rails to USD

typescript

feat(api): add bankName/phoneNumber fields, MOBILE_MONEY rail to account types

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

grid-typescriptstudio · code · diff

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

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

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

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
grid-openapistudio · code · diff

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

grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/12664a308ea9819badf44091ececa5cf3e8db27f/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-16 17:34:14 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs 34 *AccountInfo schemas from sparkcore, replacing the previous allOf + base-schema composition pattern with fully self-contained inline schemas. Each schema now declares its own accountType discriminator, paymentRails enum, and all currency-specific fields with validation patterns. The *AccountInfoBase.yaml files remain in place and continue to be referenced by the corresponding ExternalAccountCreateInfo schemas, so the external-account create path is unaffected.

Confidence Score: 5/5

Safe to merge; all findings are P2 documentation quality issues that do not affect validation logic or API behaviour.

All remaining comments are P2 style suggestions (wrong example values) plus one P2 question about the USD phoneNumber required constraint. None of these affect runtime validation or break existing integrations.

EgpAccountInfo.yaml, PkrAccountInfo.yaml, DkkAccountInfo.yaml (wrong IBAN examples); MyrAccountInfo.yaml (wrong SWIFT country code in example); UsdAccountInfo.yaml (phoneNumber in required list for all rails).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlAdds new MOBILE_MONEY rail and makes phoneNumber a required field for all USD accounts, which is non-standard for domestic transfers
openapi/components/schemas/common/EgpAccountInfo.yamlRefactored from allOf+base to standalone schema; optional iban/swiftCode fields use a German IBAN example instead of an Egyptian one
openapi/components/schemas/common/PkrAccountInfo.yamlRefactored to standalone schema; optional iban field uses a German IBAN example instead of a Pakistani one
openapi/components/schemas/common/DkkAccountInfo.yamlRefactored to standalone schema; iban example uses German IBAN instead of Danish IBAN
openapi/components/schemas/common/MyrAccountInfo.yamlRefactored to standalone schema; swiftCode example MABORUMMYYY contains country code RU (Russia) instead of MY (Malaysia)
openapi/components/schemas/common/AedAccountInfo.yamlRefactored from allOf+base to standalone schema; AED-specific IBAN pattern and SWIFT code constraints look correct
openapi/components/schemas/common/BrlAccountInfo.yamlRefactored to standalone schema with PIX-specific fields; pixKey, pixKeyType, and taxId constraints look correct
openapi/components/schemas/common/GbpAccountInfo.yamlRefactored to standalone schema; UK sort code (6 digits) and account number (8 digits) constraints are correct
openapi/components/schemas/common/XafAccountInfo.yamlAdds new region field with CM/CG enum for CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/XofAccountInfo.yamlAdds region field with BJ/CI/SN/TG enum for West African CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/InrAccountInfo.yamlRefactored to standalone schema with UPI vpa field; pattern and length constraints look appropriate
openapi/components/schemas/common/MxnAccountInfo.yamlRefactored to standalone schema with CLABE number (18 digits); constraints are correct for Mexican SPEI transfers

Class Diagram

%%{init: {'theme': 'neutral'}}%%
classDiagram
class AccountInfo {
+accountType: string
+paymentRails: string[]
+currency-specific fields
}
class AccountInfoBase {
+accountType: string
+currency-specific fields
}
class ExternalAccountCreateInfo {
+beneficiary: Beneficiary
}
ExternalAccountCreateInfo --> AccountInfoBase : allOf ref (unchanged)
note for AccountInfo "Previously: allOf + ref AccountInfoBase\nNow: fully inline (this PR)"
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/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
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: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
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 +30 to +31
description: The IBAN of the bank account
example: DE89370400440532013000

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.

P2Wrong IBAN example — German IBAN used for Egypt

The iban example DE89370400440532013000 is a German IBAN. An Egyptian IBAN starts with EG and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in PkrAccountInfo.yaml and DkkAccountInfo.yaml.

Suggested change
description: The IBAN of the bank account
example: DE89370400440532013000
iban:
type: string
description: The IBAN of the bank account
example: EG380019000500000000263180002
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
iban:
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.

P2Wrong IBAN example — German IBAN used for Pakistan

Same copy-paste issue as EgpAccountInfo.yaml: the example DE89370400440532013000 is a German IBAN. Pakistani IBANs start with PK and are 24 characters (e.g., PK36SCBL0000001123456702).

Suggested change
iban:
type: string
iban:
type: string
description: The IBAN of the bank account
example: PK36SCBL0000001123456702
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +19 to +20
type: string
description: The IBAN of the bank account

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.

P2IBAN example is German, not Danish

The example DE89370400440532013000 is a 22-character German IBAN. Danish IBANs start with DK and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.

Suggested change
type: string
description: The IBAN of the bank account
iban:
type: string
description: The IBAN of the bank account
example: DK5000400440116243
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
swiftCode:
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.

P2SWIFT example has wrong country code for Malaysia

MABORUMMYYY contains RU in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (MY). Malaysian SWIFT codes should look like MBBEMYKL (Maybank). The pattern ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$ won't catch this because it doesn't validate country codes.

Suggested change
swiftCode:
type: string
swiftCode:
type: string
description: The SWIFT/BIC code of the bank
example: MBBEMYKL
minLength: 8
maxLength: 11
pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +6 to +8
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2phoneNumber required for all USD payment rails

phoneNumber is in the top-level required array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit phoneNumber for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new MOBILE_MONEY rail? If so, it should be optional (remove from required) with a note that it is required when paymentRails includes MOBILE_MONEY.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #353

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260416-172831 branch April 20, 2026 18:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

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

chore: Sync account schemas - #346

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

chore: Sync account schemas#346
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260416-172831

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 16, 2026 5:29pm

Request Review

@github-actions

github-actionsBot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to account types, phoneNumber to USD, MOBILE_MONEY payment rail

openapi

feat(types): add bankName/phoneNumber to account types, require paymentRails across currencies

python

feat(api): add bank_name across account types, phone_number/payment_rails to USD

typescript

feat(api): add bankName/phoneNumber fields, MOBILE_MONEY rail to account types

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

grid-typescriptstudio · code · diff

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

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

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

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
grid-openapistudio · code · diff

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

grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/12664a308ea9819badf44091ececa5cf3e8db27f/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-16 17:34:14 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs 34 *AccountInfo schemas from sparkcore, replacing the previous allOf + base-schema composition pattern with fully self-contained inline schemas. Each schema now declares its own accountType discriminator, paymentRails enum, and all currency-specific fields with validation patterns. The *AccountInfoBase.yaml files remain in place and continue to be referenced by the corresponding ExternalAccountCreateInfo schemas, so the external-account create path is unaffected.

Confidence Score: 5/5

Safe to merge; all findings are P2 documentation quality issues that do not affect validation logic or API behaviour.

All remaining comments are P2 style suggestions (wrong example values) plus one P2 question about the USD phoneNumber required constraint. None of these affect runtime validation or break existing integrations.

EgpAccountInfo.yaml, PkrAccountInfo.yaml, DkkAccountInfo.yaml (wrong IBAN examples); MyrAccountInfo.yaml (wrong SWIFT country code in example); UsdAccountInfo.yaml (phoneNumber in required list for all rails).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlAdds new MOBILE_MONEY rail and makes phoneNumber a required field for all USD accounts, which is non-standard for domestic transfers
openapi/components/schemas/common/EgpAccountInfo.yamlRefactored from allOf+base to standalone schema; optional iban/swiftCode fields use a German IBAN example instead of an Egyptian one
openapi/components/schemas/common/PkrAccountInfo.yamlRefactored to standalone schema; optional iban field uses a German IBAN example instead of a Pakistani one
openapi/components/schemas/common/DkkAccountInfo.yamlRefactored to standalone schema; iban example uses German IBAN instead of Danish IBAN
openapi/components/schemas/common/MyrAccountInfo.yamlRefactored to standalone schema; swiftCode example MABORUMMYYY contains country code RU (Russia) instead of MY (Malaysia)
openapi/components/schemas/common/AedAccountInfo.yamlRefactored from allOf+base to standalone schema; AED-specific IBAN pattern and SWIFT code constraints look correct
openapi/components/schemas/common/BrlAccountInfo.yamlRefactored to standalone schema with PIX-specific fields; pixKey, pixKeyType, and taxId constraints look correct
openapi/components/schemas/common/GbpAccountInfo.yamlRefactored to standalone schema; UK sort code (6 digits) and account number (8 digits) constraints are correct
openapi/components/schemas/common/XafAccountInfo.yamlAdds new region field with CM/CG enum for CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/XofAccountInfo.yamlAdds region field with BJ/CI/SN/TG enum for West African CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/InrAccountInfo.yamlRefactored to standalone schema with UPI vpa field; pattern and length constraints look appropriate
openapi/components/schemas/common/MxnAccountInfo.yamlRefactored to standalone schema with CLABE number (18 digits); constraints are correct for Mexican SPEI transfers

Class Diagram

%%{init: {'theme': 'neutral'}}%%
classDiagram
class AccountInfo {
+accountType: string
+paymentRails: string[]
+currency-specific fields
}
class AccountInfoBase {
+accountType: string
+currency-specific fields
}
class ExternalAccountCreateInfo {
+beneficiary: Beneficiary
}
ExternalAccountCreateInfo --> AccountInfoBase : allOf ref (unchanged)
note for AccountInfo "Previously: allOf + ref AccountInfoBase\nNow: fully inline (this PR)"
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/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
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: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
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 +30 to +31
description: The IBAN of the bank account
example: DE89370400440532013000

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.

P2Wrong IBAN example — German IBAN used for Egypt

The iban example DE89370400440532013000 is a German IBAN. An Egyptian IBAN starts with EG and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in PkrAccountInfo.yaml and DkkAccountInfo.yaml.

Suggested change
description: The IBAN of the bank account
example: DE89370400440532013000
iban:
type: string
description: The IBAN of the bank account
example: EG380019000500000000263180002
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
iban:
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.

P2Wrong IBAN example — German IBAN used for Pakistan

Same copy-paste issue as EgpAccountInfo.yaml: the example DE89370400440532013000 is a German IBAN. Pakistani IBANs start with PK and are 24 characters (e.g., PK36SCBL0000001123456702).

Suggested change
iban:
type: string
iban:
type: string
description: The IBAN of the bank account
example: PK36SCBL0000001123456702
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +19 to +20
type: string
description: The IBAN of the bank account

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.

P2IBAN example is German, not Danish

The example DE89370400440532013000 is a 22-character German IBAN. Danish IBANs start with DK and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.

Suggested change
type: string
description: The IBAN of the bank account
iban:
type: string
description: The IBAN of the bank account
example: DK5000400440116243
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
swiftCode:
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.

P2SWIFT example has wrong country code for Malaysia

MABORUMMYYY contains RU in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (MY). Malaysian SWIFT codes should look like MBBEMYKL (Maybank). The pattern ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$ won't catch this because it doesn't validate country codes.

Suggested change
swiftCode:
type: string
swiftCode:
type: string
description: The SWIFT/BIC code of the bank
example: MBBEMYKL
minLength: 8
maxLength: 11
pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +6 to +8
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2phoneNumber required for all USD payment rails

phoneNumber is in the top-level required array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit phoneNumber for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new MOBILE_MONEY rail? If so, it should be optional (remove from required) with a note that it is required when paymentRails includes MOBILE_MONEY.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #353

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260416-172831 branch April 20, 2026 18:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

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

chore: Sync account schemas - #346

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

chore: Sync account schemas#346
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260416-172831

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 16, 2026 5:29pm

Request Review

@github-actions

github-actionsBot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to account types, phoneNumber to USD, MOBILE_MONEY payment rail

openapi

feat(types): add bankName/phoneNumber to account types, require paymentRails across currencies

python

feat(api): add bank_name across account types, phone_number/payment_rails to USD

typescript

feat(api): add bankName/phoneNumber fields, MOBILE_MONEY rail to account types

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

grid-typescriptstudio · code · diff

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

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

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

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
grid-openapistudio · code · diff

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

grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/12664a308ea9819badf44091ececa5cf3e8db27f/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-16 17:34:14 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs 34 *AccountInfo schemas from sparkcore, replacing the previous allOf + base-schema composition pattern with fully self-contained inline schemas. Each schema now declares its own accountType discriminator, paymentRails enum, and all currency-specific fields with validation patterns. The *AccountInfoBase.yaml files remain in place and continue to be referenced by the corresponding ExternalAccountCreateInfo schemas, so the external-account create path is unaffected.

Confidence Score: 5/5

Safe to merge; all findings are P2 documentation quality issues that do not affect validation logic or API behaviour.

All remaining comments are P2 style suggestions (wrong example values) plus one P2 question about the USD phoneNumber required constraint. None of these affect runtime validation or break existing integrations.

EgpAccountInfo.yaml, PkrAccountInfo.yaml, DkkAccountInfo.yaml (wrong IBAN examples); MyrAccountInfo.yaml (wrong SWIFT country code in example); UsdAccountInfo.yaml (phoneNumber in required list for all rails).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlAdds new MOBILE_MONEY rail and makes phoneNumber a required field for all USD accounts, which is non-standard for domestic transfers
openapi/components/schemas/common/EgpAccountInfo.yamlRefactored from allOf+base to standalone schema; optional iban/swiftCode fields use a German IBAN example instead of an Egyptian one
openapi/components/schemas/common/PkrAccountInfo.yamlRefactored to standalone schema; optional iban field uses a German IBAN example instead of a Pakistani one
openapi/components/schemas/common/DkkAccountInfo.yamlRefactored to standalone schema; iban example uses German IBAN instead of Danish IBAN
openapi/components/schemas/common/MyrAccountInfo.yamlRefactored to standalone schema; swiftCode example MABORUMMYYY contains country code RU (Russia) instead of MY (Malaysia)
openapi/components/schemas/common/AedAccountInfo.yamlRefactored from allOf+base to standalone schema; AED-specific IBAN pattern and SWIFT code constraints look correct
openapi/components/schemas/common/BrlAccountInfo.yamlRefactored to standalone schema with PIX-specific fields; pixKey, pixKeyType, and taxId constraints look correct
openapi/components/schemas/common/GbpAccountInfo.yamlRefactored to standalone schema; UK sort code (6 digits) and account number (8 digits) constraints are correct
openapi/components/schemas/common/XafAccountInfo.yamlAdds new region field with CM/CG enum for CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/XofAccountInfo.yamlAdds region field with BJ/CI/SN/TG enum for West African CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/InrAccountInfo.yamlRefactored to standalone schema with UPI vpa field; pattern and length constraints look appropriate
openapi/components/schemas/common/MxnAccountInfo.yamlRefactored to standalone schema with CLABE number (18 digits); constraints are correct for Mexican SPEI transfers

Class Diagram

%%{init: {'theme': 'neutral'}}%%
classDiagram
class AccountInfo {
+accountType: string
+paymentRails: string[]
+currency-specific fields
}
class AccountInfoBase {
+accountType: string
+currency-specific fields
}
class ExternalAccountCreateInfo {
+beneficiary: Beneficiary
}
ExternalAccountCreateInfo --> AccountInfoBase : allOf ref (unchanged)
note for AccountInfo "Previously: allOf + ref AccountInfoBase\nNow: fully inline (this PR)"
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/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
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: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
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 +30 to +31
description: The IBAN of the bank account
example: DE89370400440532013000

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.

P2Wrong IBAN example — German IBAN used for Egypt

The iban example DE89370400440532013000 is a German IBAN. An Egyptian IBAN starts with EG and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in PkrAccountInfo.yaml and DkkAccountInfo.yaml.

Suggested change
description: The IBAN of the bank account
example: DE89370400440532013000
iban:
type: string
description: The IBAN of the bank account
example: EG380019000500000000263180002
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
iban:
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.

P2Wrong IBAN example — German IBAN used for Pakistan

Same copy-paste issue as EgpAccountInfo.yaml: the example DE89370400440532013000 is a German IBAN. Pakistani IBANs start with PK and are 24 characters (e.g., PK36SCBL0000001123456702).

Suggested change
iban:
type: string
iban:
type: string
description: The IBAN of the bank account
example: PK36SCBL0000001123456702
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +19 to +20
type: string
description: The IBAN of the bank account

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.

P2IBAN example is German, not Danish

The example DE89370400440532013000 is a 22-character German IBAN. Danish IBANs start with DK and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.

Suggested change
type: string
description: The IBAN of the bank account
iban:
type: string
description: The IBAN of the bank account
example: DK5000400440116243
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
swiftCode:
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.

P2SWIFT example has wrong country code for Malaysia

MABORUMMYYY contains RU in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (MY). Malaysian SWIFT codes should look like MBBEMYKL (Maybank). The pattern ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$ won't catch this because it doesn't validate country codes.

Suggested change
swiftCode:
type: string
swiftCode:
type: string
description: The SWIFT/BIC code of the bank
example: MBBEMYKL
minLength: 8
maxLength: 11
pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +6 to +8
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2phoneNumber required for all USD payment rails

phoneNumber is in the top-level required array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit phoneNumber for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new MOBILE_MONEY rail? If so, it should be optional (remove from required) with a note that it is required when paymentRails includes MOBILE_MONEY.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #353

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260416-172831 branch April 20, 2026 18:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

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

chore: Sync account schemas - #346

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

chore: Sync account schemas#346
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260416-172831

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 16, 2026 5:29pm

Request Review

@github-actions

github-actionsBot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to account types, phoneNumber to USD, MOBILE_MONEY payment rail

openapi

feat(types): add bankName/phoneNumber to account types, require paymentRails across currencies

python

feat(api): add bank_name across account types, phone_number/payment_rails to USD

typescript

feat(api): add bankName/phoneNumber fields, MOBILE_MONEY rail to account types

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

grid-typescriptstudio · code · diff

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

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

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

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
grid-openapistudio · code · diff

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

grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/12664a308ea9819badf44091ececa5cf3e8db27f/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-16 17:34:14 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs 34 *AccountInfo schemas from sparkcore, replacing the previous allOf + base-schema composition pattern with fully self-contained inline schemas. Each schema now declares its own accountType discriminator, paymentRails enum, and all currency-specific fields with validation patterns. The *AccountInfoBase.yaml files remain in place and continue to be referenced by the corresponding ExternalAccountCreateInfo schemas, so the external-account create path is unaffected.

Confidence Score: 5/5

Safe to merge; all findings are P2 documentation quality issues that do not affect validation logic or API behaviour.

All remaining comments are P2 style suggestions (wrong example values) plus one P2 question about the USD phoneNumber required constraint. None of these affect runtime validation or break existing integrations.

EgpAccountInfo.yaml, PkrAccountInfo.yaml, DkkAccountInfo.yaml (wrong IBAN examples); MyrAccountInfo.yaml (wrong SWIFT country code in example); UsdAccountInfo.yaml (phoneNumber in required list for all rails).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlAdds new MOBILE_MONEY rail and makes phoneNumber a required field for all USD accounts, which is non-standard for domestic transfers
openapi/components/schemas/common/EgpAccountInfo.yamlRefactored from allOf+base to standalone schema; optional iban/swiftCode fields use a German IBAN example instead of an Egyptian one
openapi/components/schemas/common/PkrAccountInfo.yamlRefactored to standalone schema; optional iban field uses a German IBAN example instead of a Pakistani one
openapi/components/schemas/common/DkkAccountInfo.yamlRefactored to standalone schema; iban example uses German IBAN instead of Danish IBAN
openapi/components/schemas/common/MyrAccountInfo.yamlRefactored to standalone schema; swiftCode example MABORUMMYYY contains country code RU (Russia) instead of MY (Malaysia)
openapi/components/schemas/common/AedAccountInfo.yamlRefactored from allOf+base to standalone schema; AED-specific IBAN pattern and SWIFT code constraints look correct
openapi/components/schemas/common/BrlAccountInfo.yamlRefactored to standalone schema with PIX-specific fields; pixKey, pixKeyType, and taxId constraints look correct
openapi/components/schemas/common/GbpAccountInfo.yamlRefactored to standalone schema; UK sort code (6 digits) and account number (8 digits) constraints are correct
openapi/components/schemas/common/XafAccountInfo.yamlAdds new region field with CM/CG enum for CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/XofAccountInfo.yamlAdds region field with BJ/CI/SN/TG enum for West African CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/InrAccountInfo.yamlRefactored to standalone schema with UPI vpa field; pattern and length constraints look appropriate
openapi/components/schemas/common/MxnAccountInfo.yamlRefactored to standalone schema with CLABE number (18 digits); constraints are correct for Mexican SPEI transfers

Class Diagram

%%{init: {'theme': 'neutral'}}%%
classDiagram
class AccountInfo {
+accountType: string
+paymentRails: string[]
+currency-specific fields
}
class AccountInfoBase {
+accountType: string
+currency-specific fields
}
class ExternalAccountCreateInfo {
+beneficiary: Beneficiary
}
ExternalAccountCreateInfo --> AccountInfoBase : allOf ref (unchanged)
note for AccountInfo "Previously: allOf + ref AccountInfoBase\nNow: fully inline (this PR)"
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/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
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: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
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 +30 to +31
description: The IBAN of the bank account
example: DE89370400440532013000

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.

P2Wrong IBAN example — German IBAN used for Egypt

The iban example DE89370400440532013000 is a German IBAN. An Egyptian IBAN starts with EG and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in PkrAccountInfo.yaml and DkkAccountInfo.yaml.

Suggested change
description: The IBAN of the bank account
example: DE89370400440532013000
iban:
type: string
description: The IBAN of the bank account
example: EG380019000500000000263180002
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
iban:
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.

P2Wrong IBAN example — German IBAN used for Pakistan

Same copy-paste issue as EgpAccountInfo.yaml: the example DE89370400440532013000 is a German IBAN. Pakistani IBANs start with PK and are 24 characters (e.g., PK36SCBL0000001123456702).

Suggested change
iban:
type: string
iban:
type: string
description: The IBAN of the bank account
example: PK36SCBL0000001123456702
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +19 to +20
type: string
description: The IBAN of the bank account

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.

P2IBAN example is German, not Danish

The example DE89370400440532013000 is a 22-character German IBAN. Danish IBANs start with DK and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.

Suggested change
type: string
description: The IBAN of the bank account
iban:
type: string
description: The IBAN of the bank account
example: DK5000400440116243
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
swiftCode:
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.

P2SWIFT example has wrong country code for Malaysia

MABORUMMYYY contains RU in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (MY). Malaysian SWIFT codes should look like MBBEMYKL (Maybank). The pattern ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$ won't catch this because it doesn't validate country codes.

Suggested change
swiftCode:
type: string
swiftCode:
type: string
description: The SWIFT/BIC code of the bank
example: MBBEMYKL
minLength: 8
maxLength: 11
pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +6 to +8
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2phoneNumber required for all USD payment rails

phoneNumber is in the top-level required array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit phoneNumber for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new MOBILE_MONEY rail? If so, it should be optional (remove from required) with a note that it is required when paymentRails includes MOBILE_MONEY.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #353

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260416-172831 branch April 20, 2026 18:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

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

chore: Sync account schemas - #346

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

chore: Sync account schemas#346
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260416-172831

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 16, 2026 5:29pm

Request Review

@github-actions

github-actionsBot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to account types, phoneNumber to USD, MOBILE_MONEY payment rail

openapi

feat(types): add bankName/phoneNumber to account types, require paymentRails across currencies

python

feat(api): add bank_name across account types, phone_number/payment_rails to USD

typescript

feat(api): add bankName/phoneNumber fields, MOBILE_MONEY rail to account types

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

grid-typescriptstudio · code · diff

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

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

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

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
grid-openapistudio · code · diff

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

grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/12664a308ea9819badf44091ececa5cf3e8db27f/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-16 17:34:14 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs 34 *AccountInfo schemas from sparkcore, replacing the previous allOf + base-schema composition pattern with fully self-contained inline schemas. Each schema now declares its own accountType discriminator, paymentRails enum, and all currency-specific fields with validation patterns. The *AccountInfoBase.yaml files remain in place and continue to be referenced by the corresponding ExternalAccountCreateInfo schemas, so the external-account create path is unaffected.

Confidence Score: 5/5

Safe to merge; all findings are P2 documentation quality issues that do not affect validation logic or API behaviour.

All remaining comments are P2 style suggestions (wrong example values) plus one P2 question about the USD phoneNumber required constraint. None of these affect runtime validation or break existing integrations.

EgpAccountInfo.yaml, PkrAccountInfo.yaml, DkkAccountInfo.yaml (wrong IBAN examples); MyrAccountInfo.yaml (wrong SWIFT country code in example); UsdAccountInfo.yaml (phoneNumber in required list for all rails).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlAdds new MOBILE_MONEY rail and makes phoneNumber a required field for all USD accounts, which is non-standard for domestic transfers
openapi/components/schemas/common/EgpAccountInfo.yamlRefactored from allOf+base to standalone schema; optional iban/swiftCode fields use a German IBAN example instead of an Egyptian one
openapi/components/schemas/common/PkrAccountInfo.yamlRefactored to standalone schema; optional iban field uses a German IBAN example instead of a Pakistani one
openapi/components/schemas/common/DkkAccountInfo.yamlRefactored to standalone schema; iban example uses German IBAN instead of Danish IBAN
openapi/components/schemas/common/MyrAccountInfo.yamlRefactored to standalone schema; swiftCode example MABORUMMYYY contains country code RU (Russia) instead of MY (Malaysia)
openapi/components/schemas/common/AedAccountInfo.yamlRefactored from allOf+base to standalone schema; AED-specific IBAN pattern and SWIFT code constraints look correct
openapi/components/schemas/common/BrlAccountInfo.yamlRefactored to standalone schema with PIX-specific fields; pixKey, pixKeyType, and taxId constraints look correct
openapi/components/schemas/common/GbpAccountInfo.yamlRefactored to standalone schema; UK sort code (6 digits) and account number (8 digits) constraints are correct
openapi/components/schemas/common/XafAccountInfo.yamlAdds new region field with CM/CG enum for CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/XofAccountInfo.yamlAdds region field with BJ/CI/SN/TG enum for West African CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/InrAccountInfo.yamlRefactored to standalone schema with UPI vpa field; pattern and length constraints look appropriate
openapi/components/schemas/common/MxnAccountInfo.yamlRefactored to standalone schema with CLABE number (18 digits); constraints are correct for Mexican SPEI transfers

Class Diagram

%%{init: {'theme': 'neutral'}}%%
classDiagram
class AccountInfo {
+accountType: string
+paymentRails: string[]
+currency-specific fields
}
class AccountInfoBase {
+accountType: string
+currency-specific fields
}
class ExternalAccountCreateInfo {
+beneficiary: Beneficiary
}
ExternalAccountCreateInfo --> AccountInfoBase : allOf ref (unchanged)
note for AccountInfo "Previously: allOf + ref AccountInfoBase\nNow: fully inline (this PR)"
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/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
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: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
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 +30 to +31
description: The IBAN of the bank account
example: DE89370400440532013000

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.

P2Wrong IBAN example — German IBAN used for Egypt

The iban example DE89370400440532013000 is a German IBAN. An Egyptian IBAN starts with EG and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in PkrAccountInfo.yaml and DkkAccountInfo.yaml.

Suggested change
description: The IBAN of the bank account
example: DE89370400440532013000
iban:
type: string
description: The IBAN of the bank account
example: EG380019000500000000263180002
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
iban:
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.

P2Wrong IBAN example — German IBAN used for Pakistan

Same copy-paste issue as EgpAccountInfo.yaml: the example DE89370400440532013000 is a German IBAN. Pakistani IBANs start with PK and are 24 characters (e.g., PK36SCBL0000001123456702).

Suggested change
iban:
type: string
iban:
type: string
description: The IBAN of the bank account
example: PK36SCBL0000001123456702
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +19 to +20
type: string
description: The IBAN of the bank account

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.

P2IBAN example is German, not Danish

The example DE89370400440532013000 is a 22-character German IBAN. Danish IBANs start with DK and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.

Suggested change
type: string
description: The IBAN of the bank account
iban:
type: string
description: The IBAN of the bank account
example: DK5000400440116243
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
swiftCode:
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.

P2SWIFT example has wrong country code for Malaysia

MABORUMMYYY contains RU in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (MY). Malaysian SWIFT codes should look like MBBEMYKL (Maybank). The pattern ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$ won't catch this because it doesn't validate country codes.

Suggested change
swiftCode:
type: string
swiftCode:
type: string
description: The SWIFT/BIC code of the bank
example: MBBEMYKL
minLength: 8
maxLength: 11
pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +6 to +8
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2phoneNumber required for all USD payment rails

phoneNumber is in the top-level required array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit phoneNumber for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new MOBILE_MONEY rail? If so, it should be optional (remove from required) with a note that it is required when paymentRails includes MOBILE_MONEY.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #353

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260416-172831 branch April 20, 2026 18:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

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

chore: Sync account schemas - #346

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

chore: Sync account schemas#346
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260416-172831

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 16, 2026 5:29pm

Request Review

@github-actions

github-actionsBot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to account types, phoneNumber to USD, MOBILE_MONEY payment rail

openapi

feat(types): add bankName/phoneNumber to account types, require paymentRails across currencies

python

feat(api): add bank_name across account types, phone_number/payment_rails to USD

typescript

feat(api): add bankName/phoneNumber fields, MOBILE_MONEY rail to account types

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

grid-typescriptstudio · code · diff

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

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

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

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
grid-openapistudio · code · diff

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

grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/12664a308ea9819badf44091ececa5cf3e8db27f/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-16 17:34:14 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs 34 *AccountInfo schemas from sparkcore, replacing the previous allOf + base-schema composition pattern with fully self-contained inline schemas. Each schema now declares its own accountType discriminator, paymentRails enum, and all currency-specific fields with validation patterns. The *AccountInfoBase.yaml files remain in place and continue to be referenced by the corresponding ExternalAccountCreateInfo schemas, so the external-account create path is unaffected.

Confidence Score: 5/5

Safe to merge; all findings are P2 documentation quality issues that do not affect validation logic or API behaviour.

All remaining comments are P2 style suggestions (wrong example values) plus one P2 question about the USD phoneNumber required constraint. None of these affect runtime validation or break existing integrations.

EgpAccountInfo.yaml, PkrAccountInfo.yaml, DkkAccountInfo.yaml (wrong IBAN examples); MyrAccountInfo.yaml (wrong SWIFT country code in example); UsdAccountInfo.yaml (phoneNumber in required list for all rails).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlAdds new MOBILE_MONEY rail and makes phoneNumber a required field for all USD accounts, which is non-standard for domestic transfers
openapi/components/schemas/common/EgpAccountInfo.yamlRefactored from allOf+base to standalone schema; optional iban/swiftCode fields use a German IBAN example instead of an Egyptian one
openapi/components/schemas/common/PkrAccountInfo.yamlRefactored to standalone schema; optional iban field uses a German IBAN example instead of a Pakistani one
openapi/components/schemas/common/DkkAccountInfo.yamlRefactored to standalone schema; iban example uses German IBAN instead of Danish IBAN
openapi/components/schemas/common/MyrAccountInfo.yamlRefactored to standalone schema; swiftCode example MABORUMMYYY contains country code RU (Russia) instead of MY (Malaysia)
openapi/components/schemas/common/AedAccountInfo.yamlRefactored from allOf+base to standalone schema; AED-specific IBAN pattern and SWIFT code constraints look correct
openapi/components/schemas/common/BrlAccountInfo.yamlRefactored to standalone schema with PIX-specific fields; pixKey, pixKeyType, and taxId constraints look correct
openapi/components/schemas/common/GbpAccountInfo.yamlRefactored to standalone schema; UK sort code (6 digits) and account number (8 digits) constraints are correct
openapi/components/schemas/common/XafAccountInfo.yamlAdds new region field with CM/CG enum for CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/XofAccountInfo.yamlAdds region field with BJ/CI/SN/TG enum for West African CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/InrAccountInfo.yamlRefactored to standalone schema with UPI vpa field; pattern and length constraints look appropriate
openapi/components/schemas/common/MxnAccountInfo.yamlRefactored to standalone schema with CLABE number (18 digits); constraints are correct for Mexican SPEI transfers

Class Diagram

%%{init: {'theme': 'neutral'}}%%
classDiagram
class AccountInfo {
+accountType: string
+paymentRails: string[]
+currency-specific fields
}
class AccountInfoBase {
+accountType: string
+currency-specific fields
}
class ExternalAccountCreateInfo {
+beneficiary: Beneficiary
}
ExternalAccountCreateInfo --> AccountInfoBase : allOf ref (unchanged)
note for AccountInfo "Previously: allOf + ref AccountInfoBase\nNow: fully inline (this PR)"
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/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
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: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
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 +30 to +31
description: The IBAN of the bank account
example: DE89370400440532013000

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.

P2Wrong IBAN example — German IBAN used for Egypt

The iban example DE89370400440532013000 is a German IBAN. An Egyptian IBAN starts with EG and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in PkrAccountInfo.yaml and DkkAccountInfo.yaml.

Suggested change
description: The IBAN of the bank account
example: DE89370400440532013000
iban:
type: string
description: The IBAN of the bank account
example: EG380019000500000000263180002
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
iban:
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.

P2Wrong IBAN example — German IBAN used for Pakistan

Same copy-paste issue as EgpAccountInfo.yaml: the example DE89370400440532013000 is a German IBAN. Pakistani IBANs start with PK and are 24 characters (e.g., PK36SCBL0000001123456702).

Suggested change
iban:
type: string
iban:
type: string
description: The IBAN of the bank account
example: PK36SCBL0000001123456702
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +19 to +20
type: string
description: The IBAN of the bank account

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.

P2IBAN example is German, not Danish

The example DE89370400440532013000 is a 22-character German IBAN. Danish IBANs start with DK and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.

Suggested change
type: string
description: The IBAN of the bank account
iban:
type: string
description: The IBAN of the bank account
example: DK5000400440116243
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
swiftCode:
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.

P2SWIFT example has wrong country code for Malaysia

MABORUMMYYY contains RU in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (MY). Malaysian SWIFT codes should look like MBBEMYKL (Maybank). The pattern ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$ won't catch this because it doesn't validate country codes.

Suggested change
swiftCode:
type: string
swiftCode:
type: string
description: The SWIFT/BIC code of the bank
example: MBBEMYKL
minLength: 8
maxLength: 11
pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +6 to +8
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2phoneNumber required for all USD payment rails

phoneNumber is in the top-level required array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit phoneNumber for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new MOBILE_MONEY rail? If so, it should be optional (remove from required) with a note that it is required when paymentRails includes MOBILE_MONEY.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #353

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260416-172831 branch April 20, 2026 18:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

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

chore: Sync account schemas - #346

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

chore: Sync account schemas#346
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260416-172831

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 16, 2026 5:29pm

Request Review

@github-actions

github-actionsBot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to account types, phoneNumber to USD, MOBILE_MONEY payment rail

openapi

feat(types): add bankName/phoneNumber to account types, require paymentRails across currencies

python

feat(api): add bank_name across account types, phone_number/payment_rails to USD

typescript

feat(api): add bankName/phoneNumber fields, MOBILE_MONEY rail to account types

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

grid-typescriptstudio · code · diff

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

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

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

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
grid-openapistudio · code · diff

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

grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/12664a308ea9819badf44091ececa5cf3e8db27f/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-16 17:34:14 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs 34 *AccountInfo schemas from sparkcore, replacing the previous allOf + base-schema composition pattern with fully self-contained inline schemas. Each schema now declares its own accountType discriminator, paymentRails enum, and all currency-specific fields with validation patterns. The *AccountInfoBase.yaml files remain in place and continue to be referenced by the corresponding ExternalAccountCreateInfo schemas, so the external-account create path is unaffected.

Confidence Score: 5/5

Safe to merge; all findings are P2 documentation quality issues that do not affect validation logic or API behaviour.

All remaining comments are P2 style suggestions (wrong example values) plus one P2 question about the USD phoneNumber required constraint. None of these affect runtime validation or break existing integrations.

EgpAccountInfo.yaml, PkrAccountInfo.yaml, DkkAccountInfo.yaml (wrong IBAN examples); MyrAccountInfo.yaml (wrong SWIFT country code in example); UsdAccountInfo.yaml (phoneNumber in required list for all rails).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlAdds new MOBILE_MONEY rail and makes phoneNumber a required field for all USD accounts, which is non-standard for domestic transfers
openapi/components/schemas/common/EgpAccountInfo.yamlRefactored from allOf+base to standalone schema; optional iban/swiftCode fields use a German IBAN example instead of an Egyptian one
openapi/components/schemas/common/PkrAccountInfo.yamlRefactored to standalone schema; optional iban field uses a German IBAN example instead of a Pakistani one
openapi/components/schemas/common/DkkAccountInfo.yamlRefactored to standalone schema; iban example uses German IBAN instead of Danish IBAN
openapi/components/schemas/common/MyrAccountInfo.yamlRefactored to standalone schema; swiftCode example MABORUMMYYY contains country code RU (Russia) instead of MY (Malaysia)
openapi/components/schemas/common/AedAccountInfo.yamlRefactored from allOf+base to standalone schema; AED-specific IBAN pattern and SWIFT code constraints look correct
openapi/components/schemas/common/BrlAccountInfo.yamlRefactored to standalone schema with PIX-specific fields; pixKey, pixKeyType, and taxId constraints look correct
openapi/components/schemas/common/GbpAccountInfo.yamlRefactored to standalone schema; UK sort code (6 digits) and account number (8 digits) constraints are correct
openapi/components/schemas/common/XafAccountInfo.yamlAdds new region field with CM/CG enum for CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/XofAccountInfo.yamlAdds region field with BJ/CI/SN/TG enum for West African CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/InrAccountInfo.yamlRefactored to standalone schema with UPI vpa field; pattern and length constraints look appropriate
openapi/components/schemas/common/MxnAccountInfo.yamlRefactored to standalone schema with CLABE number (18 digits); constraints are correct for Mexican SPEI transfers

Class Diagram

%%{init: {'theme': 'neutral'}}%%
classDiagram
class AccountInfo {
+accountType: string
+paymentRails: string[]
+currency-specific fields
}
class AccountInfoBase {
+accountType: string
+currency-specific fields
}
class ExternalAccountCreateInfo {
+beneficiary: Beneficiary
}
ExternalAccountCreateInfo --> AccountInfoBase : allOf ref (unchanged)
note for AccountInfo "Previously: allOf + ref AccountInfoBase\nNow: fully inline (this PR)"
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/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
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: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
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 +30 to +31
description: The IBAN of the bank account
example: DE89370400440532013000

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.

P2Wrong IBAN example — German IBAN used for Egypt

The iban example DE89370400440532013000 is a German IBAN. An Egyptian IBAN starts with EG and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in PkrAccountInfo.yaml and DkkAccountInfo.yaml.

Suggested change
description: The IBAN of the bank account
example: DE89370400440532013000
iban:
type: string
description: The IBAN of the bank account
example: EG380019000500000000263180002
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
iban:
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.

P2Wrong IBAN example — German IBAN used for Pakistan

Same copy-paste issue as EgpAccountInfo.yaml: the example DE89370400440532013000 is a German IBAN. Pakistani IBANs start with PK and are 24 characters (e.g., PK36SCBL0000001123456702).

Suggested change
iban:
type: string
iban:
type: string
description: The IBAN of the bank account
example: PK36SCBL0000001123456702
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +19 to +20
type: string
description: The IBAN of the bank account

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.

P2IBAN example is German, not Danish

The example DE89370400440532013000 is a 22-character German IBAN. Danish IBANs start with DK and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.

Suggested change
type: string
description: The IBAN of the bank account
iban:
type: string
description: The IBAN of the bank account
example: DK5000400440116243
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
swiftCode:
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.

P2SWIFT example has wrong country code for Malaysia

MABORUMMYYY contains RU in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (MY). Malaysian SWIFT codes should look like MBBEMYKL (Maybank). The pattern ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$ won't catch this because it doesn't validate country codes.

Suggested change
swiftCode:
type: string
swiftCode:
type: string
description: The SWIFT/BIC code of the bank
example: MBBEMYKL
minLength: 8
maxLength: 11
pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +6 to +8
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2phoneNumber required for all USD payment rails

phoneNumber is in the top-level required array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit phoneNumber for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new MOBILE_MONEY rail? If so, it should be optional (remove from required) with a note that it is required when paymentRails includes MOBILE_MONEY.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #353

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260416-172831 branch April 20, 2026 18:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

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

chore: Sync account schemas - #346

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

chore: Sync account schemas#346
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260416-172831

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

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 16, 2026 5:29pm

Request Review

@github-actions

github-actionsBot commented Apr 16, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(api): add bankName to account types, phoneNumber to USD, MOBILE_MONEY payment rail

openapi

feat(types): add bankName/phoneNumber to account types, require paymentRails across currencies

python

feat(api): add bank_name across account types, phone_number/payment_rails to USD

typescript

feat(api): add bankName/phoneNumber fields, MOBILE_MONEY rail to account types

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

grid-typescriptstudio · code · diff

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

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

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

New diagnostics (59 note)
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
💡 Schema/EnumHasOneMember: Confirm intentional use of `enum` with single member.
grid-openapistudio · code · diff

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

grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/12664a308ea9819badf44091ececa5cf3e8db27f/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-16 17:34:14 UTC

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs 34 *AccountInfo schemas from sparkcore, replacing the previous allOf + base-schema composition pattern with fully self-contained inline schemas. Each schema now declares its own accountType discriminator, paymentRails enum, and all currency-specific fields with validation patterns. The *AccountInfoBase.yaml files remain in place and continue to be referenced by the corresponding ExternalAccountCreateInfo schemas, so the external-account create path is unaffected.

Confidence Score: 5/5

Safe to merge; all findings are P2 documentation quality issues that do not affect validation logic or API behaviour.

All remaining comments are P2 style suggestions (wrong example values) plus one P2 question about the USD phoneNumber required constraint. None of these affect runtime validation or break existing integrations.

EgpAccountInfo.yaml, PkrAccountInfo.yaml, DkkAccountInfo.yaml (wrong IBAN examples); MyrAccountInfo.yaml (wrong SWIFT country code in example); UsdAccountInfo.yaml (phoneNumber in required list for all rails).

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlAdds new MOBILE_MONEY rail and makes phoneNumber a required field for all USD accounts, which is non-standard for domestic transfers
openapi/components/schemas/common/EgpAccountInfo.yamlRefactored from allOf+base to standalone schema; optional iban/swiftCode fields use a German IBAN example instead of an Egyptian one
openapi/components/schemas/common/PkrAccountInfo.yamlRefactored to standalone schema; optional iban field uses a German IBAN example instead of a Pakistani one
openapi/components/schemas/common/DkkAccountInfo.yamlRefactored to standalone schema; iban example uses German IBAN instead of Danish IBAN
openapi/components/schemas/common/MyrAccountInfo.yamlRefactored to standalone schema; swiftCode example MABORUMMYYY contains country code RU (Russia) instead of MY (Malaysia)
openapi/components/schemas/common/AedAccountInfo.yamlRefactored from allOf+base to standalone schema; AED-specific IBAN pattern and SWIFT code constraints look correct
openapi/components/schemas/common/BrlAccountInfo.yamlRefactored to standalone schema with PIX-specific fields; pixKey, pixKeyType, and taxId constraints look correct
openapi/components/schemas/common/GbpAccountInfo.yamlRefactored to standalone schema; UK sort code (6 digits) and account number (8 digits) constraints are correct
openapi/components/schemas/common/XafAccountInfo.yamlAdds new region field with CM/CG enum for CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/XofAccountInfo.yamlAdds region field with BJ/CI/SN/TG enum for West African CFA franc zone; redundant pattern constraint alongside enum but non-breaking
openapi/components/schemas/common/InrAccountInfo.yamlRefactored to standalone schema with UPI vpa field; pattern and length constraints look appropriate
openapi/components/schemas/common/MxnAccountInfo.yamlRefactored to standalone schema with CLABE number (18 digits); constraints are correct for Mexican SPEI transfers

Class Diagram

%%{init: {'theme': 'neutral'}}%%
classDiagram
class AccountInfo {
+accountType: string
+paymentRails: string[]
+currency-specific fields
}
class AccountInfoBase {
+accountType: string
+currency-specific fields
}
class ExternalAccountCreateInfo {
+beneficiary: Beneficiary
}
ExternalAccountCreateInfo --> AccountInfoBase : allOf ref (unchanged)
note for AccountInfo "Previously: allOf + ref AccountInfoBase\nNow: fully inline (this PR)"
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/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
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/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
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: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
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 +30 to +31
description: The IBAN of the bank account
example: DE89370400440532013000

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.

P2Wrong IBAN example — German IBAN used for Egypt

The iban example DE89370400440532013000 is a German IBAN. An Egyptian IBAN starts with EG and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in PkrAccountInfo.yaml and DkkAccountInfo.yaml.

Suggested change
description: The IBAN of the bank account
example: DE89370400440532013000
iban:
type: string
description: The IBAN of the bank account
example: EG380019000500000000263180002
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/EgpAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Egypt**
The `iban` example `DE89370400440532013000` is a German IBAN. An Egyptian IBAN starts with `EG` and is 29 characters. Developers using this as a reference will build incorrect integrations. The same copy-paste issue appears in `PkrAccountInfo.yaml` and `DkkAccountInfo.yaml`.
```suggestion iban: type: string description: The IBAN of the bank account example: EG380019000500000000263180002 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
iban:
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.

P2Wrong IBAN example — German IBAN used for Pakistan

Same copy-paste issue as EgpAccountInfo.yaml: the example DE89370400440532013000 is a German IBAN. Pakistani IBANs start with PK and are 24 characters (e.g., PK36SCBL0000001123456702).

Suggested change
iban:
type: string
iban:
type: string
description: The IBAN of the bank account
example: PK36SCBL0000001123456702
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/PkrAccountInfo.yaml
Line: 30-31
Comment:
**Wrong IBAN example — German IBAN used for Pakistan**
Same copy-paste issue as `EgpAccountInfo.yaml`: the example `DE89370400440532013000` is a German IBAN. Pakistani IBANs start with `PK` and are 24 characters (e.g., `PK36SCBL0000001123456702`).
```suggestion iban: type: string description: The IBAN of the bank account example: PK36SCBL0000001123456702 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +19 to +20
type: string
description: The IBAN of the bank account

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.

P2IBAN example is German, not Danish

The example DE89370400440532013000 is a 22-character German IBAN. Danish IBANs start with DK and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.

Suggested change
type: string
description: The IBAN of the bank account
iban:
type: string
description: The IBAN of the bank account
example: DK5000400440116243
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/DkkAccountInfo.yaml
Line: 19-20
Comment:
**IBAN example is German, not Danish**
The example `DE89370400440532013000` is a 22-character German IBAN. Danish IBANs start with `DK` and are 18 characters. Consumers of this API doc may attempt to validate or test with a wrong-length IBAN.
```suggestion iban: type: string description: The IBAN of the bank account example: DK5000400440116243 minLength: 15 maxLength: 34 pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +30 to +31
swiftCode:
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.

P2SWIFT example has wrong country code for Malaysia

MABORUMMYYY contains RU in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (MY). Malaysian SWIFT codes should look like MBBEMYKL (Maybank). The pattern ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$ won't catch this because it doesn't validate country codes.

Suggested change
swiftCode:
type: string
swiftCode:
type: string
description: The SWIFT/BIC code of the bank
example: MBBEMYKL
minLength: 8
maxLength: 11
pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/MyrAccountInfo.yaml
Line: 30-31
Comment:
**SWIFT example has wrong country code for Malaysia**`MABORUMMYYY` contains `RU` in the country-code position (characters 5–6) — that's Russia's ISO code, not Malaysia's (`MY`). Malaysian SWIFT codes should look like `MBBEMYKL` (Maybank). The pattern `^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$` won't catch this because it doesn't validate country codes.
```suggestion swiftCode: type: string description: The SWIFT/BIC code of the bank example: MBBEMYKL minLength: 8 maxLength: 11 pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +6 to +8
- routingNumber
- bankName
- phoneNumber

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2phoneNumber required for all USD payment rails

phoneNumber is in the top-level required array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit phoneNumber for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new MOBILE_MONEY rail? If so, it should be optional (remove from required) with a note that it is required when paymentRails includes MOBILE_MONEY.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 6-8
Comment:
**`phoneNumber` required for all USD payment rails**`phoneNumber` is in the top-level `required` array, so it is mandatory even for pure domestic transfers (ACH, Wire, RTP, FedNow) where a phone number is not a banking requirement. If a USD bank account record in sparkcore can omit `phoneNumber` for those rails, API consumers receiving such a response will encounter a validation mismatch. Is this field only relevant for the new `MOBILE_MONEY` rail? If so, it should be optional (remove from `required`) with a note that it is required when `paymentRails` includes `MOBILE_MONEY`.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@lightspark-copybara

Copy link
Copy Markdown
ContributorAuthor

Superseded by #353

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260416-172831 branch April 20, 2026 18:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants