website: snap

This commit is contained in:
nym21
2026-04-06 22:30:02 +02:00
parent 02f543af38
commit e91f1386b1
35 changed files with 872 additions and 895 deletions
@@ -106,6 +106,7 @@ impl AddrRoutes for ApiRouter<AppState> {
.summary("Address mempool transactions")
.description("Get unconfirmed transaction IDs for an address from the mempool (up to 50).\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-address-transactions-mempool)*")
.json_response::<Vec<Txid>>()
.not_modified()
.bad_request()
.not_found()
.server_error()
@@ -149,7 +149,7 @@ impl BlockRoutes for ApiRouter<AppState> {
.description(
"Returns the raw block data in binary format.\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-raw)*",
)
.json_response::<Vec<u8>>()
.binary_response()
.not_modified()
.bad_request()
.not_found()
@@ -29,6 +29,7 @@ impl FeesRoutes for ApiRouter<AppState> {
.summary("Projected mempool blocks")
.description("Get projected blocks from the mempool for fee estimation.\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-mempool-blocks-fees)*")
.json_response::<Vec<MempoolBlock>>()
.not_modified()
.server_error()
},
),
@@ -49,6 +50,7 @@ impl FeesRoutes for ApiRouter<AppState> {
.summary("Recommended fees")
.description("Get recommended fee rates for different confirmation targets.\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-recommended-fees)*")
.json_response::<RecommendedFees>()
.not_modified()
.server_error()
},
),
@@ -69,6 +71,7 @@ impl FeesRoutes for ApiRouter<AppState> {
.summary("Precise recommended fees")
.description("Get recommended fee rates with up to 3 decimal places.\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-recommended-fees-precise)*")
.json_response::<RecommendedFees>()
.not_modified()
.server_error()
},
),
@@ -55,6 +55,7 @@ impl GeneralRoutes for ApiRouter<AppState> {
.summary("Current BTC price")
.description("Returns bitcoin latest price (on-chain derived, USD only).\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-price)*")
.json_response::<Prices>()
.not_modified()
.server_error()
},
),
@@ -27,6 +27,7 @@ impl MempoolRoutes for ApiRouter<AppState> {
.summary("Mempool statistics")
.description("Get current mempool statistics including transaction count, total vsize, total fees, and fee histogram.\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-mempool)*")
.json_response::<MempoolInfo>()
.not_modified()
.server_error()
},
),
@@ -45,6 +46,7 @@ impl MempoolRoutes for ApiRouter<AppState> {
.summary("Mempool transaction IDs")
.description("Get all transaction IDs currently in the mempool.\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-mempool-transaction-ids)*")
.json_response::<Vec<Txid>>()
.not_modified()
.server_error()
},
),
@@ -63,6 +65,7 @@ impl MempoolRoutes for ApiRouter<AppState> {
.summary("Recent mempool transactions")
.description("Get the last 10 transactions to enter the mempool.\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-mempool-recent)*")
.json_response::<Vec<MempoolRecentTx>>()
.not_modified()
.server_error()
},
),
@@ -85,6 +88,7 @@ impl MempoolRoutes for ApiRouter<AppState> {
plus mempool.",
)
.json_response::<Dollars>()
.not_modified()
.server_error()
},
),
@@ -299,6 +299,7 @@ impl MiningRoutes for ApiRouter<AppState> {
.summary("Block fee rates")
.description("Get block fee rate percentiles (min, 10th, 25th, median, 75th, 90th, max) for a time period. Valid periods: 24h, 3d, 1w, 1m, 3m, 6m, 1y, 2y, 3y\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-block-feerates)*")
.json_response::<Vec<BlockFeeRatesEntry>>()
.not_modified()
.server_error()
},
),
@@ -34,6 +34,7 @@ impl TxRoutes for ApiRouter<AppState> {
.summary("CPFP info")
.description("Returns ancestors and descendants for a CPFP transaction.\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-children-pay-for-parent)*")
.json_response::<CpfpInfo>()
.not_modified()
.not_found()
.server_error(),
),
@@ -203,7 +204,7 @@ impl TxRoutes for ApiRouter<AppState> {
.transactions_tag()
.summary("Transaction raw")
.description("Returns a transaction as binary data.\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-transaction-raw)*")
.json_response::<Vec<u8>>()
.binary_response()
.not_modified()
.bad_request()
.not_found()
@@ -248,6 +249,7 @@ impl TxRoutes for ApiRouter<AppState> {
.summary("Transaction first-seen times")
.description("Returns timestamps when transactions were first seen in the mempool. Returns 0 for mined or unknown transactions.\n\n*[Mempool.space docs](https://mempool.space/docs/api/rest#get-transaction-times)*")
.json_response::<Vec<u64>>()
.not_modified()
.server_error(),
),
)
+7 -2
View File
@@ -15,6 +15,7 @@ use brk_types::{
use crate::{
CacheStrategy,
cache::CACHE_CONTROL,
extended::TransformResponseExtended,
params::{CostBasisCohortParam, CostBasisParams, CostBasisQuery, SeriesParam},
};
@@ -29,8 +30,6 @@ pub mod legacy;
const MAX_WEIGHT: usize = 4 * 8 * 10_000;
/// Maximum allowed request weight for localhost (50MB)
const MAX_WEIGHT_LOCALHOST: usize = 50 * 1_000_000;
/// Cache control header for series data responses
const CACHE_CONTROL: &str = "public, max-age=1, must-revalidate";
/// Returns the max weight for a request based on the client address.
/// Localhost requests get a generous limit, external requests get a stricter one.
@@ -262,6 +261,7 @@ impl ApiSeriesRoutes for ApiRouter<AppState> {
"Returns the single most recent value for a series, unwrapped (not inside a SeriesData object)."
)
.json_response::<serde_json::Value>()
.not_modified()
.not_found(),
),
)
@@ -284,6 +284,7 @@ impl ApiSeriesRoutes for ApiRouter<AppState> {
.summary("Get series data length")
.description("Returns the total number of data points for a series at the given index.")
.json_response::<usize>()
.not_modified()
.not_found(),
),
)
@@ -306,6 +307,7 @@ impl ApiSeriesRoutes for ApiRouter<AppState> {
.summary("Get series version")
.description("Returns the current version of a series. Changes when the series data is updated.")
.json_response::<brk_types::Version>()
.not_modified()
.not_found(),
),
)
@@ -343,6 +345,7 @@ impl ApiSeriesRoutes for ApiRouter<AppState> {
.summary("Available cost basis cohorts")
.description("List available cohorts for cost basis distribution.")
.json_response::<Vec<String>>()
.not_modified()
.server_error()
},
),
@@ -366,6 +369,7 @@ impl ApiSeriesRoutes for ApiRouter<AppState> {
.summary("Available cost basis dates")
.description("List available dates for a cohort's cost basis distribution.")
.json_response::<Vec<Date>>()
.not_modified()
.not_found()
.server_error()
},
@@ -401,6 +405,7 @@ impl ApiSeriesRoutes for ApiRouter<AppState> {
- `value`: supply (default, in BTC), realized (USD), unrealized (USD)",
)
.json_response::<CostBasisFormatted>()
.not_modified()
.not_found()
.server_error()
},