diff --git a/blockbook.yaml b/blockbook.yaml new file mode 100644 index 00000000..b408b0e8 --- /dev/null +++ b/blockbook.yaml @@ -0,0 +1,1308 @@ +openapi: 3.0.0 +info: + version: 0.1.0 + title: Blockfrost.io ~ Blockbook API documentation + x-logo: + url: https://staging.blockfrost.io/images/logo.svg + altText: Blockfrost + contact: + name: Blockfrost Team + url: "https://blockfrost.io" + email: contact@blockfrost.io + license: + name: MIT + url: "https://opensource.org/licenses/MIT" + termsOfService: "https://blockfrost.io/terms" + description: | + Blockfrost provides access to Bitcoin, Litecoin and Dogecoin blockchains through the Blockbook API. + + ## Quick Start + + Create a Bitcoin project on [blockfrost.io](https://blockfrost.io) and make your first API call: + + **Get a block by height:** + ```bash + curl https://bitcoin-mainnet.blockfrost.io/api/v2/block/1 \ + -H "project_id: YOUR_PROJECT_ID" + ``` + + Response: + ```json + { + "page": 1, + "totalPages": 1, + "itemsOnPage": 1000, + "hash": "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048", + "height": 1, + "confirmations": 946061, + "size": 215, + "time": 1231469665, + "txCount": 1, + "txs": [ + { + "txid": "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098", + "vin": [{ "n": 0, "isAddress": false, "value": "0" }], + "vout": [{ "value": "5000000000", "n": 0, "addresses": ["12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX"], "isAddress": true }], + "blockHeight": 1, + "confirmations": 946061, + "blockTime": 1231469665, + "value": "5000000000", + "valueIn": "0", + "fees": "0" + } + ] + } + ``` + + **Get address balance:** + ```bash + curl https://bitcoin-mainnet.blockfrost.io/api/v2/address/12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX?details=basic \ + -H "project_id: YOUR_PROJECT_ID" + ``` + + Response: + ```json + { + "address": "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX", + "balance": "5135259889", + "totalReceived": "5135259889", + "totalSent": "0", + "unconfirmedBalance": "0", + "unconfirmedTxs": 0, + "txs": 226 + } + ``` + + **Get xpub balance and transactions:** + ```bash + curl https://bitcoin-mainnet.blockfrost.io/api/v2/xpub/xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz?tokens=nonzero&pageSize=3 \ + -H "project_id: YOUR_PROJECT_ID" + ``` + + Response: + ```json + { + "page": 1, + "totalPages": 10, + "itemsOnPage": 3, + "address": "xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz", + "balance": "12835640", + "totalReceived": "13055640", + "totalSent": "220000", + "unconfirmedBalance": "0", + "unconfirmedTxs": 0, + "txs": 28, + "addrTxCount": 28, + "txids": [ + "88aa69107bccdddb23df8b2635ff759cdc5e6873b91bef91325f70060973299a", + "38d733842aeddcad34d0e4ef4e498fc0defa4fb9e47c9a4163b8e13483c00f3c", + "57392367f583c8cdaabf67897eef088dbaab73936ff9dddaa448c2bedc3fad4d" + ], + "usedTokens": 23, + "tokens": [ + { + "type": "XPUBAddress", + "name": "1EfgV2Hr5CDjXPavHDpDMjmU33BA2veHy6", + "path": "m/44'/0'/0'/0/0", + "transfers": 3, + "decimals": 8, + "balance": "10665", + "totalReceived": "110665", + "totalSent": "100000" + }, + { + "type": "XPUBAddress", + "name": "1CcEugXu9Yf9Qw5cpB8gHUK4X9683WyghM", + "path": "m/44'/0'/0'/0/2", + "transfers": 2, + "decimals": 8, + "balance": "19493", + "totalReceived": "19493", + "totalSent": "0" + }, + "..." + ] + } + ``` + + ## Authentication + + After signing up on https://blockfrost.io, a `project_id` token is automatically generated for each project. + Your request must include this `project_id` in the HTTP header to authenticate against Blockfrost servers. + + ``` + project_id: YOUR_PROJECT_ID + ``` + + ## Available networks + + Each network has its own `project_id`. Select the appropriate server from the dropdown above. + + + + + + + + + + + + + + + + + + + + + + + + +
NetworkEndpoint
Bitcoin mainnethttps://bitcoin-mainnet.blockfrost.io/api/v2
Bitcoin testnethttps://bitcoin-testnet.blockfrost.io/api/v2
Litecoin mainnethttps://litecoin-mainnet.blockfrost.io/api/v2
Dogecoin mainnethttps://dogecoin-mainnet.blockfrost.io/api/v2
+ + ## Concepts + + * All crypto amounts are returned as strings in the lowest denomination (e.g. satoshis for Bitcoin, litoshis for Litecoin), without a decimal point. + * Data is returned in *descending* (newest first, oldest last) order by block height. + * Results are paginated. The `pageSize` parameter (1-1000, default 1000) controls items per page for most endpoints. Block endpoints always return 1000 transactions per page. + * Empty or irrelevant fields may be omitted from responses. + * All values are case sensitive. + + ## Errors + + In addition to error responses returned by Blockbook (such as `404`, `412` and `500`), the API may also return error responses related to Blockfrost: + + * HTTP `400` return code is used when the request is not valid. + * HTTP `402` return code is used when the projects exceed their daily request limit. + * HTTP `403` return code is used when the request is not authenticated. + * HTTP `418` return code is used when the user has been auto-banned for flooding too much after previously receiving error code `402` or `429`. + * HTTP `429` return code is used when the user has sent too many requests in a given amount of time and therefore has been rate-limited. + * HTTP `500` return code is used when our endpoints are having a problem. + + ## Limits + + There are two types of limits we are enforcing: + + The first depends on your plan and is the number of request we allow per day. We defined the day from midnight to midnight of UTC time. + + The second is rate limiting. We limit an end user, distinguished by IP address, to 10 requests per second. On top of that, we allow + each user to send burst of 500 requests, which cools off at rate of 10 requests per second. In essence, a user is allowed to make another + whole burst after (currently) 500/10 = 50 seconds. E.g. if a user attempts to make a call 3 seconds after whole burst, 30 requests will be processed. + We believe this should be sufficient for most of the use cases. If it is not and you have a specific use case, please get in touch with us, and + we will make sure to take it into account as much as we can. +servers: + - url: https://bitcoin-mainnet.blockfrost.io/api/v2 + description: Bitcoin mainnet network + - url: https://bitcoin-testnet.blockfrost.io/api/v2 + description: Bitcoin testnet network + - url: https://litecoin-mainnet.blockfrost.io/api/v2 + description: Litecoin mainnet network + - url: https://dogecoin-mainnet.blockfrost.io/api/v2 + description: Dogecoin mainnet network +security: + - project_id: [] + +paths: + "/status": + get: + tags: + - Bitcoin + - Litecoin + - Dogecoin + summary: Blockchain status + operationId: getStatus + description: | + Returns the current status of both the Blockbook indexer and the connected blockchain backend, including sync state, best block height, mempool info, database size, and backend version details. + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + blockbook: + type: object + properties: + coin: + type: string + network: + type: string + host: + type: string + version: + type: string + gitCommit: + type: string + buildTime: + type: string + syncMode: + type: boolean + initialSync: + type: boolean + inSync: + type: boolean + bestHeight: + type: integer + lastBlockTime: + type: string + inSyncMempool: + type: boolean + lastMempoolTime: + type: string + mempoolSize: + type: integer + decimals: + type: integer + dbSize: + type: integer + hasFiatRates: + type: boolean + currentFiatRatesTime: + type: string + historicalFiatRatesTime: + type: string + about: + type: string + backend: + type: object + properties: + chain: + type: string + blocks: + type: integer + headers: + type: integer + bestBlockHash: + type: string + difficulty: + type: string + sizeOnDisk: + type: integer + version: + type: string + subversion: + type: string + protocolVersion: + type: string + x-examples: + Example 1: + blockbook: + coin: Bitcoin + host: s4 + version: 0.4.0 + gitCommit: 83fe6672 + buildTime: "2023-02-27T02:40:48+00:00" + syncMode: true + initialSync: false + inSync: true + bestHeight: 784299 + lastBlockTime: "2023-04-07T02:55:40.032567054Z" + inSyncMempool: true + lastMempoolTime: "2023-04-07T03:04:36.260327616Z" + mempoolSize: 30785 + decimals: 8 + dbSize: 399834379691 + hasFiatRates: true + currentFiatRatesTime: "2023-04-07T03:00:04.080770962Z" + historicalFiatRatesTime: "2023-04-07T00:00:00Z" + about: "Blockbook blockchain indexer for https://chain49.com/ - based on trezor/blockbook" + backend: + chain: main + blocks: 784299 + headers: 784299 + bestBlockHash: 00000000000000000000df1072b381603f20d3e6877cf4689c743e90d2dde719 + difficulty: "47887764338536.25" + sizeOnDisk: 534828732178 + version: "240001" + subversion: "/Satoshi:24.0.1/" + protocolVersion: "70016" + examples: + Example 1: + value: + blockbook: + coin: Bitcoin + host: s4 + version: 0.4.0 + gitCommit: 83fe6672 + buildTime: "2023-02-27T02:40:48+00:00" + syncMode: true + initialSync: false + inSync: true + bestHeight: 784299 + lastBlockTime: "2023-04-07T02:55:40.032567054Z" + inSyncMempool: true + lastMempoolTime: "2023-04-07T03:04:36.260327616Z" + mempoolSize: 30785 + decimals: 8 + dbSize: 399834379691 + hasFiatRates: true + currentFiatRatesTime: "2023-04-07T03:00:04.080770962Z" + historicalFiatRatesTime: "2023-04-07T00:00:00Z" + about: "Blockbook blockchain indexer for https://chain49.com/ - based on trezor/blockbook" + backend: + chain: main + blocks: 784299 + headers: 784299 + bestBlockHash: 00000000000000000000df1072b381603f20d3e6877cf4689c743e90d2dde719 + difficulty: "47887764338536.25" + sizeOnDisk: 534828732178 + version: "240001" + subversion: "/Satoshi:24.0.1/" + protocolVersion: "70016" + + "/block/{blockHashOrHeight}": + parameters: + - $ref: "#/components/parameters/blockHashOrHeight" + get: + summary: Block + responses: + "200": + content: + application/json: + schema: + type: object + properties: + page: + type: integer + totalPages: + type: integer + itemsOnPage: + type: integer + hash: + type: string + previousBlockHash: + type: string + nextBlockHash: + type: string + height: + type: integer + confirmations: + type: integer + size: + type: integer + time: + type: integer + version: + type: integer + merkleRoot: + type: string + nonce: + type: string + bits: + type: string + difficulty: + type: string + txCount: + type: integer + txs: + type: array + items: + type: object + properties: + txid: + type: string + vin: + type: array + items: + type: object + properties: + "n": + type: integer + isAddress: + type: boolean + value: + type: string + vout: + type: array + items: + type: object + properties: + value: + type: string + "n": + type: integer + addresses: + type: array + items: + type: string + isAddress: + type: boolean + blockHash: + type: string + blockHeight: + type: integer + confirmations: + type: integer + blockTime: + type: integer + value: + type: string + valueIn: + type: string + fees: + type: string + x-examples: + Example 1: + page: 1 + totalPages: 1 + itemsOnPage: 1000 + hash: 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 + previousBlockHash: 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f + nextBlockHash: 000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd + height: 1 + confirmations: 784303 + size: 215 + time: 1231469665 + version: 1 + merkleRoot: 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098 + nonce: "2573394689" + bits: 1d00ffff + difficulty: "1" + txCount: 1 + txs: + - txid: 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098 + vin: + - "n": 0 + isAddress: false + value: "0" + vout: + - value: "5000000000" + "n": 0 + addresses: + - 12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX + isAddress: true + blockHash: 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 + blockHeight: 1 + confirmations: 784303 + blockTime: 1231469665 + value: "5000000000" + valueIn: "0" + fees: "0" + examples: + Example 1: + value: + page: 1 + totalPages: 1 + itemsOnPage: 1000 + hash: 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 + previousBlockHash: 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f + nextBlockHash: 000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd + height: 1 + confirmations: 784303 + size: 215 + time: 1231469665 + version: 1 + merkleRoot: 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098 + nonce: "2573394689" + bits: 1d00ffff + difficulty: "1" + txCount: 1 + txs: + - txid: 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098 + vin: + - "n": 0 + isAddress: false + value: "0" + vout: + - value: "5000000000" + "n": 0 + addresses: + - 12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX + isAddress: true + blockHash: 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 + blockHeight: 1 + confirmations: 784303 + blockTime: 1231469665 + value: "5000000000" + valueIn: "0" + fees: "0" + description: OK + operationId: getBlockV2 + description: | + Returns information about a block including its transactions, subject to paging (1000 transactions per page). + + You can query by either block hash or block height. + parameters: + - $ref: "#/components/parameters/page" + tags: + - Bitcoin + - Litecoin + - Dogecoin + # - Blocks + "/block-index/{blockHeight}": + parameters: + - $ref: "#/components/parameters/blockHeight" + get: + summary: Block hash + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + blockHash: + type: string + x-examples: + Example 1: + blockHash: ed8f3af8c10ca70a136901c6dd3adf037f0aea8a93fbe9e80939214034300f1e + examples: + Example 1: + value: + blockHash: ed8f3af8c10ca70a136901c6dd3adf037f0aea8a93fbe9e80939214034300f1e + operationId: getBlockHashV2 + description: | + Returns the block hash for a given block height. + tags: + - Bitcoin + - Litecoin + - Dogecoin + # - Blocks + "/tx/{txId}": + parameters: + - $ref: "#/components/parameters/txId" + get: + summary: Transaction + operationId: getTxV2 + description: | + Returns normalized transaction data with a consistent structure. + + For confirmed transactions, `blockHeight` contains the block height and `confirmations` the number of confirmations. + For unconfirmed (mempool) transactions, `blockHeight` is `-1`, `confirmations` is `0`, and the response may include + `confirmationETABlocks` and `confirmationETASeconds` with estimated confirmation time. + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + txid: + type: string + description: Transaction hash + version: + type: integer + description: Transaction version + vin: + type: array + description: Transaction inputs + items: + type: object + properties: + txid: + type: string + vout: + type: integer + sequence: + type: integer + "n": + type: integer + addresses: + type: array + items: + type: string + isAddress: + type: boolean + value: + type: string + vout: + type: array + description: Transaction outputs + items: + type: object + properties: + value: + type: string + "n": + type: integer + hex: + type: string + addresses: + type: array + items: + type: string + isAddress: + type: boolean + blockHash: + type: string + description: Hash of the block containing the transaction + blockHeight: + type: integer + description: Block height. -1 for unconfirmed transactions. + confirmations: + type: integer + description: Number of confirmations. 0 for unconfirmed transactions. + blockTime: + type: integer + description: Block timestamp (unix epoch). For unconfirmed transactions, represents when the transaction was first seen. + size: + type: integer + description: Transaction size in bytes + vsize: + type: integer + description: Virtual size for witness transactions + value: + type: string + description: Total output value + valueIn: + type: string + description: Total input value + fees: + type: string + description: Transaction fee + hex: + type: string + description: Raw transaction hex + examples: + Confirmed transaction: + value: + txid: "f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16" + version: 1 + vin: + - txid: "0437cd7f8525ceed2324359c2d0ba26006d92d856a9c20fa0241106ee5a597c9" + vout: 0 + sequence: 4294967295 + "n": 0 + addresses: + - "12cbQLTFMXRnSzktFkuoG3eHoMeFtpTu3S" + isAddress: true + value: "5000000000" + vout: + - value: "1000000000" + "n": 0 + addresses: + - "1Q2TWHE3GMdB6BZKafqwxXtWAWgFt5Jvm3" + isAddress: true + - value: "4000000000" + "n": 1 + addresses: + - "12cbQLTFMXRnSzktFkuoG3eHoMeFtpTu3S" + isAddress: true + blockHash: "00000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee" + blockHeight: 170 + confirmations: 946061 + blockTime: 1231731025 + size: 275 + value: "5000000000" + valueIn: "5000000000" + fees: "0" + tags: + - Bitcoin + - Litecoin + - Dogecoin + # - Transactions + "/tx-specific/{txId}": + parameters: + - $ref: "#/components/parameters/txId" + get: + summary: Transaction (raw) + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + additionalProperties: true + examples: + Bitcoin: + value: + txid: "f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16" + hash: "f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16" + version: 1 + size: 275 + vsize: 275 + weight: 1100 + locktime: 0 + vin: + - txid: "0437cd7f8525ceed2324359c2d0ba26006d92d856a9c20fa0241106ee5a597c9" + vout: 0 + scriptSig: + asm: "304402204e45e16932b8af514961a1d3a1a25fdf3f4f7732e9d624c6c61548ab5fb8cd41..." + hex: "47304402204e45e16932b8af514961a1d3a1a25fdf3f4f7732e9d624c6c61548ab5fb8cd41..." + sequence: 4294967295 + vout: + - value: 10.0 + "n": 0 + scriptPubKey: + asm: "04ae1a62fe09c5f51b13905f07f06b99a2f7159b2225f374cd378d71302fa284... OP_CHECKSIG" + hex: "4104ae1a62fe09c5f51b13905f07f06b99a2f7159b2225f374cd378d71302fa284..." + type: "pubkey" + - value: 40.0 + "n": 1 + scriptPubKey: + asm: "0411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a... OP_CHECKSIG" + hex: "410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a..." + type: "pubkey" + hex: "0100000001c997a5e56e104102fa209c6a852dd9..." + blockhash: "00000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee" + confirmations: 945997 + time: 1231731025 + blocktime: 1231731025 + operationId: getTxSpecificV2 + description: | + Returns transaction data in the exact format as returned by the backend, including all coin-specific fields that are not available in a normalized transaction response. + + Use this endpoint when you need access to raw, backend-specific transaction details such as witness data or other chain-specific properties. + tags: + - Bitcoin + - Litecoin + - Dogecoin + # - Transactions + "/address/{address}": + parameters: + - $ref: "#/components/parameters/address" + get: + summary: Address + tags: + # - Addresses + - Bitcoin + - Litecoin + - Dogecoin + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + additionalProperties: true + # properties: {} + examples: + 'Bitcoin-like, details set to "txids"': + value: + page: 1 + totalPages: 1 + itemsOnPage: 1000 + address: D5Z7XrtJNg7hAtznSDMXvfiFmMYphwuWz7 + balance: "2432468097999991" + totalReceived: "3992283916999979" + totalSent: "1559815818999988" + unconfirmedBalance: "0" + unconfirmedTxs: 0 + txs: 3 + txids: + - 461dd46d5d6f56d765f82e60e6bf0727a3a1d1cb8c4144373d805b152a21d308 + - bdb5b47603c5d174eae3384c368068c8e9d2183b398ed0e31d125defa4447a10 + - 5c1d2686d70d82bd8e84b5d3dc4bd0e8485e28cdc865336db6a5e40b2098277d + # ? 'Ethereum-like (details set to "tokenBalances", secondary set to "usd")' + # : value: + # address: "0x2df3951b2037bA620C20Ed0B73CCF45Ea473e83B" + # balance: "21004631949601199" + # unconfirmedBalance: "0" + # unconfirmedTxs: 0 + # txs: 5 + # nonTokenTxs: 3 + # nonce: "1" + # tokens: + # - type: ERC20 + # name: Tether USD + # contract: "0xdAC17F958D2ee523a2206206994597C13D831ec7" + # transfers: 3 + # symbol: USDT + # decimals: 6 + # balance: "4913000000" + operationId: getAddressV2 + description: | + Returns balances and transactions of an address. + + The **details** query parameter controls the level of detail in the response (default: `txids`): + + | Value | Description | + |-------|-------------| + | `basic` | Address balances only (`balance`, `totalReceived`, `totalSent`, `txs` count). No pagination, no transaction data. | + | `txids` | *(default)* Adds pagination (`page`, `totalPages`, `itemsOnPage`) and a `txids` array of transaction hashes. Subject to `from`/`to` block height filter and `page`/`pageSize` paging. | + | `txslight` | Replaces `txids` with a `transactions` array containing lightweight tx objects — vin/vout with addresses and values, block info, fees. No `hex`, `version`, `lockTime`, `size`, or `vsize` fields. Subject to paging. | + | `txs` | Full transaction details — everything in `txslight` plus `version`, `lockTime`, `size`, `vsize`, and raw `hex`. Subject to paging. | + + Use the **secondary** parameter (e.g. `secondary=usd`) to include fiat value of the balance in the response. + parameters: + - $ref: "#/components/parameters/page" + - $ref: "#/components/parameters/pageSize" + - $ref: "#/components/parameters/fromBlock" + - $ref: "#/components/parameters/toBlock" + - $ref: "#/components/parameters/details" + "/xpub/{xpub}": + parameters: + - $ref: "#/components/parameters/xpub" + get: + summary: Xpub + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + page: + type: integer + totalPages: + type: integer + itemsOnPage: + type: integer + address: + type: string + balance: + type: string + totalReceived: + type: string + totalSent: + type: string + unconfirmedBalance: + type: string + unconfirmedTxs: + type: integer + txs: + type: integer + txids: + type: array + items: + type: string + addrTxCount: + type: integer + description: Total number of transactions across all derived addresses. + usedTokens: + type: integer + description: Total number of used addresses of the xpub, regardless of the tokens parameter. + tokens: + type: array + items: + type: object + properties: + type: + type: string + name: + type: string + path: + type: string + transfers: + type: integer + decimals: + type: integer + balance: + type: string + totalReceived: + type: string + totalSent: + type: string + secondaryValue: + type: number + x-examples: + Example 1: + page: 1 + totalPages: 1 + itemsOnPage: 1000 + address: dgub8sbe5Mi8LA4dXB9zPfLZW8arm...9Vjp2HHx91xdDEmWYpmD49fpoUYF + balance: "90000000" + totalReceived: "3093381250" + totalSent: "3083381250" + unconfirmedBalance: "0" + unconfirmedTxs: 0 + txs: 5 + txids: + - 383ccb5da16fccad294e24a2ef77bdee5810573bb1b252d8b2af4f0ac8c4e04c + - 75fb93d47969ac92112628e39148ad22323e96f0004c18f8c75938cffb6c1798 + - e8cd84f204b4a42b98e535e72f461dd9832aa081458720b0a38db5856a884876 + - 57833d50969208091bd6c950599a1b5cf9d66d992ae8a8d3560fb943b98ebb23 + - 9cfd6295f20e74ddca6dd816c8eb71a91e4da70fe396aca6f8ce09dc2947839f + usedTokens: 2 + tokens: + - type: XPUBAddress + name: DUCd1B3YBiXL5By15yXgSLZtEkvwsgEdqS + path: m/44'/3'/0'/0/0 + transfers: 3 + decimals: 8 + balance: "90000000" + totalReceived: "2903986975" + totalSent: "2803986975" + - type: XPUBAddress + name: DKu2a8Wo6zC2dmBBYXwUG3fxWDHbKnNiPj + path: m/44'/3'/0'/1/0 + transfers: 2 + decimals: 8 + balance: "0" + totalReceived: "279394275" + totalSent: "279394275" + secondaryValue: 21195.47633568 + examples: + Example 1: + value: + page: 1 + totalPages: 1 + itemsOnPage: 1000 + address: dgub8sbe5Mi8LA4dXB9zPfLZW8arm...9Vjp2HHx91xdDEmWYpmD49fpoUYF + balance: "90000000" + totalReceived: "3093381250" + totalSent: "3083381250" + unconfirmedBalance: "0" + unconfirmedTxs: 0 + txs: 5 + txids: + - 383ccb5da16fccad294e24a2ef77bdee5810573bb1b252d8b2af4f0ac8c4e04c + - 75fb93d47969ac92112628e39148ad22323e96f0004c18f8c75938cffb6c1798 + - e8cd84f204b4a42b98e535e72f461dd9832aa081458720b0a38db5856a884876 + - 57833d50969208091bd6c950599a1b5cf9d66d992ae8a8d3560fb943b98ebb23 + - 9cfd6295f20e74ddca6dd816c8eb71a91e4da70fe396aca6f8ce09dc2947839f + usedTokens: 2 + tokens: + - type: XPUBAddress + name: DUCd1B3YBiXL5By15yXgSLZtEkvwsgEdqS + path: m/44'/3'/0'/0/0 + transfers: 3 + decimals: 8 + balance: "90000000" + totalReceived: "2903986975" + totalSent: "2803986975" + - type: XPUBAddress + name: DKu2a8Wo6zC2dmBBYXwUG3fxWDHbKnNiPj + path: m/44'/3'/0'/1/0 + transfers: 2 + decimals: 8 + balance: "0" + totalReceived: "279394275" + totalSent: "279394275" + secondaryValue: 21195.47633568 + operationId: getXpubV2 + description: | + Returns balances and transactions of an extended public key. + + Supported derivation schemes: + + | Scheme | Descriptor format | + |--------|-------------------| + | BIP44 | `pkh(xpub)` | + | BIP49 | `sh(wpkh(xpub))` | + | BIP84 | `wpkh(xpub)` | + | BIP86 (Taproot) | `tr(xpub)` | + + The **details** query parameter controls the level of detail in the response (default: `txids`): + + | Value | Description | + |-------|-------------| + | `basic` | Address balances only (`balance`, `totalReceived`, `totalSent`, `txs` count). No pagination, no transaction data. | + | `txids` | *(default)* Adds pagination (`page`, `totalPages`, `itemsOnPage`) and a `txids` array of transaction hashes. Subject to `from`/`to` block height filter and `page`/`pageSize` paging. | + | `txslight` | Replaces `txids` with a `transactions` array containing lightweight tx objects — vin/vout with addresses and values, block info, fees. No `hex`, `version`, `lockTime`, `size`, or `vsize` fields. Subject to paging. | + | `txs` | Full transaction details — everything in `txslight` plus `version`, `lockTime`, `size`, `vsize`, and raw `hex`. Subject to paging. | + + The **tokens** parameter controls which derived addresses (BIP44 child addresses) are included in the response: + + | Value | Description | + |-------|-------------| + | `nonzero` | *(default)* Only derived addresses with a non-zero balance. Addresses that received funds but spent them all (balance = 0) are excluded. | + | `used` | All derived addresses that have at least one transaction, including those with zero balance. | + | `derived` | All derived addresses in the derivation gap, including those that have never been used. Unused addresses lack `balance`, `totalReceived`, and `totalSent` fields. | + + Use the **secondary** parameter (e.g. `secondary=usd`) to include fiat value of the balance. + parameters: + - $ref: "#/components/parameters/page" + - $ref: "#/components/parameters/pageSize" + - $ref: "#/components/parameters/fromBlock" + - $ref: "#/components/parameters/toBlock" + - $ref: "#/components/parameters/details" + - $ref: "#/components/parameters/tokens" + - $ref: "#/components/parameters/secondary" + tags: + # - Addresses + - Bitcoin + - Litecoin + - Dogecoin + "/utxo/{addressOrXpub}": + parameters: + - $ref: "#/components/parameters/addressOrXpub" + get: + summary: UTXOs + responses: + "200": + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + txid: + type: string + description: Transaction ID + vout: + type: integer + description: Output index + value: + type: string + description: UTXO amount in the lowest denomination (satoshis) + height: + type: integer + description: Block height. Omitted for unconfirmed UTXOs. + confirmations: + type: integer + description: Number of confirmations. 0 for unconfirmed UTXOs. + lockTime: + type: integer + description: Lock time value. Only present for unconfirmed UTXOs with non-zero lock time. + coinbase: + type: boolean + description: Whether this is a coinbase UTXO. Only detected up to 100 confirmations for performance reasons. + address: + type: string + description: Derived address. Only present when querying by xpub or output descriptor. + path: + type: string + description: Derivation path. Only present when querying by xpub or output descriptor. + examples: + Confirmed and unconfirmed: + value: + - txid: 13d26cd939bf5d155b1c60054e02d9c9b832a85e6ec4f2411be44b6b5a2842e9 + vout: 0 + value: "1422303206539" + confirmations: 0 + lockTime: 2648100 + - txid: a79e396a32e10856c97b95f43da7e9d2b9a11d446f7638dbd75e5e7603128cac + vout: 1 + value: "39748685" + height: 2648043 + confirmations: 47 + coinbase: true + - txid: de4f379fdc3ea9be063e60340461a014f372a018d70c3db35701654e7066b3ef + vout: 0 + value: "122492339065" + height: 2646043 + confirmations: 2047 + operationId: getUTXOV2 + description: | + Returns an array of unspent transaction outputs (UTXOs) for an address, xpub, or output descriptor. + + By default, both confirmed and unconfirmed UTXOs are returned. Set `confirmed=true` to exclude unconfirmed UTXOs. + + For xpubs or output descriptors, the response also includes the `address` and derivation `path` of each UTXO. + parameters: + - $ref: "#/components/parameters/confirmed" + tags: + # - Addresses + - Bitcoin + - Litecoin + - Dogecoin + "/sendtx": + post: + summary: Submit transaction + operationId: postSendTxV2 + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + result: + type: string + description: Transaction ID of the submitted transaction + examples: + Success: + value: + result: 7c3be24063f268aaa1ed81b64776798f56088757641a34fb156c4f51ed2e9d25 + "400": + description: Bad Request + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Error message from the backend + examples: + Malformed transaction: + value: + error: "-22: TX decode failed. Make sure the tx has at least one input." + Already spent inputs: + value: + error: "-25: bad-txns-inputs-missingorspent" + description: | + Submits a signed, raw transaction to the network for broadcasting. Send the hex-encoded transaction data as plain text in the request body. + + On success, returns the transaction ID. On error, returns an error message from the backend. + requestBody: + content: + text/plain: + schema: + type: object + properties: {} + description: Transaction hex as plain text + tags: + # - Transactions + - Bitcoin + - Litecoin + - Dogecoin +components: + schemas: {} + securitySchemes: + project_id: + type: apiKey + in: header + name: project_id + description: | + There are multiple token types available based on network you choose + when creating a Blockfrost a project, for a list of token types + see available networks. + parameters: + blockHashOrHeight: + name: blockHashOrHeight + in: path + required: true + schema: + type: string + example: 00000000000000000035835503f43c878ebb643f3b40bdfd0dfda760da74e73c + description: Block hash or height + page: + name: page + in: query + required: false + schema: + type: integer + example: 1 + description: "specifies page of returned transactions, starting from 1. If out of range, the closest possible page is returned." + pageSize: + name: pageSize + in: query + required: false + schema: + type: integer + minimum: 1 + maximum: 1000 + default: 1000 + example: 1000 + description: Number of items returned per page (1-1000, default 1000) + blockHeight: + name: blockHeight + in: path + required: true + schema: + type: integer + example: 15 + description: Block height/index + txId: + name: txId + in: path + required: true + schema: + type: string + example: cd8ec77174e426070d0a50779232bba7312b712e2c6843d82d963d7076c61366 + description: Transaction ID + address: + name: address + in: path + required: true + schema: + type: string + example: 321x69Cb9HZLWwAWGiUBT1U81r1zPLnEjL + description: Wallet address + details: + name: details + in: query + required: false + schema: + type: string + enum: + - basic + - tokens + - tokenBalances + - txids + - txslight + - txs + default: txids + example: basic + description: | + Level of detail in the response. Possible values: + `basic` — address balances only (balance, totalReceived, totalSent, txs count), no pagination, no transaction data; + `txids` — (default) adds pagination and a txids array of transaction hashes, subject to from/to filter and page/pageSize paging; + `txslight` — replaces txids with lightweight transaction objects (vin/vout with addresses and values, block info, fees), subject to paging; + `txs` — full transaction details including version, lockTime, size, vsize, and raw hex, subject to paging. + fromBlock: + name: fromBlock + in: query + required: false + schema: + type: integer + example: 10 + description: Filter results from this block height (inclusive). Default is no filter. + toBlock: + name: toBlock + in: query + required: false + schema: + type: integer + example: 100 + description: Filter results up to this block height (inclusive). Default is no filter. + secondary: + name: secondary + in: query + required: false + schema: + type: string + example: usd + description: Fiat currency code (e.g. `usd`, `eur`) to include fiat values alongside crypto balances in the response. + xpub: + name: xpub + in: path + required: true + schema: + type: string + example: tpubDC88gkaZi5HvJGxGDNLADkvtdpni3mLmx6vr2KnXmWMG8zfkBRggsxHVBkUpgcwPe2KKpkyvTJCdXHb1UHEWE64vczyyPQfHr1skBcsRedN + description: "Extended public key (xpub, ypub, zpub) or output descriptor. Regular addresses are not accepted — use the /address endpoint instead." + tokens: + name: tokens + in: query + required: false + schema: + type: string + default: nonzero + enum: + - nonzero + - used + - derived + example: used + description: | + Controls which derived addresses (BIP44 child addresses) are included in the xpub response. + `nonzero` — (default) only addresses with non-zero balance; + `used` — all addresses with at least one transaction, including zero balance; + `derived` — all addresses in the derivation gap, including never-used ones. + confirmed: + name: confirmed + in: query + required: false + schema: + type: boolean + example: true + description: Set to `true` to exclude unconfirmed UTXOs from the response. + hex: + name: hex + in: path + required: true + schema: + type: string + example: 01000000017f9a22c9cbf54bd902400df746f138f37bcf5b4d93eb755820e974ba43ed5f42040000006a4730440220037f4ed5427cde81d55b9b6a2fd08c8a25090c2c2fff3a75c1a57625ca8a7118022076c702fe55969fa08137f71afd4851c48e31082dd3c40c919c92cdbc826758d30121029f6da5623c9f9b68a9baf9c1bc7511df88fa34c6c2f71f7c62f2f03ff48dca80feffffff019c9700000000000017a9146144d57c8aff48492c9dfb914e120b20bad72d6f8773d00700 + description: Transaction hex data + addressOrXpub: + name: addressOrXpub + in: path + required: true + schema: + type: string + example: 321x69Cb9HZLWwAWGiUBT1U81r1zPLnEjL + description: Address or XPUB +# tags: +# - name: Status +# description: " " +# - name: Blocks +# description: " " +# - name: Transactions +# description: " " +# - name: Addresses +# description: " " diff --git a/blockfrost-openapi.yaml b/blockfrost-openapi.yaml index 30c1c51a..f85db9f3 100644 --- a/blockfrost-openapi.yaml +++ b/blockfrost-openapi.yaml @@ -28,42 +28,52 @@ info: - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + +
- Network - - Endpoint - NetworkEndpoint
Cardano mainnet - https://cardano-mainnet.blockfrost.io/api/v0 - Cardano mainnethttps://cardano-mainnet.blockfrost.io/api/v0
Cardano preprod - https://cardano-preprod.blockfrost.io/api/v0 - Cardano preprodhttps://cardano-preprod.blockfrost.io/api/v0
Cardano preview - https://cardano-preview.blockfrost.io/api/v0 - Cardano previewhttps://cardano-preview.blockfrost.io/api/v0
Midnight mainnet - https://midnight-mainnet.blockfrost.io/api/v0 - Midnight mainnethttps://midnight-mainnet.blockfrost.io/api/v0
InterPlanetary File System - https://ipfs.blockfrost.io/api/v0 - Midnight preprodhttps://midnight-preprod.blockfrost.io/api/v0
Midnight previewhttps://midnight-preview.blockfrost.io/api/v0
Bitcoin mainnethttps://bitcoin-mainnet.blockfrost.io/api/v2
Bitcoin testnethttps://bitcoin-testnet.blockfrost.io/api/v2
Litecoin mainnethttps://litecoin-mainnet.blockfrost.io/api/v2
Dogecoin mainnethttps://dogecoin-mainnet.blockfrost.io/api/v2
InterPlanetary File Systemhttps://ipfs.blockfrost.io/api/v0
@@ -246,6 +256,33 @@ info: For the full documentation — queries, mutations, subscriptions, authentication options, and examples — see the Midnight GraphQL API Reference: [![Explore the Midnight API →](https://img.shields.io/badge/Explore_the_Midnight_API_→-0033AD?style=for-the-badge)](./midnight/) + + + ## Bitcoin API + + Access the Bitcoin blockchain through the Blockbook API. + + Endpoint: `https://bitcoin-mainnet.blockfrost.io/api/v2` + + [![Explore the Bitcoin API →](https://img.shields.io/badge/Explore_the_Bitcoin_API_→-C77800?style=for-the-badge&logo=bitcoin&logoColor=white)](./blockbook/) + + + ## Litecoin API + + Access the Litecoin blockchain through the Blockbook API. + + Endpoint: `https://litecoin-mainnet.blockfrost.io/api/v2` + + [![Explore the Litecoin API →](https://img.shields.io/badge/Explore_the_Litecoin_API_→-345D9D?style=for-the-badge&logo=litecoin&logoColor=white)](./blockbook/) + + + ## Dogecoin API + + Access the Dogecoin blockchain through the Blockbook API. + + Endpoint: `https://dogecoin-mainnet.blockfrost.io/api/v2` + + [![Explore the Dogecoin API →](https://img.shields.io/badge/Explore_the_Dogecoin_API_→-9B7E1A?style=for-the-badge&logo=dogecoin&logoColor=white)](./blockbook/) servers: - url: https://cardano-mainnet.blockfrost.io/api/v0 description: Cardano Mainnet network diff --git a/docs/blockbook/blockbook-openapi.yaml b/docs/blockbook/blockbook-openapi.yaml new file mode 100644 index 00000000..b408b0e8 --- /dev/null +++ b/docs/blockbook/blockbook-openapi.yaml @@ -0,0 +1,1308 @@ +openapi: 3.0.0 +info: + version: 0.1.0 + title: Blockfrost.io ~ Blockbook API documentation + x-logo: + url: https://staging.blockfrost.io/images/logo.svg + altText: Blockfrost + contact: + name: Blockfrost Team + url: "https://blockfrost.io" + email: contact@blockfrost.io + license: + name: MIT + url: "https://opensource.org/licenses/MIT" + termsOfService: "https://blockfrost.io/terms" + description: | + Blockfrost provides access to Bitcoin, Litecoin and Dogecoin blockchains through the Blockbook API. + + ## Quick Start + + Create a Bitcoin project on [blockfrost.io](https://blockfrost.io) and make your first API call: + + **Get a block by height:** + ```bash + curl https://bitcoin-mainnet.blockfrost.io/api/v2/block/1 \ + -H "project_id: YOUR_PROJECT_ID" + ``` + + Response: + ```json + { + "page": 1, + "totalPages": 1, + "itemsOnPage": 1000, + "hash": "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048", + "height": 1, + "confirmations": 946061, + "size": 215, + "time": 1231469665, + "txCount": 1, + "txs": [ + { + "txid": "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098", + "vin": [{ "n": 0, "isAddress": false, "value": "0" }], + "vout": [{ "value": "5000000000", "n": 0, "addresses": ["12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX"], "isAddress": true }], + "blockHeight": 1, + "confirmations": 946061, + "blockTime": 1231469665, + "value": "5000000000", + "valueIn": "0", + "fees": "0" + } + ] + } + ``` + + **Get address balance:** + ```bash + curl https://bitcoin-mainnet.blockfrost.io/api/v2/address/12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX?details=basic \ + -H "project_id: YOUR_PROJECT_ID" + ``` + + Response: + ```json + { + "address": "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX", + "balance": "5135259889", + "totalReceived": "5135259889", + "totalSent": "0", + "unconfirmedBalance": "0", + "unconfirmedTxs": 0, + "txs": 226 + } + ``` + + **Get xpub balance and transactions:** + ```bash + curl https://bitcoin-mainnet.blockfrost.io/api/v2/xpub/xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz?tokens=nonzero&pageSize=3 \ + -H "project_id: YOUR_PROJECT_ID" + ``` + + Response: + ```json + { + "page": 1, + "totalPages": 10, + "itemsOnPage": 3, + "address": "xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz", + "balance": "12835640", + "totalReceived": "13055640", + "totalSent": "220000", + "unconfirmedBalance": "0", + "unconfirmedTxs": 0, + "txs": 28, + "addrTxCount": 28, + "txids": [ + "88aa69107bccdddb23df8b2635ff759cdc5e6873b91bef91325f70060973299a", + "38d733842aeddcad34d0e4ef4e498fc0defa4fb9e47c9a4163b8e13483c00f3c", + "57392367f583c8cdaabf67897eef088dbaab73936ff9dddaa448c2bedc3fad4d" + ], + "usedTokens": 23, + "tokens": [ + { + "type": "XPUBAddress", + "name": "1EfgV2Hr5CDjXPavHDpDMjmU33BA2veHy6", + "path": "m/44'/0'/0'/0/0", + "transfers": 3, + "decimals": 8, + "balance": "10665", + "totalReceived": "110665", + "totalSent": "100000" + }, + { + "type": "XPUBAddress", + "name": "1CcEugXu9Yf9Qw5cpB8gHUK4X9683WyghM", + "path": "m/44'/0'/0'/0/2", + "transfers": 2, + "decimals": 8, + "balance": "19493", + "totalReceived": "19493", + "totalSent": "0" + }, + "..." + ] + } + ``` + + ## Authentication + + After signing up on https://blockfrost.io, a `project_id` token is automatically generated for each project. + Your request must include this `project_id` in the HTTP header to authenticate against Blockfrost servers. + + ``` + project_id: YOUR_PROJECT_ID + ``` + + ## Available networks + + Each network has its own `project_id`. Select the appropriate server from the dropdown above. + + + + + + + + + + + + + + + + + + + + + + + + +
NetworkEndpoint
Bitcoin mainnethttps://bitcoin-mainnet.blockfrost.io/api/v2
Bitcoin testnethttps://bitcoin-testnet.blockfrost.io/api/v2
Litecoin mainnethttps://litecoin-mainnet.blockfrost.io/api/v2
Dogecoin mainnethttps://dogecoin-mainnet.blockfrost.io/api/v2
+ + ## Concepts + + * All crypto amounts are returned as strings in the lowest denomination (e.g. satoshis for Bitcoin, litoshis for Litecoin), without a decimal point. + * Data is returned in *descending* (newest first, oldest last) order by block height. + * Results are paginated. The `pageSize` parameter (1-1000, default 1000) controls items per page for most endpoints. Block endpoints always return 1000 transactions per page. + * Empty or irrelevant fields may be omitted from responses. + * All values are case sensitive. + + ## Errors + + In addition to error responses returned by Blockbook (such as `404`, `412` and `500`), the API may also return error responses related to Blockfrost: + + * HTTP `400` return code is used when the request is not valid. + * HTTP `402` return code is used when the projects exceed their daily request limit. + * HTTP `403` return code is used when the request is not authenticated. + * HTTP `418` return code is used when the user has been auto-banned for flooding too much after previously receiving error code `402` or `429`. + * HTTP `429` return code is used when the user has sent too many requests in a given amount of time and therefore has been rate-limited. + * HTTP `500` return code is used when our endpoints are having a problem. + + ## Limits + + There are two types of limits we are enforcing: + + The first depends on your plan and is the number of request we allow per day. We defined the day from midnight to midnight of UTC time. + + The second is rate limiting. We limit an end user, distinguished by IP address, to 10 requests per second. On top of that, we allow + each user to send burst of 500 requests, which cools off at rate of 10 requests per second. In essence, a user is allowed to make another + whole burst after (currently) 500/10 = 50 seconds. E.g. if a user attempts to make a call 3 seconds after whole burst, 30 requests will be processed. + We believe this should be sufficient for most of the use cases. If it is not and you have a specific use case, please get in touch with us, and + we will make sure to take it into account as much as we can. +servers: + - url: https://bitcoin-mainnet.blockfrost.io/api/v2 + description: Bitcoin mainnet network + - url: https://bitcoin-testnet.blockfrost.io/api/v2 + description: Bitcoin testnet network + - url: https://litecoin-mainnet.blockfrost.io/api/v2 + description: Litecoin mainnet network + - url: https://dogecoin-mainnet.blockfrost.io/api/v2 + description: Dogecoin mainnet network +security: + - project_id: [] + +paths: + "/status": + get: + tags: + - Bitcoin + - Litecoin + - Dogecoin + summary: Blockchain status + operationId: getStatus + description: | + Returns the current status of both the Blockbook indexer and the connected blockchain backend, including sync state, best block height, mempool info, database size, and backend version details. + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + blockbook: + type: object + properties: + coin: + type: string + network: + type: string + host: + type: string + version: + type: string + gitCommit: + type: string + buildTime: + type: string + syncMode: + type: boolean + initialSync: + type: boolean + inSync: + type: boolean + bestHeight: + type: integer + lastBlockTime: + type: string + inSyncMempool: + type: boolean + lastMempoolTime: + type: string + mempoolSize: + type: integer + decimals: + type: integer + dbSize: + type: integer + hasFiatRates: + type: boolean + currentFiatRatesTime: + type: string + historicalFiatRatesTime: + type: string + about: + type: string + backend: + type: object + properties: + chain: + type: string + blocks: + type: integer + headers: + type: integer + bestBlockHash: + type: string + difficulty: + type: string + sizeOnDisk: + type: integer + version: + type: string + subversion: + type: string + protocolVersion: + type: string + x-examples: + Example 1: + blockbook: + coin: Bitcoin + host: s4 + version: 0.4.0 + gitCommit: 83fe6672 + buildTime: "2023-02-27T02:40:48+00:00" + syncMode: true + initialSync: false + inSync: true + bestHeight: 784299 + lastBlockTime: "2023-04-07T02:55:40.032567054Z" + inSyncMempool: true + lastMempoolTime: "2023-04-07T03:04:36.260327616Z" + mempoolSize: 30785 + decimals: 8 + dbSize: 399834379691 + hasFiatRates: true + currentFiatRatesTime: "2023-04-07T03:00:04.080770962Z" + historicalFiatRatesTime: "2023-04-07T00:00:00Z" + about: "Blockbook blockchain indexer for https://chain49.com/ - based on trezor/blockbook" + backend: + chain: main + blocks: 784299 + headers: 784299 + bestBlockHash: 00000000000000000000df1072b381603f20d3e6877cf4689c743e90d2dde719 + difficulty: "47887764338536.25" + sizeOnDisk: 534828732178 + version: "240001" + subversion: "/Satoshi:24.0.1/" + protocolVersion: "70016" + examples: + Example 1: + value: + blockbook: + coin: Bitcoin + host: s4 + version: 0.4.0 + gitCommit: 83fe6672 + buildTime: "2023-02-27T02:40:48+00:00" + syncMode: true + initialSync: false + inSync: true + bestHeight: 784299 + lastBlockTime: "2023-04-07T02:55:40.032567054Z" + inSyncMempool: true + lastMempoolTime: "2023-04-07T03:04:36.260327616Z" + mempoolSize: 30785 + decimals: 8 + dbSize: 399834379691 + hasFiatRates: true + currentFiatRatesTime: "2023-04-07T03:00:04.080770962Z" + historicalFiatRatesTime: "2023-04-07T00:00:00Z" + about: "Blockbook blockchain indexer for https://chain49.com/ - based on trezor/blockbook" + backend: + chain: main + blocks: 784299 + headers: 784299 + bestBlockHash: 00000000000000000000df1072b381603f20d3e6877cf4689c743e90d2dde719 + difficulty: "47887764338536.25" + sizeOnDisk: 534828732178 + version: "240001" + subversion: "/Satoshi:24.0.1/" + protocolVersion: "70016" + + "/block/{blockHashOrHeight}": + parameters: + - $ref: "#/components/parameters/blockHashOrHeight" + get: + summary: Block + responses: + "200": + content: + application/json: + schema: + type: object + properties: + page: + type: integer + totalPages: + type: integer + itemsOnPage: + type: integer + hash: + type: string + previousBlockHash: + type: string + nextBlockHash: + type: string + height: + type: integer + confirmations: + type: integer + size: + type: integer + time: + type: integer + version: + type: integer + merkleRoot: + type: string + nonce: + type: string + bits: + type: string + difficulty: + type: string + txCount: + type: integer + txs: + type: array + items: + type: object + properties: + txid: + type: string + vin: + type: array + items: + type: object + properties: + "n": + type: integer + isAddress: + type: boolean + value: + type: string + vout: + type: array + items: + type: object + properties: + value: + type: string + "n": + type: integer + addresses: + type: array + items: + type: string + isAddress: + type: boolean + blockHash: + type: string + blockHeight: + type: integer + confirmations: + type: integer + blockTime: + type: integer + value: + type: string + valueIn: + type: string + fees: + type: string + x-examples: + Example 1: + page: 1 + totalPages: 1 + itemsOnPage: 1000 + hash: 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 + previousBlockHash: 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f + nextBlockHash: 000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd + height: 1 + confirmations: 784303 + size: 215 + time: 1231469665 + version: 1 + merkleRoot: 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098 + nonce: "2573394689" + bits: 1d00ffff + difficulty: "1" + txCount: 1 + txs: + - txid: 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098 + vin: + - "n": 0 + isAddress: false + value: "0" + vout: + - value: "5000000000" + "n": 0 + addresses: + - 12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX + isAddress: true + blockHash: 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 + blockHeight: 1 + confirmations: 784303 + blockTime: 1231469665 + value: "5000000000" + valueIn: "0" + fees: "0" + examples: + Example 1: + value: + page: 1 + totalPages: 1 + itemsOnPage: 1000 + hash: 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 + previousBlockHash: 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f + nextBlockHash: 000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd + height: 1 + confirmations: 784303 + size: 215 + time: 1231469665 + version: 1 + merkleRoot: 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098 + nonce: "2573394689" + bits: 1d00ffff + difficulty: "1" + txCount: 1 + txs: + - txid: 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098 + vin: + - "n": 0 + isAddress: false + value: "0" + vout: + - value: "5000000000" + "n": 0 + addresses: + - 12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX + isAddress: true + blockHash: 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 + blockHeight: 1 + confirmations: 784303 + blockTime: 1231469665 + value: "5000000000" + valueIn: "0" + fees: "0" + description: OK + operationId: getBlockV2 + description: | + Returns information about a block including its transactions, subject to paging (1000 transactions per page). + + You can query by either block hash or block height. + parameters: + - $ref: "#/components/parameters/page" + tags: + - Bitcoin + - Litecoin + - Dogecoin + # - Blocks + "/block-index/{blockHeight}": + parameters: + - $ref: "#/components/parameters/blockHeight" + get: + summary: Block hash + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + blockHash: + type: string + x-examples: + Example 1: + blockHash: ed8f3af8c10ca70a136901c6dd3adf037f0aea8a93fbe9e80939214034300f1e + examples: + Example 1: + value: + blockHash: ed8f3af8c10ca70a136901c6dd3adf037f0aea8a93fbe9e80939214034300f1e + operationId: getBlockHashV2 + description: | + Returns the block hash for a given block height. + tags: + - Bitcoin + - Litecoin + - Dogecoin + # - Blocks + "/tx/{txId}": + parameters: + - $ref: "#/components/parameters/txId" + get: + summary: Transaction + operationId: getTxV2 + description: | + Returns normalized transaction data with a consistent structure. + + For confirmed transactions, `blockHeight` contains the block height and `confirmations` the number of confirmations. + For unconfirmed (mempool) transactions, `blockHeight` is `-1`, `confirmations` is `0`, and the response may include + `confirmationETABlocks` and `confirmationETASeconds` with estimated confirmation time. + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + txid: + type: string + description: Transaction hash + version: + type: integer + description: Transaction version + vin: + type: array + description: Transaction inputs + items: + type: object + properties: + txid: + type: string + vout: + type: integer + sequence: + type: integer + "n": + type: integer + addresses: + type: array + items: + type: string + isAddress: + type: boolean + value: + type: string + vout: + type: array + description: Transaction outputs + items: + type: object + properties: + value: + type: string + "n": + type: integer + hex: + type: string + addresses: + type: array + items: + type: string + isAddress: + type: boolean + blockHash: + type: string + description: Hash of the block containing the transaction + blockHeight: + type: integer + description: Block height. -1 for unconfirmed transactions. + confirmations: + type: integer + description: Number of confirmations. 0 for unconfirmed transactions. + blockTime: + type: integer + description: Block timestamp (unix epoch). For unconfirmed transactions, represents when the transaction was first seen. + size: + type: integer + description: Transaction size in bytes + vsize: + type: integer + description: Virtual size for witness transactions + value: + type: string + description: Total output value + valueIn: + type: string + description: Total input value + fees: + type: string + description: Transaction fee + hex: + type: string + description: Raw transaction hex + examples: + Confirmed transaction: + value: + txid: "f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16" + version: 1 + vin: + - txid: "0437cd7f8525ceed2324359c2d0ba26006d92d856a9c20fa0241106ee5a597c9" + vout: 0 + sequence: 4294967295 + "n": 0 + addresses: + - "12cbQLTFMXRnSzktFkuoG3eHoMeFtpTu3S" + isAddress: true + value: "5000000000" + vout: + - value: "1000000000" + "n": 0 + addresses: + - "1Q2TWHE3GMdB6BZKafqwxXtWAWgFt5Jvm3" + isAddress: true + - value: "4000000000" + "n": 1 + addresses: + - "12cbQLTFMXRnSzktFkuoG3eHoMeFtpTu3S" + isAddress: true + blockHash: "00000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee" + blockHeight: 170 + confirmations: 946061 + blockTime: 1231731025 + size: 275 + value: "5000000000" + valueIn: "5000000000" + fees: "0" + tags: + - Bitcoin + - Litecoin + - Dogecoin + # - Transactions + "/tx-specific/{txId}": + parameters: + - $ref: "#/components/parameters/txId" + get: + summary: Transaction (raw) + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + additionalProperties: true + examples: + Bitcoin: + value: + txid: "f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16" + hash: "f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16" + version: 1 + size: 275 + vsize: 275 + weight: 1100 + locktime: 0 + vin: + - txid: "0437cd7f8525ceed2324359c2d0ba26006d92d856a9c20fa0241106ee5a597c9" + vout: 0 + scriptSig: + asm: "304402204e45e16932b8af514961a1d3a1a25fdf3f4f7732e9d624c6c61548ab5fb8cd41..." + hex: "47304402204e45e16932b8af514961a1d3a1a25fdf3f4f7732e9d624c6c61548ab5fb8cd41..." + sequence: 4294967295 + vout: + - value: 10.0 + "n": 0 + scriptPubKey: + asm: "04ae1a62fe09c5f51b13905f07f06b99a2f7159b2225f374cd378d71302fa284... OP_CHECKSIG" + hex: "4104ae1a62fe09c5f51b13905f07f06b99a2f7159b2225f374cd378d71302fa284..." + type: "pubkey" + - value: 40.0 + "n": 1 + scriptPubKey: + asm: "0411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a... OP_CHECKSIG" + hex: "410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a..." + type: "pubkey" + hex: "0100000001c997a5e56e104102fa209c6a852dd9..." + blockhash: "00000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee" + confirmations: 945997 + time: 1231731025 + blocktime: 1231731025 + operationId: getTxSpecificV2 + description: | + Returns transaction data in the exact format as returned by the backend, including all coin-specific fields that are not available in a normalized transaction response. + + Use this endpoint when you need access to raw, backend-specific transaction details such as witness data or other chain-specific properties. + tags: + - Bitcoin + - Litecoin + - Dogecoin + # - Transactions + "/address/{address}": + parameters: + - $ref: "#/components/parameters/address" + get: + summary: Address + tags: + # - Addresses + - Bitcoin + - Litecoin + - Dogecoin + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + additionalProperties: true + # properties: {} + examples: + 'Bitcoin-like, details set to "txids"': + value: + page: 1 + totalPages: 1 + itemsOnPage: 1000 + address: D5Z7XrtJNg7hAtznSDMXvfiFmMYphwuWz7 + balance: "2432468097999991" + totalReceived: "3992283916999979" + totalSent: "1559815818999988" + unconfirmedBalance: "0" + unconfirmedTxs: 0 + txs: 3 + txids: + - 461dd46d5d6f56d765f82e60e6bf0727a3a1d1cb8c4144373d805b152a21d308 + - bdb5b47603c5d174eae3384c368068c8e9d2183b398ed0e31d125defa4447a10 + - 5c1d2686d70d82bd8e84b5d3dc4bd0e8485e28cdc865336db6a5e40b2098277d + # ? 'Ethereum-like (details set to "tokenBalances", secondary set to "usd")' + # : value: + # address: "0x2df3951b2037bA620C20Ed0B73CCF45Ea473e83B" + # balance: "21004631949601199" + # unconfirmedBalance: "0" + # unconfirmedTxs: 0 + # txs: 5 + # nonTokenTxs: 3 + # nonce: "1" + # tokens: + # - type: ERC20 + # name: Tether USD + # contract: "0xdAC17F958D2ee523a2206206994597C13D831ec7" + # transfers: 3 + # symbol: USDT + # decimals: 6 + # balance: "4913000000" + operationId: getAddressV2 + description: | + Returns balances and transactions of an address. + + The **details** query parameter controls the level of detail in the response (default: `txids`): + + | Value | Description | + |-------|-------------| + | `basic` | Address balances only (`balance`, `totalReceived`, `totalSent`, `txs` count). No pagination, no transaction data. | + | `txids` | *(default)* Adds pagination (`page`, `totalPages`, `itemsOnPage`) and a `txids` array of transaction hashes. Subject to `from`/`to` block height filter and `page`/`pageSize` paging. | + | `txslight` | Replaces `txids` with a `transactions` array containing lightweight tx objects — vin/vout with addresses and values, block info, fees. No `hex`, `version`, `lockTime`, `size`, or `vsize` fields. Subject to paging. | + | `txs` | Full transaction details — everything in `txslight` plus `version`, `lockTime`, `size`, `vsize`, and raw `hex`. Subject to paging. | + + Use the **secondary** parameter (e.g. `secondary=usd`) to include fiat value of the balance in the response. + parameters: + - $ref: "#/components/parameters/page" + - $ref: "#/components/parameters/pageSize" + - $ref: "#/components/parameters/fromBlock" + - $ref: "#/components/parameters/toBlock" + - $ref: "#/components/parameters/details" + "/xpub/{xpub}": + parameters: + - $ref: "#/components/parameters/xpub" + get: + summary: Xpub + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + page: + type: integer + totalPages: + type: integer + itemsOnPage: + type: integer + address: + type: string + balance: + type: string + totalReceived: + type: string + totalSent: + type: string + unconfirmedBalance: + type: string + unconfirmedTxs: + type: integer + txs: + type: integer + txids: + type: array + items: + type: string + addrTxCount: + type: integer + description: Total number of transactions across all derived addresses. + usedTokens: + type: integer + description: Total number of used addresses of the xpub, regardless of the tokens parameter. + tokens: + type: array + items: + type: object + properties: + type: + type: string + name: + type: string + path: + type: string + transfers: + type: integer + decimals: + type: integer + balance: + type: string + totalReceived: + type: string + totalSent: + type: string + secondaryValue: + type: number + x-examples: + Example 1: + page: 1 + totalPages: 1 + itemsOnPage: 1000 + address: dgub8sbe5Mi8LA4dXB9zPfLZW8arm...9Vjp2HHx91xdDEmWYpmD49fpoUYF + balance: "90000000" + totalReceived: "3093381250" + totalSent: "3083381250" + unconfirmedBalance: "0" + unconfirmedTxs: 0 + txs: 5 + txids: + - 383ccb5da16fccad294e24a2ef77bdee5810573bb1b252d8b2af4f0ac8c4e04c + - 75fb93d47969ac92112628e39148ad22323e96f0004c18f8c75938cffb6c1798 + - e8cd84f204b4a42b98e535e72f461dd9832aa081458720b0a38db5856a884876 + - 57833d50969208091bd6c950599a1b5cf9d66d992ae8a8d3560fb943b98ebb23 + - 9cfd6295f20e74ddca6dd816c8eb71a91e4da70fe396aca6f8ce09dc2947839f + usedTokens: 2 + tokens: + - type: XPUBAddress + name: DUCd1B3YBiXL5By15yXgSLZtEkvwsgEdqS + path: m/44'/3'/0'/0/0 + transfers: 3 + decimals: 8 + balance: "90000000" + totalReceived: "2903986975" + totalSent: "2803986975" + - type: XPUBAddress + name: DKu2a8Wo6zC2dmBBYXwUG3fxWDHbKnNiPj + path: m/44'/3'/0'/1/0 + transfers: 2 + decimals: 8 + balance: "0" + totalReceived: "279394275" + totalSent: "279394275" + secondaryValue: 21195.47633568 + examples: + Example 1: + value: + page: 1 + totalPages: 1 + itemsOnPage: 1000 + address: dgub8sbe5Mi8LA4dXB9zPfLZW8arm...9Vjp2HHx91xdDEmWYpmD49fpoUYF + balance: "90000000" + totalReceived: "3093381250" + totalSent: "3083381250" + unconfirmedBalance: "0" + unconfirmedTxs: 0 + txs: 5 + txids: + - 383ccb5da16fccad294e24a2ef77bdee5810573bb1b252d8b2af4f0ac8c4e04c + - 75fb93d47969ac92112628e39148ad22323e96f0004c18f8c75938cffb6c1798 + - e8cd84f204b4a42b98e535e72f461dd9832aa081458720b0a38db5856a884876 + - 57833d50969208091bd6c950599a1b5cf9d66d992ae8a8d3560fb943b98ebb23 + - 9cfd6295f20e74ddca6dd816c8eb71a91e4da70fe396aca6f8ce09dc2947839f + usedTokens: 2 + tokens: + - type: XPUBAddress + name: DUCd1B3YBiXL5By15yXgSLZtEkvwsgEdqS + path: m/44'/3'/0'/0/0 + transfers: 3 + decimals: 8 + balance: "90000000" + totalReceived: "2903986975" + totalSent: "2803986975" + - type: XPUBAddress + name: DKu2a8Wo6zC2dmBBYXwUG3fxWDHbKnNiPj + path: m/44'/3'/0'/1/0 + transfers: 2 + decimals: 8 + balance: "0" + totalReceived: "279394275" + totalSent: "279394275" + secondaryValue: 21195.47633568 + operationId: getXpubV2 + description: | + Returns balances and transactions of an extended public key. + + Supported derivation schemes: + + | Scheme | Descriptor format | + |--------|-------------------| + | BIP44 | `pkh(xpub)` | + | BIP49 | `sh(wpkh(xpub))` | + | BIP84 | `wpkh(xpub)` | + | BIP86 (Taproot) | `tr(xpub)` | + + The **details** query parameter controls the level of detail in the response (default: `txids`): + + | Value | Description | + |-------|-------------| + | `basic` | Address balances only (`balance`, `totalReceived`, `totalSent`, `txs` count). No pagination, no transaction data. | + | `txids` | *(default)* Adds pagination (`page`, `totalPages`, `itemsOnPage`) and a `txids` array of transaction hashes. Subject to `from`/`to` block height filter and `page`/`pageSize` paging. | + | `txslight` | Replaces `txids` with a `transactions` array containing lightweight tx objects — vin/vout with addresses and values, block info, fees. No `hex`, `version`, `lockTime`, `size`, or `vsize` fields. Subject to paging. | + | `txs` | Full transaction details — everything in `txslight` plus `version`, `lockTime`, `size`, `vsize`, and raw `hex`. Subject to paging. | + + The **tokens** parameter controls which derived addresses (BIP44 child addresses) are included in the response: + + | Value | Description | + |-------|-------------| + | `nonzero` | *(default)* Only derived addresses with a non-zero balance. Addresses that received funds but spent them all (balance = 0) are excluded. | + | `used` | All derived addresses that have at least one transaction, including those with zero balance. | + | `derived` | All derived addresses in the derivation gap, including those that have never been used. Unused addresses lack `balance`, `totalReceived`, and `totalSent` fields. | + + Use the **secondary** parameter (e.g. `secondary=usd`) to include fiat value of the balance. + parameters: + - $ref: "#/components/parameters/page" + - $ref: "#/components/parameters/pageSize" + - $ref: "#/components/parameters/fromBlock" + - $ref: "#/components/parameters/toBlock" + - $ref: "#/components/parameters/details" + - $ref: "#/components/parameters/tokens" + - $ref: "#/components/parameters/secondary" + tags: + # - Addresses + - Bitcoin + - Litecoin + - Dogecoin + "/utxo/{addressOrXpub}": + parameters: + - $ref: "#/components/parameters/addressOrXpub" + get: + summary: UTXOs + responses: + "200": + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + txid: + type: string + description: Transaction ID + vout: + type: integer + description: Output index + value: + type: string + description: UTXO amount in the lowest denomination (satoshis) + height: + type: integer + description: Block height. Omitted for unconfirmed UTXOs. + confirmations: + type: integer + description: Number of confirmations. 0 for unconfirmed UTXOs. + lockTime: + type: integer + description: Lock time value. Only present for unconfirmed UTXOs with non-zero lock time. + coinbase: + type: boolean + description: Whether this is a coinbase UTXO. Only detected up to 100 confirmations for performance reasons. + address: + type: string + description: Derived address. Only present when querying by xpub or output descriptor. + path: + type: string + description: Derivation path. Only present when querying by xpub or output descriptor. + examples: + Confirmed and unconfirmed: + value: + - txid: 13d26cd939bf5d155b1c60054e02d9c9b832a85e6ec4f2411be44b6b5a2842e9 + vout: 0 + value: "1422303206539" + confirmations: 0 + lockTime: 2648100 + - txid: a79e396a32e10856c97b95f43da7e9d2b9a11d446f7638dbd75e5e7603128cac + vout: 1 + value: "39748685" + height: 2648043 + confirmations: 47 + coinbase: true + - txid: de4f379fdc3ea9be063e60340461a014f372a018d70c3db35701654e7066b3ef + vout: 0 + value: "122492339065" + height: 2646043 + confirmations: 2047 + operationId: getUTXOV2 + description: | + Returns an array of unspent transaction outputs (UTXOs) for an address, xpub, or output descriptor. + + By default, both confirmed and unconfirmed UTXOs are returned. Set `confirmed=true` to exclude unconfirmed UTXOs. + + For xpubs or output descriptors, the response also includes the `address` and derivation `path` of each UTXO. + parameters: + - $ref: "#/components/parameters/confirmed" + tags: + # - Addresses + - Bitcoin + - Litecoin + - Dogecoin + "/sendtx": + post: + summary: Submit transaction + operationId: postSendTxV2 + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + result: + type: string + description: Transaction ID of the submitted transaction + examples: + Success: + value: + result: 7c3be24063f268aaa1ed81b64776798f56088757641a34fb156c4f51ed2e9d25 + "400": + description: Bad Request + content: + application/json: + schema: + type: object + properties: + error: + type: string + description: Error message from the backend + examples: + Malformed transaction: + value: + error: "-22: TX decode failed. Make sure the tx has at least one input." + Already spent inputs: + value: + error: "-25: bad-txns-inputs-missingorspent" + description: | + Submits a signed, raw transaction to the network for broadcasting. Send the hex-encoded transaction data as plain text in the request body. + + On success, returns the transaction ID. On error, returns an error message from the backend. + requestBody: + content: + text/plain: + schema: + type: object + properties: {} + description: Transaction hex as plain text + tags: + # - Transactions + - Bitcoin + - Litecoin + - Dogecoin +components: + schemas: {} + securitySchemes: + project_id: + type: apiKey + in: header + name: project_id + description: | + There are multiple token types available based on network you choose + when creating a Blockfrost a project, for a list of token types + see available networks. + parameters: + blockHashOrHeight: + name: blockHashOrHeight + in: path + required: true + schema: + type: string + example: 00000000000000000035835503f43c878ebb643f3b40bdfd0dfda760da74e73c + description: Block hash or height + page: + name: page + in: query + required: false + schema: + type: integer + example: 1 + description: "specifies page of returned transactions, starting from 1. If out of range, the closest possible page is returned." + pageSize: + name: pageSize + in: query + required: false + schema: + type: integer + minimum: 1 + maximum: 1000 + default: 1000 + example: 1000 + description: Number of items returned per page (1-1000, default 1000) + blockHeight: + name: blockHeight + in: path + required: true + schema: + type: integer + example: 15 + description: Block height/index + txId: + name: txId + in: path + required: true + schema: + type: string + example: cd8ec77174e426070d0a50779232bba7312b712e2c6843d82d963d7076c61366 + description: Transaction ID + address: + name: address + in: path + required: true + schema: + type: string + example: 321x69Cb9HZLWwAWGiUBT1U81r1zPLnEjL + description: Wallet address + details: + name: details + in: query + required: false + schema: + type: string + enum: + - basic + - tokens + - tokenBalances + - txids + - txslight + - txs + default: txids + example: basic + description: | + Level of detail in the response. Possible values: + `basic` — address balances only (balance, totalReceived, totalSent, txs count), no pagination, no transaction data; + `txids` — (default) adds pagination and a txids array of transaction hashes, subject to from/to filter and page/pageSize paging; + `txslight` — replaces txids with lightweight transaction objects (vin/vout with addresses and values, block info, fees), subject to paging; + `txs` — full transaction details including version, lockTime, size, vsize, and raw hex, subject to paging. + fromBlock: + name: fromBlock + in: query + required: false + schema: + type: integer + example: 10 + description: Filter results from this block height (inclusive). Default is no filter. + toBlock: + name: toBlock + in: query + required: false + schema: + type: integer + example: 100 + description: Filter results up to this block height (inclusive). Default is no filter. + secondary: + name: secondary + in: query + required: false + schema: + type: string + example: usd + description: Fiat currency code (e.g. `usd`, `eur`) to include fiat values alongside crypto balances in the response. + xpub: + name: xpub + in: path + required: true + schema: + type: string + example: tpubDC88gkaZi5HvJGxGDNLADkvtdpni3mLmx6vr2KnXmWMG8zfkBRggsxHVBkUpgcwPe2KKpkyvTJCdXHb1UHEWE64vczyyPQfHr1skBcsRedN + description: "Extended public key (xpub, ypub, zpub) or output descriptor. Regular addresses are not accepted — use the /address endpoint instead." + tokens: + name: tokens + in: query + required: false + schema: + type: string + default: nonzero + enum: + - nonzero + - used + - derived + example: used + description: | + Controls which derived addresses (BIP44 child addresses) are included in the xpub response. + `nonzero` — (default) only addresses with non-zero balance; + `used` — all addresses with at least one transaction, including zero balance; + `derived` — all addresses in the derivation gap, including never-used ones. + confirmed: + name: confirmed + in: query + required: false + schema: + type: boolean + example: true + description: Set to `true` to exclude unconfirmed UTXOs from the response. + hex: + name: hex + in: path + required: true + schema: + type: string + example: 01000000017f9a22c9cbf54bd902400df746f138f37bcf5b4d93eb755820e974ba43ed5f42040000006a4730440220037f4ed5427cde81d55b9b6a2fd08c8a25090c2c2fff3a75c1a57625ca8a7118022076c702fe55969fa08137f71afd4851c48e31082dd3c40c919c92cdbc826758d30121029f6da5623c9f9b68a9baf9c1bc7511df88fa34c6c2f71f7c62f2f03ff48dca80feffffff019c9700000000000017a9146144d57c8aff48492c9dfb914e120b20bad72d6f8773d00700 + description: Transaction hex data + addressOrXpub: + name: addressOrXpub + in: path + required: true + schema: + type: string + example: 321x69Cb9HZLWwAWGiUBT1U81r1zPLnEjL + description: Address or XPUB +# tags: +# - name: Status +# description: " " +# - name: Blocks +# description: " " +# - name: Transactions +# description: " " +# - name: Addresses +# description: " " diff --git a/docs/blockbook/index.html b/docs/blockbook/index.html new file mode 100644 index 00000000..e6e0eaac --- /dev/null +++ b/docs/blockbook/index.html @@ -0,0 +1,55 @@ + + + + + + + + + Blockfrost.io - Blockbook API + + + + + + + + + + + + + + + + diff --git a/docs/blockfrost-openapi.yaml b/docs/blockfrost-openapi.yaml index 89986bae..2632284e 100644 --- a/docs/blockfrost-openapi.yaml +++ b/docs/blockfrost-openapi.yaml @@ -38,42 +38,52 @@ info: - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + +
- Network - - Endpoint - NetworkEndpoint
Cardano mainnet - https://cardano-mainnet.blockfrost.io/api/v0 - Cardano mainnethttps://cardano-mainnet.blockfrost.io/api/v0
Cardano preprod - https://cardano-preprod.blockfrost.io/api/v0 - Cardano preprodhttps://cardano-preprod.blockfrost.io/api/v0
Cardano preview - https://cardano-preview.blockfrost.io/api/v0 - Cardano previewhttps://cardano-preview.blockfrost.io/api/v0
Midnight mainnet - https://midnight-mainnet.blockfrost.io/api/v0 - Midnight mainnethttps://midnight-mainnet.blockfrost.io/api/v0
InterPlanetary File System - https://ipfs.blockfrost.io/api/v0 - Midnight preprodhttps://midnight-preprod.blockfrost.io/api/v0
Midnight previewhttps://midnight-preview.blockfrost.io/api/v0
Bitcoin mainnethttps://bitcoin-mainnet.blockfrost.io/api/v2
Bitcoin testnethttps://bitcoin-testnet.blockfrost.io/api/v2
Litecoin mainnethttps://litecoin-mainnet.blockfrost.io/api/v2
Dogecoin mainnethttps://dogecoin-mainnet.blockfrost.io/api/v2
InterPlanetary File Systemhttps://ipfs.blockfrost.io/api/v0
@@ -336,6 +346,48 @@ info: [![Explore the Midnight API →](https://img.shields.io/badge/Explore_the_Midnight_API_→-0033AD?style=for-the-badge)](./midnight/) + + + + ## Bitcoin API + + + Access the Bitcoin blockchain through the Blockbook API. + + + Endpoint: `https://bitcoin-mainnet.blockfrost.io/api/v2` + + + [![Explore the Bitcoin API + →](https://img.shields.io/badge/Explore_the_Bitcoin_API_→-C77800?style=for-the-badge&logo=bitcoin&logoColor=white)](./blockbook/) + + + + ## Litecoin API + + + Access the Litecoin blockchain through the Blockbook API. + + + Endpoint: `https://litecoin-mainnet.blockfrost.io/api/v2` + + + [![Explore the Litecoin API + →](https://img.shields.io/badge/Explore_the_Litecoin_API_→-345D9D?style=for-the-badge&logo=litecoin&logoColor=white)](./blockbook/) + + + + ## Dogecoin API + + + Access the Dogecoin blockchain through the Blockbook API. + + + Endpoint: `https://dogecoin-mainnet.blockfrost.io/api/v2` + + + [![Explore the Dogecoin API + →](https://img.shields.io/badge/Explore_the_Dogecoin_API_→-9B7E1A?style=for-the-badge&logo=dogecoin&logoColor=white)](./blockbook/) servers: - url: 'https://cardano-mainnet.blockfrost.io/api/v0' description: Cardano Mainnet network @@ -13698,3 +13750,174 @@ components: There are multiple token types available based on network you choose when creating a Blockfrost a project, for a list of token types see available networks. + parameters: + blockHashOrHeight: + name: blockHashOrHeight + in: path + required: true + schema: + type: string + example: 00000000000000000035835503f43c878ebb643f3b40bdfd0dfda760da74e73c + description: Block hash or height + page: + name: page + in: query + required: false + schema: + type: integer + example: 1 + description: >- + specifies page of returned transactions, starting from 1. If out of + range, the closest possible page is returned. + pageSize: + name: pageSize + in: query + required: false + schema: + type: integer + minimum: 1 + maximum: 1000 + default: 1000 + example: 1000 + description: 'Number of items returned per page (1-1000, default 1000)' + blockHeight: + name: blockHeight + in: path + required: true + schema: + type: integer + example: 15 + description: Block height/index + txId: + name: txId + in: path + required: true + schema: + type: string + example: cd8ec77174e426070d0a50779232bba7312b712e2c6843d82d963d7076c61366 + description: Transaction ID + address: + name: address + in: path + required: true + schema: + type: string + example: 321x69Cb9HZLWwAWGiUBT1U81r1zPLnEjL + description: Wallet address + details: + name: details + in: query + required: false + schema: + type: string + enum: + - basic + - tokens + - tokenBalances + - txids + - txslight + - txs + default: txids + example: basic + description: > + Level of detail in the response. Possible values: + + `basic` — address balances only (balance, totalReceived, totalSent, txs + count), no pagination, no transaction data; + + `txids` — (default) adds pagination and a txids array of transaction + hashes, subject to from/to filter and page/pageSize paging; + + `txslight` — replaces txids with lightweight transaction objects + (vin/vout with addresses and values, block info, fees), subject to + paging; + + `txs` — full transaction details including version, lockTime, size, + vsize, and raw hex, subject to paging. + fromBlock: + name: fromBlock + in: query + required: false + schema: + type: integer + example: 10 + description: Filter results from this block height (inclusive). Default is no filter. + toBlock: + name: toBlock + in: query + required: false + schema: + type: integer + example: 100 + description: >- + Filter results up to this block height (inclusive). Default is no + filter. + secondary: + name: secondary + in: query + required: false + schema: + type: string + example: usd + description: >- + Fiat currency code (e.g. `usd`, `eur`) to include fiat values alongside + crypto balances in the response. + xpub: + name: xpub + in: path + required: true + schema: + type: string + example: >- + tpubDC88gkaZi5HvJGxGDNLADkvtdpni3mLmx6vr2KnXmWMG8zfkBRggsxHVBkUpgcwPe2KKpkyvTJCdXHb1UHEWE64vczyyPQfHr1skBcsRedN + description: >- + Extended public key (xpub, ypub, zpub) or output descriptor. Regular + addresses are not accepted — use the /address endpoint instead. + tokens: + name: tokens + in: query + required: false + schema: + type: string + default: nonzero + enum: + - nonzero + - used + - derived + example: used + description: > + Controls which derived addresses (BIP44 child addresses) are included in + the xpub response. + + `nonzero` — (default) only addresses with non-zero balance; + + `used` — all addresses with at least one transaction, including zero + balance; + + `derived` — all addresses in the derivation gap, including never-used + ones. + confirmed: + name: confirmed + in: query + required: false + schema: + type: boolean + example: true + description: Set to `true` to exclude unconfirmed UTXOs from the response. + hex: + name: hex + in: path + required: true + schema: + type: string + example: >- + 01000000017f9a22c9cbf54bd902400df746f138f37bcf5b4d93eb755820e974ba43ed5f42040000006a4730440220037f4ed5427cde81d55b9b6a2fd08c8a25090c2c2fff3a75c1a57625ca8a7118022076c702fe55969fa08137f71afd4851c48e31082dd3c40c919c92cdbc826758d30121029f6da5623c9f9b68a9baf9c1bc7511df88fa34c6c2f71f7c62f2f03ff48dca80feffffff019c9700000000000017a9146144d57c8aff48492c9dfb914e120b20bad72d6f8773d00700 + description: Transaction hex data + addressOrXpub: + name: addressOrXpub + in: path + required: true + schema: + type: string + example: 321x69Cb9HZLWwAWGiUBT1U81r1zPLnEjL + description: Address or XPUB diff --git a/docs/midnight/index.html b/docs/midnight/index.html index a246162a..4acd04f8 100644 --- a/docs/midnight/index.html +++ b/docs/midnight/index.html @@ -789,8 +789,8 @@
Response
"block": { "hash": HexEncoded, "height": 987, - "protocolVersion": 123, - "timestamp": 123, + "protocolVersion": 987, + "timestamp": 987, "author": HexEncoded, "ledgerParameters": HexEncoded, "parent": Block, @@ -866,7 +866,7 @@
Query
Variables
-
{"epoch": 987}
+                  
{"epoch": 123}
 
@@ -875,12 +875,12 @@
Response
"data": { "committee": [ { - "epochNo": 987, - "position": 123, - "sidechainPubkeyHex": "abc123", + "epochNo": 123, + "position": 987, + "sidechainPubkeyHex": "xyz789", "expectedSlots": 123, - "auraPubkeyHex": "xyz789", - "poolIdHex": "abc123", + "auraPubkeyHex": "abc123", + "poolIdHex": "xyz789", "spoSkHex": "abc123" } ] @@ -1110,7 +1110,7 @@
Response
"data": { "currentEpochInfo": { "epochNo": 123, - "durationSeconds": 123, + "durationSeconds": 987, "elapsedSeconds": 123 } } @@ -1167,7 +1167,7 @@
Response
"blockHeight": 987, "blockHash": HexEncoded, "timestamp": 123, - "numPermissionedCandidates": 987, + "numPermissionedCandidates": 123, "numRegisteredCandidates": 987 } ] @@ -1253,13 +1253,13 @@
Response
{ "cardanoRewardAddress": CardanoRewardAddress, "dustAddress": DustAddress, - "registered": true, + "registered": false, "nightBalance": "xyz789", "generationRate": "abc123", "maxCapacity": "abc123", - "currentCapacity": "xyz789", + "currentCapacity": "abc123", "utxoTxHash": HexEncoded, - "utxoOutputIndex": 123 + "utxoOutputIndex": 987 } ] } @@ -1354,7 +1354,7 @@
Query
Variables
-
{"epoch": 987, "limit": 987, "offset": 987}
+                  
{"epoch": 123, "limit": 987, "offset": 987}
 
@@ -1363,14 +1363,14 @@
Response
"data": { "epochPerformance": [ { - "epochNo": 123, + "epochNo": 987, "spoSkHex": "xyz789", - "produced": 123, + "produced": 987, "expected": 987, - "identityLabel": "abc123", + "identityLabel": "xyz789", "stakeSnapshot": "xyz789", "poolIdHex": "xyz789", - "validatorClass": "abc123" + "validatorClass": "xyz789" } ] } @@ -1434,7 +1434,7 @@
Query
Variables
-
{"epoch": 123}
+                  
{"epoch": 987}
 
@@ -1515,11 +1515,11 @@
Response
"data": { "poolMetadata": { "poolIdHex": "abc123", - "hexId": "abc123", + "hexId": "xyz789", "name": "xyz789", - "ticker": "abc123", - "homepageUrl": "abc123", - "logoUrl": "xyz789" + "ticker": "xyz789", + "homepageUrl": "xyz789", + "logoUrl": "abc123" } } } @@ -1611,7 +1611,7 @@
Query
Variables
-
{"limit": 987, "offset": 123, "withNameOnly": true}
+                  
{"limit": 987, "offset": 987, "withNameOnly": true}
 
@@ -1620,11 +1620,11 @@
Response
"data": { "poolMetadataList": [ { - "poolIdHex": "xyz789", + "poolIdHex": "abc123", "hexId": "xyz789", - "name": "xyz789", + "name": "abc123", "ticker": "abc123", - "homepageUrl": "xyz789", + "homepageUrl": "abc123", "logoUrl": "xyz789" } ] @@ -1701,7 +1701,7 @@
Response
"data": { "registeredFirstValidEpochs": [ { - "idKey": "abc123", + "idKey": "xyz789", "firstValidEpoch": 987 } ] @@ -1784,7 +1784,7 @@
Query
Variables
-
{"fromEpoch": 123, "toEpoch": 123}
+                  
{"fromEpoch": 987, "toEpoch": 987}
 
@@ -1794,8 +1794,8 @@
Response
"registeredPresence": [ { "epochNo": 123, - "idKey": "abc123", - "source": "xyz789", + "idKey": "xyz789", + "source": "abc123", "status": "xyz789" } ] @@ -1880,7 +1880,7 @@
Query
Variables
-
{"fromEpoch": 987, "toEpoch": 123}
+                  
{"fromEpoch": 987, "toEpoch": 987}
 
@@ -1889,12 +1889,12 @@
Response
"data": { "registeredSpoSeries": [ { - "epochNo": 987, + "epochNo": 123, "federatedValidCount": 123, - "federatedInvalidCount": 987, + "federatedInvalidCount": 123, "registeredValidCount": 123, "registeredInvalidCount": 987, - "dparam": 123.45 + "dparam": 987.65 } ] } @@ -1975,7 +1975,7 @@
Query
Variables
-
{"fromEpoch": 123, "toEpoch": 987}
+                  
{"fromEpoch": 987, "toEpoch": 123}
 
@@ -1983,7 +1983,7 @@
Response
{
   "data": {
     "registeredTotalsSeries": [
-      {"epochNo": 123, "totalRegistered": 987, "newlyRegistered": 987}
+      {"epochNo": 123, "totalRegistered": 123, "newlyRegistered": 123}
     ]
   }
 }
@@ -2063,14 +2063,14 @@ 
Response
{
   "data": {
     "spoByPoolId": {
-      "poolIdHex": "abc123",
+      "poolIdHex": "xyz789",
       "validatorClass": "xyz789",
       "sidechainPubkeyHex": "abc123",
-      "auraPubkeyHex": "abc123",
+      "auraPubkeyHex": "xyz789",
       "name": "abc123",
-      "ticker": "xyz789",
-      "homepageUrl": "abc123",
-      "logoUrl": "abc123"
+      "ticker": "abc123",
+      "homepageUrl": "xyz789",
+      "logoUrl": "xyz789"
     }
   }
 }
@@ -2159,7 +2159,7 @@ 
Query
Variables
-
{"poolIdHex": "abc123"}
+                  
{"poolIdHex": "xyz789"}
 
@@ -2291,7 +2291,7 @@
Query
Variables
-
{"limit": 987, "offset": 987}
+                  
{"limit": 987, "offset": 123}
 
@@ -2300,11 +2300,11 @@
Response
"data": { "spoIdentities": [ { - "poolIdHex": "abc123", + "poolIdHex": "xyz789", "mainchainPubkeyHex": "abc123", "sidechainPubkeyHex": "xyz789", "auraPubkeyHex": "xyz789", - "validatorClass": "abc123" + "validatorClass": "xyz789" } ] } @@ -2382,9 +2382,9 @@
Response
{
   "data": {
     "spoIdentityByPoolId": {
-      "poolIdHex": "xyz789",
+      "poolIdHex": "abc123",
       "mainchainPubkeyHex": "xyz789",
-      "sidechainPubkeyHex": "abc123",
+      "sidechainPubkeyHex": "xyz789",
       "auraPubkeyHex": "xyz789",
       "validatorClass": "abc123"
     }
@@ -2482,7 +2482,7 @@ 
Query
Variables
{
   "limit": 987,
-  "offset": 123,
+  "offset": 987,
   "search": "abc123"
 }
 
@@ -2493,14 +2493,14 @@
Response
"data": { "spoList": [ { - "poolIdHex": "abc123", - "validatorClass": "abc123", + "poolIdHex": "xyz789", + "validatorClass": "xyz789", "sidechainPubkeyHex": "xyz789", "auraPubkeyHex": "abc123", - "name": "abc123", - "ticker": "xyz789", + "name": "xyz789", + "ticker": "abc123", "homepageUrl": "xyz789", - "logoUrl": "xyz789" + "logoUrl": "abc123" } ] } @@ -2596,9 +2596,9 @@
Query
Variables
{
-  "spoSkHex": "abc123",
+  "spoSkHex": "xyz789",
   "limit": 123,
-  "offset": 123
+  "offset": 987
 }
 
@@ -2608,11 +2608,11 @@
Response
"data": { "spoPerformanceBySpoSk": [ { - "epochNo": 123, + "epochNo": 987, "spoSkHex": "xyz789", - "produced": 123, + "produced": 987, "expected": 123, - "identityLabel": "abc123", + "identityLabel": "xyz789", "stakeSnapshot": "abc123", "poolIdHex": "xyz789", "validatorClass": "xyz789" @@ -2701,7 +2701,7 @@
Query
Variables
-
{"limit": 123, "offset": 123}
+                  
{"limit": 987, "offset": 987}
 
@@ -2710,14 +2710,14 @@
Response
"data": { "spoPerformanceLatest": [ { - "epochNo": 123, + "epochNo": 987, "spoSkHex": "xyz789", "produced": 123, "expected": 123, "identityLabel": "abc123", "stakeSnapshot": "abc123", - "poolIdHex": "abc123", - "validatorClass": "xyz789" + "poolIdHex": "xyz789", + "validatorClass": "abc123" } ] } @@ -2826,10 +2826,10 @@
Query
Variables
{
-  "limit": 987,
+  "limit": 123,
   "offset": 987,
   "search": "xyz789",
-  "orderByStakeDesc": true
+  "orderByStakeDesc": false
 }
 
@@ -2840,17 +2840,17 @@
Response
"stakeDistribution": [ { "poolIdHex": "xyz789", - "name": "abc123", - "ticker": "xyz789", - "homepageUrl": "abc123", - "logoUrl": "abc123", + "name": "xyz789", + "ticker": "abc123", + "homepageUrl": "xyz789", + "logoUrl": "xyz789", "liveStake": "abc123", - "activeStake": "xyz789", + "activeStake": "abc123", "liveDelegators": 987, "liveSaturation": 123.45, "declaredPledge": "xyz789", "livePledge": "xyz789", - "stakeShare": 123.45 + "stakeShare": 987.65 } ] } @@ -2919,7 +2919,7 @@
Variables
Response
-
{"data": {"stakePoolOperators": ["abc123"]}}
+                  
{"data": {"stakePoolOperators": ["xyz789"]}}
 
@@ -2971,7 +2971,7 @@
Response
{ "blockHeight": 123, "blockHash": HexEncoded, - "timestamp": 123, + "timestamp": 987, "hash": HexEncoded, "url": "xyz789" } @@ -3629,9 +3629,9 @@
Response
"data": { "blocks": { "hash": HexEncoded, - "height": 987, - "protocolVersion": 987, - "timestamp": 123, + "height": 123, + "protocolVersion": 123, + "timestamp": 987, "author": HexEncoded, "ledgerParameters": HexEncoded, "parent": Block, @@ -3892,7 +3892,7 @@
Response
"id": 987, "raw": HexEncoded, "maxId": 123, - "protocolVersion": 123 + "protocolVersion": 987 } } } @@ -4156,7 +4156,7 @@
Query
Variables
-
{"address": UnshieldedAddress, "transactionId": 123}
+                  
{"address": UnshieldedAddress, "transactionId": 987}
 
@@ -4230,7 +4230,7 @@
Query
Variables
-
{"id": 123}
+                  
{"id": 987}
 
@@ -4241,7 +4241,7 @@
Response
"id": 123, "raw": HexEncoded, "maxId": 987, - "protocolVersion": 123 + "protocolVersion": 987 } } } @@ -4324,7 +4324,7 @@
Example
{
   "hash": HexEncoded,
   "height": 123,
-  "protocolVersion": 987,
+  "protocolVersion": 123,
   "timestamp": 123,
   "author": HexEncoded,
   "ledgerParameters": HexEncoded,
@@ -4461,10 +4461,10 @@ 
Fields
Example
{
-  "startIndex": 987,
-  "endIndex": 987,
+  "startIndex": 123,
+  "endIndex": 123,
   "update": HexEncoded,
-  "protocolVersion": 987
+  "protocolVersion": 123
 }
 
@@ -4545,10 +4545,10 @@
Example
"epochNo": 123, "position": 987, "sidechainPubkeyHex": "xyz789", - "expectedSlots": 987, + "expectedSlots": 123, "auraPubkeyHex": "abc123", - "poolIdHex": "abc123", - "spoSkHex": "xyz789" + "poolIdHex": "xyz789", + "spoSkHex": "abc123" }
@@ -4741,7 +4741,7 @@
Fields
Example
{
   "tokenType": HexEncoded,
-  "amount": "abc123"
+  "amount": "xyz789"
 }
 
@@ -5053,11 +5053,11 @@
Fields
Example
{
-  "blockHeight": 123,
+  "blockHeight": 987,
   "blockHash": HexEncoded,
-  "timestamp": 987,
-  "numPermissionedCandidates": 987,
-  "numRegisteredCandidates": 123
+  "timestamp": 123,
+  "numPermissionedCandidates": 123,
+  "numRegisteredCandidates": 987
 }
 
@@ -5129,7 +5129,7 @@
Example
"id": 987, "raw": HexEncoded, "maxId": 987, - "protocolVersion": 123 + "protocolVersion": 987 }
@@ -5213,10 +5213,10 @@
Example
"cardanoRewardAddress": CardanoRewardAddress, "dustAddress": DustAddress, "registered": false, - "nightBalance": "abc123", - "generationRate": "xyz789", - "maxCapacity": "abc123", - "currentCapacity": "abc123", + "nightBalance": "xyz789", + "generationRate": "abc123", + "maxCapacity": "xyz789", + "currentCapacity": "xyz789", "utxoTxHash": HexEncoded, "utxoOutputIndex": 123 } @@ -5277,8 +5277,8 @@
Example
{
   "id": 123,
   "raw": HexEncoded,
-  "maxId": 123,
-  "protocolVersion": 987,
+  "maxId": 987,
+  "protocolVersion": 123,
   "output": DustOutput
 }
 
@@ -5373,7 +5373,7 @@
Example
{
   "id": 123,
   "raw": HexEncoded,
-  "maxId": 123,
+  "maxId": 987,
   "protocolVersion": 123
 }
 
@@ -5465,9 +5465,9 @@
Fields
Example
{
-  "id": 987,
+  "id": 123,
   "raw": HexEncoded,
-  "maxId": 123,
+  "maxId": 987,
   "protocolVersion": 123
 }
 
@@ -5521,7 +5521,7 @@
Fields
Example
-
{"epochNo": 123, "durationSeconds": 987, "elapsedSeconds": 123}
+                  
{"epochNo": 987, "durationSeconds": 987, "elapsedSeconds": 123}
 
@@ -5604,14 +5604,14 @@
Fields
Example
{
-  "epochNo": 987,
-  "spoSkHex": "xyz789",
+  "epochNo": 123,
+  "spoSkHex": "abc123",
   "produced": 987,
-  "expected": 123,
-  "identityLabel": "abc123",
+  "expected": 987,
+  "identityLabel": "xyz789",
   "stakeSnapshot": "abc123",
-  "poolIdHex": "xyz789",
-  "validatorClass": "xyz789"
+  "poolIdHex": "abc123",
+  "validatorClass": "abc123"
 }
 
@@ -5658,7 +5658,7 @@
Fields
Example
-
{"idKey": "abc123", "firstValidEpoch": 987}
+                  
{"idKey": "xyz789", "firstValidEpoch": 987}
 
@@ -5679,7 +5679,7 @@
Description
Example
-
987.65
+                  
123.45
 
@@ -5717,7 +5717,7 @@
Description
Example
-
123
+                  
987
 
@@ -5768,10 +5768,10 @@
Fields
Example
{
-  "id": 123,
+  "id": 987,
   "raw": HexEncoded,
   "maxId": 123,
-  "protocolVersion": 987
+  "protocolVersion": 123
 }
 
@@ -5844,11 +5844,11 @@
Fields
Example
{
   "poolIdHex": "abc123",
-  "hexId": "abc123",
+  "hexId": "xyz789",
   "name": "abc123",
   "ticker": "abc123",
-  "homepageUrl": "abc123",
-  "logoUrl": "abc123"
+  "homepageUrl": "xyz789",
+  "logoUrl": "xyz789"
 }
 
@@ -5909,9 +5909,9 @@
Fields
Example
{
   "epochNo": 987,
-  "idKey": "abc123",
-  "source": "abc123",
-  "status": "abc123"
+  "idKey": "xyz789",
+  "source": "xyz789",
+  "status": "xyz789"
 }
 
@@ -5984,11 +5984,11 @@
Fields
Example
{
   "epochNo": 123,
-  "federatedValidCount": 123,
+  "federatedValidCount": 987,
   "federatedInvalidCount": 987,
   "registeredValidCount": 123,
-  "registeredInvalidCount": 987,
-  "dparam": 123.45
+  "registeredInvalidCount": 123,
+  "dparam": 987.65
 }
 
@@ -6041,7 +6041,7 @@
Fields
Example
-
{"epochNo": 123, "totalRegistered": 123, "newlyRegistered": 987}
+                  
{"epochNo": 987, "totalRegistered": 987, "newlyRegistered": 123}
 
@@ -6163,7 +6163,7 @@
Example
"transactionResult": TransactionResult, "identifiers": [HexEncoded], "merkleTreeRoot": HexEncoded, - "startIndex": 123, + "startIndex": 987, "endIndex": 123, "fees": TransactionFees, "block": Block, @@ -6356,9 +6356,9 @@
Fields
Example
{
-  "highestEndIndex": 987,
+  "highestEndIndex": 123,
   "highestCheckedEndIndex": 123,
-  "highestRelevantEndIndex": 987
+  "highestRelevantEndIndex": 123
 }
 
@@ -6442,11 +6442,11 @@
Fields
Example
{
-  "poolIdHex": "abc123",
+  "poolIdHex": "xyz789",
   "validatorClass": "abc123",
   "sidechainPubkeyHex": "xyz789",
   "auraPubkeyHex": "xyz789",
-  "name": "abc123",
+  "name": "xyz789",
   "ticker": "abc123",
   "homepageUrl": "abc123",
   "logoUrl": "abc123"
@@ -6572,8 +6572,8 @@ 
Fields
Example
{
   "poolIdHex": "xyz789",
-  "mainchainPubkeyHex": "xyz789",
-  "sidechainPubkeyHex": "xyz789",
+  "mainchainPubkeyHex": "abc123",
+  "sidechainPubkeyHex": "abc123",
   "auraPubkeyHex": "xyz789",
   "validatorClass": "abc123"
 }
@@ -6672,15 +6672,15 @@ 
Fields
Example
{
-  "poolIdHex": "abc123",
-  "name": "abc123",
-  "ticker": "abc123",
+  "poolIdHex": "xyz789",
+  "name": "xyz789",
+  "ticker": "xyz789",
   "homepageUrl": "abc123",
-  "logoUrl": "xyz789",
-  "liveStake": "abc123",
+  "logoUrl": "abc123",
+  "liveStake": "xyz789",
   "activeStake": "xyz789",
-  "liveDelegators": 123,
-  "liveSaturation": 987.65,
+  "liveDelegators": 987,
+  "liveSaturation": 123.45,
   "declaredPledge": "abc123",
   "livePledge": "xyz789",
   "stakeShare": 123.45
@@ -6837,7 +6837,7 @@ 
Fields
Example
{
-  "id": 123,
+  "id": 987,
   "hash": HexEncoded,
   "protocolVersion": 123,
   "raw": HexEncoded,
@@ -6893,7 +6893,7 @@ 
Fields
Example
{
   "hash": HexEncoded,
-  "url": "xyz789"
+  "url": "abc123"
 }
 
@@ -6954,11 +6954,11 @@
Fields
Example
{
-  "blockHeight": 987,
+  "blockHeight": 123,
   "blockHash": HexEncoded,
-  "timestamp": 987,
+  "timestamp": 123,
   "hash": HexEncoded,
-  "url": "abc123"
+  "url": "xyz789"
 }
 
@@ -7078,7 +7078,7 @@
Example
{
   "id": 123,
   "hash": HexEncoded,
-  "protocolVersion": 987,
+  "protocolVersion": 123,
   "raw": HexEncoded,
   "block": Block,
   "contractActions": [ContractAction],
@@ -7131,8 +7131,8 @@ 
Fields
Example
{
-  "paidFees": "xyz789",
-  "estimatedFees": "xyz789"
+  "paidFees": "abc123",
+  "estimatedFees": "abc123"
 }
 
@@ -7539,10 +7539,10 @@
Example
{
   "owner": UnshieldedAddress,
   "tokenType": HexEncoded,
-  "value": "xyz789",
+  "value": "abc123",
   "intentHash": HexEncoded,
   "outputIndex": 123,
-  "ctime": 987,
+  "ctime": 123,
   "initialNonce": HexEncoded,
   "registeredForDustGeneration": false,
   "createdAtTransaction": Transaction,
@@ -7619,10 +7619,10 @@ 
Fields
Example
{
-  "id": 123,
+  "id": 987,
   "raw": HexEncoded,
-  "maxId": 987,
-  "protocolVersion": 987
+  "maxId": 123,
+  "protocolVersion": 123
 }
 
diff --git a/openapi-merge.json b/openapi-merge.json index 590694a3..0cb89ae4 100644 --- a/openapi-merge.json +++ b/openapi-merge.json @@ -3,6 +3,18 @@ { "inputFile": "./blockfrost-openapi.yaml" }, + { + "inputFile": "./blockbook.yaml", + "pathModification": { + "prepend": "/api/v2" + }, + "operationSelection": { + "includeTags": ["SKIPBitcoin"] + }, + "description": { + "append": false + } + }, { "inputFile": "./mithril.yaml", "pathModification": { diff --git a/openapi.json b/openapi.json index cbd13646..c93e7d58 100644 --- a/openapi.json +++ b/openapi.json @@ -17,7 +17,7 @@ "url": "https://opensource.org/licenses/MIT" }, "termsOfService": "https://blockfrost.io/terms", - "description": "Blockfrost is an API as a service that allows users to interact with the Cardano blockchain, Midnight blockchain, and parts of their ecosystems.\n\n## Tokens\n\nAfter signing up on https://blockfrost.io, a `project_id` token is automatically generated for each project.\nHTTP header of your request MUST include this `project_id` in order to authenticate against Blockfrost servers.\n\n## Available networks\n\nAt the moment, you can use the following networks. Please, note that each network has its own `project_id`.\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n Network\n \n Endpoint\n
Cardano mainnet\n https://cardano-mainnet.blockfrost.io/api/v0\n
Cardano preprod\n https://cardano-preprod.blockfrost.io/api/v0\n
Cardano preview\n https://cardano-preview.blockfrost.io/api/v0\n
Midnight mainnet\n https://midnight-mainnet.blockfrost.io/api/v0\n
InterPlanetary File System\n https://ipfs.blockfrost.io/api/v0\n
\n\n## Concepts\n\n* All endpoints return either a JSON object or an array.\n* Data is returned in *ascending* (oldest first, newest last) order, if not stated otherwise.\n * You might use the `?order=desc` query parameter to reverse this order.\n* By default, we return 100 results at a time. You have to use `?page=2` to list through the results.\n* All time and timestamp related fields (except `server_time`) are in seconds of UNIX time.\n* All amounts are returned in Lovelaces, where 1 ADA = 1 000 000 Lovelaces.\n* Addresses, accounts and pool IDs are in Bech32 format.\n* All values are case sensitive.\n* All hex encoded values are lower case.\n* Examples are not based on real data. Any resemblance to actual events is purely coincidental.\n* We allow to upload files up to 100MB of size to IPFS. This might increase in the future.\n* Only pinned IPFS files are counted towards the IPFS quota.\n* Non-pinned IPFS files are subject to regular garbage collection and will be removed unless pinned.\n* We allow maximum of 100 queued pins per IPFS user.\n\n## Errors\n\n### HTTP Status codes\n\nThe following are HTTP status code your application might receive when reaching Blockfrost endpoints and\nit should handle all of these cases.\n\n* HTTP `400` return code is used when the request is not valid.\n* HTTP `402` return code is used when the projects exceed their daily request limit.\n* HTTP `403` return code is used when the request is not authenticated.\n* HTTP `404` return code is used when the resource doesn't exist.\n* HTTP `418` return code is used when the user has been auto-banned for flooding too much after previously receiving error code `402` or `429`.\n* HTTP `425` return code is used in Cardano networks, when the user has submitted a transaction when the mempool is already full, not accepting new txs straight away.\n* HTTP `425` return code is used in IPFS network, when the user has submitted a pin when the pin queue is already full, not accepting new pins straight away.\n* HTTP `429` return code is used when the user has sent too many requests in a given amount of time and therefore has been rate-limited.\n* HTTP `500` return code is used when our endpoints are having a problem.\n\n### Error codes\n\nAn internal error code number is used for better indication of the error in question. It is passed using the following payload.\n\n```json\n{\n \"status_code\": 403,\n \"error\": \"Forbidden\",\n \"message\": \"Invalid project token.\"\n}\n```\n## Limits\n\nThere are two types of limits we are enforcing:\n\nThe first depends on your plan and is the number of request we allow per day. We defined the day from midnight to midnight of UTC time.\n\nThe second is rate limiting. We limit an end user, distinguished by IP address, to 10 requests per second. On top of that, we allow\neach user to send burst of 500 requests, which cools off at rate of 10 requests per second. In essence, a user is allowed to make another\nwhole burst after (currently) 500/10 = 50 seconds. E.g. if a user attempts to make a call 3 seconds after whole burst, 30 requests will be processed.\nWe believe this should be sufficient for most of the use cases. If it is not and you have a specific use case, please get in touch with us, and\nwe will make sure to take it into account as much as we can.\n\n## SDKs\n\nWe support a number of SDKs that will help you in developing your application on top of Blockfrost.\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Programming languageSDK
JavaScript\n blockfrost-js\n
Haskell\n blockfrost-haskell\n
Python\n blockfrost-python\n
Rust\n blockfrost-rust\n
Golang\n blockfrost-go\n
Ruby\n blockfrost-ruby\n
Java\n blockfrost-java\n
Scala\n blockfrost-scala\n
Swift\n blockfrost-swift\n
Kotlin\n blockfrost-kotlin\n
Elixir\n blockfrost-elixir\n
.NET\n blockfrost-dotnet\n
Arduino\n blockfrost-arduino\n
PHP\n blockfrost-php\n
Crystal\n blockfrost-crystal\n
\n\n\n## Midnight API\n\n\nThe Midnight Indexer API exposes a GraphQL API that enables clients to query and subscribe to blockchain data — blocks, transactions, contracts, and wallet-related events — indexed from the Midnight blockchain.\n\nAvailable networks: `mainnet`, `preprod`, `preview`\n\n| Service | URL | Protocol |\n|---------|-----|----------|\n| **Indexer HTTP API** | `https://midnight-{network}.blockfrost.io/api/v0` | HTTP POST (GraphQL) |\n| **Indexer Subscriptions API** | `wss://midnight-{network}.blockfrost.io/api/v0/ws` | WebSocket |\n| **Node RPC** | `https://rpc.midnight-{network}.blockfrost.io` | JSON-RPC |\n\n\nFor the full documentation — queries, mutations, subscriptions, authentication options, and examples — see the Midnight GraphQL API Reference:\n\n[![Explore the Midnight API →](https://img.shields.io/badge/Explore_the_Midnight_API_→-0033AD?style=for-the-badge)](./midnight/)\n" + "description": "Blockfrost is an API as a service that allows users to interact with the Cardano blockchain, Midnight blockchain, and parts of their ecosystems.\n\n## Tokens\n\nAfter signing up on https://blockfrost.io, a `project_id` token is automatically generated for each project.\nHTTP header of your request MUST include this `project_id` in order to authenticate against Blockfrost servers.\n\n## Available networks\n\nAt the moment, you can use the following networks. Please, note that each network has its own `project_id`.\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NetworkEndpoint
Cardano mainnethttps://cardano-mainnet.blockfrost.io/api/v0
Cardano preprodhttps://cardano-preprod.blockfrost.io/api/v0
Cardano previewhttps://cardano-preview.blockfrost.io/api/v0
Midnight mainnethttps://midnight-mainnet.blockfrost.io/api/v0
Midnight preprodhttps://midnight-preprod.blockfrost.io/api/v0
Midnight previewhttps://midnight-preview.blockfrost.io/api/v0
Bitcoin mainnethttps://bitcoin-mainnet.blockfrost.io/api/v2
Bitcoin testnethttps://bitcoin-testnet.blockfrost.io/api/v2
Litecoin mainnethttps://litecoin-mainnet.blockfrost.io/api/v2
Dogecoin mainnethttps://dogecoin-mainnet.blockfrost.io/api/v2
InterPlanetary File Systemhttps://ipfs.blockfrost.io/api/v0
\n\n## Concepts\n\n* All endpoints return either a JSON object or an array.\n* Data is returned in *ascending* (oldest first, newest last) order, if not stated otherwise.\n * You might use the `?order=desc` query parameter to reverse this order.\n* By default, we return 100 results at a time. You have to use `?page=2` to list through the results.\n* All time and timestamp related fields (except `server_time`) are in seconds of UNIX time.\n* All amounts are returned in Lovelaces, where 1 ADA = 1 000 000 Lovelaces.\n* Addresses, accounts and pool IDs are in Bech32 format.\n* All values are case sensitive.\n* All hex encoded values are lower case.\n* Examples are not based on real data. Any resemblance to actual events is purely coincidental.\n* We allow to upload files up to 100MB of size to IPFS. This might increase in the future.\n* Only pinned IPFS files are counted towards the IPFS quota.\n* Non-pinned IPFS files are subject to regular garbage collection and will be removed unless pinned.\n* We allow maximum of 100 queued pins per IPFS user.\n\n## Errors\n\n### HTTP Status codes\n\nThe following are HTTP status code your application might receive when reaching Blockfrost endpoints and\nit should handle all of these cases.\n\n* HTTP `400` return code is used when the request is not valid.\n* HTTP `402` return code is used when the projects exceed their daily request limit.\n* HTTP `403` return code is used when the request is not authenticated.\n* HTTP `404` return code is used when the resource doesn't exist.\n* HTTP `418` return code is used when the user has been auto-banned for flooding too much after previously receiving error code `402` or `429`.\n* HTTP `425` return code is used in Cardano networks, when the user has submitted a transaction when the mempool is already full, not accepting new txs straight away.\n* HTTP `425` return code is used in IPFS network, when the user has submitted a pin when the pin queue is already full, not accepting new pins straight away.\n* HTTP `429` return code is used when the user has sent too many requests in a given amount of time and therefore has been rate-limited.\n* HTTP `500` return code is used when our endpoints are having a problem.\n\n### Error codes\n\nAn internal error code number is used for better indication of the error in question. It is passed using the following payload.\n\n```json\n{\n \"status_code\": 403,\n \"error\": \"Forbidden\",\n \"message\": \"Invalid project token.\"\n}\n```\n## Limits\n\nThere are two types of limits we are enforcing:\n\nThe first depends on your plan and is the number of request we allow per day. We defined the day from midnight to midnight of UTC time.\n\nThe second is rate limiting. We limit an end user, distinguished by IP address, to 10 requests per second. On top of that, we allow\neach user to send burst of 500 requests, which cools off at rate of 10 requests per second. In essence, a user is allowed to make another\nwhole burst after (currently) 500/10 = 50 seconds. E.g. if a user attempts to make a call 3 seconds after whole burst, 30 requests will be processed.\nWe believe this should be sufficient for most of the use cases. If it is not and you have a specific use case, please get in touch with us, and\nwe will make sure to take it into account as much as we can.\n\n## SDKs\n\nWe support a number of SDKs that will help you in developing your application on top of Blockfrost.\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Programming languageSDK
JavaScript\n blockfrost-js\n
Haskell\n blockfrost-haskell\n
Python\n blockfrost-python\n
Rust\n blockfrost-rust\n
Golang\n blockfrost-go\n
Ruby\n blockfrost-ruby\n
Java\n blockfrost-java\n
Scala\n blockfrost-scala\n
Swift\n blockfrost-swift\n
Kotlin\n blockfrost-kotlin\n
Elixir\n blockfrost-elixir\n
.NET\n blockfrost-dotnet\n
Arduino\n blockfrost-arduino\n
PHP\n blockfrost-php\n
Crystal\n blockfrost-crystal\n
\n\n\n## Midnight API\n\n\nThe Midnight Indexer API exposes a GraphQL API that enables clients to query and subscribe to blockchain data — blocks, transactions, contracts, and wallet-related events — indexed from the Midnight blockchain.\n\nAvailable networks: `mainnet`, `preprod`, `preview`\n\n| Service | URL | Protocol |\n|---------|-----|----------|\n| **Indexer HTTP API** | `https://midnight-{network}.blockfrost.io/api/v0` | HTTP POST (GraphQL) |\n| **Indexer Subscriptions API** | `wss://midnight-{network}.blockfrost.io/api/v0/ws` | WebSocket |\n| **Node RPC** | `https://rpc.midnight-{network}.blockfrost.io` | JSON-RPC |\n\n\nFor the full documentation — queries, mutations, subscriptions, authentication options, and examples — see the Midnight GraphQL API Reference:\n\n[![Explore the Midnight API →](https://img.shields.io/badge/Explore_the_Midnight_API_→-0033AD?style=for-the-badge)](./midnight/)\n\n\n## Bitcoin API\n\nAccess the Bitcoin blockchain through the Blockbook API.\n\nEndpoint: `https://bitcoin-mainnet.blockfrost.io/api/v2`\n\n[![Explore the Bitcoin API →](https://img.shields.io/badge/Explore_the_Bitcoin_API_→-C77800?style=for-the-badge&logo=bitcoin&logoColor=white)](./blockbook/)\n\n\n## Litecoin API\n\nAccess the Litecoin blockchain through the Blockbook API.\n\nEndpoint: `https://litecoin-mainnet.blockfrost.io/api/v2`\n\n[![Explore the Litecoin API →](https://img.shields.io/badge/Explore_the_Litecoin_API_→-345D9D?style=for-the-badge&logo=litecoin&logoColor=white)](./blockbook/)\n\n\n## Dogecoin API\n\nAccess the Dogecoin blockchain through the Blockbook API.\n\nEndpoint: `https://dogecoin-mainnet.blockfrost.io/api/v2`\n\n[![Explore the Dogecoin API →](https://img.shields.io/badge/Explore_the_Dogecoin_API_→-9B7E1A?style=for-the-badge&logo=dogecoin&logoColor=white)](./blockbook/)\n" }, "servers": [ { @@ -17643,6 +17643,176 @@ "name": "project_id", "description": "There are multiple token types available based on network you choose\nwhen creating a Blockfrost a project, for a list of token types\nsee available networks.\n" } + }, + "parameters": { + "blockHashOrHeight": { + "name": "blockHashOrHeight", + "in": "path", + "required": true, + "schema": { + "type": "string", + "example": "00000000000000000035835503f43c878ebb643f3b40bdfd0dfda760da74e73c" + }, + "description": "Block hash or height" + }, + "page": { + "name": "page", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "example": 1 + }, + "description": "specifies page of returned transactions, starting from 1. If out of range, the closest possible page is returned." + }, + "pageSize": { + "name": "pageSize", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "maximum": 1000, + "default": 1000, + "example": 1000 + }, + "description": "Number of items returned per page (1-1000, default 1000)" + }, + "blockHeight": { + "name": "blockHeight", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "example": 15 + }, + "description": "Block height/index" + }, + "txId": { + "name": "txId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "example": "cd8ec77174e426070d0a50779232bba7312b712e2c6843d82d963d7076c61366" + }, + "description": "Transaction ID" + }, + "address": { + "name": "address", + "in": "path", + "required": true, + "schema": { + "type": "string", + "example": "321x69Cb9HZLWwAWGiUBT1U81r1zPLnEjL" + }, + "description": "Wallet address" + }, + "details": { + "name": "details", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "basic", + "tokens", + "tokenBalances", + "txids", + "txslight", + "txs" + ], + "default": "txids", + "example": "basic" + }, + "description": "Level of detail in the response. Possible values:\n`basic` — address balances only (balance, totalReceived, totalSent, txs count), no pagination, no transaction data;\n`txids` — (default) adds pagination and a txids array of transaction hashes, subject to from/to filter and page/pageSize paging;\n`txslight` — replaces txids with lightweight transaction objects (vin/vout with addresses and values, block info, fees), subject to paging;\n`txs` — full transaction details including version, lockTime, size, vsize, and raw hex, subject to paging.\n" + }, + "fromBlock": { + "name": "fromBlock", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "example": 10 + }, + "description": "Filter results from this block height (inclusive). Default is no filter." + }, + "toBlock": { + "name": "toBlock", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "example": 100 + }, + "description": "Filter results up to this block height (inclusive). Default is no filter." + }, + "secondary": { + "name": "secondary", + "in": "query", + "required": false, + "schema": { + "type": "string", + "example": "usd" + }, + "description": "Fiat currency code (e.g. `usd`, `eur`) to include fiat values alongside crypto balances in the response." + }, + "xpub": { + "name": "xpub", + "in": "path", + "required": true, + "schema": { + "type": "string", + "example": "tpubDC88gkaZi5HvJGxGDNLADkvtdpni3mLmx6vr2KnXmWMG8zfkBRggsxHVBkUpgcwPe2KKpkyvTJCdXHb1UHEWE64vczyyPQfHr1skBcsRedN" + }, + "description": "Extended public key (xpub, ypub, zpub) or output descriptor. Regular addresses are not accepted — use the /address endpoint instead." + }, + "tokens": { + "name": "tokens", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "nonzero", + "enum": [ + "nonzero", + "used", + "derived" + ], + "example": "used" + }, + "description": "Controls which derived addresses (BIP44 child addresses) are included in the xpub response.\n`nonzero` — (default) only addresses with non-zero balance;\n`used` — all addresses with at least one transaction, including zero balance;\n`derived` — all addresses in the derivation gap, including never-used ones.\n" + }, + "confirmed": { + "name": "confirmed", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "example": true + }, + "description": "Set to `true` to exclude unconfirmed UTXOs from the response." + }, + "hex": { + "name": "hex", + "in": "path", + "required": true, + "schema": { + "type": "string", + "example": "01000000017f9a22c9cbf54bd902400df746f138f37bcf5b4d93eb755820e974ba43ed5f42040000006a4730440220037f4ed5427cde81d55b9b6a2fd08c8a25090c2c2fff3a75c1a57625ca8a7118022076c702fe55969fa08137f71afd4851c48e31082dd3c40c919c92cdbc826758d30121029f6da5623c9f9b68a9baf9c1bc7511df88fa34c6c2f71f7c62f2f03ff48dca80feffffff019c9700000000000017a9146144d57c8aff48492c9dfb914e120b20bad72d6f8773d00700" + }, + "description": "Transaction hex data" + }, + "addressOrXpub": { + "name": "addressOrXpub", + "in": "path", + "required": true, + "schema": { + "type": "string", + "example": "321x69Cb9HZLWwAWGiUBT1U81r1zPLnEjL" + }, + "description": "Address or XPUB" + } } } } \ No newline at end of file diff --git a/openapi.yaml b/openapi.yaml index 89986bae..2632284e 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -38,42 +38,52 @@ info: - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + +
- Network - - Endpoint - NetworkEndpoint
Cardano mainnet - https://cardano-mainnet.blockfrost.io/api/v0 - Cardano mainnethttps://cardano-mainnet.blockfrost.io/api/v0
Cardano preprod - https://cardano-preprod.blockfrost.io/api/v0 - Cardano preprodhttps://cardano-preprod.blockfrost.io/api/v0
Cardano preview - https://cardano-preview.blockfrost.io/api/v0 - Cardano previewhttps://cardano-preview.blockfrost.io/api/v0
Midnight mainnet - https://midnight-mainnet.blockfrost.io/api/v0 - Midnight mainnethttps://midnight-mainnet.blockfrost.io/api/v0
InterPlanetary File System - https://ipfs.blockfrost.io/api/v0 - Midnight preprodhttps://midnight-preprod.blockfrost.io/api/v0
Midnight previewhttps://midnight-preview.blockfrost.io/api/v0
Bitcoin mainnethttps://bitcoin-mainnet.blockfrost.io/api/v2
Bitcoin testnethttps://bitcoin-testnet.blockfrost.io/api/v2
Litecoin mainnethttps://litecoin-mainnet.blockfrost.io/api/v2
Dogecoin mainnethttps://dogecoin-mainnet.blockfrost.io/api/v2
InterPlanetary File Systemhttps://ipfs.blockfrost.io/api/v0
@@ -336,6 +346,48 @@ info: [![Explore the Midnight API →](https://img.shields.io/badge/Explore_the_Midnight_API_→-0033AD?style=for-the-badge)](./midnight/) + + + + ## Bitcoin API + + + Access the Bitcoin blockchain through the Blockbook API. + + + Endpoint: `https://bitcoin-mainnet.blockfrost.io/api/v2` + + + [![Explore the Bitcoin API + →](https://img.shields.io/badge/Explore_the_Bitcoin_API_→-C77800?style=for-the-badge&logo=bitcoin&logoColor=white)](./blockbook/) + + + + ## Litecoin API + + + Access the Litecoin blockchain through the Blockbook API. + + + Endpoint: `https://litecoin-mainnet.blockfrost.io/api/v2` + + + [![Explore the Litecoin API + →](https://img.shields.io/badge/Explore_the_Litecoin_API_→-345D9D?style=for-the-badge&logo=litecoin&logoColor=white)](./blockbook/) + + + + ## Dogecoin API + + + Access the Dogecoin blockchain through the Blockbook API. + + + Endpoint: `https://dogecoin-mainnet.blockfrost.io/api/v2` + + + [![Explore the Dogecoin API + →](https://img.shields.io/badge/Explore_the_Dogecoin_API_→-9B7E1A?style=for-the-badge&logo=dogecoin&logoColor=white)](./blockbook/) servers: - url: 'https://cardano-mainnet.blockfrost.io/api/v0' description: Cardano Mainnet network @@ -13698,3 +13750,174 @@ components: There are multiple token types available based on network you choose when creating a Blockfrost a project, for a list of token types see available networks. + parameters: + blockHashOrHeight: + name: blockHashOrHeight + in: path + required: true + schema: + type: string + example: 00000000000000000035835503f43c878ebb643f3b40bdfd0dfda760da74e73c + description: Block hash or height + page: + name: page + in: query + required: false + schema: + type: integer + example: 1 + description: >- + specifies page of returned transactions, starting from 1. If out of + range, the closest possible page is returned. + pageSize: + name: pageSize + in: query + required: false + schema: + type: integer + minimum: 1 + maximum: 1000 + default: 1000 + example: 1000 + description: 'Number of items returned per page (1-1000, default 1000)' + blockHeight: + name: blockHeight + in: path + required: true + schema: + type: integer + example: 15 + description: Block height/index + txId: + name: txId + in: path + required: true + schema: + type: string + example: cd8ec77174e426070d0a50779232bba7312b712e2c6843d82d963d7076c61366 + description: Transaction ID + address: + name: address + in: path + required: true + schema: + type: string + example: 321x69Cb9HZLWwAWGiUBT1U81r1zPLnEjL + description: Wallet address + details: + name: details + in: query + required: false + schema: + type: string + enum: + - basic + - tokens + - tokenBalances + - txids + - txslight + - txs + default: txids + example: basic + description: > + Level of detail in the response. Possible values: + + `basic` — address balances only (balance, totalReceived, totalSent, txs + count), no pagination, no transaction data; + + `txids` — (default) adds pagination and a txids array of transaction + hashes, subject to from/to filter and page/pageSize paging; + + `txslight` — replaces txids with lightweight transaction objects + (vin/vout with addresses and values, block info, fees), subject to + paging; + + `txs` — full transaction details including version, lockTime, size, + vsize, and raw hex, subject to paging. + fromBlock: + name: fromBlock + in: query + required: false + schema: + type: integer + example: 10 + description: Filter results from this block height (inclusive). Default is no filter. + toBlock: + name: toBlock + in: query + required: false + schema: + type: integer + example: 100 + description: >- + Filter results up to this block height (inclusive). Default is no + filter. + secondary: + name: secondary + in: query + required: false + schema: + type: string + example: usd + description: >- + Fiat currency code (e.g. `usd`, `eur`) to include fiat values alongside + crypto balances in the response. + xpub: + name: xpub + in: path + required: true + schema: + type: string + example: >- + tpubDC88gkaZi5HvJGxGDNLADkvtdpni3mLmx6vr2KnXmWMG8zfkBRggsxHVBkUpgcwPe2KKpkyvTJCdXHb1UHEWE64vczyyPQfHr1skBcsRedN + description: >- + Extended public key (xpub, ypub, zpub) or output descriptor. Regular + addresses are not accepted — use the /address endpoint instead. + tokens: + name: tokens + in: query + required: false + schema: + type: string + default: nonzero + enum: + - nonzero + - used + - derived + example: used + description: > + Controls which derived addresses (BIP44 child addresses) are included in + the xpub response. + + `nonzero` — (default) only addresses with non-zero balance; + + `used` — all addresses with at least one transaction, including zero + balance; + + `derived` — all addresses in the derivation gap, including never-used + ones. + confirmed: + name: confirmed + in: query + required: false + schema: + type: boolean + example: true + description: Set to `true` to exclude unconfirmed UTXOs from the response. + hex: + name: hex + in: path + required: true + schema: + type: string + example: >- + 01000000017f9a22c9cbf54bd902400df746f138f37bcf5b4d93eb755820e974ba43ed5f42040000006a4730440220037f4ed5427cde81d55b9b6a2fd08c8a25090c2c2fff3a75c1a57625ca8a7118022076c702fe55969fa08137f71afd4851c48e31082dd3c40c919c92cdbc826758d30121029f6da5623c9f9b68a9baf9c1bc7511df88fa34c6c2f71f7c62f2f03ff48dca80feffffff019c9700000000000017a9146144d57c8aff48492c9dfb914e120b20bad72d6f8773d00700 + description: Transaction hex data + addressOrXpub: + name: addressOrXpub + in: path + required: true + schema: + type: string + example: 321x69Cb9HZLWwAWGiUBT1U81r1zPLnEjL + description: Address or XPUB diff --git a/package.json b/package.json index a1a09c86..4184b13a 100644 --- a/package.json +++ b/package.json @@ -15,9 +15,10 @@ "build": "yarn sync-version && rimraf lib && yarn tsc && yarn bundle && yarn generate-types && yarn generate-json-schema", "copy-spec": "cp ./openapi.yaml ./docs/blockfrost-openapi.yaml", "lint": "scalar validate ./src/definitions.yaml", - "bundle": "yarn redocly bundle -o ./blockfrost-openapi.yaml src/definitions.yaml && yarn openapi-merge-cli && yarn redocly bundle -o ./openapi.json ./openapi.yaml && yarn copy-spec && yarn build:midnight-docs", + "bundle": "yarn redocly bundle -o ./blockfrost-openapi.yaml src/definitions.yaml && yarn openapi-merge-cli && yarn redocly bundle -o ./openapi.json ./openapi.yaml && yarn copy-spec && yarn build:midnight-docs && yarn build:blockbook-docs", "build:midnight-docs": "yarn spectaql ./spectaql.yaml && cp ./midnight-indexer-api.graphql ./docs/midnight/midnight-indexer-api.graphql", - "generate-types": "yarn openapi-typescript ./openapi.yaml --output ./src/generated-types.ts", + "build:blockbook-docs": "cp ./blockbook.yaml ./docs/blockbook/blockbook-openapi.yaml", + "generate-types": "yarn openapi-typescript ./blockfrost-openapi.yaml --output ./src/generated-types.ts", "generate-types:rust": "openapi-generator-cli generate -i openapi.yaml -g rust -o ./rust -c rust/openapi-generator.json --global-property models,modelDocs=false,apis=false,apiDocs=false,supportingFiles && node rust/fix-cargo.js", "generate-json-schema": "node lib/scripts/generate-json-schema.js > json-schema.json", "sync-version": "ts-node ./src/scripts/sync-version.ts", diff --git a/src/definitions.yaml b/src/definitions.yaml index a9fa80ad..93a8942e 100644 --- a/src/definitions.yaml +++ b/src/definitions.yaml @@ -28,42 +28,52 @@ info: - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + +
- Network - - Endpoint - NetworkEndpoint
Cardano mainnet - https://cardano-mainnet.blockfrost.io/api/v0 - Cardano mainnethttps://cardano-mainnet.blockfrost.io/api/v0
Cardano preprod - https://cardano-preprod.blockfrost.io/api/v0 - Cardano preprodhttps://cardano-preprod.blockfrost.io/api/v0
Cardano preview - https://cardano-preview.blockfrost.io/api/v0 - Cardano previewhttps://cardano-preview.blockfrost.io/api/v0
Midnight mainnet - https://midnight-mainnet.blockfrost.io/api/v0 - Midnight mainnethttps://midnight-mainnet.blockfrost.io/api/v0
InterPlanetary File System - https://ipfs.blockfrost.io/api/v0 - Midnight preprodhttps://midnight-preprod.blockfrost.io/api/v0
Midnight previewhttps://midnight-preview.blockfrost.io/api/v0
Bitcoin mainnethttps://bitcoin-mainnet.blockfrost.io/api/v2
Bitcoin testnethttps://bitcoin-testnet.blockfrost.io/api/v2
Litecoin mainnethttps://litecoin-mainnet.blockfrost.io/api/v2
Dogecoin mainnethttps://dogecoin-mainnet.blockfrost.io/api/v2
InterPlanetary File Systemhttps://ipfs.blockfrost.io/api/v0
@@ -247,6 +257,33 @@ info: [![Explore the Midnight API →](https://img.shields.io/badge/Explore_the_Midnight_API_→-0033AD?style=for-the-badge)](./midnight/) + + ## Bitcoin API + + Access the Bitcoin blockchain through the Blockbook API. + + Endpoint: `https://bitcoin-mainnet.blockfrost.io/api/v2` + + [![Explore the Bitcoin API →](https://img.shields.io/badge/Explore_the_Bitcoin_API_→-C77800?style=for-the-badge&logo=bitcoin&logoColor=white)](./blockbook/) + + + ## Litecoin API + + Access the Litecoin blockchain through the Blockbook API. + + Endpoint: `https://litecoin-mainnet.blockfrost.io/api/v2` + + [![Explore the Litecoin API →](https://img.shields.io/badge/Explore_the_Litecoin_API_→-345D9D?style=for-the-badge&logo=litecoin&logoColor=white)](./blockbook/) + + + ## Dogecoin API + + Access the Dogecoin blockchain through the Blockbook API. + + Endpoint: `https://dogecoin-mainnet.blockfrost.io/api/v2` + + [![Explore the Dogecoin API →](https://img.shields.io/badge/Explore_the_Dogecoin_API_→-9B7E1A?style=for-the-badge&logo=dogecoin&logoColor=white)](./blockbook/) + servers: - url: https://cardano-mainnet.blockfrost.io/api/v0 description: Cardano Mainnet network diff --git a/src/generated-types.ts b/src/generated-types.ts index f801010b..4f6111ed 100644 --- a/src/generated-types.ts +++ b/src/generated-types.ts @@ -11327,1045 +11327,6 @@ export interface components { } & { [key: string]: unknown; }; - /** - * @description Represents general information about Aggregator public information and signing capabilities - * @example { - * "open_api_version": "0.1.17", - * "documentation_url": "https://mithril.network", - * "capabilities": { - * "signed_entity_types": [ - * "MithrilStakeDistribution", - * "CardanoImmutableFilesFull", - * "CardanoTransactions" - * ], - * "cardano_transactions_prover": { - * "max_hashes_allowed_by_request": 100 - * } - * } - * } - */ - AggregatorFeaturesMessage: { - /** - * Format: byte - * @description Open API version - */ - open_api_version: string; - /** - * Format: byte - * @description Mithril documentation - */ - documentation_url: string; - /** @description Capabilities of the aggregator */ - capabilities: { - /** @description Signed entity types that are signed by the aggregator */ - signed_entity_types: ("MithrilStakeDistribution" | "CardanoStakeDistribution" | "CardanoImmutableFilesFull" | "CardanoTransactions")[]; - /** @description Cardano transactions prover capabilities */ - cardano_transactions_prover?: { - /** - * Format: int64 - * @description Maximum number of hashes allowed for a single request - */ - max_hashes_allowed_by_request: number; - }; - }; - }; - /** - * Format: int64 - * @description Cardano chain epoch number - */ - Epoch: number; - /** - * @description Epoch settings - * @example { - * "epoch": 329, - * "protocol": { - * "k": 857, - * "m": 6172, - * "phi_f": 0.2 - * }, - * "next_protocol": { - * "k": 2422, - * "m": 20973, - * "phi_f": 0.2 - * } - * } - */ - EpochSettingsMessage: { - epoch: components["schemas"]["Epoch"]; - protocol: components["schemas"]["ProtocolParameters"]; - next_protocol: components["schemas"]["ProtocolParameters"]; - }; - /** - * @description Protocol cryptographic parameters - * @example { - * "k": 857, - * "m": 6172, - * "phi_f": 0.2 - * } - */ - ProtocolParameters: { - /** - * Format: int64 - * @description Quorum parameter - */ - k: number; - /** - * Format: int64 - * @description Security parameter (number of lotteries) - */ - m: number; - /** - * Format: double - * @description f in phi(w) = 1 - (1 - f)^w, where w is the stake of a participant - */ - phi_f: number; - } & { - [key: string]: unknown; - }; - /** - * @description A point in the Cardano chain at which a Mithril certificate of the Cardano Database should be produced - * @example { - * "network": "mainnet", - * "epoch": 329, - * "immutable_file_number": 7060000 - * } - */ - CardanoDbBeacon: { - /** @description Cardano network */ - network: string; - epoch: components["schemas"]["Epoch"]; - /** - * Format: int64 - * @description Number of the last immutable file that should be included the snapshot - */ - immutable_file_number: number; - } & { - [key: string]: unknown; - }; - /** - * @description Entity type of the message that is signed - * @example { - * "MithrilStakeDistribution": 246 - * } - */ - SignedEntityType: { - [key: string]: unknown; - }; - /** - * @description CertificatePendingMessage represents all the information related to the certificate currently expecting to receive quorum of single signatures - * @example { - * "epoch": 329, - * "beacon": { - * "network": "mainnet", - * "epoch": 329, - * "immutable_file_number": 7060000 - * }, - * "entity_type": { - * "MithrilStakeDistribution": 246 - * }, - * "protocol": { - * "k": 857, - * "m": 6172, - * "phi_f": 0.2 - * }, - * "next_protocol": { - * "k": 2422, - * "m": 20973, - * "phi_f": 0.2 - * }, - * "signers": [ - * { - * "party_id": "1234567890", - * "verification_key": "7b12766b223a5c342b39302c32392c39392c39382c3131313138342c32252c32352c31353", - * "verification_key_signature": "7b5473693727369676d61223a7b227369676d6d61223a7b261223a9b227369676d61213a", - * "operational_certificate": "5b73136372c38302c37342c3136362c313535b5b3232352c3230332c3235352c313030262c38322c39382c32c39332c3138342c3135362c3136362c32312c3131312c3232312c36332c3137372c3232332c3232332c31392c3537", - * "kes_period": 123 - * }, - * { - * "party_id": "2345678900", - * "verification_key": "7b392c39392c13131312766b223a5c39382c313342b39302c252c32352c31353328342c32", - * "verification_key_signature": "2c33302c3133312c3138322c34362c3133352c372c3139302c3235322c35352c32322c39", - * "operational_certificate": "3231342c3137372c37312c3232352c3233332c3135335d2c322c3139322c5b3133352c34312c3230332c3131332c3c33352c3234302c3230392c312c32392c3233332c33342c3138382c3134312c3130342c3234382c3231392c3", - * "kes_period": 456 - * } - * ], - * "next_signers": [ - * { - * "party_id": "3456789000", - * "verification_key": "7b22766b223a5b3133382c32392c3137332c3134342c36332c3233352c39372c3138302c3", - * "verification_key_signature": "7b227369676d61223a7b227369676d61223a7b227369676d61223a7b227369676d612239", - * "operational_certificate": "5b5b5b3232352c3230332c3235352c3130302c3136372c38302c37342c3136362c3135362c38322c39382c3232312c36332c3137372c3232332c3232332c31392c35372c39332c312c35302c3133392c3233342c3137332c32352", - * "kes_period": 789 - * }, - * { - * "party_id": "4567890000", - * "verification_key": "34302c3132332c3139302c3134352c3132342c35342c3133302c37302c3136332c3139332", - * "verification_key_signature": "302c3230312c38362c3139312c36302c3234352c3138332c3134342c3139392c3130335f", - * "operational_certificate": "2c38382c3138372c3233332c34302c37322c31362c36365d2c312c3132332c5b31362c3136392c3134312c3138332c32322c3137342c3131312c33322c36342c35322c2c3232382c37392c3137352c32395312c3838282c323030", - * "kes_period": 876 - * } - * ] - * } - */ - CertificatePendingMessage: { - epoch: components["schemas"]["Epoch"]; - /** @deprecated */ - beacon?: components["schemas"]["CardanoDbBeacon"]; - entity_type: components["schemas"]["SignedEntityType"]; - protocol: components["schemas"]["ProtocolParameters"]; - next_protocol: components["schemas"]["ProtocolParameters"]; - signers: components["schemas"]["Signer"][]; - next_signers: components["schemas"]["Signer"][]; - }; - /** - * @description Stake represents the stakes of a participant in the Cardano chain - * @example { - * "stake": 1234 - * } - */ - Stake: { - /** - * Format: int64 - * @description Stake share as computed in the 'stake distribution' by the Cardano Node, multiplied by a billion (1.0e9) - */ - stake: number; - } & { - [key: string]: unknown; - }; - /** - * @description Signer represents a signing participant in the network - * @example { - * "party_id": "1234567890", - * "verification_key": "7b12766b223a5c342b39302c32392c39392c39382c3131313138342c32252c32352c31353", - * "verification_key_signature": "7b5473693727369676d61223a7b227369676d6d61223a7b261223a9b227369676d61213a", - * "operational_certificate": "5b73136372c38302c37342c3136362c313535b5b3232352c3230332c3235352c313030262c38322c39382c32c39332c3138342c3135362c3136362c32312c3131312c3232312c36332c3137372c3232332c3232332c31392c3537", - * "kes_period": 123 - * } - */ - Signer: { - /** @description The unique identifier of the signer */ - party_id: string; - /** - * Format: byte - * @description The public key used to authenticate signer signature - */ - verification_key: string; - /** - * Format: byte - * @description The signature of the verification_key (signed by the Cardano node KES secret key) - */ - verification_key_signature?: string; - /** - * Format: byte - * @description The operational certificate of the stake pool operator attached to the signer node - */ - operational_certificate?: string; - /** - * Format: int64 - * @description The number of updates of the KES secret key that signed the verification key - */ - kes_period?: number; - } & { - [key: string]: unknown; - }; - /** - * @description This message represents a signing participant in the network. - * @example { - * "epoch": 329, - * "party_id": "1234567890", - * "verification_key": "7b12766b223a5c342b39302c32392c39392c39382c3131313138342c32252c32352c31353", - * "verification_key_signature": "7b5473693727369676d61223a7b227369676d6d61223a7b261223a9b227369676d61213a", - * "operational_certificate": "5b73136372c38302c37342c3136362c313535b5b3232352c3230332c3235352c313030262c38322c39382c32c39332c3138342c3135362c3136362c32312c3131312c3232312c36332c3137372c3232332c3232332c31392c3537", - * "kes_period": 123 - * } - */ - RegisterSignerMessage: ({ - epoch?: components["schemas"]["Epoch"]; - } & { - [key: string]: unknown; - }) & components["schemas"]["Signer"]; - /** - * @description Signer represents a signing party in the network (including its stakes) - * @example { - * "party_id": "1234567890", - * "verification_key": "7b12766b223a5c342b39302c32392c39392c39382c3131313138342c32252c32352c31353", - * "verification_key_signature": "7b5473693727369676d61223a7b227369676d6d61223a7b261223a9b227369676d61213a", - * "operational_certificate": "5b73136372c38302c37342c3136362c313535b5b3232352c3230332c3235352c313030262c38322c39382c32c39332c3138342c3135362c3136362c32312c3131312c3232312c36332c3137372c3232332c3232332c31392c3537", - * "kes_period": 123, - * "stake": 1234 - * } - */ - SignerWithStake: { - [key: string]: unknown; - } & (components["schemas"]["Signer"] & components["schemas"]["Stake"]); - /** - * @description Signer registered to a signature round. - * - * @example { - * "party_id": "1234567890", - * "stake": 1234 - * } - */ - StakeDistributionParty: { - /** @description The unique identifier of the signer */ - party_id?: string; - /** - * Format: int64 - * @description Stake share as computed in the 'stake distribution' by the Cardano Node, multiplied by a billion (1.0e9) - */ - stake?: number; - } & { - [key: string]: unknown; - }; - /** - * @description This message holds the registered signers at a given epoch. - * - * @example { - * "registered_at": 420, - * "signing_at": 422, - * "registrations": [ - * { - * "party_id": "1234567890", - * "stake": 1234 - * } - * ] - * } - */ - SignerRegistrationsMessage: { - registered_at?: components["schemas"]["Epoch"]; - signing_at?: components["schemas"]["Epoch"]; - registrations?: components["schemas"]["SignerRegistrationsListItemMessage"][]; - }; - /** @description represents an item of a SignerRegistrationsMessage registration */ - SignerRegistrationsListItemMessage: ({ - /** @description The unique identifier of the signer */ - party_id?: string; - } & { - [key: string]: unknown; - }) & components["schemas"]["Stake"]; - /** - * @description represents the list of signers known by the aggregator - * @example { - * "network": "mainnet", - * "signers": [ - * { - * "party_id": "pool1234567890", - * "pool_ticker": "[Pool_Name]", - * "has_registered": true - * }, - * { - * "party_id": "pool0987654321", - * "has_registered": false - * } - * ] - * } - */ - SignersTickersMessage: { - /** - * Format: bytes - * @description Cardano network of the aggregator - */ - network: string; - /** @description Known signers */ - signers: unknown; - }; - /** - * @description represents a known signer with its pool ticker - * @example { - * "party_id": "pool1234567890", - * "pool_ticker": "[Pool_Name]", - * "has_registered": true - * } - */ - SignerTickerListItemMessage: { - /** @description The unique identifier of the signer */ - party_id: string; - /** @description The signer pool ticker */ - pool_ticker?: string; - /** @description The signer has registered at least once */ - has_registered: boolean; - } & { - [key: string]: unknown; - }; - /** - * @description This message holds a Signer Single Signature with the - * list of won indexes in the lottery. - * - * @example { - * "entity_type": { - * "MithrilStakeDistribution": 246 - * }, - * "party_id": "1234567890", - * "signature": "7b2c36322c3130352c3232322c31302c3131302c33312c37312c39372c22766b223a5b3136342c2c31393137352c313834", - * "indexes": [ - * 25, - * 35 - * ] - * } - */ - RegisterSingleSignatureMessage: { - entity_type: components["schemas"]["SignedEntityType"]; - /** @description The unique identifier of the signer */ - party_id: string; - /** - * Format: byte - * @description The single signature of the digest - */ - signature: string; - /** @description The indexes of the lottery won that lead to the single signature */ - indexes: number[]; - }; - /** - * @description ProtocolMessage represents a message that is signed (or verified) by the Mithril protocol - * @example { - * "snapshot_digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "next_aggregate_verification_key": "b132362c3232352c36392c31373133352c31323235392c3235332c3233342c34226d745f636f6d6d69746d656e74223a7b22726f6f74223a5b33382c3382c3138322c3231322c2c363", - * "latest_block_number": "123456" - * } - */ - ProtocolMessageParts: { - /** - * Format: bytes - * @description Digest of the snapshot archive - */ - snapshot_digest?: string; - /** - * Format: bytes - * @description Aggregate verification key (AVK) that will be used to create the next multi signature - */ - next_aggregate_verification_key: string; - /** @description The latest signed block number */ - latest_block_number?: string; - } & { - [key: string]: unknown; - }; - /** - * @description ProtocolMessage represents a message that is signed (or verified) by the Mithril protocol - * @example { - * "message_parts": { - * "snapshot_digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "next_aggregate_verification_key": "b132362c3232352c36392c31373133352c31323235392c3235332c3233342c34226d745f636f6d6d69746d656e74223a7b22726f6f74223a5b33382c3382c3138322c3231322c2c363" - * } - * } - */ - ProtocolMessage: { - message_parts: components["schemas"]["ProtocolMessageParts"]; - }; - /** - * @description CertificateListItemMessageMetadata represents the metadata associated to a CertificateListItemMessage - * @example { - * "network": "mainnet", - * "version": "0.1.0", - * "parameters": { - * "k": 5, - * "m": 100, - * "phi_f": 0.65 - * }, - * "initiated_at": "2022-07-17T18:51:23.192811338Z", - * "sealed_at": "2022-07-17T18:51:35.830832580Z", - * "total_signers": 3 - * } - */ - CertificateListItemMessageMetadata: { - /** @description Cardano network */ - network: string; - /** - * Format: bytes - * @description Version of the protocol - */ - version: string; - parameters: components["schemas"]["ProtocolParameters"]; - /** - * Format: date-time - * @description Date and time at which the certificate was initialized and ready to accept single signatures from signers - */ - initiated_at: string; - /** - * Format: date-time - * @description Date and time at which the certificate was sealed (when the quorum of single signatures was reached so that a multi signature could be aggregated from them) - */ - sealed_at: string; - /** - * Format: int64 - * @description The number of the signers with their stakes and verification keys - */ - total_signers: number; - }; - /** - * @description CertificateListMessage represents a list of Mithril certificates - * @example [ - * { - * "hash": "9dc998101590f733f7a50e7c03b5b336e69a751cc02d811395d49618db3ba3d7", - * "previous_hash": "aa2ddfb87a17103bdf15bfb21a2941b3f3223a3c8d710910496c392b14f8c403", - * "epoch": 329, - * "beacon": { - * "network": "mainnet", - * "epoch": 329, - * "immutable_file_number": 7060000 - * }, - * "signed_entity_type": { - * "MithrilStakeDistribution": 246 - * }, - * "metadata": { - * "network": "mainnet", - * "version": "0.1.0", - * "parameters": { - * "k": 5, - * "m": 100, - * "phi_f": 0.65 - * }, - * "initiated_at": "2022-07-17T18:51:23.192811338Z", - * "sealed_at": "2022-07-17T18:51:35.830832580Z", - * "total_signers": 3 - * }, - * "protocol_message": { - * "message_parts": { - * "snapshot_digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "next_aggregate_verification_key": "b132362c3232352c36392c31373133352c31323235392c3235332c3233342c34226d745f636f6d6d69746d656e74223a7b22726f6f74223a5b33382c3382c3138322c3231322c2c363" - * } - * }, - * "signed_message": "07ed7c9e128744c1a4797b7eb34c54823cc7a21fc95c19876122ab4bb0fe796d6bba2bc", - * "aggregate_verification_key": "7b232392c3130342c34392c35312c3130332c3136352c37364223a7b22726f6f74223a5b3137392c3135312c3135382c37332c37372c2c3135392c3226d745f636f6d6d69746d656e7" - * } - * ] - */ - CertificateListMessage: components["schemas"]["CertificateListItemMessage"][]; - /** - * @description CertificateListItemMessage represents an item of a list of Mithril certificates - * @example { - * "hash": "9dc998101590f733f7a50e7c03b5b336e69a751cc02d811395d49618db3ba3d7", - * "previous_hash": "aa2ddfb87a17103bdf15bfb21a2941b3f3223a3c8d710910496c392b14f8c403", - * "epoch": 32, - * "beacon": { - * "network": "mainnet", - * "epoch": 329, - * "immutable_file_number": 7060000 - * }, - * "signed_entity_type": { - * "MithrilStakeDistribution": 246 - * }, - * "metadata": { - * "network": "mainnet", - * "version": "0.1.0", - * "parameters": { - * "k": 5, - * "m": 100, - * "phi_f": 0.65 - * }, - * "initiated_at": "2022-07-17T18:51:23.192811338Z", - * "sealed_at": "2022-07-17T18:51:35.830832580Z", - * "total_signers": 3 - * }, - * "protocol_message": { - * "message_parts": { - * "snapshot_digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "next_aggregate_verification_key": "b132362c3232352c36392c31373133352c31323235392c3235332c3233342c34226d745f636f6d6d69746d656e74223a7b22726f6f74223a5b33382c3382c3138322c3231322c2c363" - * } - * }, - * "signed_message": "07ed7c9e128744c1a4797b7eb34c54823cc7a21fc95c19876122ab4bb0fe796d6bba2bc", - * "aggregate_verification_key": "7b232392c3130342c34392c35312c3130332c3136352c37364223a7b22726f6f74223a5b3137392c3135312c3135382c37332c37372c2c3135392c3226d745f636f6d6d69746d656e7" - * } - */ - CertificateListItemMessage: { - /** - * Format: bytes - * @description Hash of the current certificate - */ - hash: string; - /** - * Format: bytes - * @description Hash of the previous certificate - */ - previous_hash: string; - epoch: components["schemas"]["Epoch"]; - /** @deprecated */ - beacon?: components["schemas"]["CardanoDbBeacon"]; - signed_entity_type: components["schemas"]["SignedEntityType"]; - metadata: components["schemas"]["CertificateListItemMessageMetadata"]; - protocol_message: components["schemas"]["ProtocolMessage"]; - /** - * Format: bytes - * @description Hash of the protocol message that is signed by the signer participants - */ - signed_message: string; - /** - * Format: bytes - * @description Aggregate verification key used to verify the multi signature - */ - aggregate_verification_key: string; - }; - /** - * @description CertificateMetadata represents the metadata associated to a Certificate - * @example { - * "network": "mainnet", - * "version": "0.1.0", - * "parameters": { - * "k": 5, - * "m": 100, - * "phi_f": 0.65 - * }, - * "initiated_at": "2022-07-17T18:51:23.192811338Z", - * "sealed_at": "2022-07-17T18:51:35.830832580Z", - * "signers": [ - * { - * "party_id": "1234567890", - * "stake": 1234 - * }, - * { - * "party_id": "2345678900", - * "stake": 2345 - * } - * ] - * } - */ - CertificateMetadata: { - /** @description Cardano network */ - network: string; - /** - * Format: bytes - * @description Version of the protocol - */ - version: string; - parameters: components["schemas"]["ProtocolParameters"]; - /** - * Format: date-time - * @description Date and time at which the certificate was initialized and ready to accept single signatures from signers - */ - initiated_at: string; - /** - * Format: date-time - * @description Date and time at which the certificate was sealed (when the quorum of single signatures was reached so that a multi signature could be aggregated from them) - */ - sealed_at: string; - /** @description The list of the signers identifiers with their stakes and verification keys */ - signers: components["schemas"]["StakeDistributionParty"][]; - }; - /** - * @description Certificate represents a Mithril certificate embedding a Mithril STM multi signature - * @example { - * "hash": "9dc998101590f733f7a50e7c03b5b336e69a751cc02d811395d49618db3ba3d7", - * "previous_hash": "aa2ddfb87a17103bdf15bfb21a2941b3f3223a3c8d710910496c392b14f8c403", - * "epoch": 329, - * "beacon": { - * "network": "mainnet", - * "epoch": 329, - * "immutable_file_number": 7060000 - * }, - * "signed_entity_type": { - * "MithrilStakeDistribution": 246 - * }, - * "metadata": { - * "network": "mainnet", - * "version": "0.1.0", - * "parameters": { - * "k": 5, - * "m": 100, - * "phi_f": 0.65 - * }, - * "initiated_at": "2022-07-17T18:51:23.192811338Z", - * "sealed_at": "2022-07-17T18:51:35.830832580Z", - * "signers": [ - * { - * "party_id": "1234567890", - * "verification_key": "7b12766b223a5c342b39302c32392c39392c39382c3131313138342c32252c32352c31353", - * "verification_key_signature": "7b5473693727369676d61223a7b227369676d6d61223a7b261223a9b227369676d61213a", - * "operational_certificate": "5b73136372c38302c37342c3136362c313535b5b3232352c3230332c3235352c313030262c38322c39382c32c39332c3138342c3135362c3136362c32312c3131312c3232312c36332c3137372c3232332c3232332c31392c3537", - * "kes_period": 123, - * "stake": 1234 - * }, - * { - * "party_id": "2345678900", - * "verification_key": "7b392c39392c13131312766b223a5c39382c313342b39302c252c32352c31353328342c32", - * "verification_key_signature": "2c33302c3133312c3138322c34362c3133352c372c3139302c3235322c35352c32322c39", - * "operational_certificate": "3231342c3137372c37312c3232352c3233332c3135335d2c322c3139322c5b3133352c34312c3230332c3131332c3c33352c3234302c3230392c312c32392c3233332c33342c3138382c3134312c3130342c3234382c3231392c3", - * "kes_period": 456, - * "stake": 2345 - * } - * ] - * }, - * "protocol_message": { - * "message_parts": { - * "snapshot_digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "next_aggregate_verification_key": "b132362c3232352c36392c31373133352c31323235392c3235332c3233342c34226d745f636f6d6d69746d656e74223a7b22726f6f74223a5b33382c3382c3138322c3231322c2c363" - * } - * }, - * "signed_message": "07ed7c9e128744c1a4797b7eb34c54823cc7a21fc95c19876122ab4bb0fe796d6bba2bc", - * "aggregate_verification_key": "7b232392c3130342c34392c35312c3130332c3136352c37364223a7b22726f6f74223a5b3137392c3135312c3135382c37332c37372c2c3135392c3226d745f636f6d6d69746d656e7", - * "multi_signature": "7bc3139392c3135392c3235342c3231392c3133362c3132392c38342c353227369676e617475726573223a5b5b7b227369676d61223a5b3135312c362c3131222c33382c3135382c3137312c3137312c3234392c32342c3232382c3133302c38352c32362c38382c3135382c32303c323337322c323339362c32342c313530342c313532302c3135323737302c323830372c323831392c323834302c323834342c323836302c323837322c323838362c323839312c323839382c3239333533332c343538352c343632342c343634322c343634372c343636362c334312c31343636382c31343637352c31343639352c31343639392c31343730312c31343730352c31343733302c31343733382c31343733392c31343734362c31343735342c31343736312c31343738362c31343739352c31343739362c31343832362c31343835392c31343836302c31343836322c31343837312c31343837322c31343837392c31343838392c31343839332c31343839372c31343839392c31343932362c31343937372c31343939312c31353032332c31353033382c31353034342c31353036332c31353039312c31353039322c31353039382c31353131392c31353132312c31353136362c31353139362c31353230322c31353231302c31353231392c31353233392c31353234362c31353235322c31353237352c31353238312c31353334372c31353335372c31353338372c31353431372c31353434352c31353434382c31353435332c31353435342c31353530382c31353534352c31353536302c31353537302c31353538392c31353631302c31353631312c31353631322c31353632382c31353633302c31353633392c31353636302c31353636312c31353637392c31353731372c31353731392c31353732362c31353733382c31353734382c31353735392c31353736312c31353739312c31353830312c31353830332c31353831342c31353831392c31353832372c31353832392c31353834392c31353835332c31353835372c31353835392c31353836372c31353839362c31353930312c31353930372c31353931302c31353931332c31353931352c31353935352c31353937362c31353938372c31363031372c31363036332c31363131382c31363132382c31363135352c31363136372c31363230312c31363230362c31363231392c31363232312c31363232392c31363233342c31363234362c31363333302c31363335302c31363336362c31353739312c31353830312c31353830332c31353831342c31353831392c31353832372c31353832392c31353834392c31353835332c31353835372c31353835392c31353836372c31353839362c31353930312c31353930372c31353931302c31353931332c31353931352c31353935352c31353937362c31353938372c31363031372c31363036332c31363131382c31363132382c31363135352c31363136372c31363230312c31363230362c31363231392c31363232312c31363232392c31363233342c31363234362c31363333302c31363335302c31363336362c31363339302c31363430342c31363435342c31363437392c31363533302c31363533382c31363534372c31363535322c31363630382c31363631312c31363631382c31363633312c31363635382c31363637312c31363639352c31363730302c31363731332c31363732372c31363733312c31363733322c31363734322c31363736302c31363737342c31363739322c31363739362c31363739382c31363830342c31363831302c31363834302c31363834382c31363835392c31363836332c31363838362c31363838382c31363930302c31363932372c31363932382c31363932392c31363933372c31363934302c31363934362c31363935302c31363936312c31363938312c31373033302c31373035332c31373036322c31373038322c31373130312c31373130332c31373130352c31373130362c31373132302c31373132312c31373133322c31373133332c31373135312c31373135392c31373138332c31373232302c31373239322c31373331312c31373331332c31373332362c31373333362c31373334352c31373334392c31373335372c31373337352c31373338332c31373338352c31373430302c31373430362c31373431342c31373432322c31373434362c31373435312c31373436362c31373530322c31373531392c31373535382c31373536352c31373537332c31373538302c31373630362c31373632332c31373636382c31373639352c31373732392c31373733312c31373733352c31373733372c31373734342c31373734352c31373734372c31373736382c31373737302c31373737332c31373737352c31373739362c31373830342c31373831302c31373831332c31373832332c31373834352c31373834362c31373838382c31373839342c31373930352c31373931302c31373935372c31373936372c31373938372c31373939342c31383030322c31383030332c31383031312c31383032302c31383032392c31383034362c31383036382c31383037322c31383131372c31383133372c31383134302c31383134332c31383136322c31383137302c31383137342c31383138342c31383138392c31383139392c31383230382c31383232302c31383235312c31383235332c31383237392c31383238312c31383239312c31383239382c31383330312c31383331362c31383332382c31383334312c31383336332c31383337342c31383338352c31383338372c31383434392c31383437362c31383438322c31383439382c31383530352c31383530362c31383531342c31383532362c31383532382c31383533382c31383535322c31383535382c31383537342c31383538342c31383539322c31383631392c32c3832392c3834382c3835312c3835342c3836352c3838332c3838342c3839332c3839372c3930392c3937312c3938362c3939352c313032312c313032362c313035312c313036322c313036382c313038322c313038332c313038352c313133312c313134392c313135392c313136342c313137322c313137332c313231372c313231382c313234372c313239332c313330382c313331352c313333302c313335302c313336342c313337392c313430302c313430362c313432372c313434392c313436342c313436362c313436372c313437362c313530312c313530342c313532302c313532352c313533322c313534322c313536372c313537362c313538322c313538332c313632362c313633322c313633332c313634312c313635322c313730302c313732392c313831322c313832302c313834322c313835392c313837312c313930352c313930372c313931322c313931332c313935362c313936302c313937342c323030302c323031302c323033322c323033372c323037372c323038372c323039382c323130372c323131382c323133322c323133382c323135312c323230332c323230392c323231312c323233372c323234382c323235332c323237372c323238302c323330382c323331342c323333322c323334332c323334382c373535362c373535382c373537372c373630392c373631382c373633392c373635342c373635352c373731392c373732322c373732332c373830342c373832372c373833362c373833372c373835302c373835332c373835362c373837382c373839362c373931392c373933312c373933332c373934332c373934362c373935342c383030302c383031302c383031342c383033302c383034332c383035352c383036342c383036382c383037362c383132322c383134332c383134382c383136362c383139302c383234372c383235312c383236302c383237352c383238312c383238352c383330362c383332352c383337332c383337372c383338372c383339372c383339382c383431362c383433312c383436362c383436372c383437372c383438332c383438392c383439322c383439382c383531372c383533302c383533352c383534302c383536392c383539392c383631322c383634322c383635322c383637302c383730312c383733342c383738382c383739312c383832372c383834352c383835312c383836312c383837362c383932392c383933372c383935322c383937362c393031362c393032302c393032372c393032392c393034382c393036302c393038392c393130332c393130362c393131312c393131322c393131382c393133342c393134392c393137372c393137382c393231312c393231322c393232392c393234332c393236312c393236322c393238362c393239372c393331382c393333392c393338312c393339352c393339362c393431372c393433302c393436332c393439322c393532342c393633332c393633352c393634322c393639322c393731382c393732342c393732362c393733352c393735362c393738302c393738322c393739332c393831332c393837312c393839382c393931382c393932332c393932362c393934312c393934392c393935322c393935382c393936312c393936342c393937352c31303030362c31303032362c31303032392c31303035382c31303037342c31303037392c31303131302c31303132332c31303133392c31303134382c31303135362c31303136392c31303230362c31303235352c31303235372c31303235382c31303237332c31303237342c31303239312c31303239332c31303239342c31303330352c31303334312c31303334332c31303338322c31303338332c31303430342c31303431312c31303431332c31303432302c31303434322c31303434342c31303435372c31303436302c31303437322c31303438372c31303532322c31303535312c31303536342c31303636352c31303638352c31303730302c31303730362c31303733322c31303734332c31303737322c31303831352c31303833332c31303834332c31303836362c31303839322c31303930382c31303938382c31313033362c31313034312c31313037312c31313038322c31313039322c31313039392c31313130392c31313131352c31313134362c31313139332c31313230302c31313232382c31313232392c31313235342c31313236372c31313238302c31313239332c31313239352c31313331312c31313331382c31313332322c31313334302c31313334342c31313335322c31313335342c31313335352c31313335362c31313338352c31313430322c31313431332c31313433342c31313434322c31313436382c31313437322c31313437372c31313439362c31313439392c31313530362c31313531302c31313532342c31313532372c31313534342c31313538312c31313539322c31313630342c31313633352c31313635382c31313733332c31313733362c31313735342c31313739342c31313831332c31313831392c31313832342c31313832372c31313836392c31313837312c31313931342c31313937302c31313937342c31323031362c31323031392c31323034302c31323034342c31323035342c31323036382c31323037302c31323037372c31323039392c31323130342c31323133302c31323133392c31323135302c31323135392c31323136302c31323137352c31323230302c31323230322c31323232382c31323233392c31323330352c31323336382c31323337352c31323337392c31323338392c31323430372c31323431302c31323433322c31323434302c31323434312c31323437352c31323530362c31323531322c31323531332c31323531372c31323532312c31323533302c31323538302c31323633362c31323636392c31323637322c31323637362c31323637372c31323638332c31323638372c31323730352c31323732342c31323734362c31323734382c31323737362c31323739392c31323838352c31323839392c31323930372c31323933302c31323933322c31323935382c31323939332c31333030332c31333033302c31333036312c31333038302c31333038332c31333130352c31333132372c31333133312c31333136392c31333138312c31333138322c31333138352c3133323231231333236352c31333238362c31333234322cc31333239342c3131333438362c1e233332362c31333333392c31333336352c31333337332c31333338352c31333339392c31333433332c31333435312c31333437382c3", - * "genesis_signature": "" - * } - */ - CertificateMessage: { - /** - * Format: bytes - * @description Hash of the current certificate - */ - hash: string; - /** - * Format: bytes - * @description Hash of the previous certificate - */ - previous_hash: string; - epoch: components["schemas"]["Epoch"]; - /** @deprecated */ - beacon?: components["schemas"]["CardanoDbBeacon"]; - signed_entity_type: components["schemas"]["SignedEntityType"]; - metadata: components["schemas"]["CertificateMetadata"]; - protocol_message: components["schemas"]["ProtocolMessage"]; - /** - * Format: bytes - * @description Hash of the protocol message that is signed by the signer participants - */ - signed_message: string; - /** - * Format: bytes - * @description Aggregate verification key used to verify the multi signature - */ - aggregate_verification_key: string; - /** - * Format: bytes - * @description STM multi signature created from a quorum of single signatures from the signers - */ - multi_signature: string; - /** - * Format: bytes - * @description Genesis signature created to bootstrap the certificate chain with the Cardano Genesis Keys - */ - genesis_signature: string; - }; - /** - * @description SnapshotListMessage represents a list of snapshots - * @example [ - * { - * "digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "beacon": { - * "network": "mainnet", - * "epoch": 329, - * "immutable_file_number": 7060000 - * }, - * "certificate_hash": "7905e83ab5d7bc082c1bbc3033bfd19c539078830d19080d1f241c70aa532572", - * "size": 26058531636, - * "created_at": "2022-07-21T17:32:28Z", - * "locations": [ - * "https://mithril-cdn-us.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "https://mithril-cdn-eu.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C", - * "ipfs:QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT" - * ] - * } - * ] - */ - SnapshotListMessage: components["schemas"]["Snapshot"][]; - /** - * @description Snapshot represents a snapshot file and its metadata - * @example { - * "digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "beacon": { - * "network": "mainnet", - * "epoch": 329, - * "immutable_file_number": 7060000 - * }, - * "certificate_hash": "7905e83ab5d7bc082c1bbc3033bfd19c539078830d19080d1f241c70aa532572", - * "size": 26058531636, - * "created_at": "2022-07-21T17:32:28Z", - * "locations": [ - * "https://mithril-cdn-us.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "https://mithril-cdn-eu.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C", - * "ipfs:QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT" - * ], - * "compression_algorithm": "zstandard", - * "cardano_node_version": "1.0.0" - * } - */ - Snapshot: { - /** - * Format: bytes - * @description Digest that is signed by the signer participants - */ - digest: string; - beacon: components["schemas"]["CardanoDbBeacon"]; - /** - * Format: bytes - * @description Hash of the associated certificate - */ - certificate_hash: string; - /** - * Format: int64 - * @description Size of the snapshot file in Bytes - */ - size: number; - /** - * Format: date-time - * @description Date and time at which the snapshot was created - */ - created_at: string; - /** @description Locations where the binary content of the snapshot can be retrieved */ - locations: string[]; - /** @description Compression algorithm for the snapshot archive */ - compression_algorithm?: string; - /** @description Version of the Cardano node which is used to create snapshot archives. */ - cardano_node_version?: string; - }; - /** - * @description This message represents a snapshot file and its metadata. - * @example { - * "digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "beacon": { - * "network": "mainnet", - * "epoch": 329, - * "immutable_file_number": 7060000 - * }, - * "certificate_hash": "7905e83ab5d7bc082c1bbc3033bfd19c539078830d19080d1f241c70aa532572", - * "size": 26058531636, - * "created_at": "2022-07-21T17:32:28Z", - * "locations": [ - * "https://mithril-cdn-us.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "https://mithril-cdn-eu.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C", - * "ipfs:QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT" - * ], - * "compression_algorithm": "zstandard", - * "cardano_node_version": "1.0.0" - * } - */ - SnapshotMessage: components["schemas"]["Snapshot"]; - /** - * @description SnapshotDownloadMessage represents a downloaded snapshot event - * @example { - * "digest": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "beacon": { - * "network": "mainnet", - * "epoch": 329, - * "immutable_file_number": 7060000 - * }, - * "size": 26058531636, - * "locations": [ - * "https://mithril-cdn-us.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "https://mithril-cdn-eu.iohk.io/snapshot/6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C", - * "ipfs:QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT" - * ], - * "compression_algorithm": "zstandard", - * "cardano_node_version": "1.0.0" - * } - */ - SnapshotDownloadMessage: { - /** - * Format: bytes - * @description Digest that is signed by the signer participants - */ - digest: string; - beacon: components["schemas"]["CardanoDbBeacon"]; - /** - * Format: int64 - * @description Size of the snapshot file in Bytes - */ - size: number; - /** @description Locations where the binary content of the snapshot can be retrieved */ - locations: string[]; - /** @description Compression algorithm for the snapshot archive */ - compression_algorithm: string; - /** @description Version of the Cardano node which is used to create snapshot archives. */ - cardano_node_version: string; - }; - /** @description MithrilStakeDistributionListMessage represents a list of Mithril stake distribution */ - MithrilStakeDistributionListMessage: { - epoch: components["schemas"]["Epoch"]; - /** - * Format: bytes - * @description Hash of the Mithril stake distribution - */ - hash: string; - /** - * Format: bytes - * @description Hash of the associated certificate - */ - certificate_hash?: string; - /** - * Format: date-time, - * @description Date and time at which the Mithril stake distribution was created - */ - created_at: string; - }[]; - /** - * @description This message represents a Mithril stake distribution. - * @example { - * "epoch": 123, - * "hash": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "certificate_hash": "7905e83ab5d7bc082c1bbc3033bfd19c539078830d19080d1f241c70aa532572", - * "signers": [ - * { - * "party_id": "1234567890", - * "verification_key": "7b12766b223a5c342b39302c32392c39392c39382c3131313138342c32252c32352c31353", - * "verification_key_signature": "7b5473693727369676d61223a7b227369676d6d61223a7b261223a9b227369676d61213a", - * "operational_certificate": "5b73136372c38302c37342c3136362c313535b5b3232352c3230332c3235352c313030262c38322c39382c32c39332c3138342c3135362c3136362c32312c3131312c3232312c36332c3137372c3232332c3232332c31392c3537", - * "kes_period": 123, - * "stake": 1234 - * }, - * { - * "party_id": "2345678900", - * "verification_key": "7b392c39392c13131312766b223a5c39382c313342b39302c252c32352c31353328342c32", - * "verification_key_signature": "2c33302c3133312c3138322c34362c3133352c372c3139302c3235322c35352c32322c39", - * "operational_certificate": "3231342c3137372c37312c3232352c3233332c3135335d2c322c3139322c5b3133352c34312c3230332c3131332c3c33352c3234302c3230392c312c32392c3233332c33342c3138382c3134312c3130342c3234382c3231392c3", - * "kes_period": 456, - * "stake": 2345 - * } - * ], - * "created_at": "2022-06-14T10:52:31Z", - * "protocol_parameters": { - * "k": 5, - * "m": 100, - * "phi_f": 0.65 - * } - * } - */ - MithrilStakeDistributionMessage: { - epoch: components["schemas"]["Epoch"]; - /** - * Format: bytes - * @description Hash of the Mithril stake distribution - */ - hash: string; - /** - * Format: bytes - * @description Hash of the associated certificate - */ - certificate_hash?: string; - /** @description The list of the signers with their stakes and verification keys */ - signers: components["schemas"]["SignerWithStake"][]; - /** - * Format: date-time, - * @description Date and time of the entity creation - */ - created_at: string; - protocol_parameters: components["schemas"]["ProtocolParameters"]; - }; - /** @description CardanoTransactionSnapshotListMessage represents a list of Cardano transactions set snapshots */ - CardanoTransactionSnapshotListMessage: { - /** - * Format: bytes - * @description Hash of the Cardano transactions set - */ - hash: string; - /** - * Format: bytes - * @description Hash of the associated certificate - */ - certificate_hash: string; - /** - * Format: bytes - * @description Merkle root of the Cardano transactions set - */ - merkle_root: string; - epoch: components["schemas"]["Epoch"]; - /** - * Format: int64 - * @description Cardano block number - */ - block_number: number; - /** - * Format: date-time, - * @description Date and time at which the Cardano transactions set was created - */ - created_at: string; - }[]; - /** - * @description This message represents a Cardano transactions set snapshot. - * @example { - * "hash": "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "certificate_hash": "7905e83ab5d7bc082c1bbc3033bfd19c539078830d19080d1f241c70aa532572", - * "merkle_root": "33bfd17bc082ab5dd1fc0788241c70aa5325241c70aa532530d190809c5391bbc307905e8372", - * "epoch": 123, - * "block_number": 1234, - * "created_at": "2022-06-14T10:52:31Z" - * } - */ - CardanoTransactionSnapshotMessage: { - /** - * Format: bytes - * @description Hash of the Cardano transactions set - */ - hash: string; - /** - * Format: bytes - * @description Hash of the associated certificate - */ - certificate_hash: string; - /** - * Format: bytes - * @description Merkle root of the Cardano transactions set - */ - merkle_root: string; - epoch: components["schemas"]["Epoch"]; - /** - * Format: int64 - * @description Cardano block number - */ - block_number: number; - /** - * Format: date-time, - * @description Date and time at which the Cardano transactions set was created - */ - created_at: string; - }; - /** - * @description This message represents proofs for Cardano Transactions. - * @example { - * "certificate_hash": "7905e83ab5d7bc082c1bbc3033bfd19c539078830d19080d1f241c70aa532572", - * "certified_transactions": [ - * { - * "transactions_hashes": [ - * "6367ee65d0d1272e6e70736a1ea2cae34015874517f6328364f6b73930966732", - * "5d0d1272e6e70736a1ea2cae34015876367ee64517f6328364f6b73930966732" - * ], - * "proof": "5b73136372c38302c37342c3136362c313535b5b323136362c313535b5b3232352c3230332c3235352c313030262c38322c39382c32c39332c3138342c313532352c3230332c3235352c313030262c33136362c313535b5b3232352c3230332c3235352c313030262c38322c39382c32c39332c3138342c31358322c39382c32c39332c3138342c3135362c3136362c32312c3131312c3232312c36332c3137372c3232332c3232332c31392c3537" - * } - * ], - * "non_certified_transactions": [ - * "732d0d1272e6e70736367ee6f6328364f6b739309666a1ea2cae34015874517" - * ], - * "latest_block_number": 7060000 - * } - */ - CardanoTransactionProofMessage: { - /** - * Format: bytes - * @description Hash of the certificate that validate the merkle root of this proof - */ - certificate_hash: string; - /** @description Proofs for certified Cardano transactions */ - certified_transactions: { - transactions_hashes: string[]; - /** - * Format: bytes - * @description Proof for the Cardano transactions - */ - proof: string; - }[]; - non_certified_transactions: string[]; - /** - * Format: int64 - * @description Last block number - */ - latest_block_number: number; - }; - /** - * @description Internal error representation - * @example { - * "label": "Internal error", - * "message": "An error occurred, the operation could not be completed" - * } - */ - Error: { - /** @description optional label */ - label?: string; - /** - * @description error message - * @example An error occurred, the operation could not be completed - */ - message: string; - }; }; responses: { /** @description Bad request */ diff --git a/vercel.json b/vercel.json index b5f232b8..c7df27b5 100644 --- a/vercel.json +++ b/vercel.json @@ -4,6 +4,11 @@ "source": "/midnight", "destination": "/midnight/", "permanent": true + }, + { + "source": "/blockbook", + "destination": "/blockbook/", + "permanent": true } ] }