Skip to content

chore: Sync account schemas - #1072

Open
lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260924-005758
Open

lightspark-copybara[bot] wants to merge 1 commit into
mainfrom
auto/sync-grid-schemas-20260924-005758

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/)
  • mintlify/snippets/corridor-required-fields.mdx — per-corridor required fields table
  • mintlify/corridor-fields.js — filter script for that table

Please review the changes before merging.

@vercel

vercel Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

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

3 Skipped Deployments
Project Deployment Actions Updated
grid-cards-demo Ignored Ignored Preview Sep 24, 2026 12:58am UTC
grid-flow-builder Ignored Ignored Preview Sep 24, 2026 12:58am UTC
grid-wallet-demo Ignored Ignored Preview Sep 24, 2026 12:58am UTC

Request Review

@mintlify

mintlify Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
Grid 🟢 Ready View Preview Sep 24, 2026, 12:59 AM

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

Copy link
Copy Markdown
Contributor

⚠️ Breaking OpenAPI changes detected

oasdiff reports 5 error / 54 warning changes to openapi.yaml.
This PR will need approval from an API reviewer before merge.

Errors (5)

  • POST webhook:agent-action — removed the enum value ACH_SAME_DAY of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/paymentRails/items/ [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value ACH_SAME_DAY of 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 #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/paymentRails/items/ [request-property-enum-value-removed].
  • POST webhook:external-account-status — removed the enum value ACH_SAME_DAY of the request property allOf[subschema #2]/data/allOf[subschema #1]/accountInfo/oneOf[subschema #31: USD Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/paymentRails/items/ [request-property-enum-value-removed].
  • POST webhook:internal-account-status — removed the enum value ACH_SAME_DAY of the request property allOf[subschema #2]/data/fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/paymentRails/items/ [request-property-enum-value-removed].
  • POST webhook:outgoing-payment — removed the enum value ACH_SAME_DAY of the request property allOf[subschema #2]/data/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/paymentRails/items/ [request-property-enum-value-removed].

Warnings (54)

Show sample
  • GET /agents/approvals — removed the optional property data/items/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • GET /agents/approvals — removed the optional property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions — removed the optional property data/items/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions — removed the optional property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions/{actionId} — removed the optional property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions/{actionId} — removed the optional property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/external-accounts — removed the optional property data/items/allOf[subschema #1]/accountInfo/oneOf[subschema #31: USD Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • POST /agents/me/external-accounts — removed the request property allOf[subschema #1]/accountInfo/oneOf[subschema #32: USD Account]/allOf[subschema #3]/bankAccountType [request-property-removed].
  • POST /agents/me/external-accounts — removed the optional property allOf[subschema #1]/accountInfo/oneOf[subschema #31: USD Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 201 status [response-optional-property-removed].
  • GET /agents/me/external-accounts/{externalAccountId} — removed the optional property allOf[subschema #1]/accountInfo/oneOf[subschema #31: USD Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/internal-accounts — removed the optional property data/items/fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • POST /agents/me/quotes — removed the optional property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 201 status [response-optional-property-removed].
  • GET /agents/me/quotes/{quoteId} — removed the optional property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • POST /agents/me/quotes/{quoteId}/execute — removed the optional property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • POST /agents/me/quotes/{quoteId}/execute — removed the optional property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/transactions — removed the optional property data/items/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/transactions/{transactionId} — removed the optional property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • POST /agents/{agentId}/actions/{actionId}/approve — removed the optional property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • POST /agents/{agentId}/actions/{actionId}/approve — removed the optional property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • POST /agents/{agentId}/actions/{actionId}/reject — removed the optional property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • POST /agents/{agentId}/actions/{actionId}/reject — removed the optional property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • GET /customers/external-accounts — removed the optional property data/items/allOf[subschema #1]/accountInfo/oneOf[subschema #31: USD Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • POST /customers/external-accounts — removed the request property accountInfo/oneOf[subschema #32: USD Account]/allOf[subschema #3]/bankAccountType [request-property-removed].
  • POST /customers/external-accounts — removed the optional property allOf[subschema #1]/accountInfo/oneOf[subschema #31: USD Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 201 status [response-optional-property-removed].
  • GET /customers/external-accounts/{externalAccountId} — removed the optional property allOf[subschema #1]/accountInfo/oneOf[subschema #31: USD Account]/allOf[#/components/schemas/UsdAccountInfo]/allOf[subschema #2]/bankAccountType from the response with the 200 status [response-optional-property-removed].
  • …and 29 more warnings.

Detected by oasdiff. Full report: job summary or the oasdiff-report artifact.

@greptile-apps

greptile-apps Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 4/5

The PR is not safe to merge until USD external-account creation once again requires bankAccountType.

Findings

  1. P1 Account type no longer required ▶
Fix with agent prompt
### Issue 1
openapi/components/schemas/external_accounts/UsdExternalAccountCreateInfo.yaml:6-7
Removing `bankAccountType` from this `required` list makes a USD external-account request without `CHECKING` or `SAVINGS` valid under the OpenAPI contract. The existing endpoint examples, integration guide, and changelog still require this value because Grid uses it to select the ACH transaction code. Generated clients will therefore allow incomplete requests that the API must reject or cannot route correctly. Keep the property in the shared base if needed, but require it here for `UsdExternalAccountCreateInfo`.

```suggestion
  required:
  - bankAccountType
  - beneficiary
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

This schema sync moves the USD bankAccountType property into the shared account base, removes ACH_SAME_DAY from returned USD account rails, refreshes generated OpenAPI bundles, and corrects business-beneficiary terminology in the corridor table.

  • The generated root and Mintlify contracts remain aligned with the modular schema sources.
  • Business-recipient rows now use “Legal name,” matching their beneficiary schemas.
  • USD external-account creation accidentally stops requiring bankAccountType, conflicting with the documented API requirement and allowing incomplete generated requests.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Base[UsdAccountInfoBase<br/>bankAccountType optional] --> Read[UsdAccountInfo<br/>account responses]
  Base --> Create[UsdExternalAccountCreateInfo<br/>create requests]
  Create --> Generated[Generated SDK request<br/>bankAccountType optional]
  Generated --> API[External-account creation<br/>requires ACH account type]
Loading

Reviews (1) · Last reviewed commit: "chore: Sync account schemas"

Comment on lines 6 to 7
required:
- bankAccountType
- beneficiary

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 Account type no longer required

Removing bankAccountType from this required list makes a USD external-account request without CHECKING or SAVINGS valid under the OpenAPI contract. The existing endpoint examples, integration guide, and changelog still require this value because Grid uses it to select the ACH transaction code. Generated clients will therefore allow incomplete requests that the API must reject or cannot route correctly. Keep the property in the shared base if needed, but require it here for UsdExternalAccountCreateInfo.

Suggested change
required:
- bankAccountType
- beneficiary
required:
- bankAccountType
- beneficiary

Knowledge Base Used:

Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/components/schemas/external_accounts/UsdExternalAccountCreateInfo.yaml
Line: 6-7

Comment:
**Account type no longer required**

Removing `bankAccountType` from this `required` list makes a USD external-account request without `CHECKING` or `SAVINGS` valid under the OpenAPI contract. The existing endpoint examples, integration guide, and changelog still require this value because Grid uses it to select the ACH transaction code. Generated clients will therefore allow incomplete requests that the API must reject or cannot route correctly. Keep the property in the shared base if needed, but require it here for `UsdExternalAccountCreateInfo`.

```suggestion
  required:
  - bankAccountType
  - beneficiary
```

**Knowledge Base Used:**
- [Grid API contract](https://app.greptile.com/lightspark/-/custom-context/knowledge-base/lightsparkdev/grid-api/-/docs/api-contract.md)
- [Customers and accounts API](https://app.greptile.com/lightspark/-/custom-context/knowledge-base/lightsparkdev/grid-api/-/docs/customers-and-accounts-api.md)

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

This branch was successfully deployed

1 active deployment
staging - mintlify — 6cf7e50d Deployed Sep 24, 2026 by mintlify[bot]
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