Skip to content

chore: Sync account schemas - #384

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

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

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

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

Synced schemas:

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

Please review the changes before merging.

@vercel

vercelBot commented Apr 23, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 6:03pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(types): add bankName to BDT/EGP/GHS/JMD/PKR, add/remove phone fields, update requirements

openapi

feat(types): flatten account schemas, add required fields to USD/BDT/EGP/GHS/GTQ/JMD/PKR accounts

python

feat(api): add bank_name to account types, update payment_rails/beneficiary requirements

typescript

feat(api): add bankName to account types, update USD/COP/GTQ fields, update beneficiary types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

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

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

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

npm install https://pkg.stainless.com/s/grid-typescript/48cc8b52fac58ddde8c691a64006f2484fa37229/dist.tar.gz
grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/0da228116c78f26ede0542b7d8cee9247ddf8265/grid-0.0.1-py3-none-any.whl

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs 36 *AccountInfo YAML schemas and two beneficiary schemas from sparkcore, replacing allOf/$ref composition with fully self-contained inline definitions and adding per-currency field validation (IBAN patterns, routing numbers, phone formats, etc.).

  • P1 — USD payment rails: BANK_TRANSFER is removed and MOBILE_MONEY is added. MOBILE_MONEY is an atypical rail for USD; clients that currently submit BANK_TRANSFER for USD payments will fail validation after this change.
  • P1 — COP/GTQ payment rails: MOBILE_MONEY is removed from both CopAccountInfo and GtqAccountInfo, potentially breaking existing integrations that rely on that rail.
  • P1 — Beneficiary required fields: CopBeneficiary drops countryOfResidence from required and adds documentNumber/documentType as required; GtqBeneficiary adds phoneNumber as required — both are breaking changes for existing client payloads.

Confidence Score: 3/5

Hold for confirmation — three P1 breaking changes to payment rails and required beneficiary fields need explicit sign-off before merging.

Three distinct P1 findings involve dropped/replaced enum values in payment rails (USD, COP, GTQ) and newly required fields in beneficiary schemas (COP, GTQ) that will break existing client integrations without a migration window. These changes may be intentional syncs from sparkcore, but need explicit confirmation.

UsdAccountInfo.yaml, CopAccountInfo.yaml, GtqAccountInfo.yaml, CopBeneficiary.yaml, GtqBeneficiary.yaml

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlRefactored from allOf/ref pattern to inline schema; BANK_TRANSFER removed from payment rails and MOBILE_MONEY added — potentially breaking change
openapi/components/schemas/common/CopBeneficiary.yamldocumentNumber and documentType added as required fields while countryOfResidence dropped from required — breaking change for existing COP beneficiary creation
openapi/components/schemas/common/CopAccountInfo.yamlMOBILE_MONEY removed from COP payment rails enum; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqAccountInfo.yamlMOBILE_MONEY removed from GTQ payment rails; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber added as a required field — breaking change for existing GTQ beneficiary creation
openapi/components/schemas/common/PkrAccountInfo.yamlSchema inlined correctly; iban example uses an incorrect German IBAN placeholder instead of a PK-prefixed example
openapi/components/schemas/common/EgpAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of an EG-prefixed example
openapi/components/schemas/common/DkkAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of a DK-prefixed example
openapi/components/schemas/common/EurAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with correct validation patterns and examples
openapi/components/schemas/common/GbpAccountInfo.yamlCleanly inlined; sortCode and accountNumber added with correct UK-specific patterns
openapi/components/schemas/common/AedAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with UAE-specific pattern and correct examples
openapi/components/schemas/common/BrlAccountInfo.yamlCleanly inlined; pixKey, pixKeyType, and taxId fields added with correct Brazilian payment patterns
openapi/components/schemas/common/KesAccountInfo.yamlCleanly inlined; Kenya-specific phone pattern and provider field added correctly
openapi.yamlBundled OpenAPI spec updated to reflect all schema changes including USD BANK_TRANSFER → MOBILE_MONEY and COP/GTQ payment rail removals
mintlify/openapi.yamlMintlify docs bundle mirrors openapi.yaml changes; same P1 concerns apply

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/ AccountInfo schemas]
A -->|auto-sync| C[common/ Beneficiary schemas]
B --> D[external_accounts/ schemas]
B --> E[openapi.yaml / mintlify/openapi.yaml]
C --> E
subgraph Breaking Changes
F[UsdAccountInfo BANK_TRANSFER removed, MOBILE_MONEY added]
G[CopAccountInfo and GtqAccountInfo MOBILE_MONEY removed]
H[CopBeneficiary documentNumber + documentType now required]
I[GtqBeneficiary phoneNumber now required]
end
B --> F
B --> G
C --> H
C --> I
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/PkrAccountInfo.yaml
Line: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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/EgpAccountInfo.yaml
Line: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
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/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 +21 to +28
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1

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.

P2Incorrect IBAN example for PKR

The iban field uses DE89370400440532013000 as its example value, which is a well-known German IBAN. Pakistani IBANs start with PK followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like PK36SCBL0000001123456702 would be accurate. Using a German example misleads API consumers integrating with PKR accounts.

Suggested change
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1
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: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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 +28 to +35
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:

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.

P2Incorrect IBAN example for EGP

The iban field shows DE89370400440532013000, which is a German IBAN. Egyptian IBANs follow the format EG + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in DkkAccountInfo.yaml (DKK IBANs start with DK). Using country-appropriate examples improves clarity for integrators.

Suggested change
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:
iban:
type: string
description: The IBAN of the bank account
example: EG800002000156789012345180002
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: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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 +16 to +23
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- MOBILE_MONEY
accountNumber:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

The previous schema listed BANK_TRANSFER among the allowed USD payment rails; this PR removes it and adds MOBILE_MONEY instead. MOBILE_MONEY is an unusual rail for USD and could break existing integrations that pass BANK_TRANSFER for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 3 to 7
required:
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType
- fullName

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking required-field change in CopBeneficiary

countryOfResidence is dropped from required and documentNumber + documentType are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, GtqBeneficiary gains phoneNumber as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +15 to +18
items:
type: string
enum:
- BANK_TRANSFER

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.

P1MOBILE_MONEY removed from COP and GTQ payment rails

Both CopAccountInfo and GtqAccountInfo previously allowed MOBILE_MONEY alongside BANK_TRANSFER; the new schemas only list BANK_TRANSFER. Clients that currently submit COP or GTQ payments via MOBILE_MONEY will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 #385

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-180252 branch April 23, 2026 18:48
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)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
chore: Sync account schemas by lightspark-copybara[bot] · Pull Request #384 · lightsparkdev/grid-api · GitHub
Skip to content

chore: Sync account schemas - #384

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

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

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

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

Synced schemas:

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

Please review the changes before merging.

@vercel

vercelBot commented Apr 23, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 6:03pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(types): add bankName to BDT/EGP/GHS/JMD/PKR, add/remove phone fields, update requirements

openapi

feat(types): flatten account schemas, add required fields to USD/BDT/EGP/GHS/GTQ/JMD/PKR accounts

python

feat(api): add bank_name to account types, update payment_rails/beneficiary requirements

typescript

feat(api): add bankName to account types, update USD/COP/GTQ fields, update beneficiary types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

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

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

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

npm install https://pkg.stainless.com/s/grid-typescript/48cc8b52fac58ddde8c691a64006f2484fa37229/dist.tar.gz
grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/0da228116c78f26ede0542b7d8cee9247ddf8265/grid-0.0.1-py3-none-any.whl

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs 36 *AccountInfo YAML schemas and two beneficiary schemas from sparkcore, replacing allOf/$ref composition with fully self-contained inline definitions and adding per-currency field validation (IBAN patterns, routing numbers, phone formats, etc.).

  • P1 — USD payment rails: BANK_TRANSFER is removed and MOBILE_MONEY is added. MOBILE_MONEY is an atypical rail for USD; clients that currently submit BANK_TRANSFER for USD payments will fail validation after this change.
  • P1 — COP/GTQ payment rails: MOBILE_MONEY is removed from both CopAccountInfo and GtqAccountInfo, potentially breaking existing integrations that rely on that rail.
  • P1 — Beneficiary required fields: CopBeneficiary drops countryOfResidence from required and adds documentNumber/documentType as required; GtqBeneficiary adds phoneNumber as required — both are breaking changes for existing client payloads.

Confidence Score: 3/5

Hold for confirmation — three P1 breaking changes to payment rails and required beneficiary fields need explicit sign-off before merging.

Three distinct P1 findings involve dropped/replaced enum values in payment rails (USD, COP, GTQ) and newly required fields in beneficiary schemas (COP, GTQ) that will break existing client integrations without a migration window. These changes may be intentional syncs from sparkcore, but need explicit confirmation.

UsdAccountInfo.yaml, CopAccountInfo.yaml, GtqAccountInfo.yaml, CopBeneficiary.yaml, GtqBeneficiary.yaml

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlRefactored from allOf/ref pattern to inline schema; BANK_TRANSFER removed from payment rails and MOBILE_MONEY added — potentially breaking change
openapi/components/schemas/common/CopBeneficiary.yamldocumentNumber and documentType added as required fields while countryOfResidence dropped from required — breaking change for existing COP beneficiary creation
openapi/components/schemas/common/CopAccountInfo.yamlMOBILE_MONEY removed from COP payment rails enum; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqAccountInfo.yamlMOBILE_MONEY removed from GTQ payment rails; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber added as a required field — breaking change for existing GTQ beneficiary creation
openapi/components/schemas/common/PkrAccountInfo.yamlSchema inlined correctly; iban example uses an incorrect German IBAN placeholder instead of a PK-prefixed example
openapi/components/schemas/common/EgpAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of an EG-prefixed example
openapi/components/schemas/common/DkkAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of a DK-prefixed example
openapi/components/schemas/common/EurAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with correct validation patterns and examples
openapi/components/schemas/common/GbpAccountInfo.yamlCleanly inlined; sortCode and accountNumber added with correct UK-specific patterns
openapi/components/schemas/common/AedAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with UAE-specific pattern and correct examples
openapi/components/schemas/common/BrlAccountInfo.yamlCleanly inlined; pixKey, pixKeyType, and taxId fields added with correct Brazilian payment patterns
openapi/components/schemas/common/KesAccountInfo.yamlCleanly inlined; Kenya-specific phone pattern and provider field added correctly
openapi.yamlBundled OpenAPI spec updated to reflect all schema changes including USD BANK_TRANSFER → MOBILE_MONEY and COP/GTQ payment rail removals
mintlify/openapi.yamlMintlify docs bundle mirrors openapi.yaml changes; same P1 concerns apply

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/ AccountInfo schemas]
A -->|auto-sync| C[common/ Beneficiary schemas]
B --> D[external_accounts/ schemas]
B --> E[openapi.yaml / mintlify/openapi.yaml]
C --> E
subgraph Breaking Changes
F[UsdAccountInfo BANK_TRANSFER removed, MOBILE_MONEY added]
G[CopAccountInfo and GtqAccountInfo MOBILE_MONEY removed]
H[CopBeneficiary documentNumber + documentType now required]
I[GtqBeneficiary phoneNumber now required]
end
B --> F
B --> G
C --> H
C --> I
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/PkrAccountInfo.yaml
Line: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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/EgpAccountInfo.yaml
Line: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
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/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 +21 to +28
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1

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.

P2Incorrect IBAN example for PKR

The iban field uses DE89370400440532013000 as its example value, which is a well-known German IBAN. Pakistani IBANs start with PK followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like PK36SCBL0000001123456702 would be accurate. Using a German example misleads API consumers integrating with PKR accounts.

Suggested change
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1
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: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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 +28 to +35
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:

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.

P2Incorrect IBAN example for EGP

The iban field shows DE89370400440532013000, which is a German IBAN. Egyptian IBANs follow the format EG + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in DkkAccountInfo.yaml (DKK IBANs start with DK). Using country-appropriate examples improves clarity for integrators.

Suggested change
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:
iban:
type: string
description: The IBAN of the bank account
example: EG800002000156789012345180002
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: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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 +16 to +23
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- MOBILE_MONEY
accountNumber:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

The previous schema listed BANK_TRANSFER among the allowed USD payment rails; this PR removes it and adds MOBILE_MONEY instead. MOBILE_MONEY is an unusual rail for USD and could break existing integrations that pass BANK_TRANSFER for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 3 to 7
required:
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType
- fullName

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking required-field change in CopBeneficiary

countryOfResidence is dropped from required and documentNumber + documentType are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, GtqBeneficiary gains phoneNumber as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +15 to +18
items:
type: string
enum:
- BANK_TRANSFER

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.

P1MOBILE_MONEY removed from COP and GTQ payment rails

Both CopAccountInfo and GtqAccountInfo previously allowed MOBILE_MONEY alongside BANK_TRANSFER; the new schemas only list BANK_TRANSFER. Clients that currently submit COP or GTQ payments via MOBILE_MONEY will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 #385

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-180252 branch April 23, 2026 18:48
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)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' chore: Sync account schemas by lightspark-copybara[bot] · Pull Request #384 · lightsparkdev/grid-api · GitHub
Skip to content

chore: Sync account schemas - #384

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

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

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

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

Synced schemas:

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

Please review the changes before merging.

@vercel

vercelBot commented Apr 23, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 6:03pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(types): add bankName to BDT/EGP/GHS/JMD/PKR, add/remove phone fields, update requirements

openapi

feat(types): flatten account schemas, add required fields to USD/BDT/EGP/GHS/GTQ/JMD/PKR accounts

python

feat(api): add bank_name to account types, update payment_rails/beneficiary requirements

typescript

feat(api): add bankName to account types, update USD/COP/GTQ fields, update beneficiary types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

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

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

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

npm install https://pkg.stainless.com/s/grid-typescript/48cc8b52fac58ddde8c691a64006f2484fa37229/dist.tar.gz
grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/0da228116c78f26ede0542b7d8cee9247ddf8265/grid-0.0.1-py3-none-any.whl

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs 36 *AccountInfo YAML schemas and two beneficiary schemas from sparkcore, replacing allOf/$ref composition with fully self-contained inline definitions and adding per-currency field validation (IBAN patterns, routing numbers, phone formats, etc.).

  • P1 — USD payment rails: BANK_TRANSFER is removed and MOBILE_MONEY is added. MOBILE_MONEY is an atypical rail for USD; clients that currently submit BANK_TRANSFER for USD payments will fail validation after this change.
  • P1 — COP/GTQ payment rails: MOBILE_MONEY is removed from both CopAccountInfo and GtqAccountInfo, potentially breaking existing integrations that rely on that rail.
  • P1 — Beneficiary required fields: CopBeneficiary drops countryOfResidence from required and adds documentNumber/documentType as required; GtqBeneficiary adds phoneNumber as required — both are breaking changes for existing client payloads.

Confidence Score: 3/5

Hold for confirmation — three P1 breaking changes to payment rails and required beneficiary fields need explicit sign-off before merging.

Three distinct P1 findings involve dropped/replaced enum values in payment rails (USD, COP, GTQ) and newly required fields in beneficiary schemas (COP, GTQ) that will break existing client integrations without a migration window. These changes may be intentional syncs from sparkcore, but need explicit confirmation.

UsdAccountInfo.yaml, CopAccountInfo.yaml, GtqAccountInfo.yaml, CopBeneficiary.yaml, GtqBeneficiary.yaml

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlRefactored from allOf/ref pattern to inline schema; BANK_TRANSFER removed from payment rails and MOBILE_MONEY added — potentially breaking change
openapi/components/schemas/common/CopBeneficiary.yamldocumentNumber and documentType added as required fields while countryOfResidence dropped from required — breaking change for existing COP beneficiary creation
openapi/components/schemas/common/CopAccountInfo.yamlMOBILE_MONEY removed from COP payment rails enum; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqAccountInfo.yamlMOBILE_MONEY removed from GTQ payment rails; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber added as a required field — breaking change for existing GTQ beneficiary creation
openapi/components/schemas/common/PkrAccountInfo.yamlSchema inlined correctly; iban example uses an incorrect German IBAN placeholder instead of a PK-prefixed example
openapi/components/schemas/common/EgpAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of an EG-prefixed example
openapi/components/schemas/common/DkkAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of a DK-prefixed example
openapi/components/schemas/common/EurAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with correct validation patterns and examples
openapi/components/schemas/common/GbpAccountInfo.yamlCleanly inlined; sortCode and accountNumber added with correct UK-specific patterns
openapi/components/schemas/common/AedAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with UAE-specific pattern and correct examples
openapi/components/schemas/common/BrlAccountInfo.yamlCleanly inlined; pixKey, pixKeyType, and taxId fields added with correct Brazilian payment patterns
openapi/components/schemas/common/KesAccountInfo.yamlCleanly inlined; Kenya-specific phone pattern and provider field added correctly
openapi.yamlBundled OpenAPI spec updated to reflect all schema changes including USD BANK_TRANSFER → MOBILE_MONEY and COP/GTQ payment rail removals
mintlify/openapi.yamlMintlify docs bundle mirrors openapi.yaml changes; same P1 concerns apply

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/ AccountInfo schemas]
A -->|auto-sync| C[common/ Beneficiary schemas]
B --> D[external_accounts/ schemas]
B --> E[openapi.yaml / mintlify/openapi.yaml]
C --> E
subgraph Breaking Changes
F[UsdAccountInfo BANK_TRANSFER removed, MOBILE_MONEY added]
G[CopAccountInfo and GtqAccountInfo MOBILE_MONEY removed]
H[CopBeneficiary documentNumber + documentType now required]
I[GtqBeneficiary phoneNumber now required]
end
B --> F
B --> G
C --> H
C --> I
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/PkrAccountInfo.yaml
Line: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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/EgpAccountInfo.yaml
Line: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
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/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 +21 to +28
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1

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.

P2Incorrect IBAN example for PKR

The iban field uses DE89370400440532013000 as its example value, which is a well-known German IBAN. Pakistani IBANs start with PK followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like PK36SCBL0000001123456702 would be accurate. Using a German example misleads API consumers integrating with PKR accounts.

Suggested change
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1
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: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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 +28 to +35
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:

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.

P2Incorrect IBAN example for EGP

The iban field shows DE89370400440532013000, which is a German IBAN. Egyptian IBANs follow the format EG + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in DkkAccountInfo.yaml (DKK IBANs start with DK). Using country-appropriate examples improves clarity for integrators.

Suggested change
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:
iban:
type: string
description: The IBAN of the bank account
example: EG800002000156789012345180002
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: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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 +16 to +23
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- MOBILE_MONEY
accountNumber:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

The previous schema listed BANK_TRANSFER among the allowed USD payment rails; this PR removes it and adds MOBILE_MONEY instead. MOBILE_MONEY is an unusual rail for USD and could break existing integrations that pass BANK_TRANSFER for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 3 to 7
required:
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType
- fullName

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking required-field change in CopBeneficiary

countryOfResidence is dropped from required and documentNumber + documentType are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, GtqBeneficiary gains phoneNumber as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +15 to +18
items:
type: string
enum:
- BANK_TRANSFER

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.

P1MOBILE_MONEY removed from COP and GTQ payment rails

Both CopAccountInfo and GtqAccountInfo previously allowed MOBILE_MONEY alongside BANK_TRANSFER; the new schemas only list BANK_TRANSFER. Clients that currently submit COP or GTQ payments via MOBILE_MONEY will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 #385

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-180252 branch April 23, 2026 18:48
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)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' chore: Sync account schemas by lightspark-copybara[bot] · Pull Request #384 · lightsparkdev/grid-api · GitHub
Skip to content

chore: Sync account schemas - #384

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

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

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

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

Synced schemas:

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

Please review the changes before merging.

@vercel

vercelBot commented Apr 23, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 6:03pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(types): add bankName to BDT/EGP/GHS/JMD/PKR, add/remove phone fields, update requirements

openapi

feat(types): flatten account schemas, add required fields to USD/BDT/EGP/GHS/GTQ/JMD/PKR accounts

python

feat(api): add bank_name to account types, update payment_rails/beneficiary requirements

typescript

feat(api): add bankName to account types, update USD/COP/GTQ fields, update beneficiary types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

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

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

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

npm install https://pkg.stainless.com/s/grid-typescript/48cc8b52fac58ddde8c691a64006f2484fa37229/dist.tar.gz
grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/0da228116c78f26ede0542b7d8cee9247ddf8265/grid-0.0.1-py3-none-any.whl

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs 36 *AccountInfo YAML schemas and two beneficiary schemas from sparkcore, replacing allOf/$ref composition with fully self-contained inline definitions and adding per-currency field validation (IBAN patterns, routing numbers, phone formats, etc.).

  • P1 — USD payment rails: BANK_TRANSFER is removed and MOBILE_MONEY is added. MOBILE_MONEY is an atypical rail for USD; clients that currently submit BANK_TRANSFER for USD payments will fail validation after this change.
  • P1 — COP/GTQ payment rails: MOBILE_MONEY is removed from both CopAccountInfo and GtqAccountInfo, potentially breaking existing integrations that rely on that rail.
  • P1 — Beneficiary required fields: CopBeneficiary drops countryOfResidence from required and adds documentNumber/documentType as required; GtqBeneficiary adds phoneNumber as required — both are breaking changes for existing client payloads.

Confidence Score: 3/5

Hold for confirmation — three P1 breaking changes to payment rails and required beneficiary fields need explicit sign-off before merging.

Three distinct P1 findings involve dropped/replaced enum values in payment rails (USD, COP, GTQ) and newly required fields in beneficiary schemas (COP, GTQ) that will break existing client integrations without a migration window. These changes may be intentional syncs from sparkcore, but need explicit confirmation.

UsdAccountInfo.yaml, CopAccountInfo.yaml, GtqAccountInfo.yaml, CopBeneficiary.yaml, GtqBeneficiary.yaml

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlRefactored from allOf/ref pattern to inline schema; BANK_TRANSFER removed from payment rails and MOBILE_MONEY added — potentially breaking change
openapi/components/schemas/common/CopBeneficiary.yamldocumentNumber and documentType added as required fields while countryOfResidence dropped from required — breaking change for existing COP beneficiary creation
openapi/components/schemas/common/CopAccountInfo.yamlMOBILE_MONEY removed from COP payment rails enum; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqAccountInfo.yamlMOBILE_MONEY removed from GTQ payment rails; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber added as a required field — breaking change for existing GTQ beneficiary creation
openapi/components/schemas/common/PkrAccountInfo.yamlSchema inlined correctly; iban example uses an incorrect German IBAN placeholder instead of a PK-prefixed example
openapi/components/schemas/common/EgpAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of an EG-prefixed example
openapi/components/schemas/common/DkkAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of a DK-prefixed example
openapi/components/schemas/common/EurAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with correct validation patterns and examples
openapi/components/schemas/common/GbpAccountInfo.yamlCleanly inlined; sortCode and accountNumber added with correct UK-specific patterns
openapi/components/schemas/common/AedAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with UAE-specific pattern and correct examples
openapi/components/schemas/common/BrlAccountInfo.yamlCleanly inlined; pixKey, pixKeyType, and taxId fields added with correct Brazilian payment patterns
openapi/components/schemas/common/KesAccountInfo.yamlCleanly inlined; Kenya-specific phone pattern and provider field added correctly
openapi.yamlBundled OpenAPI spec updated to reflect all schema changes including USD BANK_TRANSFER → MOBILE_MONEY and COP/GTQ payment rail removals
mintlify/openapi.yamlMintlify docs bundle mirrors openapi.yaml changes; same P1 concerns apply

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/ AccountInfo schemas]
A -->|auto-sync| C[common/ Beneficiary schemas]
B --> D[external_accounts/ schemas]
B --> E[openapi.yaml / mintlify/openapi.yaml]
C --> E
subgraph Breaking Changes
F[UsdAccountInfo BANK_TRANSFER removed, MOBILE_MONEY added]
G[CopAccountInfo and GtqAccountInfo MOBILE_MONEY removed]
H[CopBeneficiary documentNumber + documentType now required]
I[GtqBeneficiary phoneNumber now required]
end
B --> F
B --> G
C --> H
C --> I
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/PkrAccountInfo.yaml
Line: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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/EgpAccountInfo.yaml
Line: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
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/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 +21 to +28
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1

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.

P2Incorrect IBAN example for PKR

The iban field uses DE89370400440532013000 as its example value, which is a well-known German IBAN. Pakistani IBANs start with PK followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like PK36SCBL0000001123456702 would be accurate. Using a German example misleads API consumers integrating with PKR accounts.

Suggested change
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1
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: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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 +28 to +35
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:

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.

P2Incorrect IBAN example for EGP

The iban field shows DE89370400440532013000, which is a German IBAN. Egyptian IBANs follow the format EG + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in DkkAccountInfo.yaml (DKK IBANs start with DK). Using country-appropriate examples improves clarity for integrators.

Suggested change
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:
iban:
type: string
description: The IBAN of the bank account
example: EG800002000156789012345180002
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: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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 +16 to +23
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- MOBILE_MONEY
accountNumber:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

The previous schema listed BANK_TRANSFER among the allowed USD payment rails; this PR removes it and adds MOBILE_MONEY instead. MOBILE_MONEY is an unusual rail for USD and could break existing integrations that pass BANK_TRANSFER for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 3 to 7
required:
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType
- fullName

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking required-field change in CopBeneficiary

countryOfResidence is dropped from required and documentNumber + documentType are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, GtqBeneficiary gains phoneNumber as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +15 to +18
items:
type: string
enum:
- BANK_TRANSFER

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.

P1MOBILE_MONEY removed from COP and GTQ payment rails

Both CopAccountInfo and GtqAccountInfo previously allowed MOBILE_MONEY alongside BANK_TRANSFER; the new schemas only list BANK_TRANSFER. Clients that currently submit COP or GTQ payments via MOBILE_MONEY will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 #385

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-180252 branch April 23, 2026 18:48
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)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' chore: Sync account schemas by lightspark-copybara[bot] · Pull Request #384 · lightsparkdev/grid-api · GitHub
Skip to content

chore: Sync account schemas - #384

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

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

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

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

Synced schemas:

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

Please review the changes before merging.

@vercel

vercelBot commented Apr 23, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 6:03pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(types): add bankName to BDT/EGP/GHS/JMD/PKR, add/remove phone fields, update requirements

openapi

feat(types): flatten account schemas, add required fields to USD/BDT/EGP/GHS/GTQ/JMD/PKR accounts

python

feat(api): add bank_name to account types, update payment_rails/beneficiary requirements

typescript

feat(api): add bankName to account types, update USD/COP/GTQ fields, update beneficiary types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

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

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

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

npm install https://pkg.stainless.com/s/grid-typescript/48cc8b52fac58ddde8c691a64006f2484fa37229/dist.tar.gz
grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/0da228116c78f26ede0542b7d8cee9247ddf8265/grid-0.0.1-py3-none-any.whl

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs 36 *AccountInfo YAML schemas and two beneficiary schemas from sparkcore, replacing allOf/$ref composition with fully self-contained inline definitions and adding per-currency field validation (IBAN patterns, routing numbers, phone formats, etc.).

  • P1 — USD payment rails: BANK_TRANSFER is removed and MOBILE_MONEY is added. MOBILE_MONEY is an atypical rail for USD; clients that currently submit BANK_TRANSFER for USD payments will fail validation after this change.
  • P1 — COP/GTQ payment rails: MOBILE_MONEY is removed from both CopAccountInfo and GtqAccountInfo, potentially breaking existing integrations that rely on that rail.
  • P1 — Beneficiary required fields: CopBeneficiary drops countryOfResidence from required and adds documentNumber/documentType as required; GtqBeneficiary adds phoneNumber as required — both are breaking changes for existing client payloads.

Confidence Score: 3/5

Hold for confirmation — three P1 breaking changes to payment rails and required beneficiary fields need explicit sign-off before merging.

Three distinct P1 findings involve dropped/replaced enum values in payment rails (USD, COP, GTQ) and newly required fields in beneficiary schemas (COP, GTQ) that will break existing client integrations without a migration window. These changes may be intentional syncs from sparkcore, but need explicit confirmation.

UsdAccountInfo.yaml, CopAccountInfo.yaml, GtqAccountInfo.yaml, CopBeneficiary.yaml, GtqBeneficiary.yaml

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlRefactored from allOf/ref pattern to inline schema; BANK_TRANSFER removed from payment rails and MOBILE_MONEY added — potentially breaking change
openapi/components/schemas/common/CopBeneficiary.yamldocumentNumber and documentType added as required fields while countryOfResidence dropped from required — breaking change for existing COP beneficiary creation
openapi/components/schemas/common/CopAccountInfo.yamlMOBILE_MONEY removed from COP payment rails enum; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqAccountInfo.yamlMOBILE_MONEY removed from GTQ payment rails; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber added as a required field — breaking change for existing GTQ beneficiary creation
openapi/components/schemas/common/PkrAccountInfo.yamlSchema inlined correctly; iban example uses an incorrect German IBAN placeholder instead of a PK-prefixed example
openapi/components/schemas/common/EgpAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of an EG-prefixed example
openapi/components/schemas/common/DkkAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of a DK-prefixed example
openapi/components/schemas/common/EurAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with correct validation patterns and examples
openapi/components/schemas/common/GbpAccountInfo.yamlCleanly inlined; sortCode and accountNumber added with correct UK-specific patterns
openapi/components/schemas/common/AedAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with UAE-specific pattern and correct examples
openapi/components/schemas/common/BrlAccountInfo.yamlCleanly inlined; pixKey, pixKeyType, and taxId fields added with correct Brazilian payment patterns
openapi/components/schemas/common/KesAccountInfo.yamlCleanly inlined; Kenya-specific phone pattern and provider field added correctly
openapi.yamlBundled OpenAPI spec updated to reflect all schema changes including USD BANK_TRANSFER → MOBILE_MONEY and COP/GTQ payment rail removals
mintlify/openapi.yamlMintlify docs bundle mirrors openapi.yaml changes; same P1 concerns apply

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/ AccountInfo schemas]
A -->|auto-sync| C[common/ Beneficiary schemas]
B --> D[external_accounts/ schemas]
B --> E[openapi.yaml / mintlify/openapi.yaml]
C --> E
subgraph Breaking Changes
F[UsdAccountInfo BANK_TRANSFER removed, MOBILE_MONEY added]
G[CopAccountInfo and GtqAccountInfo MOBILE_MONEY removed]
H[CopBeneficiary documentNumber + documentType now required]
I[GtqBeneficiary phoneNumber now required]
end
B --> F
B --> G
C --> H
C --> I
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/PkrAccountInfo.yaml
Line: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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/EgpAccountInfo.yaml
Line: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
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/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 +21 to +28
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1

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.

P2Incorrect IBAN example for PKR

The iban field uses DE89370400440532013000 as its example value, which is a well-known German IBAN. Pakistani IBANs start with PK followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like PK36SCBL0000001123456702 would be accurate. Using a German example misleads API consumers integrating with PKR accounts.

Suggested change
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1
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: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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 +28 to +35
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:

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.

P2Incorrect IBAN example for EGP

The iban field shows DE89370400440532013000, which is a German IBAN. Egyptian IBANs follow the format EG + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in DkkAccountInfo.yaml (DKK IBANs start with DK). Using country-appropriate examples improves clarity for integrators.

Suggested change
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:
iban:
type: string
description: The IBAN of the bank account
example: EG800002000156789012345180002
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: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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 +16 to +23
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- MOBILE_MONEY
accountNumber:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

The previous schema listed BANK_TRANSFER among the allowed USD payment rails; this PR removes it and adds MOBILE_MONEY instead. MOBILE_MONEY is an unusual rail for USD and could break existing integrations that pass BANK_TRANSFER for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 3 to 7
required:
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType
- fullName

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking required-field change in CopBeneficiary

countryOfResidence is dropped from required and documentNumber + documentType are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, GtqBeneficiary gains phoneNumber as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +15 to +18
items:
type: string
enum:
- BANK_TRANSFER

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.

P1MOBILE_MONEY removed from COP and GTQ payment rails

Both CopAccountInfo and GtqAccountInfo previously allowed MOBILE_MONEY alongside BANK_TRANSFER; the new schemas only list BANK_TRANSFER. Clients that currently submit COP or GTQ payments via MOBILE_MONEY will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 #385

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-180252 branch April 23, 2026 18:48
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)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' chore: Sync account schemas by lightspark-copybara[bot] · Pull Request #384 · lightsparkdev/grid-api · GitHub
Skip to content

chore: Sync account schemas - #384

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

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

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

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

Synced schemas:

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

Please review the changes before merging.

@vercel

vercelBot commented Apr 23, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 6:03pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(types): add bankName to BDT/EGP/GHS/JMD/PKR, add/remove phone fields, update requirements

openapi

feat(types): flatten account schemas, add required fields to USD/BDT/EGP/GHS/GTQ/JMD/PKR accounts

python

feat(api): add bank_name to account types, update payment_rails/beneficiary requirements

typescript

feat(api): add bankName to account types, update USD/COP/GTQ fields, update beneficiary types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

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

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

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

npm install https://pkg.stainless.com/s/grid-typescript/48cc8b52fac58ddde8c691a64006f2484fa37229/dist.tar.gz
grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/0da228116c78f26ede0542b7d8cee9247ddf8265/grid-0.0.1-py3-none-any.whl

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs 36 *AccountInfo YAML schemas and two beneficiary schemas from sparkcore, replacing allOf/$ref composition with fully self-contained inline definitions and adding per-currency field validation (IBAN patterns, routing numbers, phone formats, etc.).

  • P1 — USD payment rails: BANK_TRANSFER is removed and MOBILE_MONEY is added. MOBILE_MONEY is an atypical rail for USD; clients that currently submit BANK_TRANSFER for USD payments will fail validation after this change.
  • P1 — COP/GTQ payment rails: MOBILE_MONEY is removed from both CopAccountInfo and GtqAccountInfo, potentially breaking existing integrations that rely on that rail.
  • P1 — Beneficiary required fields: CopBeneficiary drops countryOfResidence from required and adds documentNumber/documentType as required; GtqBeneficiary adds phoneNumber as required — both are breaking changes for existing client payloads.

Confidence Score: 3/5

Hold for confirmation — three P1 breaking changes to payment rails and required beneficiary fields need explicit sign-off before merging.

Three distinct P1 findings involve dropped/replaced enum values in payment rails (USD, COP, GTQ) and newly required fields in beneficiary schemas (COP, GTQ) that will break existing client integrations without a migration window. These changes may be intentional syncs from sparkcore, but need explicit confirmation.

UsdAccountInfo.yaml, CopAccountInfo.yaml, GtqAccountInfo.yaml, CopBeneficiary.yaml, GtqBeneficiary.yaml

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlRefactored from allOf/ref pattern to inline schema; BANK_TRANSFER removed from payment rails and MOBILE_MONEY added — potentially breaking change
openapi/components/schemas/common/CopBeneficiary.yamldocumentNumber and documentType added as required fields while countryOfResidence dropped from required — breaking change for existing COP beneficiary creation
openapi/components/schemas/common/CopAccountInfo.yamlMOBILE_MONEY removed from COP payment rails enum; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqAccountInfo.yamlMOBILE_MONEY removed from GTQ payment rails; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber added as a required field — breaking change for existing GTQ beneficiary creation
openapi/components/schemas/common/PkrAccountInfo.yamlSchema inlined correctly; iban example uses an incorrect German IBAN placeholder instead of a PK-prefixed example
openapi/components/schemas/common/EgpAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of an EG-prefixed example
openapi/components/schemas/common/DkkAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of a DK-prefixed example
openapi/components/schemas/common/EurAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with correct validation patterns and examples
openapi/components/schemas/common/GbpAccountInfo.yamlCleanly inlined; sortCode and accountNumber added with correct UK-specific patterns
openapi/components/schemas/common/AedAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with UAE-specific pattern and correct examples
openapi/components/schemas/common/BrlAccountInfo.yamlCleanly inlined; pixKey, pixKeyType, and taxId fields added with correct Brazilian payment patterns
openapi/components/schemas/common/KesAccountInfo.yamlCleanly inlined; Kenya-specific phone pattern and provider field added correctly
openapi.yamlBundled OpenAPI spec updated to reflect all schema changes including USD BANK_TRANSFER → MOBILE_MONEY and COP/GTQ payment rail removals
mintlify/openapi.yamlMintlify docs bundle mirrors openapi.yaml changes; same P1 concerns apply

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/ AccountInfo schemas]
A -->|auto-sync| C[common/ Beneficiary schemas]
B --> D[external_accounts/ schemas]
B --> E[openapi.yaml / mintlify/openapi.yaml]
C --> E
subgraph Breaking Changes
F[UsdAccountInfo BANK_TRANSFER removed, MOBILE_MONEY added]
G[CopAccountInfo and GtqAccountInfo MOBILE_MONEY removed]
H[CopBeneficiary documentNumber + documentType now required]
I[GtqBeneficiary phoneNumber now required]
end
B --> F
B --> G
C --> H
C --> I
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/PkrAccountInfo.yaml
Line: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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/EgpAccountInfo.yaml
Line: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
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/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 +21 to +28
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1

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.

P2Incorrect IBAN example for PKR

The iban field uses DE89370400440532013000 as its example value, which is a well-known German IBAN. Pakistani IBANs start with PK followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like PK36SCBL0000001123456702 would be accurate. Using a German example misleads API consumers integrating with PKR accounts.

Suggested change
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1
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: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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 +28 to +35
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:

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.

P2Incorrect IBAN example for EGP

The iban field shows DE89370400440532013000, which is a German IBAN. Egyptian IBANs follow the format EG + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in DkkAccountInfo.yaml (DKK IBANs start with DK). Using country-appropriate examples improves clarity for integrators.

Suggested change
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:
iban:
type: string
description: The IBAN of the bank account
example: EG800002000156789012345180002
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: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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 +16 to +23
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- MOBILE_MONEY
accountNumber:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

The previous schema listed BANK_TRANSFER among the allowed USD payment rails; this PR removes it and adds MOBILE_MONEY instead. MOBILE_MONEY is an unusual rail for USD and could break existing integrations that pass BANK_TRANSFER for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 3 to 7
required:
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType
- fullName

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking required-field change in CopBeneficiary

countryOfResidence is dropped from required and documentNumber + documentType are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, GtqBeneficiary gains phoneNumber as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +15 to +18
items:
type: string
enum:
- BANK_TRANSFER

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.

P1MOBILE_MONEY removed from COP and GTQ payment rails

Both CopAccountInfo and GtqAccountInfo previously allowed MOBILE_MONEY alongside BANK_TRANSFER; the new schemas only list BANK_TRANSFER. Clients that currently submit COP or GTQ payments via MOBILE_MONEY will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 #385

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-180252 branch April 23, 2026 18:48
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)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' chore: Sync account schemas by lightspark-copybara[bot] · Pull Request #384 · lightsparkdev/grid-api · GitHub
Skip to content

chore: Sync account schemas - #384

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

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

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

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

Synced schemas:

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

Please review the changes before merging.

@vercel

vercelBot commented Apr 23, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 6:03pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(types): add bankName to BDT/EGP/GHS/JMD/PKR, add/remove phone fields, update requirements

openapi

feat(types): flatten account schemas, add required fields to USD/BDT/EGP/GHS/GTQ/JMD/PKR accounts

python

feat(api): add bank_name to account types, update payment_rails/beneficiary requirements

typescript

feat(api): add bankName to account types, update USD/COP/GTQ fields, update beneficiary types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

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

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

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

npm install https://pkg.stainless.com/s/grid-typescript/48cc8b52fac58ddde8c691a64006f2484fa37229/dist.tar.gz
grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/0da228116c78f26ede0542b7d8cee9247ddf8265/grid-0.0.1-py3-none-any.whl

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs 36 *AccountInfo YAML schemas and two beneficiary schemas from sparkcore, replacing allOf/$ref composition with fully self-contained inline definitions and adding per-currency field validation (IBAN patterns, routing numbers, phone formats, etc.).

  • P1 — USD payment rails: BANK_TRANSFER is removed and MOBILE_MONEY is added. MOBILE_MONEY is an atypical rail for USD; clients that currently submit BANK_TRANSFER for USD payments will fail validation after this change.
  • P1 — COP/GTQ payment rails: MOBILE_MONEY is removed from both CopAccountInfo and GtqAccountInfo, potentially breaking existing integrations that rely on that rail.
  • P1 — Beneficiary required fields: CopBeneficiary drops countryOfResidence from required and adds documentNumber/documentType as required; GtqBeneficiary adds phoneNumber as required — both are breaking changes for existing client payloads.

Confidence Score: 3/5

Hold for confirmation — three P1 breaking changes to payment rails and required beneficiary fields need explicit sign-off before merging.

Three distinct P1 findings involve dropped/replaced enum values in payment rails (USD, COP, GTQ) and newly required fields in beneficiary schemas (COP, GTQ) that will break existing client integrations without a migration window. These changes may be intentional syncs from sparkcore, but need explicit confirmation.

UsdAccountInfo.yaml, CopAccountInfo.yaml, GtqAccountInfo.yaml, CopBeneficiary.yaml, GtqBeneficiary.yaml

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlRefactored from allOf/ref pattern to inline schema; BANK_TRANSFER removed from payment rails and MOBILE_MONEY added — potentially breaking change
openapi/components/schemas/common/CopBeneficiary.yamldocumentNumber and documentType added as required fields while countryOfResidence dropped from required — breaking change for existing COP beneficiary creation
openapi/components/schemas/common/CopAccountInfo.yamlMOBILE_MONEY removed from COP payment rails enum; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqAccountInfo.yamlMOBILE_MONEY removed from GTQ payment rails; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber added as a required field — breaking change for existing GTQ beneficiary creation
openapi/components/schemas/common/PkrAccountInfo.yamlSchema inlined correctly; iban example uses an incorrect German IBAN placeholder instead of a PK-prefixed example
openapi/components/schemas/common/EgpAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of an EG-prefixed example
openapi/components/schemas/common/DkkAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of a DK-prefixed example
openapi/components/schemas/common/EurAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with correct validation patterns and examples
openapi/components/schemas/common/GbpAccountInfo.yamlCleanly inlined; sortCode and accountNumber added with correct UK-specific patterns
openapi/components/schemas/common/AedAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with UAE-specific pattern and correct examples
openapi/components/schemas/common/BrlAccountInfo.yamlCleanly inlined; pixKey, pixKeyType, and taxId fields added with correct Brazilian payment patterns
openapi/components/schemas/common/KesAccountInfo.yamlCleanly inlined; Kenya-specific phone pattern and provider field added correctly
openapi.yamlBundled OpenAPI spec updated to reflect all schema changes including USD BANK_TRANSFER → MOBILE_MONEY and COP/GTQ payment rail removals
mintlify/openapi.yamlMintlify docs bundle mirrors openapi.yaml changes; same P1 concerns apply

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/ AccountInfo schemas]
A -->|auto-sync| C[common/ Beneficiary schemas]
B --> D[external_accounts/ schemas]
B --> E[openapi.yaml / mintlify/openapi.yaml]
C --> E
subgraph Breaking Changes
F[UsdAccountInfo BANK_TRANSFER removed, MOBILE_MONEY added]
G[CopAccountInfo and GtqAccountInfo MOBILE_MONEY removed]
H[CopBeneficiary documentNumber + documentType now required]
I[GtqBeneficiary phoneNumber now required]
end
B --> F
B --> G
C --> H
C --> I
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/PkrAccountInfo.yaml
Line: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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/EgpAccountInfo.yaml
Line: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
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/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 +21 to +28
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1

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.

P2Incorrect IBAN example for PKR

The iban field uses DE89370400440532013000 as its example value, which is a well-known German IBAN. Pakistani IBANs start with PK followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like PK36SCBL0000001123456702 would be accurate. Using a German example misleads API consumers integrating with PKR accounts.

Suggested change
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1
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: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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 +28 to +35
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:

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.

P2Incorrect IBAN example for EGP

The iban field shows DE89370400440532013000, which is a German IBAN. Egyptian IBANs follow the format EG + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in DkkAccountInfo.yaml (DKK IBANs start with DK). Using country-appropriate examples improves clarity for integrators.

Suggested change
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:
iban:
type: string
description: The IBAN of the bank account
example: EG800002000156789012345180002
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: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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 +16 to +23
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- MOBILE_MONEY
accountNumber:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

The previous schema listed BANK_TRANSFER among the allowed USD payment rails; this PR removes it and adds MOBILE_MONEY instead. MOBILE_MONEY is an unusual rail for USD and could break existing integrations that pass BANK_TRANSFER for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 3 to 7
required:
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType
- fullName

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking required-field change in CopBeneficiary

countryOfResidence is dropped from required and documentNumber + documentType are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, GtqBeneficiary gains phoneNumber as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +15 to +18
items:
type: string
enum:
- BANK_TRANSFER

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.

P1MOBILE_MONEY removed from COP and GTQ payment rails

Both CopAccountInfo and GtqAccountInfo previously allowed MOBILE_MONEY alongside BANK_TRANSFER; the new schemas only list BANK_TRANSFER. Clients that currently submit COP or GTQ payments via MOBILE_MONEY will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 #385

@lightspark-copybara
lightspark-copybaraBot deleted the auto/sync-grid-schemas-20260423-180252 branch April 23, 2026 18:48
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)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); chore: Sync account schemas by lightspark-copybara[bot] · Pull Request #384 · lightsparkdev/grid-api · GitHub
Skip to content

chore: Sync account schemas - #384

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

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

Conversation

@lightspark-copybara

Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

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

Synced schemas:

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

Please review the changes before merging.

@vercel

vercelBot commented Apr 23, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 23, 2026 6:03pm

Request Review

@github-actions

github-actionsBot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds

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

kotlin

feat(types): add bankName to BDT/EGP/GHS/JMD/PKR, add/remove phone fields, update requirements

openapi

feat(types): flatten account schemas, add required fields to USD/BDT/EGP/GHS/GTQ/JMD/PKR accounts

python

feat(api): add bank_name to account types, update payment_rails/beneficiary requirements

typescript

feat(api): add bankName to account types, update USD/COP/GTQ fields, update beneficiary types

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

grid-openapistudio · code · diff

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

grid-kotlinstudio · code · diff

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

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

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

npm install https://pkg.stainless.com/s/grid-typescript/48cc8b52fac58ddde8c691a64006f2484fa37229/dist.tar.gz
grid-pythonstudio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/0da228116c78f26ede0542b7d8cee9247ddf8265/grid-0.0.1-py3-none-any.whl

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs 36 *AccountInfo YAML schemas and two beneficiary schemas from sparkcore, replacing allOf/$ref composition with fully self-contained inline definitions and adding per-currency field validation (IBAN patterns, routing numbers, phone formats, etc.).

  • P1 — USD payment rails: BANK_TRANSFER is removed and MOBILE_MONEY is added. MOBILE_MONEY is an atypical rail for USD; clients that currently submit BANK_TRANSFER for USD payments will fail validation after this change.
  • P1 — COP/GTQ payment rails: MOBILE_MONEY is removed from both CopAccountInfo and GtqAccountInfo, potentially breaking existing integrations that rely on that rail.
  • P1 — Beneficiary required fields: CopBeneficiary drops countryOfResidence from required and adds documentNumber/documentType as required; GtqBeneficiary adds phoneNumber as required — both are breaking changes for existing client payloads.

Confidence Score: 3/5

Hold for confirmation — three P1 breaking changes to payment rails and required beneficiary fields need explicit sign-off before merging.

Three distinct P1 findings involve dropped/replaced enum values in payment rails (USD, COP, GTQ) and newly required fields in beneficiary schemas (COP, GTQ) that will break existing client integrations without a migration window. These changes may be intentional syncs from sparkcore, but need explicit confirmation.

UsdAccountInfo.yaml, CopAccountInfo.yaml, GtqAccountInfo.yaml, CopBeneficiary.yaml, GtqBeneficiary.yaml

Important Files Changed

FilenameOverview
openapi/components/schemas/common/UsdAccountInfo.yamlRefactored from allOf/ref pattern to inline schema; BANK_TRANSFER removed from payment rails and MOBILE_MONEY added — potentially breaking change
openapi/components/schemas/common/CopBeneficiary.yamldocumentNumber and documentType added as required fields while countryOfResidence dropped from required — breaking change for existing COP beneficiary creation
openapi/components/schemas/common/CopAccountInfo.yamlMOBILE_MONEY removed from COP payment rails enum; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqAccountInfo.yamlMOBILE_MONEY removed from GTQ payment rails; schema fully inlined from allOf/ref
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber added as a required field — breaking change for existing GTQ beneficiary creation
openapi/components/schemas/common/PkrAccountInfo.yamlSchema inlined correctly; iban example uses an incorrect German IBAN placeholder instead of a PK-prefixed example
openapi/components/schemas/common/EgpAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of an EG-prefixed example
openapi/components/schemas/common/DkkAccountInfo.yamlSchema inlined correctly; iban example uses a German IBAN placeholder instead of a DK-prefixed example
openapi/components/schemas/common/EurAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with correct validation patterns and examples
openapi/components/schemas/common/GbpAccountInfo.yamlCleanly inlined; sortCode and accountNumber added with correct UK-specific patterns
openapi/components/schemas/common/AedAccountInfo.yamlCleanly inlined; iban and swiftCode fields added with UAE-specific pattern and correct examples
openapi/components/schemas/common/BrlAccountInfo.yamlCleanly inlined; pixKey, pixKeyType, and taxId fields added with correct Brazilian payment patterns
openapi/components/schemas/common/KesAccountInfo.yamlCleanly inlined; Kenya-specific phone pattern and provider field added correctly
openapi.yamlBundled OpenAPI spec updated to reflect all schema changes including USD BANK_TRANSFER → MOBILE_MONEY and COP/GTQ payment rail removals
mintlify/openapi.yamlMintlify docs bundle mirrors openapi.yaml changes; same P1 concerns apply

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[sparkcore VASP adapter definitions] -->|auto-sync| B[common/ AccountInfo schemas]
A -->|auto-sync| C[common/ Beneficiary schemas]
B --> D[external_accounts/ schemas]
B --> E[openapi.yaml / mintlify/openapi.yaml]
C --> E
subgraph Breaking Changes
F[UsdAccountInfo BANK_TRANSFER removed, MOBILE_MONEY added]
G[CopAccountInfo and GtqAccountInfo MOBILE_MONEY removed]
H[CopBeneficiary documentNumber + documentType now required]
I[GtqBeneficiary phoneNumber now required]
end
B --> F
B --> G
C --> H
C --> I
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/PkrAccountInfo.yaml
Line: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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/EgpAccountInfo.yaml
Line: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
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/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 +21 to +28
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1

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.

P2Incorrect IBAN example for PKR

The iban field uses DE89370400440532013000 as its example value, which is a well-known German IBAN. Pakistani IBANs start with PK followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like PK36SCBL0000001123456702 would be accurate. Using a German example misleads API consumers integrating with PKR accounts.

Suggested change
type: string
description: The name of the bank
minLength: 1
maxLength: 255
accountNumber:
type: string
description: The account number of the bank
minLength: 1
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: 21-28
Comment:
**Incorrect IBAN example for PKR**
The `iban` field uses `DE89370400440532013000` as its example value, which is a well-known German IBAN. Pakistani IBANs start with `PK` followed by 2 check digits, a 4-character bank code, and 16 digits (24 characters total). An example like `PK36SCBL0000001123456702` would be accurate. Using a German example misleads API consumers integrating with PKR accounts.
```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 +28 to +35
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:

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.

P2Incorrect IBAN example for EGP

The iban field shows DE89370400440532013000, which is a German IBAN. Egyptian IBANs follow the format EG + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in DkkAccountInfo.yaml (DKK IBANs start with DK). Using country-appropriate examples improves clarity for integrators.

Suggested change
iban:
type: string
description: The IBAN of the bank account
example: DE89370400440532013000
minLength: 15
maxLength: 34
pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
swiftCode:
iban:
type: string
description: The IBAN of the bank account
example: EG800002000156789012345180002
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: 28-35
Comment:
**Incorrect IBAN example for EGP**
The `iban` field shows `DE89370400440532013000`, which is a German IBAN. Egyptian IBANs follow the format `EG` + 2 check digits + 25 alphanumeric characters (29 chars total). The same German placeholder also appears in `DkkAccountInfo.yaml` (DKK IBANs start with `DK`). Using country-appropriate examples improves clarity for integrators.
```suggestion iban: type: string description: The IBAN of the bank account example: EG800002000156789012345180002 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 +16 to +23
type: string
enum:
- ACH
- WIRE
- RTP
- FEDNOW
- MOBILE_MONEY
accountNumber:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1BANK_TRANSFER removed and MOBILE_MONEY added to USD payment rails

The previous schema listed BANK_TRANSFER among the allowed USD payment rails; this PR removes it and adds MOBILE_MONEY instead. MOBILE_MONEY is an unusual rail for USD and could break existing integrations that pass BANK_TRANSFER for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfo.yaml
Line: 16-23
Comment:
**`BANK_TRANSFER` removed and `MOBILE_MONEY` added to USD payment rails**
The previous schema listed `BANK_TRANSFER` among the allowed USD payment rails; this PR removes it and adds `MOBILE_MONEY` instead. `MOBILE_MONEY` is an unusual rail for USD and could break existing integrations that pass `BANK_TRANSFER` for USD accounts. Is this intentional — i.e., does the USD adapter in sparkcore actually support mobile money but no longer supports generic bank transfer?
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines 3 to 7
required:
- beneficiaryType
- countryOfResidence
- documentNumber
- documentType
- fullName

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1Breaking required-field change in CopBeneficiary

countryOfResidence is dropped from required and documentNumber + documentType are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, GtqBeneficiary gains phoneNumber as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopBeneficiary.yaml
Line: 3-7
Comment:
**Breaking required-field change in `CopBeneficiary`**`countryOfResidence` is dropped from `required` and `documentNumber` + `documentType` are added as required. Any existing client that creates a COP beneficiary without providing a document number/type will now receive a validation error. Similarly, `GtqBeneficiary` gains `phoneNumber` as a new required field. If existing integrations are in production, this is a breaking API change that warrants a version bump or a migration window.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +15 to +18
items:
type: string
enum:
- BANK_TRANSFER

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.

P1MOBILE_MONEY removed from COP and GTQ payment rails

Both CopAccountInfo and GtqAccountInfo previously allowed MOBILE_MONEY alongside BANK_TRANSFER; the new schemas only list BANK_TRANSFER. Clients that currently submit COP or GTQ payments via MOBILE_MONEY will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfo.yaml
Line: 15-18
Comment:
**`MOBILE_MONEY` removed from COP and GTQ payment rails**
Both `CopAccountInfo` and `GtqAccountInfo` previously allowed `MOBILE_MONEY` alongside `BANK_TRANSFER`; the new schemas only list `BANK_TRANSFER`. Clients that currently submit COP or GTQ payments via `MOBILE_MONEY` will fail schema validation after this change. Please confirm whether the corresponding sparkcore adapters have intentionally dropped this rail.
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 #385

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