rename the card transaction EXCEPTION status to DECLINED - #925
rename the card transaction EXCEPTION status to DECLINED#925ls-bolt[bot] wants to merge 2 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 2 Skipped Deployments
|
|
✱ Stainless preview builds for gridThis PR will update the cli kotlin php ruby Edit this comment to update them. They will appear in their respective SDK's changelogs. ⏳ grid-typescript studio⏳ grid-openapi studio⏳ grid-ruby studio⏳ grid-kotlin studio⏳ grid-go studio⏳ grid-python studio⏳ grid-php studio⏳ grid-cli studio⏳ These are partial results; builds are still running. This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push. |
|
Preview deployment for your docs. Learn more about Mintlify Previews.
|
|
Server half is up: webdev#34632. It renames the sparkcore ent enum, the webhook type mapping, the regenerated Python client (0.0.119), the internal GraphQL schema, and the ops/site dashboards. No migration is needed — the card transaction status has been derived on read since the stored |
|
@greptile review |
Greptile SummaryRenames the public card transaction failure outcome from
Confidence Score: 5/5The PR appears safe to merge; the previously reported diagram omission is fixed and no actionable new issue remains. The current schema, webhook contract, generated bundles, documentation, and changelog consistently use
|
| Filename | Overview |
|---|---|
| openapi/components/schemas/cards/CardTransactionStatus.yaml | Renames EXCEPTION to DECLINED and documents both refused-authorization and failed-pull outcomes. |
| openapi/components/schemas/webhooks/WebhookType.yaml | Aligns the shared webhook event registry with CARD_TRANSACTION.DECLINED. |
| openapi/webhooks/card-transaction.yaml | Updates card transaction webhook semantics and examples to use the renamed status and event type. |
| mintlify/snippets/cards/reconciliation.mdx | Updates reconciliation guidance and now shows the direct refused-authorization transition requested in the previous review. |
| mintlify/changelog.mdx | Clearly records the breaking rename and tells integrators which comparisons and subscriptions to update. |
| openapi.yaml | Regenerated contract bundle remains aligned with the modular schema and webhook changes. |
| mintlify/openapi.yaml | Regenerated documentation bundle consistently reflects the renamed public values. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart LR
REFUSED[Authorization refused] --> DECLINED
AUTH[AUTHORIZED] --> PARTIAL[PARTIALLY_SETTLED]
PARTIAL --> SETTLED
PARTIAL -->|Funding pull fails| DECLINED
Reviews (2): Last reviewed commit: "show the direct decline path in the reco..." | Re-trigger Greptile
|
⚡ Review ledger Round 1
|
|
@greptile review |

Summary
Renames the card transaction status
EXCEPTIONtoDECLINED, and the matching webhook typeCARD_TRANSACTION.EXCEPTIONtoCARD_TRANSACTION.DECLINED.The status is where every card transaction that fails to move money ends up — an auth the issuer refused as well as a settlement whose funding-source pull failed.
EXCEPTIONreads as an error condition;DECLINEDnames the transaction outcome, and matches how the rest of the card surface already talks about refused auths (the sandbox suffix table calls002and003"Decline").Nothing about the behavior changes: the same transitions reach the status, the payload shape is unchanged, and the status has always been derived on read.
What changed
Spec (
openapi/)CardTransactionStatus—EXCEPTION→DECLINED. The status-table row now covers both ways a transaction reaches it (refused auth, failed pull) rather than only the post-hoc pull failure.WebhookTypeandCardTransactionWebhook.type—CARD_TRANSACTION.EXCEPTION→CARD_TRANSACTION.DECLINED.CardPullSummary.pendingCountand the sandbox authorization simulator description — updated to name the new status.webhooks/card-transaction.yaml— the description, theexceptionexample key (nowdeclined), and itstype/statusvalues.Docs (
mintlify/snippets/cards/)reconciliation(status table, transition diagram, and the "TheDECLINEDpath" section),terminology(the "Exception" entry is now "Decline"),webhooks,implementation-overview,sandbox-testing,intro, and the reconciliation page's frontmatter description.The reconciliation diagram also gained a direct
auth refused ──► DECLINEDentry path. Broadening the status description to cover refused auths made the old diagram — which showedDECLINEDonly as a branch off the settlement path — misleading, since it implied every declined transaction must first have beenAUTHORIZED.Changelog
A September 2026 entry recording the rename and what integrators need to update.
Bundles
openapi.yamlandmintlify/openapi.yamlregenerated viamake build.Breaking change
This renames a value on the public
CardTransactionStatusenum and a public webhook type.info.versionis unchanged, matching how thePENDING_ISSUE→PROCESSINGcard-state rename (#588) and theREFUNDEDremoval (#909) landed on this early-stage surface.info.versionis the served path (https://api.lightspark.com/grid/2025-10-13), so bumping it means standing up and serving a second versioned path — a platform-level decision rather than one a single rename can make. It has never been bumped for a breaking change in this repo; #909 removedREFUNDEDfrom this same enum yesterday and #923 removed a webhook type, neither touching it. The rule inCLAUDE.mdcame from #679, whose purpose was to revert bumps made for additive changes and pin the version to the one served path.Test plan
make build— bundles regenerate cleanly and the bundled output contains no residualEXCEPTION.make lint— Redocly reports "Your API description is valid", 2 warnings and 14 explicitly-ignored problems, identical to the counts onorigin/main(verified by re-running lint against a stashed tree). Spectral passes at--fail-severity=error.bolt-adversarial-review— no P0/P1/P2 findings, on both the initial diff and after the diagram fix.info.versionbump (declined, reasoning in the thread and below).Server side
The sparkcore half of the rename is webdev#34632: the ent enum and its derivation branches, the webhook type mapping, the regenerated Python client (0.0.119), the internal GraphQL schema, and the ops/site dashboards. No migration — the status has been derived on read since the stored
statuscolumn was dropped.Requested by @AaryamanBhute