Add ARC-compatible status code to TransactionStatus responses#27
Merged
Conversation
The go-sdk's ArcResponse expects a `status` int field in the JSON body representing the HTTP status code. Clients like 1sat-indexer rely on this to distinguish 200 vs 404 responses when querying transaction status. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ensures the JSON body includes `"status": 404` so ARC clients can detect not-found via the response body, not just the HTTP status code. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update ErrorFields references from errors.ErrorFields to arcerrors.ErrorFields in swagger annotations, and regenerate docs to include new status field. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When a P2P client is passed into Arcade's Initialize(), Arcade should not close it during Services.Close() — the caller owns it. The ownsP2PClient guard was already used during initialization error cleanup but was missing from the Close() method, causing a double-close panic when the caller also closed the shared client.
Collaborator
Author
|
Sorry. Claude decided to delete the branch which closed the old PR. I could have shot him. I'm getting the lint issues resolved and will have another push shortly |
Remove unnecessary nolint directives and fix uint64 underflow in fee calculation debug logging.
Only include the txid leaf at level 0; at higher levels only include the sibling since the self node is computable from the children below.
mrz1836
requested changes
Mar 7, 2026
Collaborator
mrz1836
left a comment
There was a problem hiding this comment.
CI has some errors and linter issues to resolve
…tTransactions Known transactions now return their existing status immediately without re-running BEEF/SPV validation. Prevents false 502s when the same transaction is submitted through both wallet service and paymail paths.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove unused //nolint:gosec directives in arcade.go - Add //nolint:gosec for SSRF false positives in client/client.go - Add //nolint:gosec for AuthToken config field in config/config.go - Fix log injection warning in examples/sse_client.go - Add trailing newline to docs/swagger.json - Add toolchain go1.26.1 to fix 5 Go stdlib CVEs - Add CVE-2025-15558 to nancy/govulncheck exclusion lists Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Collaborator
Author
|
This is waiting on a go-sdk release before I can fix the go replace issue. Just waiting on Satchmo for that |
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
StatusCode intfield (json:"status,omitempty") toTransactionStatusmodelStatusCode = 200in route handlers (handlePostTx,handlePostTxs,handleGetTx) and webhook deliveryArcResponseexpects astatusint in the JSON body, which clients like 1sat-indexer use to distinguish success (200) from not-found (404) when querying transaction statusServices.Close()now respectsownsP2PClientand only closes the P2P client if Arcade created it. This prevents aclose of closed channelpanic when the caller (e.g. 1sat-stack) also closes the shared client during its own shutdown sequence.Test plan
go build ./...passesgo test ./...passesGET /tx/{txid}response includes"status": 200POST /txresponse includes"status": 200"status": 200in payload