Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
6666bb6
register webhook
dkackman Oct 5, 2025
86ca03f
https://github.com/xch-dev/sage/issues/628
dkackman Oct 5, 2025
47f40e0
save and restore hook subscriptions
dkackman Oct 5, 2025
fe92b75
allow subscriber to indicate all events now and in the future
dkackman Oct 5, 2025
fbad44b
add network and fingerprint to payload
dkackman Oct 6, 2025
9d59635
simple hook status metrics
dkackman Oct 6, 2025
d8d748d
add hmac verification
dkackman Oct 6, 2025
c6b4d9e
move settings to advanced tab
dkackman Oct 7, 2025
4006994
prepend instead of append events
dkackman Oct 8, 2025
19c0937
move test harness our of sage repo
dkackman Dec 31, 2025
7cd7140
unknown webhook error
dkackman Dec 31, 2025
b35b50f
add webhook failure tracking and auto-disable
dkackman Dec 31, 2025
f283f70
add webhook enable/disable toggle and fix re-enable bug
dkackman Dec 31, 2025
78291eb
include event data in webhook payloads
dkackman Dec 31, 2025
cb39423
add webhook notifications for the ui
dkackman Dec 31, 2025
e6743f8
remove old type
dkackman Dec 31, 2025
f236435
validate webhook url format
dkackman Dec 31, 2025
538d073
adding meta-data to sync events for the webhooks
dkackman Dec 31, 2025
8d313c3
only send coin ids with coins_updated event
dkackman Dec 31, 2025
3b363ff
add TransactionConfirmed event for the webhooks
dkackman Dec 31, 2025
f3d360f
adding tx history
dkackman Dec 31, 2025
fad6aae
delete button for registered webhook entries
dkackman Jan 1, 2026
c1e94be
get_assets_by_ids
dkackman Jan 2, 2026
72443f4
add asset hash to CoinRecord
dkackman Jan 2, 2026
a369ea5
add asset_hash to CoinRecord
dkackman Jan 3, 2026
9358776
get_nfts_by_ids
dkackman Jan 3, 2026
6b72bf0
don't auto-disable webhooks
dkackman Jan 3, 2026
bfb8f78
Merge remote-tracking branch 'upstream/main' into webhooks
dkackman Jan 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

This file was deleted.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

This file was deleted.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,13 @@ futures-util = "0.3.30"
futures-lite = "2.3.0"
sqlx = "0.8.0"
reqwest = { version = "0.12.22", default-features = false }
uuid = { version = "1.10.0", features = ["v4", "serde"] }
chrono = { version = "0.4.38", features = ["serde"] }
hmac = "0.12.1"
sha2 = "0.10.8"

# Utilities
url = "2.5.4"
indexmap = "2.3.0"
itertools = "0.13.0"
anyhow = "1.0.86"
Expand Down
3 changes: 2 additions & 1 deletion crates/sage-api/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@ workspace = true

[features]
tauri = ["dep:tauri-specta", "dep:specta"]
openapi = ["dep:utoipa", "dep:sage-api-macro"]
openapi = ["dep:utoipa", "dep:sage-api-macro", "sage-config/openapi"]

[dependencies]
sage-config = { workspace = true }
sage-api-macro = { workspace = true, optional = true }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
tauri-specta = { workspace = true, features = ["derive"], optional = true }
specta = { workspace = true, features = ["derive", "bigdecimal"], optional = true }
utoipa = { workspace = true, optional = true }
9 changes: 8 additions & 1 deletion crates/sage-api/endpoints.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
"get_are_coins_spendable": true,
"get_spendable_coin_count": true,
"get_coins_by_ids": true,
"get_nfts_by_ids": true,
"get_assets_by_ids": true,
"get_coins": true,
"get_cats": true,
"get_all_cats": true,
Expand Down Expand Up @@ -97,5 +99,10 @@
"update_nft_collection": true,
"redownload_nft": true,
"increase_derivation_index": true,
"is_asset_owned": true
"is_asset_owned": true,
"register_webhook": true,
"unregister_webhook": true,
"get_webhooks": true,
"update_webhook": true,
"get_transaction_by_id": true
}
2 changes: 2 additions & 0 deletions crates/sage-api/src/events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,6 @@ pub enum SyncEvent {
CatInfo,
DidInfo,
NftData,
WebhooksChanged,
WebhookInvoked,
}
1 change: 1 addition & 0 deletions crates/sage-api/src/records/coin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ pub struct CoinRecord {
pub spent_height: Option<u32>,
pub spent_timestamp: Option<u64>,
pub created_timestamp: Option<u64>,
pub asset_hash: Option<String>,
}
2 changes: 2 additions & 0 deletions crates/sage-api/src/requests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ mod keys;
mod offers;
mod settings;
mod transactions;
mod webhooks;

pub use actions::*;
pub use data::*;
pub use keys::*;
pub use offers::*;
pub use settings::*;
pub use transactions::*;
pub use webhooks::*;

pub mod wallet_connect;
Loading
Loading