Skip to content

chore: Sync account schemas#609

Merged
JasonCWang merged 1 commit into
mainfrom
auto/sync-grid-schemas-20260622-180637
Jun 22, 2026
Merged

chore: Sync account schemas#609
JasonCWang merged 1 commit into
mainfrom
auto/sync-grid-schemas-20260622-180637

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

vercel Bot commented Jun 22, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
grid-wallet-demo Building Building Preview, Comment Jun 22, 2026 6:06pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
grid-flow-builder Ignored Ignored Preview Jun 22, 2026 6:06pm

Request Review

@github-actions github-actions Bot added the breaking-change Introduces a breaking change to the OpenAPI spec label Jun 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Breaking OpenAPI changes detected

This PR introduces breaking changes to openapi.yaml:

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

API Changes

GET /agents/approvals

  • ⚠️ the response property data/items/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200
  • ⚠️ the response property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

GET /agents/me/actions

  • ⚠️ the response property data/items/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200
  • ⚠️ the response property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

GET /agents/me/actions/{actionId}

  • ⚠️ the response property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200
  • ⚠️ the response property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

GET /agents/me/external-accounts

  • ⚠️ the response property data/items/allOf[subschema #1]/accountInfo/oneOf[subschema #26: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /agents/me/external-accounts

  • ⚠️ the response property allOf[subschema #1]/accountInfo/oneOf[subschema #26: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 201

GET /agents/me/external-accounts/{externalAccountId}

  • ⚠️ the response property allOf[subschema #1]/accountInfo/oneOf[subschema #26: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

GET /agents/me/internal-accounts

  • ⚠️ the response property data/items/fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /agents/me/quotes

  • ⚠️ the response property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 201

GET /agents/me/quotes/{quoteId}

  • ⚠️ the response property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /agents/me/quotes/{quoteId}/execute

  • ⚠️ the response property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200
  • ⚠️ the response property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

GET /agents/me/transactions

  • ⚠️ the response property data/items/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

GET /agents/me/transactions/{transactionId}

  • ⚠️ the response property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /agents/me/transfer-in

  • ⚠️ the response property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 201
  • ⚠️ the response property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 201

POST /agents/me/transfer-out

  • ⚠️ the response property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 201
  • ⚠️ the response property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 201

POST /agents/{agentId}/actions/{actionId}/approve

  • ⚠️ the response property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200
  • ⚠️ the response property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /agents/{agentId}/actions/{actionId}/reject

  • ⚠️ the response property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200
  • ⚠️ the response property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

GET /customers/external-accounts

  • ⚠️ the response property data/items/allOf[subschema #1]/accountInfo/oneOf[subschema #26: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /customers/external-accounts

  • ⚠️ the response property allOf[subschema #1]/accountInfo/oneOf[subschema #26: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 201

GET /customers/external-accounts/{externalAccountId}

  • ⚠️ the response property allOf[subschema #1]/accountInfo/oneOf[subschema #26: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

GET /customers/internal-accounts

  • ⚠️ the response property data/items/fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

PATCH /internal-accounts/{id}

  • ⚠️ the response property fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

GET /platform/external-accounts

  • ⚠️ the response property data/items/allOf[subschema #1]/accountInfo/oneOf[subschema #26: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /platform/external-accounts

  • ⚠️ the response property allOf[subschema #1]/accountInfo/oneOf[subschema #26: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 201

GET /platform/external-accounts/{externalAccountId}

  • ⚠️ the response property allOf[subschema #1]/accountInfo/oneOf[subschema #26: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

GET /platform/internal-accounts

  • ⚠️ the response property data/items/fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /quotes

  • ⚠️ the response property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 201

GET /quotes/{quoteId}

  • ⚠️ the response property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /quotes/{quoteId}/execute

  • ⚠️ the response property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /sandbox/internal-accounts/{accountId}/fund

  • ⚠️ the response property fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /sandbox/send

  • ⚠️ the response property allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

GET /transactions

  • ⚠️ the response property data/items/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

GET /transactions/{transactionId}

  • ⚠️ the response property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /transactions/{transactionId}/confirm

  • ⚠️ the response property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 200

POST /transfer-in

  • ⚠️ the response property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 201

POST /transfer-out

  • ⚠️ the response property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/SgdAccountInfo]/allOf[#/components/schemas/SgdAccountInfoBase]/bankName became optional for the status 201

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

@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds for grid

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

cli

chore(internal): regenerate SDK with no functional changes

csharp

fix(types): make BankName optional in SgdAccountInfo/SgdExternalAccountCreateInfo

go

fix(types): make bank_name optional in SGD external account

kotlin

fix(types): make bankName optional in SgdExternalAccountCreateInfo and SgdAccountInfo

openapi

fix(types): make bankName optional in SGD external account

php

fix(types): make bankName optional in SGD account models

python

fix(types): make bank_name optional in SGD external account

ruby

fix(types): make bank_name optional in SGD account models

typescript

fix(types): make bankName optional in sgd_account
grid-openapi studio · code

Your SDK build had at least one "note" diagnostic.
generate ✅

grid-ruby studio · code

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

⚠️ grid-go studio · code

Your SDK build had a failure in the lint CI job, which is a regression from the base state.
generate ✅build ✅lint ❗test ❗

go get github.com/stainless-sdks/grid-go@6518887e279a031060a18aca33c684039f3dff83
⚠️ grid-kotlin studio · code

Your SDK build had a failure in the test CI job, which is a regression from the base state.
generate ✅build ✅lint ✅test ❗

⚠️ grid-python studio · code

Your SDK build had a failure in the lint CI job, which is a regression from the base state.
generate ✅build ✅lint ❗test ❗

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

Your SDK build had a failure in the build CI job, which is a regression from the base state.
generate ⚠️build ❗lint ✅test ❗

grid-php studio · code

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

grid-typescript studio · code

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

npm install https://pkg.stainless.com/s/grid-typescript/f51e638c38665b3ac157a7484e02571898acdcab/dist.tar.gz
⚠️ grid-cli studio · code

Your SDK build had a failure in the test CI job, which is a regression from the base state.
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-22 18:26:04 UTC

@greptile-apps

greptile-apps Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR auto-syncs account schemas from VASP adapter field definitions in sparkcore, updating SGD, CNY, and GBP schemas across the source openapi/ files and both generated bundles.

  • SGD (SgdAccountInfoBase): bankName made optional; description updated to explain it is auto-resolved from swiftCode via the payout partner directory — a clean, well-documented change.
  • CNY (CnyAccountInfoBase): bankName/phoneNumber property order swapped, field descriptions simplified, and enum values reordered to [BANK_TRANSFER, MOBILE_MONEY]. The bankName description drops the "mobile-wallet provider" clause that is still needed for the MOBILE_MONEY rail, and the per-rail hints on accountNumber/phoneNumber are removed.
  • GBP (GbpBeneficiary): All field-level examples (name, date format, country codes, phone, email) stripped with no object-level replacement, reducing discoverability in the rendered API reference.

Confidence Score: 3/5

The SGD and enum ordering changes are safe to merge. The CNY bankName description regression and GBP example removal should be reviewed before shipping.

The CNY schema drops 'mobile-wallet provider' from the bankName description while the field remains required for MOBILE_MONEY payments — an integrator following the field description alone would not know what value to supply on that rail. The GBP beneficiary schema loses all field-level examples with no replacement, removing format guidance (ISO country codes, date format) from the rendered docs. The SGD and enum reordering changes are unambiguously correct.

openapi/components/schemas/common/CnyAccountInfoBase.yaml (bankName description) and openapi/components/schemas/common/GbpBeneficiary.yaml (missing examples) warrant a second look before merging.

Important Files Changed

Filename Overview
openapi/components/schemas/common/CnyAccountInfoBase.yaml Property ordering refactor for bankName/phoneNumber, plus description simplifications that drop rail-specific guidance and the 'mobile-wallet provider' context from bankName — may mislead MOBILE_MONEY integrators
openapi/components/schemas/common/SgdAccountInfoBase.yaml bankName removed from required array; description updated to explain it is auto-resolved from swiftCode — intentional and well-documented change
openapi/components/schemas/common/GbpBeneficiary.yaml All field-level examples removed (fullName, birthDate, nationality, email, phoneNumber, countryOfResidence, beneficiaryType) with no object-level replacement, degrading docs usability
openapi/components/schemas/common/CnyAccountInfo.yaml Enum ordering swapped from [MOBILE_MONEY, BANK_TRANSFER] to [BANK_TRANSFER, MOBILE_MONEY] — cosmetic/alphabetical reorder, no functional impact
openapi.yaml Generated bundle — mirrors all source schema changes; contains same CnyAccountInfoBase description regression and GbpBeneficiary example removal
mintlify/openapi.yaml Generated bundle for Mintlify — identical changes to openapi.yaml; same issues present

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[CNY Account Creation] --> B{paymentRails?}
    B -->|BANK_TRANSFER| C[Required: accountNumber + bankName]
    B -->|MOBILE_MONEY| D[Required: bankName + phoneNumber]
    C --> E[bankName = Bank name]
    D --> F["bankName = Mobile-wallet provider name\n⚠️ description now says 'bank' only"]

    G[SGD Account Creation] --> H[Required: accountType + accountNumber + swiftCode]
    H --> I{bankName provided?}
    I -->|Yes| J[Use provided bankName]
    I -->|No - now optional| K[Resolve from swiftCode via partner directory]

    L[GBP Beneficiary] --> M[Required: beneficiaryType + fullName]
    M --> N[Optional: birthDate, nationality, email, phoneNumber, countryOfResidence, address]
    N --> O["⚠️ Field-level examples removed\n(format hints gone from docs)"]
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[CNY Account Creation] --> B{paymentRails?}
    B -->|BANK_TRANSFER| C[Required: accountNumber + bankName]
    B -->|MOBILE_MONEY| D[Required: bankName + phoneNumber]
    C --> E[bankName = Bank name]
    D --> F["bankName = Mobile-wallet provider name\n⚠️ description now says 'bank' only"]

    G[SGD Account Creation] --> H[Required: accountType + accountNumber + swiftCode]
    H --> I{bankName provided?}
    I -->|Yes| J[Use provided bankName]
    I -->|No - now optional| K[Resolve from swiftCode via partner directory]

    L[GBP Beneficiary] --> M[Required: beneficiaryType + fullName]
    M --> N[Optional: birthDate, nationality, email, phoneNumber, countryOfResidence, address]
    N --> O["⚠️ Field-level examples removed\n(format hints gone from docs)"]
Loading

Comments Outside Diff (1)

  1. openapi/components/schemas/common/GbpBeneficiary.yaml, line 6-30 (link)

    P2 Field-level examples stripped with no replacement

    All property-level examples (Jane Smith, 1990-01-15, GB, jane.smith@example.com, +447700900123) were removed and no top-level example: block was added to compensate. The rendered API reference will now show empty value hints for every optional field in GbpBeneficiary, making it harder for integrators to understand expected formats (e.g., the ISO-3166 alpha-2 code for nationality and countryOfResidence, the YYYY-MM-DD format for birthDate). Consider adding a single object-level example: block to preserve discoverability.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: openapi/components/schemas/common/GbpBeneficiary.yaml
    Line: 6-30
    
    Comment:
    **Field-level examples stripped with no replacement**
    
    All property-level examples (`Jane Smith`, `1990-01-15`, `GB`, `jane.smith@example.com`, `+447700900123`) were removed and no top-level `example:` block was added to compensate. The rendered API reference will now show empty value hints for every optional field in `GbpBeneficiary`, making it harder for integrators to understand expected formats (e.g., the ISO-3166 alpha-2 code for `nationality` and `countryOfResidence`, the `YYYY-MM-DD` format for `birthDate`). Consider adding a single object-level `example:` block to preserve discoverability.
    
    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!

Prompt To Fix All With AI
Fix the following 3 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 3
openapi/components/schemas/common/CnyAccountInfoBase.yaml:20-24
The `bankName` description was narrowed from "The name of the bank or mobile-wallet provider" to "The name of the bank", but this field is still required for the MOBILE_MONEY rail (as stated in the schema description above). For MOBILE_MONEY payments there is no bank — the value is the mobile-wallet provider name. Dropping that clause leaves MOBILE_MONEY integrators without the guidance they need and could cause incorrect payloads to be submitted.

```suggestion
  bankName:
    type: string
    description: The name of the bank or mobile-wallet provider
    minLength: 1
    maxLength: 255
```

### Issue 2 of 3
openapi/components/schemas/common/CnyAccountInfoBase.yaml:15-27
The descriptions for `accountNumber` and `phoneNumber` previously called out which payment rail each field applies to ("BANK_TRANSFER rail" / "MOBILE_MONEY rail"). Those rail hints were the only inline guidance telling integrators when to supply each field; removing them leaves users to rely solely on the prose block at the top of the schema.

```suggestion
  accountNumber:
    type: string
    description: The destination bank account number (BANK_TRANSFER rail)
    minLength: 1
    maxLength: 34
  bankName:
    type: string
    description: The name of the bank or mobile-wallet provider
    minLength: 1
    maxLength: 255
  phoneNumber:
    type: string
    description: The phone number in international format (MOBILE_MONEY rail)
```

### Issue 3 of 3
openapi/components/schemas/common/GbpBeneficiary.yaml:6-30
**Field-level examples stripped with no replacement**

All property-level examples (`Jane Smith`, `1990-01-15`, `GB`, `jane.smith@example.com`, `+447700900123`) were removed and no top-level `example:` block was added to compensate. The rendered API reference will now show empty value hints for every optional field in `GbpBeneficiary`, making it harder for integrators to understand expected formats (e.g., the ISO-3166 alpha-2 code for `nationality` and `countryOfResidence`, the `YYYY-MM-DD` format for `birthDate`). Consider adding a single object-level `example:` block to preserve discoverability.

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

Comment on lines +20 to +24
bankName:
type: string
description: The name of the bank
minLength: 1
maxLength: 255

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 The bankName description was narrowed from "The name of the bank or mobile-wallet provider" to "The name of the bank", but this field is still required for the MOBILE_MONEY rail (as stated in the schema description above). For MOBILE_MONEY payments there is no bank — the value is the mobile-wallet provider name. Dropping that clause leaves MOBILE_MONEY integrators without the guidance they need and could cause incorrect payloads to be submitted.

Suggested change
bankName:
type: string
description: The name of the bank
minLength: 1
maxLength: 255
bankName:
type: string
description: The name of the bank or mobile-wallet provider
minLength: 1
maxLength: 255
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CnyAccountInfoBase.yaml
Line: 20-24

Comment:
The `bankName` description was narrowed from "The name of the bank or mobile-wallet provider" to "The name of the bank", but this field is still required for the MOBILE_MONEY rail (as stated in the schema description above). For MOBILE_MONEY payments there is no bank — the value is the mobile-wallet provider name. Dropping that clause leaves MOBILE_MONEY integrators without the guidance they need and could cause incorrect payloads to be submitted.

```suggestion
  bankName:
    type: string
    description: The name of the bank or mobile-wallet provider
    minLength: 1
    maxLength: 255
```

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

Comment on lines 15 to +27
accountNumber:
type: string
description: The destination bank account number (BANK_TRANSFER rail)
description: The account number of the bank
minLength: 1
maxLength: 34
bankName:
type: string
description: The name of the bank
minLength: 1
maxLength: 255
phoneNumber:
type: string
description: The phone number in international format (MOBILE_MONEY rail)
description: The phone number in international format

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.

P2 The descriptions for accountNumber and phoneNumber previously called out which payment rail each field applies to ("BANK_TRANSFER rail" / "MOBILE_MONEY rail"). Those rail hints were the only inline guidance telling integrators when to supply each field; removing them leaves users to rely solely on the prose block at the top of the schema.

Suggested change
accountNumber:
type: string
description: The destination bank account number (BANK_TRANSFER rail)
description: The account number of the bank
minLength: 1
maxLength: 34
bankName:
type: string
description: The name of the bank
minLength: 1
maxLength: 255
phoneNumber:
type: string
description: The phone number in international format (MOBILE_MONEY rail)
description: The phone number in international format
accountNumber:
type: string
description: The destination bank account number (BANK_TRANSFER rail)
minLength: 1
maxLength: 34
bankName:
type: string
description: The name of the bank or mobile-wallet provider
minLength: 1
maxLength: 255
phoneNumber:
type: string
description: The phone number in international format (MOBILE_MONEY rail)
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/common/CnyAccountInfoBase.yaml
Line: 15-27

Comment:
The descriptions for `accountNumber` and `phoneNumber` previously called out which payment rail each field applies to ("BANK_TRANSFER rail" / "MOBILE_MONEY rail"). Those rail hints were the only inline guidance telling integrators when to supply each field; removing them leaves users to rely solely on the prose block at the top of the schema.

```suggestion
  accountNumber:
    type: string
    description: The destination bank account number (BANK_TRANSFER rail)
    minLength: 1
    maxLength: 34
  bankName:
    type: string
    description: The name of the bank or mobile-wallet provider
    minLength: 1
    maxLength: 255
  phoneNumber:
    type: string
    description: The phone number in international format (MOBILE_MONEY rail)
```

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

@JasonCWang JasonCWang merged commit 99c1534 into main Jun 22, 2026
9 checks passed
@JasonCWang JasonCWang deleted the auto/sync-grid-schemas-20260622-180637 branch June 22, 2026 18:21
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.

1 participant