Skip to content

chore: Sync account schemas#568

Merged
JasonCWang merged 1 commit into
mainfrom
auto/sync-grid-schemas-20260609-231524
Jun 10, 2026
Merged

chore: Sync account schemas#568
JasonCWang merged 1 commit into
mainfrom
auto/sync-grid-schemas-20260609-231524

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 9, 2026

Copy link
Copy Markdown

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 9, 2026 11:15pm

Request Review

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

github-actions Bot commented Jun 9, 2026

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/me/external-accounts

  • ⚠️ the response property data/items/allOf[subschema #1]/accountInfo/oneOf[subschema #9: EUR Account]/allOf[subschema #3]/beneficiary/oneOf[subschema #1: Individual Beneficiary]/address became optional for the status 200

POST /agents/me/external-accounts

  • ⚠️ the request property allOf[subschema #1]/accountInfo/oneOf[subschema #10: EUR Account]/allOf[subschema #3]/beneficiary/oneOf[subschema #1: Individual Beneficiary]/countryOfResidence became required
  • ⚠️ the response property allOf[subschema #1]/accountInfo/oneOf[subschema #9: EUR Account]/allOf[subschema #3]/beneficiary/oneOf[subschema #1: Individual Beneficiary]/address became optional for the status 201

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

  • ⚠️ the response property allOf[subschema #1]/accountInfo/oneOf[subschema #9: EUR Account]/allOf[subschema #3]/beneficiary/oneOf[subschema #1: Individual Beneficiary]/address became optional for the status 200

GET /customers/external-accounts

  • ⚠️ the response property data/items/allOf[subschema #1]/accountInfo/oneOf[subschema #9: EUR Account]/allOf[subschema #3]/beneficiary/oneOf[subschema #1: Individual Beneficiary]/address became optional for the status 200

POST /customers/external-accounts

  • ⚠️ the request property allOf[subschema #1]/accountInfo/oneOf[subschema #10: EUR Account]/allOf[subschema #3]/beneficiary/oneOf[subschema #1: Individual Beneficiary]/countryOfResidence became required
  • ⚠️ the response property allOf[subschema #1]/accountInfo/oneOf[subschema #9: EUR Account]/allOf[subschema #3]/beneficiary/oneOf[subschema #1: Individual Beneficiary]/address became optional for the status 201

GET /customers/external-accounts/{externalAccountId}

  • ⚠️ the response property allOf[subschema #1]/accountInfo/oneOf[subschema #9: EUR Account]/allOf[subschema #3]/beneficiary/oneOf[subschema #1: Individual Beneficiary]/address became optional for the status 200

GET /platform/external-accounts

  • ⚠️ the response property data/items/allOf[subschema #1]/accountInfo/oneOf[subschema #9: EUR Account]/allOf[subschema #3]/beneficiary/oneOf[subschema #1: Individual Beneficiary]/address became optional for the status 200

POST /platform/external-accounts

  • ⚠️ the request property accountInfo/oneOf[subschema #10: EUR Account]/allOf[subschema #3]/beneficiary/oneOf[subschema #1: Individual Beneficiary]/countryOfResidence became required
  • ⚠️ the response property allOf[subschema #1]/accountInfo/oneOf[subschema #9: EUR Account]/allOf[subschema #3]/beneficiary/oneOf[subschema #1: Individual Beneficiary]/address became optional for the status 201

GET /platform/external-accounts/{externalAccountId}

  • ⚠️ the response property allOf[subschema #1]/accountInfo/oneOf[subschema #9: EUR Account]/allOf[subschema #3]/beneficiary/oneOf[subschema #1: Individual Beneficiary]/address became optional for the status 200

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

@github-actions

github-actions Bot commented Jun 9, 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 address optional, country_of_residence required in EurBeneficiary

go

fix(types): make country_of_residence required, address optional in EurBeneficiaryParam

kotlin

fix(types): make address optional, countryOfResidence required in EurBeneficiary

openapi

fix(types): require countryOfResidence instead of address in beneficiary

php

fix(types): make address optional, countryOfResidence required in EurBeneficiary

python

fix(types): make address optional, country_of_residence required in EurBeneficiary

ruby

fix(types): make country_of_residence required and address optional in eur_beneficiary

typescript

fix(types): make address optional, countryOfResidence required in EUR beneficiary
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@1745ea2484d176e04ef4629ac5d49ac5bc04baef
⚠️ 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/5b83dacb586bea50f65462b8ff6f9e7a074a1fa9/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/901d0c44e38fed524eb8d9da7bfdbce37ff4d759/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-10 22:10:41 UTC

@greptile-apps

greptile-apps Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR syncs the EurBeneficiary schema to match the VASP adapter field definitions in sparkcore, swapping address out of the required list in favour of countryOfResidence. The change is applied consistently across the source YAML, the bundled openapi.yaml, and the Mintlify mirror.

  • address moves from required → optional (still present as a property referencing Address); existing clients that already send the field are unaffected.
  • countryOfResidence (a plain string already defined in the properties block) is promoted to required, aligning the published schema with what the backend enforces.

Confidence Score: 5/5

Safe to merge — the single-field required change is consistent across all three schema representations and aligns with backend enforcement.

The change is minimal and targeted: one field removed from required, one field added, and address is preserved as an optional property so existing clients sending it are not broken. All three files are updated identically with no drift between the source YAML and the two bundled copies.

No files require special attention.

Important Files Changed

Filename Overview
openapi/components/schemas/common/EurBeneficiary.yaml Removes address from required fields, adds countryOfResidence as required — address remains as an optional property
openapi.yaml Inline EurBeneficiary schema updated consistently with the source YAML — required list swaps address for countryOfResidence
mintlify/openapi.yaml Mirror of openapi.yaml change; both bundles stay in sync with the source schema

Sequence Diagram

sequenceDiagram
    participant Client
    participant Schema as OpenAPI Schema (EurBeneficiary)
    participant API as Backend (sparkcore)

    Note over Schema: Before PR
    Client->>Schema: Validate payload
    Schema-->>Client: Required: beneficiaryType, address, fullName

    Note over Schema: After PR
    Client->>Schema: Validate payload
    Schema-->>Client: Required: beneficiaryType, countryOfResidence, fullName

    Client->>API: POST /payment (with countryOfResidence)
    API-->>Client: 200 OK
    Note over Schema,API: Schema now matches backend enforcement
Loading

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

@JasonCWang JasonCWang merged commit ca99dc5 into main Jun 10, 2026
9 checks passed
@JasonCWang JasonCWang deleted the auto/sync-grid-schemas-20260609-231524 branch June 10, 2026 22:05
pengying pushed a commit that referenced this pull request Jun 15, 2026
## Summary
- Fixed `buildEurBeneficiary` in Kotlin sample to match the `EurBeneficiary` OpenAPI schema
- The schema requires `countryOfResidence` (not `address`) as a required field
- Made `address` optional since it's not required in the schema

## Context
This fix was identified during the documentation sync review of recent schema changes:
- `ca99dc5` - chore: Sync account schemas (#568)
- `20eb971` - [grid] clarify email OTP registration bundle docs (#562)

The `EurBeneficiary.yaml` schema has:
```yaml
required:
- beneficiaryType
- countryOfResidence
- fullName
```

But the Kotlin sample was:
1. Requiring `address` (which is optional in the schema)
2. Not setting `countryOfResidence` (which is required)

## Test plan
- [x] Run `make lint` - passes
- [ ] Verify Kotlin sample compiles with Grid SDK

🤖 Generated with [Claude Code](https://claude.com/claude-code)
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