Skip to content

Revert "chore: Sync account schemas" - #395

Merged
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919
Apr 24, 2026
Merged

Revert "chore: Sync account schemas"#395
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919

Conversation

@shreyav

Copy link
Copy Markdown
Contributor

Reverts #388

@vercel

vercelBot commented Apr 24, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 24, 2026 8:31pm

Request Review

@github-actions

github-actionsBot commented Apr 24, 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 phoneNumber/bankAccountType, remove bankName, update beneficiary fields

openapi

feat(api): add bankAccountType/phoneNumber fields, payment methods to USD/COP/GTQ, update types

python

fix(types): update beneficiary optionality, remove bank_name, add phone_number across currencies

typescript

feat(api): update external account types for USD/COP/GTQ/BDT/EGP/GHS/JMD/PKR
⚠️grid-openapistudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗

⚠️grid-pythonstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/14b6b8b76b99eead85d84abf1d886aa7fffd3f5c/grid-0.0.1-py3-none-any.whl
⚠️grid-kotlinstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

⚠️grid-typescriptstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

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

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR reverts #388 ("chore: Sync account schemas"), restoring previous account info schemas across 42 files. The bulk of changes are removing example blocks from ~30 AccountInfoBase schemas and reverting field-level adjustments in COP, GTQ, USD, BDT, EGP, GHS, JMD, and PKR schemas.

  • CopAccountInfoBase: bankName is restored as a required field but without minLength/maxLength constraints — the pre-chore: Sync account schemas #388 version lacked these guards, meaning an empty string \"\" passes schema validation for a required field.
  • UsdAccountInfoBase: bankAccountType is reintroduced as optional while its description says "Required for certain corridors (e.g., El Salvador)" — a mismatch between documentation intent and schema enforcement.

Confidence Score: 4/5

Safe to merge with a minor fix: bankName in CopAccountInfoBase should have minLength: 1 to prevent empty-string submissions on a required field.

One P1 finding: the required bankName field in CopAccountInfoBase has no minLength constraint, allowing empty strings past schema validation. The rest of the changes (example block removals, beneficiary required-field relaxations, new MOBILE_MONEY/BANK_TRANSFER enum values) are clean. The bankAccountType documentation note in UsdAccountInfoBase is a P2 concern only.

openapi/components/schemas/common/CopAccountInfoBase.yaml — required bankName field missing minLength constraint.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/CopAccountInfoBase.yamlReverts bankName to required-but-unconstrained (no minLength/maxLength), adds required phoneNumber, adds MOBILE_MONEY payment method — bankName allows empty strings.
openapi/components/schemas/common/UsdAccountInfoBase.yamlAdds optional bankAccountType (described as corridor-conditionally required) and removes the example block; conditional requirement not enforced by schema.
openapi/components/schemas/common/GtqAccountInfoBase.yamlReverts to phoneNumber-only account schema, removing bankName and bankAccountType entirely from properties and required list.
openapi/components/schemas/common/UsdBeneficiary.yamlRemoves address, birthDate, and nationality from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopBeneficiary.yamlSwaps required fields: documentNumber and documentType removed; countryOfResidence becomes required.
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber removed from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/GtqAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/UsdAccountInfo.yamlAdds BANK_TRANSFER as a valid payment method enum value alongside ACH, WIRE, RTP, FEDNOW.
openapi/components/schemas/common/AedAccountInfoBase.yamlExample block removed; no structural changes.
openapi/components/schemas/common/BdtAccountInfoBase.yamlbankName removed from required list and properties, example block removed.
openapi/components/schemas/common/EgpAccountInfoBase.yamlbankName removed from required list and properties, example block removed.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Account Info Request] --> B{Currency / Corridor}
B -->|COP| C[CopAccountInfoBase\nrequired: accountType, accountNumber,\nbankAccountType, bankName, phoneNumber]
B -->|GTQ| D[GtqAccountInfoBase\nrequired: accountType, accountNumber, phoneNumber]
B -->|USD| E[UsdAccountInfoBase\nrequired: accountType, accountNumber, routingNumber\noptional: bankAccountType ⚠️ required for El Salvador]
B -->|Other| F[Currency-specific schema\nexamples removed]
C --> G{Payment type}
D --> G
G -->|BANK_TRANSFER| H[Bank Transfer flow]
G -->|MOBILE_MONEY| I[Mobile Money flow ✨ new enum]
E --> J{Payment type}
J -->|ACH / WIRE / RTP / FEDNOW| K[Existing US rails]
J -->|BANK_TRANSFER| L[Bank Transfer ✨ new enum]
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/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
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/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

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

Comment on lines +24 to +26
bankName:
type: string
description: The name of the bank

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.

P1bankName required but lacks length constraints

bankName is listed as required but has no minLength or maxLength constraints, meaning an empty string "" would pass schema validation. The schema removed from PR #388 had minLength: 1, maxLength: 255 on this field. Without minLength: 1, a caller can submit an empty bank name and the spec won't reject it.

Suggested change
bankName:
type: string
description: The name of the bank
bankName:
type: string
description: The name of the bank
minLength: 1
maxLength: 255
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +23 to +28
bankAccountType:
type: string
description: The bank account type. Required for certain corridors (e.g., El Salvador).
enum:
- CHECKING
- SAVINGS

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.

P2bankAccountType described as conditionally required but not enforced by schema

The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the required array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (if/then) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@shreyav
shreyav merged commit c302e52 into mainApr 24, 2026
6 of 7 checks passed
@shreyav
shreyav deleted the revert-388-auto/sync-grid-schemas-20260423-220919 branch April 24, 2026 20:34
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.

2 participants

@shreyav@JasonCWang
, '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" + '
Revert "chore: Sync account schemas" by shreyav · Pull Request #395 · lightsparkdev/grid-api · GitHub
Skip to content

Revert "chore: Sync account schemas" - #395

Merged
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919
Apr 24, 2026
Merged

Revert "chore: Sync account schemas"#395
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919

Conversation

@shreyav

Copy link
Copy Markdown
Contributor

Reverts #388

@vercel

vercelBot commented Apr 24, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 24, 2026 8:31pm

Request Review

@github-actions

github-actionsBot commented Apr 24, 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 phoneNumber/bankAccountType, remove bankName, update beneficiary fields

openapi

feat(api): add bankAccountType/phoneNumber fields, payment methods to USD/COP/GTQ, update types

python

fix(types): update beneficiary optionality, remove bank_name, add phone_number across currencies

typescript

feat(api): update external account types for USD/COP/GTQ/BDT/EGP/GHS/JMD/PKR
⚠️grid-openapistudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗

⚠️grid-pythonstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/14b6b8b76b99eead85d84abf1d886aa7fffd3f5c/grid-0.0.1-py3-none-any.whl
⚠️grid-kotlinstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

⚠️grid-typescriptstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

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

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR reverts #388 ("chore: Sync account schemas"), restoring previous account info schemas across 42 files. The bulk of changes are removing example blocks from ~30 AccountInfoBase schemas and reverting field-level adjustments in COP, GTQ, USD, BDT, EGP, GHS, JMD, and PKR schemas.

  • CopAccountInfoBase: bankName is restored as a required field but without minLength/maxLength constraints — the pre-chore: Sync account schemas #388 version lacked these guards, meaning an empty string \"\" passes schema validation for a required field.
  • UsdAccountInfoBase: bankAccountType is reintroduced as optional while its description says "Required for certain corridors (e.g., El Salvador)" — a mismatch between documentation intent and schema enforcement.

Confidence Score: 4/5

Safe to merge with a minor fix: bankName in CopAccountInfoBase should have minLength: 1 to prevent empty-string submissions on a required field.

One P1 finding: the required bankName field in CopAccountInfoBase has no minLength constraint, allowing empty strings past schema validation. The rest of the changes (example block removals, beneficiary required-field relaxations, new MOBILE_MONEY/BANK_TRANSFER enum values) are clean. The bankAccountType documentation note in UsdAccountInfoBase is a P2 concern only.

openapi/components/schemas/common/CopAccountInfoBase.yaml — required bankName field missing minLength constraint.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/CopAccountInfoBase.yamlReverts bankName to required-but-unconstrained (no minLength/maxLength), adds required phoneNumber, adds MOBILE_MONEY payment method — bankName allows empty strings.
openapi/components/schemas/common/UsdAccountInfoBase.yamlAdds optional bankAccountType (described as corridor-conditionally required) and removes the example block; conditional requirement not enforced by schema.
openapi/components/schemas/common/GtqAccountInfoBase.yamlReverts to phoneNumber-only account schema, removing bankName and bankAccountType entirely from properties and required list.
openapi/components/schemas/common/UsdBeneficiary.yamlRemoves address, birthDate, and nationality from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopBeneficiary.yamlSwaps required fields: documentNumber and documentType removed; countryOfResidence becomes required.
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber removed from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/GtqAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/UsdAccountInfo.yamlAdds BANK_TRANSFER as a valid payment method enum value alongside ACH, WIRE, RTP, FEDNOW.
openapi/components/schemas/common/AedAccountInfoBase.yamlExample block removed; no structural changes.
openapi/components/schemas/common/BdtAccountInfoBase.yamlbankName removed from required list and properties, example block removed.
openapi/components/schemas/common/EgpAccountInfoBase.yamlbankName removed from required list and properties, example block removed.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Account Info Request] --> B{Currency / Corridor}
B -->|COP| C[CopAccountInfoBase\nrequired: accountType, accountNumber,\nbankAccountType, bankName, phoneNumber]
B -->|GTQ| D[GtqAccountInfoBase\nrequired: accountType, accountNumber, phoneNumber]
B -->|USD| E[UsdAccountInfoBase\nrequired: accountType, accountNumber, routingNumber\noptional: bankAccountType ⚠️ required for El Salvador]
B -->|Other| F[Currency-specific schema\nexamples removed]
C --> G{Payment type}
D --> G
G -->|BANK_TRANSFER| H[Bank Transfer flow]
G -->|MOBILE_MONEY| I[Mobile Money flow ✨ new enum]
E --> J{Payment type}
J -->|ACH / WIRE / RTP / FEDNOW| K[Existing US rails]
J -->|BANK_TRANSFER| L[Bank Transfer ✨ new enum]
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/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
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/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

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

Comment on lines +24 to +26
bankName:
type: string
description: The name of the bank

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.

P1bankName required but lacks length constraints

bankName is listed as required but has no minLength or maxLength constraints, meaning an empty string "" would pass schema validation. The schema removed from PR #388 had minLength: 1, maxLength: 255 on this field. Without minLength: 1, a caller can submit an empty bank name and the spec won't reject it.

Suggested change
bankName:
type: string
description: The name of the bank
bankName:
type: string
description: The name of the bank
minLength: 1
maxLength: 255
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +23 to +28
bankAccountType:
type: string
description: The bank account type. Required for certain corridors (e.g., El Salvador).
enum:
- CHECKING
- SAVINGS

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.

P2bankAccountType described as conditionally required but not enforced by schema

The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the required array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (if/then) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@shreyav
shreyav merged commit c302e52 into mainApr 24, 2026
6 of 7 checks passed
@shreyav
shreyav deleted the revert-388-auto/sync-grid-schemas-20260423-220919 branch April 24, 2026 20:34
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.

2 participants

@shreyav@JasonCWang
, '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('^' + ".*" + ' Revert "chore: Sync account schemas" by shreyav · Pull Request #395 · lightsparkdev/grid-api · GitHub
Skip to content

Revert "chore: Sync account schemas" - #395

Merged
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919
Apr 24, 2026
Merged

Revert "chore: Sync account schemas"#395
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919

Conversation

@shreyav

Copy link
Copy Markdown
Contributor

Reverts #388

@vercel

vercelBot commented Apr 24, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 24, 2026 8:31pm

Request Review

@github-actions

github-actionsBot commented Apr 24, 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 phoneNumber/bankAccountType, remove bankName, update beneficiary fields

openapi

feat(api): add bankAccountType/phoneNumber fields, payment methods to USD/COP/GTQ, update types

python

fix(types): update beneficiary optionality, remove bank_name, add phone_number across currencies

typescript

feat(api): update external account types for USD/COP/GTQ/BDT/EGP/GHS/JMD/PKR
⚠️grid-openapistudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗

⚠️grid-pythonstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/14b6b8b76b99eead85d84abf1d886aa7fffd3f5c/grid-0.0.1-py3-none-any.whl
⚠️grid-kotlinstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

⚠️grid-typescriptstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

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

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR reverts #388 ("chore: Sync account schemas"), restoring previous account info schemas across 42 files. The bulk of changes are removing example blocks from ~30 AccountInfoBase schemas and reverting field-level adjustments in COP, GTQ, USD, BDT, EGP, GHS, JMD, and PKR schemas.

  • CopAccountInfoBase: bankName is restored as a required field but without minLength/maxLength constraints — the pre-chore: Sync account schemas #388 version lacked these guards, meaning an empty string \"\" passes schema validation for a required field.
  • UsdAccountInfoBase: bankAccountType is reintroduced as optional while its description says "Required for certain corridors (e.g., El Salvador)" — a mismatch between documentation intent and schema enforcement.

Confidence Score: 4/5

Safe to merge with a minor fix: bankName in CopAccountInfoBase should have minLength: 1 to prevent empty-string submissions on a required field.

One P1 finding: the required bankName field in CopAccountInfoBase has no minLength constraint, allowing empty strings past schema validation. The rest of the changes (example block removals, beneficiary required-field relaxations, new MOBILE_MONEY/BANK_TRANSFER enum values) are clean. The bankAccountType documentation note in UsdAccountInfoBase is a P2 concern only.

openapi/components/schemas/common/CopAccountInfoBase.yaml — required bankName field missing minLength constraint.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/CopAccountInfoBase.yamlReverts bankName to required-but-unconstrained (no minLength/maxLength), adds required phoneNumber, adds MOBILE_MONEY payment method — bankName allows empty strings.
openapi/components/schemas/common/UsdAccountInfoBase.yamlAdds optional bankAccountType (described as corridor-conditionally required) and removes the example block; conditional requirement not enforced by schema.
openapi/components/schemas/common/GtqAccountInfoBase.yamlReverts to phoneNumber-only account schema, removing bankName and bankAccountType entirely from properties and required list.
openapi/components/schemas/common/UsdBeneficiary.yamlRemoves address, birthDate, and nationality from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopBeneficiary.yamlSwaps required fields: documentNumber and documentType removed; countryOfResidence becomes required.
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber removed from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/GtqAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/UsdAccountInfo.yamlAdds BANK_TRANSFER as a valid payment method enum value alongside ACH, WIRE, RTP, FEDNOW.
openapi/components/schemas/common/AedAccountInfoBase.yamlExample block removed; no structural changes.
openapi/components/schemas/common/BdtAccountInfoBase.yamlbankName removed from required list and properties, example block removed.
openapi/components/schemas/common/EgpAccountInfoBase.yamlbankName removed from required list and properties, example block removed.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Account Info Request] --> B{Currency / Corridor}
B -->|COP| C[CopAccountInfoBase\nrequired: accountType, accountNumber,\nbankAccountType, bankName, phoneNumber]
B -->|GTQ| D[GtqAccountInfoBase\nrequired: accountType, accountNumber, phoneNumber]
B -->|USD| E[UsdAccountInfoBase\nrequired: accountType, accountNumber, routingNumber\noptional: bankAccountType ⚠️ required for El Salvador]
B -->|Other| F[Currency-specific schema\nexamples removed]
C --> G{Payment type}
D --> G
G -->|BANK_TRANSFER| H[Bank Transfer flow]
G -->|MOBILE_MONEY| I[Mobile Money flow ✨ new enum]
E --> J{Payment type}
J -->|ACH / WIRE / RTP / FEDNOW| K[Existing US rails]
J -->|BANK_TRANSFER| L[Bank Transfer ✨ new enum]
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/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
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/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

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

Comment on lines +24 to +26
bankName:
type: string
description: The name of the bank

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.

P1bankName required but lacks length constraints

bankName is listed as required but has no minLength or maxLength constraints, meaning an empty string "" would pass schema validation. The schema removed from PR #388 had minLength: 1, maxLength: 255 on this field. Without minLength: 1, a caller can submit an empty bank name and the spec won't reject it.

Suggested change
bankName:
type: string
description: The name of the bank
bankName:
type: string
description: The name of the bank
minLength: 1
maxLength: 255
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +23 to +28
bankAccountType:
type: string
description: The bank account type. Required for certain corridors (e.g., El Salvador).
enum:
- CHECKING
- SAVINGS

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.

P2bankAccountType described as conditionally required but not enforced by schema

The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the required array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (if/then) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@shreyav
shreyav merged commit c302e52 into mainApr 24, 2026
6 of 7 checks passed
@shreyav
shreyav deleted the revert-388-auto/sync-grid-schemas-20260423-220919 branch April 24, 2026 20:34
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.

2 participants

@shreyav@JasonCWang
, '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('^' + ".*" + ' Revert "chore: Sync account schemas" by shreyav · Pull Request #395 · lightsparkdev/grid-api · GitHub
Skip to content

Revert "chore: Sync account schemas" - #395

Merged
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919
Apr 24, 2026
Merged

Revert "chore: Sync account schemas"#395
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919

Conversation

@shreyav

Copy link
Copy Markdown
Contributor

Reverts #388

@vercel

vercelBot commented Apr 24, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 24, 2026 8:31pm

Request Review

@github-actions

github-actionsBot commented Apr 24, 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 phoneNumber/bankAccountType, remove bankName, update beneficiary fields

openapi

feat(api): add bankAccountType/phoneNumber fields, payment methods to USD/COP/GTQ, update types

python

fix(types): update beneficiary optionality, remove bank_name, add phone_number across currencies

typescript

feat(api): update external account types for USD/COP/GTQ/BDT/EGP/GHS/JMD/PKR
⚠️grid-openapistudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗

⚠️grid-pythonstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/14b6b8b76b99eead85d84abf1d886aa7fffd3f5c/grid-0.0.1-py3-none-any.whl
⚠️grid-kotlinstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

⚠️grid-typescriptstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

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

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR reverts #388 ("chore: Sync account schemas"), restoring previous account info schemas across 42 files. The bulk of changes are removing example blocks from ~30 AccountInfoBase schemas and reverting field-level adjustments in COP, GTQ, USD, BDT, EGP, GHS, JMD, and PKR schemas.

  • CopAccountInfoBase: bankName is restored as a required field but without minLength/maxLength constraints — the pre-chore: Sync account schemas #388 version lacked these guards, meaning an empty string \"\" passes schema validation for a required field.
  • UsdAccountInfoBase: bankAccountType is reintroduced as optional while its description says "Required for certain corridors (e.g., El Salvador)" — a mismatch between documentation intent and schema enforcement.

Confidence Score: 4/5

Safe to merge with a minor fix: bankName in CopAccountInfoBase should have minLength: 1 to prevent empty-string submissions on a required field.

One P1 finding: the required bankName field in CopAccountInfoBase has no minLength constraint, allowing empty strings past schema validation. The rest of the changes (example block removals, beneficiary required-field relaxations, new MOBILE_MONEY/BANK_TRANSFER enum values) are clean. The bankAccountType documentation note in UsdAccountInfoBase is a P2 concern only.

openapi/components/schemas/common/CopAccountInfoBase.yaml — required bankName field missing minLength constraint.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/CopAccountInfoBase.yamlReverts bankName to required-but-unconstrained (no minLength/maxLength), adds required phoneNumber, adds MOBILE_MONEY payment method — bankName allows empty strings.
openapi/components/schemas/common/UsdAccountInfoBase.yamlAdds optional bankAccountType (described as corridor-conditionally required) and removes the example block; conditional requirement not enforced by schema.
openapi/components/schemas/common/GtqAccountInfoBase.yamlReverts to phoneNumber-only account schema, removing bankName and bankAccountType entirely from properties and required list.
openapi/components/schemas/common/UsdBeneficiary.yamlRemoves address, birthDate, and nationality from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopBeneficiary.yamlSwaps required fields: documentNumber and documentType removed; countryOfResidence becomes required.
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber removed from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/GtqAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/UsdAccountInfo.yamlAdds BANK_TRANSFER as a valid payment method enum value alongside ACH, WIRE, RTP, FEDNOW.
openapi/components/schemas/common/AedAccountInfoBase.yamlExample block removed; no structural changes.
openapi/components/schemas/common/BdtAccountInfoBase.yamlbankName removed from required list and properties, example block removed.
openapi/components/schemas/common/EgpAccountInfoBase.yamlbankName removed from required list and properties, example block removed.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Account Info Request] --> B{Currency / Corridor}
B -->|COP| C[CopAccountInfoBase\nrequired: accountType, accountNumber,\nbankAccountType, bankName, phoneNumber]
B -->|GTQ| D[GtqAccountInfoBase\nrequired: accountType, accountNumber, phoneNumber]
B -->|USD| E[UsdAccountInfoBase\nrequired: accountType, accountNumber, routingNumber\noptional: bankAccountType ⚠️ required for El Salvador]
B -->|Other| F[Currency-specific schema\nexamples removed]
C --> G{Payment type}
D --> G
G -->|BANK_TRANSFER| H[Bank Transfer flow]
G -->|MOBILE_MONEY| I[Mobile Money flow ✨ new enum]
E --> J{Payment type}
J -->|ACH / WIRE / RTP / FEDNOW| K[Existing US rails]
J -->|BANK_TRANSFER| L[Bank Transfer ✨ new enum]
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/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
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/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

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

Comment on lines +24 to +26
bankName:
type: string
description: The name of the bank

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.

P1bankName required but lacks length constraints

bankName is listed as required but has no minLength or maxLength constraints, meaning an empty string "" would pass schema validation. The schema removed from PR #388 had minLength: 1, maxLength: 255 on this field. Without minLength: 1, a caller can submit an empty bank name and the spec won't reject it.

Suggested change
bankName:
type: string
description: The name of the bank
bankName:
type: string
description: The name of the bank
minLength: 1
maxLength: 255
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +23 to +28
bankAccountType:
type: string
description: The bank account type. Required for certain corridors (e.g., El Salvador).
enum:
- CHECKING
- SAVINGS

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.

P2bankAccountType described as conditionally required but not enforced by schema

The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the required array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (if/then) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@shreyav
shreyav merged commit c302e52 into mainApr 24, 2026
6 of 7 checks passed
@shreyav
shreyav deleted the revert-388-auto/sync-grid-schemas-20260423-220919 branch April 24, 2026 20:34
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.

2 participants

@shreyav@JasonCWang
, '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" + ' Revert "chore: Sync account schemas" by shreyav · Pull Request #395 · lightsparkdev/grid-api · GitHub
Skip to content

Revert "chore: Sync account schemas" - #395

Merged
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919
Apr 24, 2026
Merged

Revert "chore: Sync account schemas"#395
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919

Conversation

@shreyav

Copy link
Copy Markdown
Contributor

Reverts #388

@vercel

vercelBot commented Apr 24, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 24, 2026 8:31pm

Request Review

@github-actions

github-actionsBot commented Apr 24, 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 phoneNumber/bankAccountType, remove bankName, update beneficiary fields

openapi

feat(api): add bankAccountType/phoneNumber fields, payment methods to USD/COP/GTQ, update types

python

fix(types): update beneficiary optionality, remove bank_name, add phone_number across currencies

typescript

feat(api): update external account types for USD/COP/GTQ/BDT/EGP/GHS/JMD/PKR
⚠️grid-openapistudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗

⚠️grid-pythonstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/14b6b8b76b99eead85d84abf1d886aa7fffd3f5c/grid-0.0.1-py3-none-any.whl
⚠️grid-kotlinstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

⚠️grid-typescriptstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

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

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR reverts #388 ("chore: Sync account schemas"), restoring previous account info schemas across 42 files. The bulk of changes are removing example blocks from ~30 AccountInfoBase schemas and reverting field-level adjustments in COP, GTQ, USD, BDT, EGP, GHS, JMD, and PKR schemas.

  • CopAccountInfoBase: bankName is restored as a required field but without minLength/maxLength constraints — the pre-chore: Sync account schemas #388 version lacked these guards, meaning an empty string \"\" passes schema validation for a required field.
  • UsdAccountInfoBase: bankAccountType is reintroduced as optional while its description says "Required for certain corridors (e.g., El Salvador)" — a mismatch between documentation intent and schema enforcement.

Confidence Score: 4/5

Safe to merge with a minor fix: bankName in CopAccountInfoBase should have minLength: 1 to prevent empty-string submissions on a required field.

One P1 finding: the required bankName field in CopAccountInfoBase has no minLength constraint, allowing empty strings past schema validation. The rest of the changes (example block removals, beneficiary required-field relaxations, new MOBILE_MONEY/BANK_TRANSFER enum values) are clean. The bankAccountType documentation note in UsdAccountInfoBase is a P2 concern only.

openapi/components/schemas/common/CopAccountInfoBase.yaml — required bankName field missing minLength constraint.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/CopAccountInfoBase.yamlReverts bankName to required-but-unconstrained (no minLength/maxLength), adds required phoneNumber, adds MOBILE_MONEY payment method — bankName allows empty strings.
openapi/components/schemas/common/UsdAccountInfoBase.yamlAdds optional bankAccountType (described as corridor-conditionally required) and removes the example block; conditional requirement not enforced by schema.
openapi/components/schemas/common/GtqAccountInfoBase.yamlReverts to phoneNumber-only account schema, removing bankName and bankAccountType entirely from properties and required list.
openapi/components/schemas/common/UsdBeneficiary.yamlRemoves address, birthDate, and nationality from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopBeneficiary.yamlSwaps required fields: documentNumber and documentType removed; countryOfResidence becomes required.
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber removed from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/GtqAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/UsdAccountInfo.yamlAdds BANK_TRANSFER as a valid payment method enum value alongside ACH, WIRE, RTP, FEDNOW.
openapi/components/schemas/common/AedAccountInfoBase.yamlExample block removed; no structural changes.
openapi/components/schemas/common/BdtAccountInfoBase.yamlbankName removed from required list and properties, example block removed.
openapi/components/schemas/common/EgpAccountInfoBase.yamlbankName removed from required list and properties, example block removed.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Account Info Request] --> B{Currency / Corridor}
B -->|COP| C[CopAccountInfoBase\nrequired: accountType, accountNumber,\nbankAccountType, bankName, phoneNumber]
B -->|GTQ| D[GtqAccountInfoBase\nrequired: accountType, accountNumber, phoneNumber]
B -->|USD| E[UsdAccountInfoBase\nrequired: accountType, accountNumber, routingNumber\noptional: bankAccountType ⚠️ required for El Salvador]
B -->|Other| F[Currency-specific schema\nexamples removed]
C --> G{Payment type}
D --> G
G -->|BANK_TRANSFER| H[Bank Transfer flow]
G -->|MOBILE_MONEY| I[Mobile Money flow ✨ new enum]
E --> J{Payment type}
J -->|ACH / WIRE / RTP / FEDNOW| K[Existing US rails]
J -->|BANK_TRANSFER| L[Bank Transfer ✨ new enum]
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/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
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/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

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

Comment on lines +24 to +26
bankName:
type: string
description: The name of the bank

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.

P1bankName required but lacks length constraints

bankName is listed as required but has no minLength or maxLength constraints, meaning an empty string "" would pass schema validation. The schema removed from PR #388 had minLength: 1, maxLength: 255 on this field. Without minLength: 1, a caller can submit an empty bank name and the spec won't reject it.

Suggested change
bankName:
type: string
description: The name of the bank
bankName:
type: string
description: The name of the bank
minLength: 1
maxLength: 255
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +23 to +28
bankAccountType:
type: string
description: The bank account type. Required for certain corridors (e.g., El Salvador).
enum:
- CHECKING
- SAVINGS

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.

P2bankAccountType described as conditionally required but not enforced by schema

The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the required array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (if/then) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@shreyav
shreyav merged commit c302e52 into mainApr 24, 2026
6 of 7 checks passed
@shreyav
shreyav deleted the revert-388-auto/sync-grid-schemas-20260423-220919 branch April 24, 2026 20:34
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.

2 participants

@shreyav@JasonCWang
, '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('^' + ".*" + ' Revert "chore: Sync account schemas" by shreyav · Pull Request #395 · lightsparkdev/grid-api · GitHub
Skip to content

Revert "chore: Sync account schemas" - #395

Merged
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919
Apr 24, 2026
Merged

Revert "chore: Sync account schemas"#395
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919

Conversation

@shreyav

Copy link
Copy Markdown
Contributor

Reverts #388

@vercel

vercelBot commented Apr 24, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 24, 2026 8:31pm

Request Review

@github-actions

github-actionsBot commented Apr 24, 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 phoneNumber/bankAccountType, remove bankName, update beneficiary fields

openapi

feat(api): add bankAccountType/phoneNumber fields, payment methods to USD/COP/GTQ, update types

python

fix(types): update beneficiary optionality, remove bank_name, add phone_number across currencies

typescript

feat(api): update external account types for USD/COP/GTQ/BDT/EGP/GHS/JMD/PKR
⚠️grid-openapistudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗

⚠️grid-pythonstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/14b6b8b76b99eead85d84abf1d886aa7fffd3f5c/grid-0.0.1-py3-none-any.whl
⚠️grid-kotlinstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

⚠️grid-typescriptstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

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

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR reverts #388 ("chore: Sync account schemas"), restoring previous account info schemas across 42 files. The bulk of changes are removing example blocks from ~30 AccountInfoBase schemas and reverting field-level adjustments in COP, GTQ, USD, BDT, EGP, GHS, JMD, and PKR schemas.

  • CopAccountInfoBase: bankName is restored as a required field but without minLength/maxLength constraints — the pre-chore: Sync account schemas #388 version lacked these guards, meaning an empty string \"\" passes schema validation for a required field.
  • UsdAccountInfoBase: bankAccountType is reintroduced as optional while its description says "Required for certain corridors (e.g., El Salvador)" — a mismatch between documentation intent and schema enforcement.

Confidence Score: 4/5

Safe to merge with a minor fix: bankName in CopAccountInfoBase should have minLength: 1 to prevent empty-string submissions on a required field.

One P1 finding: the required bankName field in CopAccountInfoBase has no minLength constraint, allowing empty strings past schema validation. The rest of the changes (example block removals, beneficiary required-field relaxations, new MOBILE_MONEY/BANK_TRANSFER enum values) are clean. The bankAccountType documentation note in UsdAccountInfoBase is a P2 concern only.

openapi/components/schemas/common/CopAccountInfoBase.yaml — required bankName field missing minLength constraint.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/CopAccountInfoBase.yamlReverts bankName to required-but-unconstrained (no minLength/maxLength), adds required phoneNumber, adds MOBILE_MONEY payment method — bankName allows empty strings.
openapi/components/schemas/common/UsdAccountInfoBase.yamlAdds optional bankAccountType (described as corridor-conditionally required) and removes the example block; conditional requirement not enforced by schema.
openapi/components/schemas/common/GtqAccountInfoBase.yamlReverts to phoneNumber-only account schema, removing bankName and bankAccountType entirely from properties and required list.
openapi/components/schemas/common/UsdBeneficiary.yamlRemoves address, birthDate, and nationality from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopBeneficiary.yamlSwaps required fields: documentNumber and documentType removed; countryOfResidence becomes required.
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber removed from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/GtqAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/UsdAccountInfo.yamlAdds BANK_TRANSFER as a valid payment method enum value alongside ACH, WIRE, RTP, FEDNOW.
openapi/components/schemas/common/AedAccountInfoBase.yamlExample block removed; no structural changes.
openapi/components/schemas/common/BdtAccountInfoBase.yamlbankName removed from required list and properties, example block removed.
openapi/components/schemas/common/EgpAccountInfoBase.yamlbankName removed from required list and properties, example block removed.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Account Info Request] --> B{Currency / Corridor}
B -->|COP| C[CopAccountInfoBase\nrequired: accountType, accountNumber,\nbankAccountType, bankName, phoneNumber]
B -->|GTQ| D[GtqAccountInfoBase\nrequired: accountType, accountNumber, phoneNumber]
B -->|USD| E[UsdAccountInfoBase\nrequired: accountType, accountNumber, routingNumber\noptional: bankAccountType ⚠️ required for El Salvador]
B -->|Other| F[Currency-specific schema\nexamples removed]
C --> G{Payment type}
D --> G
G -->|BANK_TRANSFER| H[Bank Transfer flow]
G -->|MOBILE_MONEY| I[Mobile Money flow ✨ new enum]
E --> J{Payment type}
J -->|ACH / WIRE / RTP / FEDNOW| K[Existing US rails]
J -->|BANK_TRANSFER| L[Bank Transfer ✨ new enum]
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/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
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/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

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

Comment on lines +24 to +26
bankName:
type: string
description: The name of the bank

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.

P1bankName required but lacks length constraints

bankName is listed as required but has no minLength or maxLength constraints, meaning an empty string "" would pass schema validation. The schema removed from PR #388 had minLength: 1, maxLength: 255 on this field. Without minLength: 1, a caller can submit an empty bank name and the spec won't reject it.

Suggested change
bankName:
type: string
description: The name of the bank
bankName:
type: string
description: The name of the bank
minLength: 1
maxLength: 255
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +23 to +28
bankAccountType:
type: string
description: The bank account type. Required for certain corridors (e.g., El Salvador).
enum:
- CHECKING
- SAVINGS

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.

P2bankAccountType described as conditionally required but not enforced by schema

The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the required array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (if/then) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@shreyav
shreyav merged commit c302e52 into mainApr 24, 2026
6 of 7 checks passed
@shreyav
shreyav deleted the revert-388-auto/sync-grid-schemas-20260423-220919 branch April 24, 2026 20:34
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.

2 participants

@shreyav@JasonCWang
, '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('^' + ".*" + ' Revert "chore: Sync account schemas" by shreyav · Pull Request #395 · lightsparkdev/grid-api · GitHub
Skip to content

Revert "chore: Sync account schemas" - #395

Merged
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919
Apr 24, 2026
Merged

Revert "chore: Sync account schemas"#395
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919

Conversation

@shreyav

Copy link
Copy Markdown
Contributor

Reverts #388

@vercel

vercelBot commented Apr 24, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 24, 2026 8:31pm

Request Review

@github-actions

github-actionsBot commented Apr 24, 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 phoneNumber/bankAccountType, remove bankName, update beneficiary fields

openapi

feat(api): add bankAccountType/phoneNumber fields, payment methods to USD/COP/GTQ, update types

python

fix(types): update beneficiary optionality, remove bank_name, add phone_number across currencies

typescript

feat(api): update external account types for USD/COP/GTQ/BDT/EGP/GHS/JMD/PKR
⚠️grid-openapistudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗

⚠️grid-pythonstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/14b6b8b76b99eead85d84abf1d886aa7fffd3f5c/grid-0.0.1-py3-none-any.whl
⚠️grid-kotlinstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

⚠️grid-typescriptstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

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

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR reverts #388 ("chore: Sync account schemas"), restoring previous account info schemas across 42 files. The bulk of changes are removing example blocks from ~30 AccountInfoBase schemas and reverting field-level adjustments in COP, GTQ, USD, BDT, EGP, GHS, JMD, and PKR schemas.

  • CopAccountInfoBase: bankName is restored as a required field but without minLength/maxLength constraints — the pre-chore: Sync account schemas #388 version lacked these guards, meaning an empty string \"\" passes schema validation for a required field.
  • UsdAccountInfoBase: bankAccountType is reintroduced as optional while its description says "Required for certain corridors (e.g., El Salvador)" — a mismatch between documentation intent and schema enforcement.

Confidence Score: 4/5

Safe to merge with a minor fix: bankName in CopAccountInfoBase should have minLength: 1 to prevent empty-string submissions on a required field.

One P1 finding: the required bankName field in CopAccountInfoBase has no minLength constraint, allowing empty strings past schema validation. The rest of the changes (example block removals, beneficiary required-field relaxations, new MOBILE_MONEY/BANK_TRANSFER enum values) are clean. The bankAccountType documentation note in UsdAccountInfoBase is a P2 concern only.

openapi/components/schemas/common/CopAccountInfoBase.yaml — required bankName field missing minLength constraint.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/CopAccountInfoBase.yamlReverts bankName to required-but-unconstrained (no minLength/maxLength), adds required phoneNumber, adds MOBILE_MONEY payment method — bankName allows empty strings.
openapi/components/schemas/common/UsdAccountInfoBase.yamlAdds optional bankAccountType (described as corridor-conditionally required) and removes the example block; conditional requirement not enforced by schema.
openapi/components/schemas/common/GtqAccountInfoBase.yamlReverts to phoneNumber-only account schema, removing bankName and bankAccountType entirely from properties and required list.
openapi/components/schemas/common/UsdBeneficiary.yamlRemoves address, birthDate, and nationality from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopBeneficiary.yamlSwaps required fields: documentNumber and documentType removed; countryOfResidence becomes required.
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber removed from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/GtqAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/UsdAccountInfo.yamlAdds BANK_TRANSFER as a valid payment method enum value alongside ACH, WIRE, RTP, FEDNOW.
openapi/components/schemas/common/AedAccountInfoBase.yamlExample block removed; no structural changes.
openapi/components/schemas/common/BdtAccountInfoBase.yamlbankName removed from required list and properties, example block removed.
openapi/components/schemas/common/EgpAccountInfoBase.yamlbankName removed from required list and properties, example block removed.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Account Info Request] --> B{Currency / Corridor}
B -->|COP| C[CopAccountInfoBase\nrequired: accountType, accountNumber,\nbankAccountType, bankName, phoneNumber]
B -->|GTQ| D[GtqAccountInfoBase\nrequired: accountType, accountNumber, phoneNumber]
B -->|USD| E[UsdAccountInfoBase\nrequired: accountType, accountNumber, routingNumber\noptional: bankAccountType ⚠️ required for El Salvador]
B -->|Other| F[Currency-specific schema\nexamples removed]
C --> G{Payment type}
D --> G
G -->|BANK_TRANSFER| H[Bank Transfer flow]
G -->|MOBILE_MONEY| I[Mobile Money flow ✨ new enum]
E --> J{Payment type}
J -->|ACH / WIRE / RTP / FEDNOW| K[Existing US rails]
J -->|BANK_TRANSFER| L[Bank Transfer ✨ new enum]
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/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
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/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

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

Comment on lines +24 to +26
bankName:
type: string
description: The name of the bank

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.

P1bankName required but lacks length constraints

bankName is listed as required but has no minLength or maxLength constraints, meaning an empty string "" would pass schema validation. The schema removed from PR #388 had minLength: 1, maxLength: 255 on this field. Without minLength: 1, a caller can submit an empty bank name and the spec won't reject it.

Suggested change
bankName:
type: string
description: The name of the bank
bankName:
type: string
description: The name of the bank
minLength: 1
maxLength: 255
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +23 to +28
bankAccountType:
type: string
description: The bank account type. Required for certain corridors (e.g., El Salvador).
enum:
- CHECKING
- SAVINGS

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.

P2bankAccountType described as conditionally required but not enforced by schema

The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the required array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (if/then) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@shreyav
shreyav merged commit c302e52 into mainApr 24, 2026
6 of 7 checks passed
@shreyav
shreyav deleted the revert-388-auto/sync-grid-schemas-20260423-220919 branch April 24, 2026 20:34
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.

2 participants

@shreyav@JasonCWang
, '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); } })(); })(); Revert "chore: Sync account schemas" by shreyav · Pull Request #395 · lightsparkdev/grid-api · GitHub
Skip to content

Revert "chore: Sync account schemas" - #395

Merged
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919
Apr 24, 2026
Merged

Revert "chore: Sync account schemas"#395
shreyav merged 1 commit into
mainfrom
revert-388-auto/sync-grid-schemas-20260423-220919

Conversation

@shreyav

Copy link
Copy Markdown
Contributor

Reverts #388

@vercel

vercelBot commented Apr 24, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderReadyReadyPreview, CommentApr 24, 2026 8:31pm

Request Review

@github-actions

github-actionsBot commented Apr 24, 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 phoneNumber/bankAccountType, remove bankName, update beneficiary fields

openapi

feat(api): add bankAccountType/phoneNumber fields, payment methods to USD/COP/GTQ, update types

python

fix(types): update beneficiary optionality, remove bank_name, add phone_number across currencies

typescript

feat(api): update external account types for USD/COP/GTQ/BDT/EGP/GHS/JMD/PKR
⚠️grid-openapistudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗

⚠️grid-pythonstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/14b6b8b76b99eead85d84abf1d886aa7fffd3f5c/grid-0.0.1-py3-none-any.whl
⚠️grid-kotlinstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

⚠️grid-typescriptstudio · code

Your SDK build had at least one "error" diagnostic.
generate ❗build ✅lint ✅test ✅

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

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

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR reverts #388 ("chore: Sync account schemas"), restoring previous account info schemas across 42 files. The bulk of changes are removing example blocks from ~30 AccountInfoBase schemas and reverting field-level adjustments in COP, GTQ, USD, BDT, EGP, GHS, JMD, and PKR schemas.

  • CopAccountInfoBase: bankName is restored as a required field but without minLength/maxLength constraints — the pre-chore: Sync account schemas #388 version lacked these guards, meaning an empty string \"\" passes schema validation for a required field.
  • UsdAccountInfoBase: bankAccountType is reintroduced as optional while its description says "Required for certain corridors (e.g., El Salvador)" — a mismatch between documentation intent and schema enforcement.

Confidence Score: 4/5

Safe to merge with a minor fix: bankName in CopAccountInfoBase should have minLength: 1 to prevent empty-string submissions on a required field.

One P1 finding: the required bankName field in CopAccountInfoBase has no minLength constraint, allowing empty strings past schema validation. The rest of the changes (example block removals, beneficiary required-field relaxations, new MOBILE_MONEY/BANK_TRANSFER enum values) are clean. The bankAccountType documentation note in UsdAccountInfoBase is a P2 concern only.

openapi/components/schemas/common/CopAccountInfoBase.yaml — required bankName field missing minLength constraint.

Important Files Changed

FilenameOverview
openapi/components/schemas/common/CopAccountInfoBase.yamlReverts bankName to required-but-unconstrained (no minLength/maxLength), adds required phoneNumber, adds MOBILE_MONEY payment method — bankName allows empty strings.
openapi/components/schemas/common/UsdAccountInfoBase.yamlAdds optional bankAccountType (described as corridor-conditionally required) and removes the example block; conditional requirement not enforced by schema.
openapi/components/schemas/common/GtqAccountInfoBase.yamlReverts to phoneNumber-only account schema, removing bankName and bankAccountType entirely from properties and required list.
openapi/components/schemas/common/UsdBeneficiary.yamlRemoves address, birthDate, and nationality from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopBeneficiary.yamlSwaps required fields: documentNumber and documentType removed; countryOfResidence becomes required.
openapi/components/schemas/common/GtqBeneficiary.yamlphoneNumber removed from required fields — backward compatible relaxation.
openapi/components/schemas/common/CopAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/GtqAccountInfo.yamlAdds MOBILE_MONEY as a valid payment method enum value alongside BANK_TRANSFER.
openapi/components/schemas/common/UsdAccountInfo.yamlAdds BANK_TRANSFER as a valid payment method enum value alongside ACH, WIRE, RTP, FEDNOW.
openapi/components/schemas/common/AedAccountInfoBase.yamlExample block removed; no structural changes.
openapi/components/schemas/common/BdtAccountInfoBase.yamlbankName removed from required list and properties, example block removed.
openapi/components/schemas/common/EgpAccountInfoBase.yamlbankName removed from required list and properties, example block removed.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Account Info Request] --> B{Currency / Corridor}
B -->|COP| C[CopAccountInfoBase\nrequired: accountType, accountNumber,\nbankAccountType, bankName, phoneNumber]
B -->|GTQ| D[GtqAccountInfoBase\nrequired: accountType, accountNumber, phoneNumber]
B -->|USD| E[UsdAccountInfoBase\nrequired: accountType, accountNumber, routingNumber\noptional: bankAccountType ⚠️ required for El Salvador]
B -->|Other| F[Currency-specific schema\nexamples removed]
C --> G{Payment type}
D --> G
G -->|BANK_TRANSFER| H[Bank Transfer flow]
G -->|MOBILE_MONEY| I[Mobile Money flow ✨ new enum]
E --> J{Payment type}
J -->|ACH / WIRE / RTP / FEDNOW| K[Existing US rails]
J -->|BANK_TRANSFER| L[Bank Transfer ✨ new enum]
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/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
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/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

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

Comment on lines +24 to +26
bankName:
type: string
description: The name of the bank

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.

P1bankName required but lacks length constraints

bankName is listed as required but has no minLength or maxLength constraints, meaning an empty string "" would pass schema validation. The schema removed from PR #388 had minLength: 1, maxLength: 255 on this field. Without minLength: 1, a caller can submit an empty bank name and the spec won't reject it.

Suggested change
bankName:
type: string
description: The name of the bank
bankName:
type: string
description: The name of the bank
minLength: 1
maxLength: 255
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CopAccountInfoBase.yaml
Line: 24-26
Comment:
**`bankName` required but lacks length constraints**`bankName` is listed as required but has no `minLength` or `maxLength` constraints, meaning an empty string `""` would pass schema validation. The schema removed from PR #388 had `minLength: 1, maxLength: 255` on this field. Without `minLength: 1`, a caller can submit an empty bank name and the spec won't reject it.
```suggestion bankName: type: string description: The name of the bank minLength: 1 maxLength: 255```
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

Comment on lines +23 to +28
bankAccountType:
type: string
description: The bank account type. Required for certain corridors (e.g., El Salvador).
enum:
- CHECKING
- SAVINGS

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.

P2bankAccountType described as conditionally required but not enforced by schema

The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the required array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (if/then) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/UsdAccountInfoBase.yaml
Line: 23-28
Comment:
**`bankAccountType` described as conditionally required but not enforced by schema**
The description says "Required for certain corridors (e.g., El Salvador)" yet the field is absent from the `required` array, so the schema won't reject requests that omit it for those corridors. This is a documentation/validation mismatch that could cause silent failures server-side for El Salvador payments. Consider either adding conditional validation (`if`/`then`) or at minimum documenting server-side enforcement so consumers don't rely on the spec for correctness.
How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@shreyav
shreyav merged commit c302e52 into mainApr 24, 2026
6 of 7 checks passed
@shreyav
shreyav deleted the revert-388-auto/sync-grid-schemas-20260423-220919 branch April 24, 2026 20:34
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.

2 participants

@shreyav@JasonCWang