Skip to content

chore: Sync account schemas#545

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

chore: Sync account schemas#545
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260603-174007

Conversation

@lightspark-copybara
Copy link
Copy Markdown
Contributor

Auto-synced account schemas.

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

Synced schemas:

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

Please review the changes before merging.

@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 3, 2026

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

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
grid-flow-builder Ignored Ignored Preview Jun 3, 2026 5:40pm

Request Review

@github-actions github-actions Bot added the breaking-change Introduces a breaking change to the OpenAPI spec label Jun 3, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 3, 2026

⚠️ Breaking OpenAPI changes detected

This PR introduces breaking changes to openapi.yaml:

API Changelog 2025-10-13 vs. 2025-10-13

API Changes

POST /agents/me/external-accounts

  • ⚠️ added the new required request property allOf[subschema #1]/accountInfo/oneOf[subschema #11: GHS Account]/allOf[#/components/schemas/GhsAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #1]/accountInfo/oneOf[subschema #2: BDT Account]/allOf[#/components/schemas/BdtAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #1]/accountInfo/oneOf[subschema #6: COP Account]/allOf[#/components/schemas/CopAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #1]/accountInfo/oneOf[subschema #8: EGP Account]/allOf[#/components/schemas/EgpAccountInfoBase]/bankName
  • ⚠️ the request property allOf[subschema #1]/accountInfo/oneOf[subschema #24: PKR Account]/allOf[#/components/schemas/PkrAccountInfoBase]/bankName became required

POST /customers/external-accounts

  • ⚠️ added the new required request property allOf[subschema #1]/accountInfo/oneOf[subschema #11: GHS Account]/allOf[#/components/schemas/GhsAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #1]/accountInfo/oneOf[subschema #2: BDT Account]/allOf[#/components/schemas/BdtAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #1]/accountInfo/oneOf[subschema #6: COP Account]/allOf[#/components/schemas/CopAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #1]/accountInfo/oneOf[subschema #8: EGP Account]/allOf[#/components/schemas/EgpAccountInfoBase]/bankName
  • ⚠️ the request property allOf[subschema #1]/accountInfo/oneOf[subschema #24: PKR Account]/allOf[#/components/schemas/PkrAccountInfoBase]/bankName became required

POST /platform/external-accounts

  • ⚠️ added the new required request property accountInfo/oneOf[subschema #11: GHS Account]/allOf[#/components/schemas/GhsAccountInfoBase]/bankName
  • ⚠️ added the new required request property accountInfo/oneOf[subschema #2: BDT Account]/allOf[#/components/schemas/BdtAccountInfoBase]/bankName
  • ⚠️ added the new required request property accountInfo/oneOf[subschema #6: COP Account]/allOf[#/components/schemas/CopAccountInfoBase]/bankName
  • ⚠️ added the new required request property accountInfo/oneOf[subschema #8: EGP Account]/allOf[#/components/schemas/EgpAccountInfoBase]/bankName
  • ⚠️ the request property accountInfo/oneOf[subschema #24: PKR Account]/allOf[#/components/schemas/PkrAccountInfoBase]/bankName became required

POST webhook:agent-action

  • ⚠️ added the new required request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #28: BDT Account]/allOf[#/components/schemas/BdtAccountInfo]/allOf[#/components/schemas/BdtAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #31: EGP Account]/allOf[#/components/schemas/EgpAccountInfo]/allOf[#/components/schemas/EgpAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #32: GHS Account]/allOf[#/components/schemas/GhsAccountInfo]/allOf[#/components/schemas/GhsAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #2]/data/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #28: BDT Account]/allOf[#/components/schemas/BdtAccountInfo]/allOf[#/components/schemas/BdtAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #2]/data/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #31: EGP Account]/allOf[#/components/schemas/EgpAccountInfo]/allOf[#/components/schemas/EgpAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #2]/data/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #32: GHS Account]/allOf[#/components/schemas/GhsAccountInfo]/allOf[#/components/schemas/GhsAccountInfoBase]/bankName
  • ⚠️ the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #36: PKR Account]/allOf[#/components/schemas/PkrAccountInfo]/allOf[#/components/schemas/PkrAccountInfoBase]/bankName became required
  • ⚠️ the request property allOf[subschema #2]/data/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #36: PKR Account]/allOf[#/components/schemas/PkrAccountInfo]/allOf[#/components/schemas/PkrAccountInfoBase]/bankName became required

POST webhook:internal-account-status

  • ⚠️ added the new required request property allOf[subschema #2]/data/fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #28: BDT Account]/allOf[#/components/schemas/BdtAccountInfo]/allOf[#/components/schemas/BdtAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #2]/data/fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #31: EGP Account]/allOf[#/components/schemas/EgpAccountInfo]/allOf[#/components/schemas/EgpAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #2]/data/fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #32: GHS Account]/allOf[#/components/schemas/GhsAccountInfo]/allOf[#/components/schemas/GhsAccountInfoBase]/bankName
  • ⚠️ the request property allOf[subschema #2]/data/fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #36: PKR Account]/allOf[#/components/schemas/PkrAccountInfo]/allOf[#/components/schemas/PkrAccountInfoBase]/bankName became required

POST webhook:outgoing-payment

  • ⚠️ added the new required request property allOf[subschema #2]/data/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #28: BDT Account]/allOf[#/components/schemas/BdtAccountInfo]/allOf[#/components/schemas/BdtAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #2]/data/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #31: EGP Account]/allOf[#/components/schemas/EgpAccountInfo]/allOf[#/components/schemas/EgpAccountInfoBase]/bankName
  • ⚠️ added the new required request property allOf[subschema #2]/data/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #32: GHS Account]/allOf[#/components/schemas/GhsAccountInfo]/allOf[#/components/schemas/GhsAccountInfoBase]/bankName
  • ⚠️ the request property allOf[subschema #2]/data/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #36: PKR Account]/allOf[#/components/schemas/PkrAccountInfo]/allOf[#/components/schemas/PkrAccountInfoBase]/bankName became required

Detected by oasdiff. This PR will need approval from an API reviewer before merge.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 3, 2026

✱ Stainless preview builds for grid

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

cli

docs(api): clarify bankName requirement in external accounts account-info parameter

csharp

feat(api): add bankName to BDT/COP/EGP/GHS/PKR, accountHolderName/bankAddress to USD

go

fix(types): make bankName required in BDT/COP/EGP/GHS/PKR, add USD account fields

kotlin

feat(api): add bankName to BDT/COP/EGP/GHS/PKR, accountHolderName/bankAddress to USD accounts

openapi

feat(api): add fields to USD/BDT/EGP/GHS/PKR/COP account info types

php

feat(api): add accountHolderName/bankAddress to USD, make bankName required in BDT/COP/EGP/GHS/PKR

python

feat(api): add bank_name to BDT/COP/EGP/GHS/PKR, USD fields in external accounts

ruby

feat(api): require bank_name in BDT/COP/EGP/GHS/PKR accounts, add USD account fields

typescript

feat(api): add bankName requirement to BDT/COP/EGP/GHS/PKR, optional fields to USD account

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

grid-openapi studio · code · diff

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

grid-ruby studio · code · diff

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

grid-kotlin studio · code · diff

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

grid-typescript studio · code · diff

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

npm install https://pkg.stainless.com/s/grid-typescript/cc41e104a10a36da439b16d90b025ea8f1d988de/dist.tar.gz
grid-python studio · code · diff

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

pip install https://pkg.stainless.com/s/grid-python/ff6f58f207a6d7ffc54dc0762dd6360d8648c460/grid-0.0.1-py3-none-any.whl
grid-csharp studio · code · diff

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

grid-go studio · code · diff

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

go get github.com/stainless-sdks/grid-go@82fb1435352656fbe6d695be28338a6fe2ed2af8
grid-php studio · code · diff

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

grid-cli studio · code · diff

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


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-06-03 17:45:51 UTC

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Jun 3, 2026

Greptile Summary

This PR syncs account info schemas auto-generated from VASP adapter field definitions in sparkcore, adding bankName as a globally required field to five currencies (BDT, COP, EGP, GHS, PKR) and two new optional fields (accountHolderName, bankAddress) to the USD schema.

  • BDT, COP, EGP, GHS: bankName added as a new property and placed in the required array — required for all payment rails. This is a breaking schema change for existing consumers of these currencies who currently omit the field.
  • PKR: bankName was already a property but only documented as required for MOBILE_MONEY; it is now promoted to globally required (including BANK_TRANSFER) and moved to the top of the property list.
  • USD: accountHolderName (string) and bankAddress (ref to Address) are added as optional, non-required fields — a backward-compatible addition.

Confidence Score: 3/5

Adding bankName to the required array across five currency schemas is a contract-breaking change for any existing API consumer who omits the field — safe to merge only if sparkcore already enforces this server-side or if a coordinated rollout is planned.

The USD changes are fully backward-compatible optional additions. However, bankName is now globally required in BDT, COP, EGP, GHS, and PKR schemas — for PKR this tightens a previously-optional-for-BANK_TRANSFER field, and for the other four it introduces a brand-new required field. Existing clients submitting these account types without bankName will fail OpenAPI validation. If the server already requires this field (making the schema a documentation catch-up), impact is limited; if not, this ships a breaking change without a deprecation window.

All five *AccountInfoBase.yaml files that add bankName to required (BDT, COP, EGP, GHS, PKR) deserve a second look to confirm the server-side enforcement status before merging.

Important Files Changed

Filename Overview
openapi/components/schemas/common/UsdAccountInfoBase.yaml Adds optional accountHolderName (string) and bankAddress ($ref: Address.yaml) fields — both non-required, backward-compatible addition.
openapi/components/schemas/common/BdtAccountInfoBase.yaml Adds bankName as a globally required field and property — breaking change for existing BDT BANK_TRANSFER consumers who omit it.
openapi/components/schemas/common/CopAccountInfoBase.yaml Adds bankName as globally required — breaking for existing COP consumers; also adds it to MOBILE_MONEY description (was absent before).
openapi/components/schemas/common/EgpAccountInfoBase.yaml Adds bankName as globally required — breaking for existing EGP BANK_TRANSFER consumers who currently submit only iban.
openapi/components/schemas/common/GhsAccountInfoBase.yaml Adds bankName as globally required — breaking for existing GHS consumers sending BANK_TRANSFER without it.
openapi/components/schemas/common/PkrAccountInfoBase.yaml Promotes bankName from optional-with-MOBILE_MONEY-description to globally required; reorders property definition to top — breaking for PKR BANK_TRANSFER consumers.
openapi.yaml Generated bundle reflecting all source schema changes; correctly rebundled per make build convention.
mintlify/openapi.yaml Generated Mintlify bundle, mirrors root openapi.yaml changes for docs rendering.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Account Schema Sync] --> B[UsdAccountInfoBase]
    A --> C[BdtAccountInfoBase]
    A --> D[CopAccountInfoBase]
    A --> E[EgpAccountInfoBase]
    A --> F[GhsAccountInfoBase]
    A --> G[PkrAccountInfoBase]

    B --> B1["+ accountHolderName (optional)"]
    B --> B2["+ bankAddress → Address (optional)"]

    C --> C1["+ bankName (NOW REQUIRED)"]
    D --> D1["+ bankName (NOW REQUIRED)"]
    E --> E1["+ bankName (NOW REQUIRED)"]
    F --> F1["+ bankName (NOW REQUIRED)"]
    G --> G1["bankName promoted to REQUIRED\n(was optional for BANK_TRANSFER)"]

    C1 --> R[required array: accountType, bankName]
    D1 --> R
    E1 --> R
    F1 --> R
    G1 --> R
Loading
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
openapi/components/schemas/common/BdtAccountInfoBase.yaml:1-5
**Breaking change: `bankName` added to global `required` array**

`bankName` is now unconditionally required at the schema level for `BdtAccountInfoBase`, `CopAccountInfoBase`, `EgpAccountInfoBase`, and `GhsAccountInfoBase`. Any existing API consumers who submit these account types without a `bankName` — valid before this sync — will now receive a validation error. For `PkrAccountInfoBase`, `bankName` was already a property but was documented as only required for `MOBILE_MONEY`; it's now required for `BANK_TRANSFER` as well. If the underlying sparkcore service already enforces this, the schema is simply catching up with reality. If not, this constitutes an externally visible breaking change that should be communicated to API consumers before deploying.

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

Comment on lines 1 to 5
type: object
required:
- accountType
- bankName
description: 'Required fields depend on the selected paymentRails:
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.

P1 Breaking change: bankName added to global required array

bankName is now unconditionally required at the schema level for BdtAccountInfoBase, CopAccountInfoBase, EgpAccountInfoBase, and GhsAccountInfoBase. Any existing API consumers who submit these account types without a bankName — valid before this sync — will now receive a validation error. For PkrAccountInfoBase, bankName was already a property but was documented as only required for MOBILE_MONEY; it's now required for BANK_TRANSFER as well. If the underlying sparkcore service already enforces this, the schema is simply catching up with reality. If not, this constitutes an externally visible breaking change that should be communicated to API consumers before deploying.

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/BdtAccountInfoBase.yaml
Line: 1-5

Comment:
**Breaking change: `bankName` added to global `required` array**

`bankName` is now unconditionally required at the schema level for `BdtAccountInfoBase`, `CopAccountInfoBase`, `EgpAccountInfoBase`, and `GhsAccountInfoBase`. Any existing API consumers who submit these account types without a `bankName` — valid before this sync — will now receive a validation error. For `PkrAccountInfoBase`, `bankName` was already a property but was documented as only required for `MOBILE_MONEY`; it's now required for `BANK_TRANSFER` as well. If the underlying sparkcore service already enforces this, the schema is simply catching up with reality. If not, this constitutes an externally visible breaking change that should be communicated to API consumers before deploying.

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@lightspark-copybara
Copy link
Copy Markdown
Contributor Author

Superseded by #546

@lightspark-copybara lightspark-copybara Bot deleted the auto/sync-grid-schemas-20260603-174007 branch June 3, 2026 18:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Introduces a breaking change to the OpenAPI spec

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants