packages feed

haskoin-store-1.9.0: swagger.yaml

# Long values, such as the hexadecimal of transactions and blocks and the
# xpubs in the examples, are split into pieces of equal width with escaped line
# breaks in double quotes, which join the pieces with nothing between them, so
# that every line stays under 120 columns. An xpub used as a key is split the
# same way, as an explicit key ("? ").
openapi: 3.0.0

servers:
  - url: 'https://api.haskoin.com/bch/'
  - url: 'https://api.haskoin.com/btc/'
  - url: 'https://api.haskoin.com/bchtest4/'
  - url: 'https://api.haskoin.com/btctest4/'

info:
  version: &version 1.9.0
  title: Haskoin
  contact:
    name: JP Rupp
    url: https://github.com/jprupp
    email: jprupp@protonmail.ch
  license:
    name: MIT
    url: https://github.com/jprupp/haskoin-store/blob/master/haskoin-store/LICENSE
  description: |
    Haskoin Store indexes the Bitcoin (BTC) and Bitcoin Cash (BCH) block chains
    and answers the questions that a node cannot answer on its own: what is the
    balance of this address, which transactions belong to this wallet, which
    outputs can it spend. It connects to the peer-to-peer network itself, keeps
    its indices up to date with every block and every unconfirmed transaction,
    and serves them here.

    The servers of this reference are the public instance at api.haskoin.com, one per
    network: `btc`, `bch`, and their test networks `btctest4` and `bchtest4`. The
    same API is served by any Haskoin Store you run yourself.

    ## The basics

    - **Amounts** of coins are whole numbers of satoshis (1 coin is 100,000,000
      satoshis), never decimal numbers of coins: floating-point numbers cannot
      hold every satoshi amount exactly, and a balance that is off by one
      satoshi is a bug that is hard to find. Only prices in other currencies,
      in the Blockchain.info endpoints, are decimal.
    - **Hashes** of blocks and transactions are hexadecimal, in the byte order
      that nodes and block explorers display, so they can be copied between them
      and this API.
    - **Scripts and serialized data** are hexadecimal.
    - **Times** are Unix timestamps, in seconds.
    - **Addresses** are written as the network writes them: Base58 or Bech32 on
      BTC, CashAddr on BCH.

    ## Lists are newest first

    Every list of transactions or unspent outputs starts with the newest:
    unconfirmed transactions first, by the time this server first saw them, then
    confirmed ones, from the highest block down, and within a block from the last
    transaction to the first.

    This is the order in which wallets and explorers show activity, and the
    database is laid out in that order, so the first page of any list is a single
    lookup however long the history is.

    ## Paging

    Lists take three parameters:

    - `limit`: how many items to return. Without it the server returns its
      default number (100, unless the operator changed it). There is a maximum,
      lower for lists of full transactions, which are much larger; `limit=0`
      asks for that maximum.
    - `height`: where the page starts. It can be:
      - a **transaction id**: the page starts at that transaction, which is
        included;
      - a **block hash**: the page starts at that block;
      - a **block height**: the page starts at transactions confirmed at or below
        that height;
      - a **Unix time**: the page starts at the last block mined at or before
        that time.

      Numbers up to 1,230,768,000 are heights and larger ones are times. That
      number is midnight on 1 January 2009, before the first block, so no time
      of a block is mistaken for a height, and no chain will reach that height.
    - `offset`: how many items to skip after the start. The server has a
      maximum (50,000, unless the operator changed it).

    **To get the next page, pass the id of the last transaction you received as
    `height`, and `offset=1` to skip it.** An offset counts from the newest item,
    so every new transaction shifts every page by one, and a deep offset makes the
    server step over all the items before it. A transaction id is a fixed point:
    pages do not shift, and the server finds the start with one lookup however
    far back it is. The maximum offset is there because deep offsets are slow.

    ## Formats

    - **JSON** by default, without spaces, to keep responses small.
    - **Pretty JSON** with `pretty=true`, indented for people to read.
    - **Binary** with the header `Accept: application/octet-stream`: the compact
      serialization that the Haskell client in
      [haskoin-store-data](https://github.com/jprupp/haskoin-store-data)
      decodes. It is smaller and faster to decode than JSON. "Binary format"
      below gives every byte of it.

    Endpoints that end in `/raw` return data serialized as in the peer-to-peer
    protocol, in hexadecimal inside JSON (`{"result": "0100…"}`), or as bytes
    with the binary format.

    ## Parameters are checked

    Every endpoint lists the parameters it accepts, and refuses a request with
    any other, with 400 and a message that names it:

    ```json
    {"error": "user-error", "message": "Unknown parameter: limt"}
    ```

    A value that the endpoint cannot read is refused the same way, such as
    `limit=ten`, `notx=yes` or `derive=Legacy`. Without this, a misspelt
    parameter or a value the server does not understand would be ignored, and
    the client would get an answer to a question it did not ask, with nothing
    to tell it so. Requests are checked before anything is done, so a refused
    request has no effect.

    One thing is not refused, because it is not a mistake: a `limit` above the
    server's maximum is lowered to it, as a client cannot know the maximum of
    every server. Names of parameters are case-sensitive.

    ## Errors

    An error is a JSON object with a stable `error` code, for programs, and a
    `message`, for people:

    ```json
    {"error": "user-error", "message": "Invalid value for parameter limit: ten"}
    ```

    | Status | `error` | When |
    | --- | --- | --- |
    | 400 | `user-error`, `bad-request` | A parameter or the body is wrong; the message says which. |
    | 404 | `not-found-or-invalid-arg` | The thing does not exist, or a value in the path is not valid. |
    | 409 | `multiple-tx-index` | A short transaction number matches several transactions. |
    | 500 | `server-error` | Something went wrong on the server; it is logged there. |
    | 503 | | From `/health`: the server is not ready. |
    | 503 | `behind-fleet` | The server is one of a fleet and does not have the block that the fleet answers from; another server of the fleet does. |

    A request that asks for the binary format gets its errors in binary too:
    see "Binary format".

    `/health` also answers 203 for a server that works but cannot reach its
    Redis; see there.

    A value in the path that does not parse, such as a misspelt address, gives
    404 rather than 400. Paths are matched by the shape of what is in them, and
    a segment that does not parse may belong to another endpoint (`/block/best`
    and `/block/{block}` share a prefix), so the server tries the others, and
    when none matches it answers that there is nothing there. Query parameters
    are not ambiguous, so a bad one gives 400, with its name in the message.

    A 409 comes only from the Blockchain.info endpoints, which can name a
    transaction by a short number; the error lists the matching ids in `txids`.

    The codes `server-timeout` and `request-too-large` are part of the format, for
    clients that decode it, but this version of the server does not send them.

    ## Unconfirmed transactions

    The mempool is indexed like the chain. A payment shows up in balances and
    histories as soon as this server sees it on the network, with
    `"block": {"mempool": <time first seen>}` instead of a block height.

    A transaction can leave the mempool without being confirmed: when a block
    confirms another transaction that spends the same coins, or, on BTC, when a
    replacement that pays a higher fee arrives (replace-by-fee). It is then
    removed from every balance and history, together with any transaction that
    spends its outputs. From then on the server answers as if it had never
    seen it: fetching it by its id gives 404. Earlier versions answered with
    the transaction and `"deleted": true`, which clients that did not look at
    that field took for a pending payment.

    ## Reorganisations

    When the network switches to a chain with more work, the server undoes the
    blocks that are no longer in it, puts their transactions back in the
    mempool, and applies the new blocks. Every answer reflects the chain with
    the most work at the time of the request. Blocks of an abandoned chain keep
    answering by hash, with `"mainchain": false`.

    ## What the server trusts

    The server follows the chain with the most proof of work, as the network
    reports it, and checks what it needs to keep its indices consistent: that
    inputs exist and are not spent twice. It does not validate scripts or every
    consensus rule, as a full node does. Its answers are what the network says;
    for payments where a mistake would be costly, wait for confirmations, as with
    any wallet.

    ## Extended public keys

    Most wallets are an extended public key (xpub) from which they derive their
    addresses. The `/xpub` endpoints answer for all of them at once: the server
    derives the receiving chain (`0`) and the change chain (`1`), and looks at
    every address up to the last used one of each chain and then a gap of unused
    addresses after it (32, unless the operator changed it), and always at least
    the first 20 addresses. A payment to an address further away is not seen,
    as a wallet that follows BIP 44 with the same gap would not see it either.

    The `derive` parameter says which kind of address the wallet derives. An
    xpub does not say it, and the same key gives different addresses for each
    kind, so asking for the wrong kind would find nothing, and a wallet would
    show its user a zero balance. Instead, when a wallet has no transactions
    with the kind asked for but has some with another kind, the server answers
    400 with a message that names the right one. A wallet with no transactions
    of any kind is new, and gets an empty answer. The check only runs for
    wallets that look empty, so it costs nothing for wallets in use.

    Servers with a Redis cache keep large wallets ready: their first query reads
    the database and caches the result, and later ones are answered from memory.
    A cached answer is always the same as the database's; `nocache=true` skips
    the cache. The servers of a fleet share one such cache, and each answers
    from it what it would answer from its database at the block that the
    fleet answers from.

    ## Live updates

    Instead of polling, keep `/events` open: it sends a line for every new block
    and every change to the mempool, as a stream of JSON lines or over a
    WebSocket. Events carry only the hash; fetch what you need from it.

    The server keeps its last 10,000 events. A client that lost its connection
    comes back with `?after=` and the hash of the last event it heard, and gets
    what came after it. A client that falls further behind than that is
    disconnected, so that a slow client costs the server nothing.

    Over the WebSocket a client can choose the transactions it hears about: by
    address, by extended public key, or with a Bloom filter. See `/events`.

    The servers of a fleet all send the same events in the same order: those of
    the block and the mempool that the fleet shares, not what each server's own
    node saw. A transaction is told when it enters the shared mempool and when
    it leaves it unconfirmed, and a block when the fleet has moved to it, which
    is when every server can answer about it. A client can therefore reconnect
    to another server and ask it about what the first one told.

    ## Blockchain.info compatibility

    The endpoints under `/blockchain/` answer like those of Blockchain.info, with
    the same parameters, field names and conventions, so that software written
    for it can switch by changing its base URL. They are documented here where
    they differ or where the original is unclear. An operator may turn them off.

    ## Browsers

    Every response has the header `Access-Control-Allow-Origin: *`, so web
    applications can call the API directly from a browser. The API needs no
    credentials and keeps no sessions, so there is nothing for another site to
    abuse. A browser that first asks what it may send, with `OPTIONS`, is told:
    `GET`, `HEAD`, `POST` and `DELETE`, with the headers `Accept` and
    `Content-Type`.

    ## HTTP

    - **`HEAD`** works wherever `GET` does, and answers with the headers alone.
    - **Compression.** A request with `Accept-Encoding: gzip` gets its answer
      compressed, in either format. The events are not compressed: they have
      to leave as they happen.
    - **Long lists.** The endpoints that take a list of addresses, blocks,
      heights or transactions in a parameter take it under `POST` too, with
      the same parameters in a body of type
      `application/x-www-form-urlencoded`. A URL has room for some hundred
      addresses; a body has no such limit. `/transactions` is the exception:
      `POST` there publishes a transaction.
    - **`Vary: Accept, Accept-Encoding`** is on every answer, so that a cache
      keeps the formats apart.
    - **`Retry-After`** is on a 503: one second from a server that is behind
      its fleet, five from a health check that fails.
    - **The reference itself** is at the root of every server: `/` is this
      page, for the version that the server runs, and `/swagger.yaml` the file
      behind it.

    ## Binary format

    This section is enough to write a client in any language.

    ### Asking for it

    - Send the header `Accept: application/octet-stream`. In a list of types,
      binary is sent when that type has a `q` weight above 0 that is no less
      than the weight of `application/json`, if that is listed too. A
      wildcard such as `*/*`, or no header, gives JSON. There is no query
      parameter for it, and `pretty` has no effect on it.
    - Every answer has `Vary: Accept`, so that a cache keeps the two formats
      apart.
    - A binary answer has `Content-Type: application/octet-stream`. The body is
      one value, with nothing before or after it.
    - **An error comes in the format asked for**, like any other answer. In
      binary it is an `Except`, described below. Servers up to version 1.8.1
      sent every error as JSON: read the `Content-Type` of an error to tell.
    - `/health` answers 503 and 203 with a normal body, in the format asked for.
    - The only endpoint that reads a body is `POST /transactions`: one
      transaction as in the peer-to-peer protocol, as raw bytes or as hex. The
      server tells them apart by content, not by `Content-Type`.
    - The Blockchain.info endpoints and `/dbstats` have no binary form.
    - Over the WebSocket at `/events`, binary is binary frames: the server
      sends them when the handshake asked for binary, and from the first binary
      frame that the client sends.

    ### Primitives

    Everything is big-endian, except inside the peer-to-peer structures (`Tx`,
    `BlockHeader`, `OutPoint`, `Block`), which are byte for byte what nodes send.

    | Name | Encoding |
    | --- | --- |
    | `u8`, `u32`, `u64` | Unsigned integer of 1, 4 or 8 bytes, big-endian. |
    | `i32`, `i64` | Two's complement, big-endian. |
    | `u32le`, `u64le` | Little-endian; only in peer-to-peer structures. |
    | `bool` | One byte: `00` false, `01` true. |
    | `bytes` | `u64` length, then that many bytes. |
    | `text` | `bytes` that hold UTF-8. |
    | `list T` | `u64` count, then that many `T`. |
    | `opt T` | `00` for none; `01` then `T`. |
    | `map T` | `list` of pairs `u64` key, `T`; keys ascending, each once. |
    | `hash256` | 32 bytes, in the reverse order of the hex in JSON. |
    | `hash160` | 20 bytes, in the order of the hex. |
    | `varint` | Bitcoin's CompactSize, shortest form; only in peer-to-peer structures. |
    | `integer` | See below. |

    There are no variable-length integers outside the peer-to-peer structures:
    every length and count is a `u64`. A type with several forms starts with a
    tag byte, given in its table.

    `integer` holds a number of any size. `00` then `i32` when it fits 32 bits.
    Otherwise `01`, a sign byte (`01`, or `ff` for negative), a `u64` length,
    and the absolute value in that many bytes, least significant first, with no
    zero byte at the end.

    ### Peer-to-peer structures

    | Type | Layout |
    | --- | --- |
    | `OutPoint` | `hash256` transaction id, `u32le` output index. 36 bytes. |
    | `BlockHeader` | `u32le` version, `hash256` previous, `hash256` Merkle root, `u32le` time, bits, nonce. |
    | `Tx` | `u32le` version, `varint` count, inputs, `varint` count, outputs, `u32le` lock time. |
    | `Tx` input | `OutPoint`, `varint` length, script, `u32le` sequence. |
    | `Tx` output | `u64le` value, `varint` length, script. |
    | `Block` | `BlockHeader`, `varint` count, that many `Tx`. |

    A `Tx` with a witness has the SegWit form: `00 01` after the version, and
    before the lock time one stack per input, each a `varint` count of items,
    each a `varint` length and bytes. A `Tx` in which no input has a witness is
    written in the form without it, on every network.

    ### Address

    An address is a tag and a hash. It does not carry its network, so it decodes
    without knowing it. Writing it as text needs the network.

    | Tag | Then | Kind |
    | --- | --- | --- |
    | `00` | `hash160` | Pay to public key hash. |
    | `01` | `hash160` | Pay to script hash. |
    | `02` | `hash160` | Pay to witness public key hash. |
    | `03` | `hash256` | Pay to witness script hash. |
    | `04` | `u8` version, `bytes` program (40 at most) | Other SegWit address, such as Taproot. |
    | `05` | `hash256` | Pay to script hash of 32 bytes (BCH). |
    | `06` | `u8` type, `bytes` hash (64 at most) | Other CashAddr address. |

    The `hash256` of tags `03` and `05` is in the order of the script, not
    reversed.

    ### BlockRef and TxRef

    `BlockRef` says where a transaction is. Its numbers are **inverted**: each
    is written as the largest value of its width minus the number, so that the
    bytes sort newest first. Subtract again to read them.

    | Tag | Then | Meaning |
    | --- | --- | --- |
    | `00` | `u64`: 2^64 - 1 - time | In the mempool; time first seen. |
    | `01` | `u32`: 2^32 - 1 - height, `u32`: 2^32 - 1 - position | In a block, at that position in it. |

    `TxRef` is a `BlockRef`, then the `hash256` transaction id.

    ### Transaction

    | Field | Encoding | Note |
    | --- | --- | --- |
    | block | `BlockRef` | |
    | version | `u32` | |
    | locktime | `u32` | |
    | inputs | `list Input` | |
    | outputs | `list Output` | |
    | deleted | `bool` | |
    | rbf | `bool` | |
    | time | `u64` | Not inverted. |
    | txid | `hash256` | |
    | size | `u32` | With the witness. |
    | weight | `u32` | Present on every network. |
    | fee | `u64` | 0 for a coinbase. |

    `Input`, by tag:

    | Field | Encoding | `00` coinbase | `01` other |
    | --- | --- | --- | --- |
    | outpoint | `OutPoint` | yes | yes |
    | sequence | `u32` | yes | yes |
    | sigscript | `bytes` | yes | yes |
    | pkscript | `bytes` | | yes |
    | value | `u64` | | yes |
    | witness | `list bytes` | yes | yes |
    | address | `opt Address` | | yes |

    The witness list is present on every network, and empty where there is none.

    `Output`: `u64` value, `bytes` script, `opt Spender`, `opt Address`.

    `Spender`: `hash256` id of the spending transaction, `u32` input index.

    `TxData` is the record of a transaction in the database. No endpoint
    returns it; it is here for programs that read the database.

    | Field | Encoding | Note |
    | --- | --- | --- |
    | block | `BlockRef` | |
    | tx | `Tx` | |
    | prevs | `map Prev` | By input index. `Prev`: `bytes` script, `u64` value. |
    | deleted | `bool` | |
    | rbf | `bool` | |
    | time | `u64` | |
    | spenders | `map Spender` | By output index. |

    ### Blocks, balances and unspent outputs

    `BlockData`. The hash is not sent: it is the double SHA-256 of the header.

    | Field | Encoding | Note |
    | --- | --- | --- |
    | height | `u32` | |
    | mainchain | `bool` | |
    | work | `integer` | |
    | header | `BlockHeader` | |
    | size | `u32` | |
    | weight | `u32` | Present on every network. |
    | tx | `list hash256` | |
    | outputs | `u64` | |
    | fee | `u64` | |
    | subsidy | `u64` | |

    | Type | Layout |
    | --- | --- |
    | `Balance` | `Address`, then `u64` confirmed, unconfirmed, utxo, txs, received. |
    | `Unspent` | `BlockRef`, `OutPoint`, `u64` value, `bytes` script, `opt Address`. |
    | `XPubBal` | `list u32` path, `Balance`. |
    | `XPubUnspent` | `list u32` path, `Unspent`. |
    | `XPubSummary` | `u64` confirmed, unconfirmed, received, utxo; `u32` external, change. |
    | `TxId` | `hash256`. |
    | `Event` | Tag `00` new best block or `01` mempool transaction, then `hash256`. 33 bytes. |
    | `PeerInfo` | `bytes` user agent, `text` address, `i32` version, `u64` services, `bool` relay. |

    ### Commands of the event WebSocket

    What a client sends in a binary frame over the WebSocket at `/events`, one
    command to a frame: a tag, then what it carries.

    | Tag | Then | Command |
    | --- | --- | --- |
    | `00` | `list Address` | Watch these addresses too. |
    | `01` | `list Address` | Stop watching these addresses. |
    | `02` | `XPub`, `u8` derivation | Watch this extended public key too. |
    | `03` | `XPub`, `u8` derivation | Stop watching this key. |
    | `04` | `Filter` | Set the Bloom filter, in place of the one before. |
    | `05` | `bytes`, 520 at most | Add an element to the Bloom filter. |
    | `06` | | Remove the Bloom filter. |
    | `07` | | Forget all of it, and hear of every transaction. |
    | `08` | | Forget all of it, and hear of blocks alone. |

    `XPub` is the 78 bytes of the key as BIP 32 serializes it, which is what
    the Base58Check of its text decodes to: `u32` version of the network, `u8`
    depth, 4 bytes fingerprint of the parent, `u32` index, 32 bytes chain code,
    33 bytes compressed public key. The derivation is `00` legacy, `01` compat,
    `02` segwit.

    `Filter` is the `filterload` message of the peer-to-peer protocol (BIP 37):
    `varint` length and that many bytes of filter, 36,000 at most, `u32le`
    number of hash functions, 50 at most, `u32le` tweak, `u8` flags.

    ### Health

    Each part starts with its own `ok`, which repeats what its numbers say.

    | Field | Encoding | Note |
    | --- | --- | --- |
    | ok | `bool` | The whole check. |
    | blocks | `bool` ok, `u32` headers, `u32` blocks, `i32` max | |
    | last-block | `bool` ok, `i64` age, `i64` max | |
    | last-tx | `bool` ok, `i64` age, `i64` max | |
    | pending-txs | `bool` ok, `i64` count, `i64` max | |
    | peers | `bool` ok, `i64` count, `i64` min | |
    | net | `text` | |
    | version | `text` | |
    | time | `u64` | A number, not the text of the JSON. |
    | redis | `u8` | `00` no cache, `01` not answering, `02` answering. |

    Older servers end the body before `redis`; read that as no cache.

    ### What each endpoint returns

    Lists are `list T`. The events are the one exception: they have no count,
    because they have no end.

    An error, with any status that is not a success, is an `Except`: one byte
    that says which, and for some a body.

    | Byte | Error | Body |
    | --- | --- | --- |
    | `00` | `not-found-or-invalid-arg` | |
    | `01` | `server-error` | |
    | `02` | `bad-request` | |
    | `03` | `user-error` | The message: `bytes`, UTF-8. |
    | `04` | `string-error` | The message: `bytes`, UTF-8. |
    | `05` | `multiple-tx-index` | `list hash256`: the transactions that match. |
    | `06` | `server-timeout` | |
    | `07` | `request-too-large` | |
    | `08` | `behind-fleet` | |

    | Endpoints | Body |
    | --- | --- |
    | `/block/{block}`, `/block/best`, `/block/time/…`, `/block/mtp/…` | `BlockData` |
    | `/blocks`, `/block/latest`, `/block/height/…`, `/block/heights` | `list BlockData` |
    | `/transaction/{txid}` | `Transaction` |
    | `/transactions`, `/transactions/block/…`, `…/transactions/full` | `list Transaction` |
    | `/address/…/transactions`, `/xpub/…/transactions` | `list TxRef` |
    | `/address/{address}/balance` | `Balance` |
    | `/address/balances` | `list Balance` |
    | `/address/…/unspent` | `list Unspent` |
    | `/xpub/{xpub}` | `XPubSummary` |
    | `/xpub/{xpub}/balances` | `list XPubBal` |
    | `/xpub/{xpub}/unspent` | `list XPubUnspent` |
    | `DELETE /xpub/{xpub}` | `bool` |
    | `/transaction/{txid}/after/{height}` | `opt bool` |
    | `POST /transactions` | `TxId` |
    | `/mempool` | `list hash256` |
    | `/peers` | `list PeerInfo` |
    | `/health` | Health, as above. |
    | `…/raw` of one block or transaction | `Block` or `Tx`, bare. |
    | `…/raw` of several | `list Block` or `list Tx`. Servers up to 1.8.1 sent them with no count. |
    | `/events` | An endless stream of `Event`, **no count** and nothing between them. |

    The wrappers add no bytes: the `result` object of the JSON
    (`GenericResult`, `RawResult`, `RawResultList` in the Haskell client) is
    its content alone, and `SerialList` is `list T`.

tags:
  - name: Address
    description: |
      Balances, transactions and unspent outputs of addresses, one at a time or
      many at once, and of extended public keys (xpubs), which stand for every
      address of a wallet.
  - name: Transaction
    description: |
      Transactions by id, the transactions of a block, the mempool, and
      broadcasting new transactions to the network.
  - name: Block
    description: |
      Blocks by hash, height or time, the newest blocks, and their serialized
      form.
  - name: Network
    description: |
      The state of the server and the network: health, peers, and a live stream of
      new blocks and transactions.
  - name: Blockchain
    description: |
      Endpoints that answer like those of Blockchain.info, for software written
      for it. An operator may turn them off, in which case they answer 404.

paths:
  '/health':
    get:
      tags:
        - Network
      summary: Health Check
      description: |
        Whether this server is ready to answer, for load balancers and monitoring.

        The status is **200** when every check passes and **503** when one fails;
        the body is the same either way and says which check failed. A server that is
        still catching up with the network answers 503, so a load balancer stops
        sending it traffic until its answers are current.

        A server that has a Redis cache and cannot reach it answers **203** when
        every check passes, with the header `Haskoin-Degraded: redis` and
        `"redis": {"ok": false}` in the body. It goes on
        answering every request, from its own database: the answers are right for
        what this server has seen, but they are no longer the ones that the servers
        sharing that Redis give together, and requests about large wallets are
        slower. A load balancer that takes any status in the 200s for healthy keeps
        sending it traffic, which is what it should do; a monitor that expects 200
        sees that something is wrong.

        The checks are run in the background every 30 seconds (unless the operator
        changed it), and this endpoint returns the latest result. It does no work of
        its own, so it is safe to call as often as a load balancer likes.
      operationId: healthCheck
      parameters:
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '203':
          description: |
            Every check passes, but the server cannot reach its Redis and answers
            from its own database alone. The body is that of 200.
          headers:
            Haskoin-Degraded:
              description: What the server is doing without; `redis`.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthCheck'
        '200':
          description: success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthCheck'
              example:
                ok: true
                net: bch
                blocks:
                  ok: true
                  max: 2
                  blocks: 688794
                  diff: 0
                  headers: 688794
                pending-txs:
                  ok: true
                  max: 100
                  count: 0
                version: *version
                last-tx:
                  ok: true
                  max: 300
                  age: 0
                last-block:
                  ok: true
                  max: 7200
                  age: 3279
                peers:
                  ok: true
                  count: 20
                  min: 1
                time: '2021-06-14 10:21:43 UTC'
            application/octet-stream:
              schema:
                type: string
                format: binary
        '503':
          description: unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthCheck'
              example:
                ok: false
                net: bch
                blocks:
                  ok: false
                  max: 2
                  blocks: 688794
                  diff: 4
                  headers: 688798
                pending-txs:
                  ok: true
                  max: 100
                  count: 0
                version: *version
                last-tx:
                  ok: true
                  max: 300
                  age: 0
                last-block:
                  ok: true
                  max: 7200
                  age: 3279
                peers:
                  ok: false
                  count: 0
                  min: 1
                time: '2021-06-14 10:21:43 UTC'

  '/address/{address}/transactions':
    get:
      tags:
        - Address
      summary: Transactions for Address
      description: |
        The transactions that pay to or spend from an address, newest first, as
        transaction ids with their place in the chain.

        This is the light way to follow an address: fetch the transactions you do not
        have yet with `/transactions`. Use `/transactions/full` to get them in one
        call when you need them all. See *Paging* at the top for `limit`, `offset`
        and `height`.

        An address with no transactions gives an empty list. An address that does
        not parse for this network gives 404.
      operationId: getAddressTxs
      parameters:
        - $ref: '#/components/parameters/addressParam'
        - $ref: '#/components/parameters/heightParam'
        - $ref: '#/components/parameters/offsetParam'
        - $ref: '#/components/parameters/limitParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Transaction list starting with most recent.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TxRef'
              example:
                - txid: 00f304a6089a708168cd10d5ad8abd2977c36791156a55b040117cb5a3db7fad
                  block:
                    height: 688793
                    position: 3
                - txid: b810589c80335083ed715c03abf62f23968846d2f54343bac305f890f292ec8e
                  block:
                    height: 688707
                    position: 786
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/address/{address}/transactions/full':
    get:
      tags:
        - Address
      summary: Detailed Address Transactions
      description: |
        Like `/address/{address}/transactions`, with the full transactions instead
        of their ids.

        Full transactions are much larger, so the most that one call returns is
        lower (5,000, unless the operator changed it).
      operationId: getAddressTxsFull
      parameters:
        - $ref: '#/components/parameters/addressParam'
        - $ref: '#/components/parameters/heightParam'
        - $ref: '#/components/parameters/offsetParam'
        - $ref: '#/components/parameters/limitParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Detailed transactions starting with most recent.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Transaction'
              example:
                - txid: 00f304a6089a708168cd10d5ad8abd2977c36791156a55b040117cb5a3db7fad
                  size: 225
                  version: 2
                  locktime: 688792
                  fee: 4500
                  inputs:
                    - coinbase: false
                      txid: b810589c80335083ed715c03abf62f23968846d2f54343bac305f890f292ec8e
                      output: 1
                      sigscript: "47304402206a11f253c8035be2d9f5958a9ca838b3fd5a1a120441885e10e6ca\
                                 d0fef3911f02202056263939a88fe06e7fc94368ff44c46f71e7daa603936d75\
                                 5b35b8b2a21c154121027eb504988cbc043dd4c9fac51685d68718a24d7f9f1d\
                                 4c07b9f8c3d04327794c"
                      sequence: 4294967294
                      pkscript: 76a91437d070b3c6716a6174080722579fbdddad39bfb388ac
                      value: 2275183814
                      address: bitcoincash:qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
                      witness: []
                  outputs:
                    - address: bitcoincash:qqla8n6hwp9f86tc92t6f76680mlkxnqgu5flcqwfe
                      pkscript: 76a9143fd3cf57704a93e9782a97a4fb5a3bf7fb1a604788ac
                      value: 15197686
                      spent: false
                      spender: null
                    - address: bitcoincash:qql2wpu4fa36yf07gcc8q80sjfxfaq66xssezyukg2
                      pkscript: 76a9143ea707954f63a225fe4630701df0924c9e835a3488ac
                      value: 2259981628
                      spent: true
                      spender:
                        txid: 9e5fd342efb429df773d8208e3fde7af9b7440869e5963d761da0b317c4908ef
                        input: 0
                  block:
                    height: 688793
                    position: 3
                  deleted: false
                  time: 1621583361
                  rbf: false
                  weight: 900
                - txid: b810589c80335083ed715c03abf62f23968846d2f54343bac305f890f292ec8e
                  size: 225
                  version: 2
                  locktime: 688706
                  fee: 4500
                  inputs:
                    - coinbase: false
                      txid: 741f605735c995ab6d79814da49002f7b4eea973656e70410cbf7969ebf467fd
                      output: 0
                      sigscript: "4730440220298e397d155bcd0c3371a17f11d6dc06392c72c6d4646ac27fad72\
                                 e86e7f18f50220471c7338a0f4573955e52a95c4c2717f5ae5d369ad153ae627\
                                 49d0dcd9250482412103c60a0fd16eaf3c72dee4bf12a566ee3a6ae181a29b66\
                                 a1f2407442f7a6d39ad2"
                      sequence: 4294967294
                      pkscript: 76a9145124c4e68eed7ffc6110c2326d7d3739f55a09eb88ac
                      value: 2775188314
                      address: bitcoincash:qpgjf38x3mkhllrpzrprymtaxuul2ksfavle5hmhl4
                      witness: []
                  outputs:
                    - address: bitcoincash:qqx0ende3cx70rdsmml6ap5pcc9nqmns5qlc8yvhga
                      pkscript: 76a9140cfccdb98e0de78db0deffae8681c60b306e70a088ac
                      value: 500000000
                      spent: false
                      spender: null
                    - address: bitcoincash:qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
                      pkscript: 76a91437d070b3c6716a6174080722579fbdddad39bfb388ac
                      value: 2275183814
                      spent: true
                      spender:
                        txid: 00f304a6089a708168cd10d5ad8abd2977c36791156a55b040117cb5a3db7fad
                        input: 0
                  block:
                    height: 688707
                    position: 786
                  deleted: false
                  time: 1621533785
                  rbf: false
                  weight: 900
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/address/transactions':
    get:
      tags:
        - Address
      summary: Multiple Address Transactions
      description: |
        The transactions of several addresses, merged into one list, newest first.
        A transaction that touches several of the addresses appears once.

        This is how to follow a wallet that is a list of addresses rather than an
        xpub: one call, and one consistent page, instead of one call per address.
      operationId: getMultipleAddressTxs
      parameters:
        - $ref: '#/components/parameters/addressesParam'
        - $ref: '#/components/parameters/heightParam'
        - $ref: '#/components/parameters/offsetParam'
        - $ref: '#/components/parameters/limitParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: List of transactions starting with most recent.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TxRef'
              example:
                - txid: 9e5fd342efb429df773d8208e3fde7af9b7440869e5963d761da0b317c4908ef
                  block:
                    height: 688793
                    position: 458
                - txid: 00f304a6089a708168cd10d5ad8abd2977c36791156a55b040117cb5a3db7fad
                  block:
                    height: 688793
                    position: 3
                - txid: 00f304a6089a708168cd10d5ad8abd2977c36791156a55b040117cb5a3db7fad
                  block:
                    height: 688793
                    position: 3
                - txid: b810589c80335083ed715c03abf62f23968846d2f54343bac305f890f292ec8e
                  block:
                    height: 688707
                    position: 786
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/address/transactions/full':
    get:
      tags:
        - Address
      summary: Multiple Address Detailed Transactions
      description: |
        Like `/address/transactions`, with the full transactions instead of their
        ids, and the lower maximum of full transactions.
      operationId: getMultipleAddressTxsFull
      parameters:
        - $ref: '#/components/parameters/addressesParam'
        - $ref: '#/components/parameters/heightParam'
        - $ref: '#/components/parameters/offsetParam'
        - $ref: '#/components/parameters/limitParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Detailed transactions starting with most recent.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Transaction'
              example:
                - txid: 9e5fd342efb429df773d8208e3fde7af9b7440869e5963d761da0b317c4908ef
                  size: 225
                  version: 2
                  locktime: 688792
                  fee: 4500
                  inputs:
                    - coinbase: false
                      txid: 00f304a6089a708168cd10d5ad8abd2977c36791156a55b040117cb5a3db7fad
                      output: 1
                      sigscript: "4730440220362587be41ff4ca25ef097b6c4229b031c26420f53143560fc8bf2\
                                 4f65418dac022034b0c97cef1ff51460346daca727f926ee675e1acaf63cb092\
                                 a8a39cb3b5d8f94121029832be5ec435a55cd8c09474348cf7ffdcf266ae4fc8\
                                 8f390bde21d9a9c60d09"
                      sequence: 4294967294
                      pkscript: 76a9143ea707954f63a225fe4630701df0924c9e835a3488ac
                      value: 2259981628
                      address: bitcoincash:qql2wpu4fa36yf07gcc8q80sjfxfaq66xssezyukg2
                      witness: []
                  outputs:
                    - address: bitcoincash:qpfscnfvsaydyru7wajy42lqumvpf7drzgc7wz87sj
                      pkscript: 76a914530c4d2c8748d20f9e77644aabe0e6d814f9a31288ac
                      value: 1400000000
                      spent: false
                      spender: null
                    - address: bitcoincash:qrw8u9tctjl4ndggrl6l9ssam4qdse3agynldjdn48
                      pkscript: 76a914dc7e15785cbf59b5081ff5f2c21ddd40d8663d4188ac
                      value: 859977128
                      spent: true
                      spender:
                        txid: 03b59d0fe4bb260587656f57a2f42a34e97f6502ffb7ee93b8e58f6f8933c99a
                        input: 0
                  block:
                    height: 688793
                    position: 458
                  deleted: false
                  time: 1621583381
                  rbf: false
                  weight: 900
                - txid: 00f304a6089a708168cd10d5ad8abd2977c36791156a55b040117cb5a3db7fad
                  size: 225
                  version: 2
                  locktime: 688792
                  fee: 4500
                  inputs:
                    - coinbase: false
                      txid: b810589c80335083ed715c03abf62f23968846d2f54343bac305f890f292ec8e
                      output: 1
                      sigscript: "47304402206a11f253c8035be2d9f5958a9ca838b3fd5a1a120441885e10e6ca\
                                 d0fef3911f02202056263939a88fe06e7fc94368ff44c46f71e7daa603936d75\
                                 5b35b8b2a21c154121027eb504988cbc043dd4c9fac51685d68718a24d7f9f1d\
                                 4c07b9f8c3d04327794c"
                      sequence: 4294967294
                      pkscript: 76a91437d070b3c6716a6174080722579fbdddad39bfb388ac
                      value: 2275183814
                      address: bitcoincash:qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
                      witness: []
                  outputs:
                    - address: bitcoincash:qqla8n6hwp9f86tc92t6f76680mlkxnqgu5flcqwfe
                      pkscript: 76a9143fd3cf57704a93e9782a97a4fb5a3bf7fb1a604788ac
                      value: 15197686
                      spent: false
                      spender: null
                    - address: bitcoincash:qql2wpu4fa36yf07gcc8q80sjfxfaq66xssezyukg2
                      pkscript: 76a9143ea707954f63a225fe4630701df0924c9e835a3488ac
                      value: 2259981628
                      spent: true
                      spender:
                        txid: 9e5fd342efb429df773d8208e3fde7af9b7440869e5963d761da0b317c4908ef
                        input: 0
                  block:
                    height: 688793
                    position: 3
                  deleted: false
                  time: 1621583361
                  rbf: false
                  weight: 900
                - txid: 00f304a6089a708168cd10d5ad8abd2977c36791156a55b040117cb5a3db7fad
                  size: 225
                  version: 2
                  locktime: 688792
                  fee: 4500
                  inputs:
                    - coinbase: false
                      txid: b810589c80335083ed715c03abf62f23968846d2f54343bac305f890f292ec8e
                      output: 1
                      sigscript: "47304402206a11f253c8035be2d9f5958a9ca838b3fd5a1a120441885e10e6ca\
                                 d0fef3911f02202056263939a88fe06e7fc94368ff44c46f71e7daa603936d75\
                                 5b35b8b2a21c154121027eb504988cbc043dd4c9fac51685d68718a24d7f9f1d\
                                 4c07b9f8c3d04327794c"
                      sequence: 4294967294
                      pkscript: 76a91437d070b3c6716a6174080722579fbdddad39bfb388ac
                      value: 2275183814
                      address: bitcoincash:qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
                      witness: []
                  outputs:
                    - address: bitcoincash:qqla8n6hwp9f86tc92t6f76680mlkxnqgu5flcqwfe
                      pkscript: 76a9143fd3cf57704a93e9782a97a4fb5a3bf7fb1a604788ac
                      value: 15197686
                      spent: false
                      spender: null
                    - address: bitcoincash:qql2wpu4fa36yf07gcc8q80sjfxfaq66xssezyukg2
                      pkscript: 76a9143ea707954f63a225fe4630701df0924c9e835a3488ac
                      value: 2259981628
                      spent: true
                      spender:
                        txid: 9e5fd342efb429df773d8208e3fde7af9b7440869e5963d761da0b317c4908ef
                        input: 0
                  block:
                    height: 688793
                    position: 3
                  deleted: false
                  time: 1621583361
                  rbf: false
                  weight: 900
                - txid: b810589c80335083ed715c03abf62f23968846d2f54343bac305f890f292ec8e
                  size: 225
                  version: 2
                  locktime: 688706
                  fee: 4500
                  inputs:
                    - coinbase: false
                      txid: 741f605735c995ab6d79814da49002f7b4eea973656e70410cbf7969ebf467fd
                      output: 0
                      sigscript: "4730440220298e397d155bcd0c3371a17f11d6dc06392c72c6d4646ac27fad72\
                                 e86e7f18f50220471c7338a0f4573955e52a95c4c2717f5ae5d369ad153ae627\
                                 49d0dcd9250482412103c60a0fd16eaf3c72dee4bf12a566ee3a6ae181a29b66\
                                 a1f2407442f7a6d39ad2"
                      sequence: 4294967294
                      pkscript: 76a9145124c4e68eed7ffc6110c2326d7d3739f55a09eb88ac
                      value: 2775188314
                      address: bitcoincash:qpgjf38x3mkhllrpzrprymtaxuul2ksfavle5hmhl4
                      witness: []
                  outputs:
                    - address: bitcoincash:qqx0ende3cx70rdsmml6ap5pcc9nqmns5qlc8yvhga
                      pkscript: 76a9140cfccdb98e0de78db0deffae8681c60b306e70a088ac
                      value: 500000000
                      spent: false
                      spender: null
                    - address: bitcoincash:qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
                      pkscript: 76a91437d070b3c6716a6174080722579fbdddad39bfb388ac
                      value: 2275183814
                      spent: true
                      spender:
                        txid: 00f304a6089a708168cd10d5ad8abd2977c36791156a55b040117cb5a3db7fad
                        input: 0
                  block:
                    height: 688707
                    position: 786
                  deleted: false
                  time: 1621533785
                  rbf: false
                  weight: 900
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/address/{address}/balance':
    get:
      tags:
        - Address
      operationId: getBalance
      summary: Address Balance
      description: |
        The balance of an address: confirmed and unconfirmed amounts, the number of
        unspent outputs and of transactions, and the total ever received.

        An address that has never been used has a balance of zero rather than giving
        404: every valid address exists, it just has not received anything yet.
      parameters:
        - $ref: '#/components/parameters/addressParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Address balance and other stats.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Balance'
              example:
                address: bitcoincash:qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
                confirmed: 0
                unconfirmed: 0
                utxo: 0
                txs: 2
                received: 2275183814
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/address/balances':
    get:
      tags:
        - Address
      summary: Multiple Address Balances
      description: |
        The balances of several addresses, in one call. Every address in the request
        has a balance in the response, unused ones with zeros.
      operationId: getMultipleAddressBalances
      parameters:
        - $ref: '#/components/parameters/addressesParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Address balances and other stats.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Balance'
              example:
                - address: bitcoincash:qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
                  confirmed: 0
                  unconfirmed: 0
                  utxo: 0
                  txs: 2
                  received: 2275183814
                - address: bitcoincash:qql2wpu4fa36yf07gcc8q80sjfxfaq66xssezyukg2
                  confirmed: 0
                  unconfirmed: 0
                  utxo: 0
                  txs: 2
                  received: 2259981628
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Invalid Address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/address/{address}/unspent':
    get:
      tags:
        - Address
      summary: Address Unspent Outputs
      description: |
        The outputs paid to an address that are not spent yet, newest first: the
        coins a wallet can spend.

        Outputs spent by an unconfirmed transaction are left out, because spending
        them again would conflict with it. Unconfirmed outputs are included, with
        `"block": {"mempool": …}`; whether to spend them is the wallet's choice.
      operationId: getAddressUnspent
      parameters:
        - $ref: '#/components/parameters/addressParam'
        - $ref: '#/components/parameters/heightParam'
        - $ref: '#/components/parameters/offsetParam'
        - $ref: '#/components/parameters/limitParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: List of unspent outputs starting with most recent.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Unspent'
              example:
                - address: bitcoincash:qqla8n6hwp9f86tc92t6f76680mlkxnqgu5flcqwfe
                  block:
                    height: 688793
                    position: 3
                  txid: 00f304a6089a708168cd10d5ad8abd2977c36791156a55b040117cb5a3db7fad
                  index: 0
                  pkscript: 76a9143fd3cf57704a93e9782a97a4fb5a3bf7fb1a604788ac
                  value: 15197686
                - address: bitcoincash:qqla8n6hwp9f86tc92t6f76680mlkxnqgu5flcqwfe
                  block:
                    height: 688664
                    position: 51
                  txid: 1c9337a7bad182b5cf303b6c3ad7aeac8cbc162dee11ace30671d12d83f80501
                  index: 1
                  pkscript: 76a9143fd3cf57704a93e9782a97a4fb5a3bf7fb1a604788ac
                  value: 28288039
                - address: bitcoincash:qqla8n6hwp9f86tc92t6f76680mlkxnqgu5flcqwfe
                  block:
                    height: 688601
                    position: 3820
                  txid: c41e77bb8ab9f78a0ca26c43ba8a9e687510ccc303a9637e86bfb8affcd1dcf6
                  index: 0
                  pkscript: 76a9143fd3cf57704a93e9782a97a4fb5a3bf7fb1a604788ac
                  value: 42056933
                - address: bitcoincash:qqla8n6hwp9f86tc92t6f76680mlkxnqgu5flcqwfe
                  block:
                    height: 686234
                    position: 3648
                  txid: d4cad6861428215ed6f86406eb445305b107ab041f02e7ef5879381e9cc11ec0
                  index: 0
                  pkscript: 76a9143fd3cf57704a93e9782a97a4fb5a3bf7fb1a604788ac
                  value: 24597765
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/address/unspent':
    get:
      tags:
        - Address
      summary: Multiple Address Unspent Outputs
      description: |
        The unspent outputs of several addresses, merged into one list, newest
        first.
      operationId: getMultipleAddressUnspent
      parameters:
        - $ref: '#/components/parameters/addressesParam'
        - $ref: '#/components/parameters/heightParam'
        - $ref: '#/components/parameters/offsetParam'
        - $ref: '#/components/parameters/limitParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: List of unspent outputs starting with most recent.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Unspent'
              example:
                - address: bitcoincash:qqla8n6hwp9f86tc92t6f76680mlkxnqgu5flcqwfe
                  block:
                    height: 688793
                    position: 3
                  txid: 00f304a6089a708168cd10d5ad8abd2977c36791156a55b040117cb5a3db7fad
                  index: 0
                  pkscript: 76a9143fd3cf57704a93e9782a97a4fb5a3bf7fb1a604788ac
                  value: 15197686
                - address: bitcoincash:qqla8n6hwp9f86tc92t6f76680mlkxnqgu5flcqwfe
                  block:
                    height: 688664
                    position: 51
                  txid: 1c9337a7bad182b5cf303b6c3ad7aeac8cbc162dee11ace30671d12d83f80501
                  index: 1
                  pkscript: 76a9143fd3cf57704a93e9782a97a4fb5a3bf7fb1a604788ac
                  value: 28288039
                - address: bitcoincash:qqla8n6hwp9f86tc92t6f76680mlkxnqgu5flcqwfe
                  block:
                    height: 688601
                    position: 3820
                  txid: c41e77bb8ab9f78a0ca26c43ba8a9e687510ccc303a9637e86bfb8affcd1dcf6
                  index: 0
                  pkscript: 76a9143fd3cf57704a93e9782a97a4fb5a3bf7fb1a604788ac
                  value: 42056933
                - address: bitcoincash:qqla8n6hwp9f86tc92t6f76680mlkxnqgu5flcqwfe
                  block:
                    height: 686234
                    position: 3648
                  txid: d4cad6861428215ed6f86406eb445305b107ab041f02e7ef5879381e9cc11ec0
                  index: 0
                  pkscript: 76a9143fd3cf57704a93e9782a97a4fb5a3bf7fb1a604788ac
                  value: 24597765
                - address: bitcoincash:qp5p2rhvl6dtl0jkvrzf2w7u3fxpylu3ks7wh3vtlp
                  block:
                    height: 685236
                    position: 15161
                  txid: f80be09fecde882e3b59e39f05f93b51ed92dfe099ee24384b6f30d1d324a995
                  index: 0
                  pkscript: 76a91468150eecfe9abfbe5660c4953bdc8a4c127f91b488ac
                  value: 52128096
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/block/best':
    get:
      tags:
        - Block
      summary: Block Chain Head
      description: |
        The newest block of the chain with the most work that this server has
        imported.

        It can be a block or two behind the network while the server imports a new
        one; `/health` says how far behind it is.
      operationId: getBlockHead
      parameters:
        - $ref: '#/components/parameters/notxParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Best block data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockData'
              example:
                hash: 000000000000000001b64b6325acf226dd0b9c012c1d126917bf444f35408961
                height: 688797
                mainchain: true
                previous: 0000000000000000005ed0fb2297eee123e8970060ed52ce021ce415b3d21e0b
                time: 1621589645
                version: 805298176
                bits: 402828819
                nonce: 1843321275
                size: 14345
                tx:
                  - a12f364c11eeb9f5b48295ed52de6d62246d14db884fde68510489ef8afe36dd
                  - 0426d4a7d9635f805d657823395ba7f88c28391015c8ff7166f136d4cb1e7003
                  - 078169b239fb052fd11947ca2e06d72bcaf2dcd8e2ca2de3641a99972da555aa
                  - 09e1a01f75cc41d3a6ddd33cfc6c7c43cff546b6017c42098dc42c0380894d31
                  - 1706b23e11d5e65a6b5a7e5b2883be7601037865c46db872b56cce959f25584b
                  - 2638456e1b6874b978dbfa545b56e698344d5d776c7fcf9fd283f6ba7eeb0f2d
                  - 2d11fe4dc71ffb9b3245927fb8a3821a440d555a2a7cdcba1b561be7d4d5851a
                  - 2f4458e9b637b3be97db4c896ef6e396d4a4502e4c00493b8b12e4e672ff991d
                  - 30adc4c7e8fc46b2756d7edd4c3ca13ba08d24ba1cff99e4cb59864b442d1b56
                  - 30ffe61ae7d106b00a8a3a8b5195ddd5291deb0120fdc620fa42689b481923fa
                  - 3166134ffddf6fe6cb816aceb59894274ffeea320406876d8e77b1afa4c98056
                  - 3ba5dbc9ab73ef827898c624c7137f41f960efd6e06fb149f67a899731db831d
                  - 3f7a69e8104aa103e0988a0201ac2d40347ed84ab4c3ed239ddbe079d269dae8
                  - 3fb631d18bd4b86aa2d5156f01a69a89a958b9999cbad2abafe55b65d917c812
                  - 4cadeaaf483ea263b8a5a26cfcf227795ec0e468400d16067163b0a20d4b0834
                  - 51ebe726bdb690d70ad331e4fb08dddcdd7eaa1a45d8fcc0ac8cee56f54f0d72
                  - 613229215ee961c1ec452685d2031f435ca65e1d96744615e590b87ebeb2828a
                  - 6243831873230e731091c49d86d65de17cd5a9218d71a1e83213908d532c0014
                  - 6ce70f7d51b0bb80c3ca6c84bb1131807c3316c760e080fdbd296cc4f319d097
                  - 734fc62db583495c14b14ffccc12f89b2cea3e8d179e07c78ad6cd5746b018b7
                  - 777981b9cf7e9222d33129e511c4c247883052622f44e2c61b0393018ba111af
                  - 7985ef5d0ab5e7ff7791dd3d82db1673f66f1b9c0d95d27628025253497ca22e
                  - 7c071a25ffa5e6333e65dcc86460c25a5ef41d7502603beabdc0541aef18d782
                  - 7d237bf9a123281edebebd7029d77b4c7726df54f330ae1228359897b976ef11
                  - 884f75299f7dc57cb9844f88b0752b8522c128a0d4915084a0a844cec538a38f
                  - 9cb79e1b11c6bdea8ccab3f61411679bd5b19c17651fb71e0d9dbef04fa27d09
                  - b7596e008884c68a0322c56ccd94c429613e6be8c958e5c0c93ced6915d32c86
                  - be9e621846769a6a92c68882e0b5eb6352a3be3469e4d9beb3926b64039e1037
                  - c186585d8e4cae9f04a6c2cb463c79f5f78331434c5bed3c5616672a06919b91
                  - c6fc1a6d92877b9878ab08169c22ce39028c3e368d53544811f74f42cdc9e138
                  - c8421314ebfe5a312066c2e0feb00eacf49fd28ca174c89461eabdbea5a7fdd5
                  - d43a179f02356f62b8d42736c4d70da7584f3c1bbc29d8b2fbe147b9f89ebc04
                  - d6312a20c5df4368e975438556aac9db816d261d03c57c3b831f13fa40d1a303
                  - d7dc9b223ea0c2e21877611afe65df412164d5a08d2446763dda5bca72719c31
                  - df562b911ee84726e9be7c2496aa60466f34a6d748c47f368a05cbd29f45aaca
                  - e3b023c0cf9554dfb2ece828dfd94cce4438bfd28c57dfc62af843f9c09cbb4c
                  - e9ef985c16a176c1ea3890edcf8fab187703356008016b3aa252844100dafa51
                  - ed306dfe986b37aa64006e7deeb5c2342b563b4ca130de53b1e6cb6c8c57758a
                  - edf9f11512782dab3e6e4efc47f0491f30ffb87d005f78dd623bae027fb92579
                  - f36b81e3aa3340d03a50f7cf71a4c4cda91cf972198a508ecb32c9c41feb7773
                  - ff85614565dcc8710dc4f6a96b64ea593e30e0b437980d3702e4adf99aab3f87
                merkle: f379f45cb00f781a94e5ea4be0c194c4d9715c374d02ec1494800869bfd542b8
                subsidy: 625000000
                fees: 87081
                outputs: 115319020328
                work: 440514608165117083892886234
            application/octet-stream:
              schema:
                type: string
                format: binary

  '/block/best/raw':
    get:
      tags:
        - Block
      summary: Raw Block Chain Head
      description: |
        The newest block, serialized as in the peer-to-peer protocol, with all its
        transactions.
      operationId: getRawBlockHead
      parameters:
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: >-
            Bitcoin protocol block.
            Hex string when using JSON.
          content:
            application/json:
              schema:
                type: object
                required:
                  - result
                properties:
                  result:
                    type: string
                    example: "010000006f187fddd5e28aa1b4065daa5d9eae0c487094fb20cf97ca02b81c84\
                             000000005b7b25b51797f83192f9fd2c3871bfb27570a7d6b56d3a50760613d1\
                             a2fc1aeeab346849ffff001d36d9507101010000000100000000000000000000\
                             00000000000000000000000000000000000000000000ffffffff0704ffff001d\
                             0120ffffffff0100f2052a0100000043410408ab2f56361f83064e4ce51acc29\
                             1fb57c2cbcdb1d6562f6278c43a1406b548fd6cefc11bcc29eb620d5861cb9ed\
                             69dc39f2422f54b06a8af4f78c8276cfdc6bac00000000"
            application/octet-stream:
              schema:
                type: string
                format: binary

  '/block/latest':
    get:
      tags:
        - Block
      summary: Most Recent Blocks
      description: |
        The newest block and the ones before it, up to 100 blocks, newest first. For
        explorers that show recent blocks; use `notx=true` when you do not need the
        transaction ids, as blocks can have thousands of them.
      operationId: getLatestBlocks
      parameters:
        - $ref: '#/components/parameters/notxParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: List of most recent blocks.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BlockData'
              example:
                - hash: 000000000000000001b64b6325acf226dd0b9c012c1d126917bf444f35408961
                  height: 688797
                  mainchain: true
                  previous: 0000000000000000005ed0fb2297eee123e8970060ed52ce021ce415b3d21e0b
                  time: 1621589645
                  version: 805298176
                  bits: 402828819
                  nonce: 1843321275
                  size: 14345
                  tx:
                    - a12f364c11eeb9f5b48295ed52de6d62246d14db884fde68510489ef8afe36dd
                  merkle: f379f45cb00f781a94e5ea4be0c194c4d9715c374d02ec1494800869bfd542b8
                  subsidy: 625000000
                  fees: 87081
                  outputs: 115319020328
                  work: 440514608165117083892886234
                - hash: 0000000000000000005ed0fb2297eee123e8970060ed52ce021ce415b3d21e0b
                  height: 688796
                  mainchain: true
                  previous: 000000000000000000f3e8c40d8fcb08fe68309d05c654d4a9626e71771c87bc
                  time: 1621589661
                  version: 536870912
                  bits: 402828953
                  nonce: 4121941127
                  size: 466349
                  tx:
                    - 1be65880d02647bc4b8b5525b6dd33848ac4f36cc2c682a35676d0c5e10858c2
                  merkle: a42b2321e225dd3812f1f1e502ea320eff30d9061f4089613250d5e6d9f3f1ca
                  subsidy: 625000000
                  fees: 2623401
                  outputs: 5682996095523
                  work: 440512846073222977677902178
                - hash: 000000000000000000f3e8c40d8fcb08fe68309d05c654d4a9626e71771c87bc
                  height: 688795
                  mainchain: true
                  previous: 000000000000000000e2bd91f8f073c8a755335a1e16bd99d21d9a52497f80ca
                  time: 1621589252
                  version: 541065216
                  bits: 402826569
                  nonce: 4143833738
                  size: 3789642
                  tx:
                    - 09aecab0edb71bbd37d2482948ddc6bc3475b6723ed485620ef926571ab6af04
                  merkle: df42f51b831eda9ddcf84de248fa7fed56cec66a9f15545c9a0802f5e2ab1dd4
                  subsidy: 625000000
                  fees: 9075725
                  outputs: 58906363954005
                  work: 440511085324684718115244800
            application/octet-stream:
              schema:
                type: string
                format: binary

  '/block/{block}':
    get:
      tags:
        - Block
      operationId: getBlock
      summary: Block Information
      description: |
        A block by its hash, with the ids of its transactions.

        Blocks that are no longer in the main chain after a reorganisation keep
        answering, with `"mainchain": false`, so a link to a block never breaks.
      parameters:
        - $ref: '#/components/parameters/notxParam'
        - $ref: '#/components/parameters/blockParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Block data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockData'
              example:
                hash: 000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506
                height: 100000
                mainchain: true
                previous: 000000000002d01c1fccc21636b607dfd930d31d01c3a62104612a1719011250
                time: 1293623863
                version: 1
                bits: 453281356
                nonce: 274148111
                size: 957
                tx:
                  - 8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87
                  - fff2525b8931402dd09222c50775608f75787bd2b87e56995a7bdd30f79702c4
                  - 6359f0868171b1d194cbee1af2f16ea598ae8fad666d9b012c8ed2b79a236ec4
                  - e9a66845e05d5abc0ad04ec80f774a7e585c6e8db975962d069a522137b80c1d
                merkle: f3e94742aca4b5ef85488dc37c06c3282295ffec960994b2c0d5ac2a25a95766
                subsidy: 5000000000
                fees: 0
                outputs: 5301000000
                work: 451709610344319134
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Block not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/block/{block}/raw':
    get:
      tags:
        - Block
      operationId: getRawBlock
      summary: Raw Block
      description: |
        A block by its hash, serialized as in the peer-to-peer protocol, with all
        its transactions.
      parameters:
        - $ref: '#/components/parameters/blockParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: >-
            Bitcoin protocol block.
            Hex string when using JSON.
          content:
            application/json:
              schema:
                type: object
                required:
                  - result
                properties:
                  result:
                    type: string
                    example: "0100000050120119172a610421a6c3011dd330d9df07b63616c2cc1f1cd00200\
                             000000006657a9252aacd5c0b2940996ecff952228c3067cc38d4885efb5a4ac\
                             4247e9f337221b4d4c86041b0f2b571004010000000100000000000000000000\
                             00000000000000000000000000000000000000000000ffffffff08044c86041b\
                             020602ffffffff0100f2052a010000004341041b0e8c2567c12536aa13357b79\
                             a073dc4444acb83c4ec7a0e2f99dd7457516c5817242da796924ca4e99947d08\
                             7fedf9ce467cb9f7c6287078f801df276fdf84ac000000000100000001032e38\
                             e9c0a84c6046d687d10556dcacc41d275ec55fc00779ac88fdf357a187000000\
                             008c493046022100c352d3dd993a981beba4a63ad15c209275ca9470abfcd57d\
                             a93b58e4eb5dce82022100840792bc1f456062819f15d33ee7055cf7b5ee1af1\
                             ebcc6028d9cdb1c3af7748014104f46db5e9d61a9dc27b8d64ad23e7383a4e6c\
                             a164593c2527c038c0857eb67ee8e825dca65046b82c9331586c82e0fd1f633f\
                             25f87c161bc6f8a630121df2b3d3ffffffff0200e32321000000001976a914c3\
                             98efa9c392ba6013c5e04ee729755ef7f58b3288ac000fe208010000001976a9\
                             14948c765a6914d43f2a7ac177da2c2f6b52de3d7c88ac000000000100000001\
                             c33ebff2a709f13d9f9a7569ab16a32786af7d7e2de09265e41c61d078294ecf\
                             010000008a4730440220032d30df5ee6f57fa46cddb5eb8d0d9fe8de6b342d27\
                             942ae90a3231e0ba333e02203deee8060fdc70230a7f5b4ad7d7bc3e628cbe21\
                             9a886b84269eaeb81e26b4fe014104ae31c31bf91278d99b8377a35bbce5b27d\
                             9fff15456839e919453fc7b3f721f0ba403ff96c9deeb680e5fd341c0fc3a7b9\
                             0da4631ee39560639db462e9cb850fffffffff0240420f00000000001976a914\
                             b0dcbf97eabf4404e31d952477ce822dadbe7e1088acc060d211000000001976\
                             a9146b1281eec25ab4e1e0793ff4e08ab1abb3409cd988ac0000000001000000\
                             010b6072b386d4a773235237f64c1126ac3b240c84b917a3909ba1c43ded5f51\
                             f4000000008c493046022100bb1ad26df930a51cce110cf44f7a48c3c561fd97\
                             7500b1ae5d6b6fd13d0b3f4a022100c5b42951acedff14abba2736fd574bdb46\
                             5f3e6f8da12e2c5303954aca7f78f3014104a7135bfe824c97ecc01ec7d7e336\
                             185c81e2aa2c41ab175407c09484ce9694b44953fcb751206564a9c24dd094d4\
                             2fdbfdd5aad3e063ce6af4cfaaea4ea14fbbffffffff0140420f000000000019\
                             76a91439aa3d569e06a1d7926dc4be1193c99bf2eb9ee088ac00000000"
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Block not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blocks':
    get:
      tags:
        - Block
      operationId: getBlocks
      summary: Information for Multiple Blocks
      description: |
        Several blocks by hash, in one call. Hashes that are not known are left out
        of the response rather than failing the whole request, and repeated hashes
        are answered once.
      parameters:
        - $ref: '#/components/parameters/notxParam'
        - $ref: '#/components/parameters/blocksParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: List of block data objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BlockData'
              example:
                - hash: 000000000845517b31c6820d83f25cff46429bf136a7515fe504116427e60f8e
                  height: 49999
                  mainchain: true
                  previous: 000000001a793b5b7732ee306b1e4196132e0193fac6457801f1e16e6ec89e6a
                  time: 1270916354
                  version: 1
                  bits: 472518933
                  nonce: 64497466
                  size: 216
                  tx:
                    - 2c95132eb2fd2e7d2f5bd282595d3d47950836031727850579dca836254b1bd4
                  merkle: 2c95132eb2fd2e7d2f5bd282595d3d47950836031727850579dca836254b1bd4
                  subsidy: 5000000000
                  fees: 0
                  outputs: 0
                  work: 363097871874800
                - hash: 000000001aeae195809d120b5d66a39c83eb48792e068f8ea1fea19d84a4278a
                  height: 50000
                  mainchain: true
                  previous: 000000000845517b31c6820d83f25cff46429bf136a7515fe504116427e60f8e
                  time: 1270916538
                  version: 1
                  bits: 472518933
                  nonce: 58489010
                  size: 216
                  tx:
                    - 27f1d66f8a1ee5280f4e92508dcb647e954d53004905d08a75574daee4988360
                  merkle: 27f1d66f8a1ee5280f4e92508dcb647e954d53004905d08a75574daee4988360
                  subsidy: 5000000000
                  fees: 0
                  outputs: 0
                  work: 363124009197915
            application/octet-stream:
              schema:
                type: string
                format: binary

  '/block/height/{height}':
    get:
      tags:
        - Block
      operationId: getBlocksAtHeight
      summary: Blocks at Height
      description: |
        The blocks at a height. It is a list because the server keeps the blocks of
        chains that were abandoned in a reorganisation; the one in the main chain
        has `"mainchain": true`.
      parameters:
        - $ref: '#/components/parameters/blockHeightParam'
        - $ref: '#/components/parameters/notxParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Block data objects including orphans.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BlockData'
              example:
                - hash: 000000008f1a7008320c16b8402b7f11e82951f44ca2663caf6860ab2eeef320
                  height: 200
                  mainchain: true
                  previous: 00000000b7691ccc084542565697eca256e56bb7f67e560b48789db27f0468eb
                  time: 1231753120
                  version: 1
                  bits: 486604799
                  nonce: 1832536838
                  size: 215
                  tx:
                    - 2b1f06c2401d3b49a33c3f5ad5864c0bc70044c4068f9174546f3cfc1887d5ba
                  merkle: 2b1f06c2401d3b49a33c3f5ad5864c0bc70044c4068f9174546f3cfc1887d5ba
                  subsidy: 5000000000
                  fees: 0
                  outputs: 0
                  work: 863301599433
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Block not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/block/height/{height}/raw':
    get:
      tags:
        - Block
      operationId: getRawBlocksAtHeight
      summary: Raw Blocks at Height
      description: |
        The blocks at a height, serialized as in the peer-to-peer protocol.
      parameters:
        - $ref: '#/components/parameters/blockHeightParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: >-
            Bitcoin protocol blocks.
            Hex strings when using JSON.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  example: "01000000eb68047fb29d78480b567ef6b76be556a2ec975656424508cc1c69b7\
                           00000000bad58718fc3c6f5474918f06c44400c70b4c86d55a3f3ca3493b1d40\
                           c2061f2ba00f6b49ffff001d064b3a6d01010000000100000000000000000000\
                           00000000000000000000000000000000000000000000ffffffff0704ffff001d\
                           0138ffffffff0100f2052a010000004341045e071dedd1ed03721c6e9bba28fc\
                           276795421a378637fb41090192bb9f208630dcbac5862a3baeb9df3ca6e4e256\
                           b7fd2404824c20198ca1b004ee2197866433ac00000000"
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Block not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/block/time/{time}':
    get:
      tags:
        - Block
      operationId: getBlockAtTime
      summary: Block Mined at Time
      description: |
        The last block of the main chain whose timestamp is at or before a time:
        the block that was the newest at that moment, as far as the timestamps of
        blocks tell.

        Timestamps of blocks are set by miners and are only roughly right; they can
        even go backwards from one block to the next. For a time that only goes
        forward, use `/block/mtp/{time}`.
      parameters:
        - $ref: '#/components/parameters/timeParam'
        - $ref: '#/components/parameters/notxParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Last block mined at or before specified time.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockData'
              example:
                hash: 000000008f1a7008320c16b8402b7f11e82951f44ca2663caf6860ab2eeef320
                height: 200
                mainchain: true
                previous: 00000000b7691ccc084542565697eca256e56bb7f67e560b48789db27f0468eb
                time: 1231753120
                version: 1
                bits: 486604799
                nonce: 1832536838
                size: 215
                tx:
                  - 2b1f06c2401d3b49a33c3f5ad5864c0bc70044c4068f9174546f3cfc1887d5ba
                merkle: 2b1f06c2401d3b49a33c3f5ad5864c0bc70044c4068f9174546f3cfc1887d5ba
                subsidy: 5000000000
                fees: 0
                outputs: 0
                work: 863301599433
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Block not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/block/time/{time}/raw':
    get:
      tags:
        - Block
      operationId: getRawBlockAtTime
      summary: Raw Block Mined at Time
      description: |
        Like `/block/time/{time}`, serialized as in the peer-to-peer protocol.
      parameters:
        - $ref: '#/components/parameters/timeParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: >-
            Bitcoin protocol block mined at or before specified time.
            Hex string when using JSON.
          content:
            application/json:
              schema:
                type: object
                required:
                  - result
                properties:
                  result:
                    type: string
                    example: "0100000000000000000000000000000000000000000000000000000000000000\
                             000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa\
                             4b1e5e4a29ab5f49ffff001d1dac2b7c01010000000100000000000000000000\
                             00000000000000000000000000000000000000000000ffffffff4d04ffff001d\
                             0104455468652054696d65732030332f4a616e2f32303039204368616e63656c\
                             6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f75742066\
                             6f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe554827\
                             1967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4\
                             f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000"
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Block not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/block/mtp/{time}':
    get:
      tags:
        - Block
      operationId: getBlockMTP
      summary: Block at Median Time Past
      description: |
        The first block of the main chain whose median time past is at or after a
        time.

        The median time past of a block is the median of the timestamps of the 11
        blocks up to it. Unlike the timestamps themselves, it never goes backwards,
        and it is the time that the consensus rules use for time locks, so it is the
        right one to answer "from which block on is this lock time reached".
      parameters:
        - $ref: '#/components/parameters/timeParam'
        - $ref: '#/components/parameters/notxParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Block at Median Time Past
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockData'
              example:
                hash: 000000007986095d6dce2f41fd76e8008e828282400e46d3b49f39d19e2b7a78
                height: 206
                mainchain: true
                previous: 00000000d7e3261b16abe2fc1811150812ee0d6f6fc3727cadd8821df2d96c45
                time: 1231757577
                version: 1
                bits: 486604799
                nonce: 125825145
                size: 215
                tx:
                  - 32cbb7e4d08f02fdd78368a7a03ff54c13191d1023aa1e3f157027241d9840ae
                merkle: 32cbb7e4d08f02fdd78368a7a03ff54c13191d1023aa1e3f157027241d9840ae
                subsidy: 5000000000
                fees: 0
                outputs: 0
                work: 889071796431
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Block not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/block/mtp/{time}/raw':
    get:
      tags:
        - Block
      operationId: getRawBlockMTP
      summary: Raw Block at Median Time Past
      description: |
        Like `/block/mtp/{time}`, serialized as in the peer-to-peer protocol.
      parameters:
        - $ref: '#/components/parameters/timeParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: >-
            Bitcoin protocol block mined after specified median time past.
            Hex string when using JSON.
          content:
            application/json:
              schema:
                type: object
                required:
                  - result
                properties:
                  result:
                    type: string
                    example: "01000000456cd9f21d82d8ad7c72c36f6f0dee1208151118fce2ab161b26e3d7\
                             00000000ae40981d242770153f1eaa23101d19134cf53fa0a76883d7fd028fd0\
                             e4b7cb3209216b49ffff001d79f07f0701010000000100000000000000000000\
                             00000000000000000000000000000000000000000000ffffffff0704ffff001d\
                             010effffffff0100f2052a01000000434104bc184a82d824a8ff59576e8b6843\
                             767407e4f35edb5ad725460764a30ddf91479fd0eb1b0c2b4371a06b3fdae345\
                             3262fcf3358afafe3dbebccf2fdefcd0853cac00000000"
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Block not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/block/heights':
    get:
      tags:
        - Block
      operationId: getBlocksAtHeights
      summary: Blocks at Multiple Heights
      description: |
        The blocks at several heights, in one call, all of them for each height.
      parameters:
        - $ref: '#/components/parameters/blockHeightsParam'
        - $ref: '#/components/parameters/notxParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: List of block data objects at specified heights.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BlockData'
              example:
                - hash: 000000007bc154e0fa7ea32218a72fe2c1bb9f86cf8c9ebf9a715ed27fdb229a
                  height: 100
                  mainchain: true
                  previous: 00000000cd9b12643e6854cb25939b39cd7a1ad0af31a9bd8b2efe67854b1995
                  time: 1231660825
                  version: 1
                  bits: 486604799
                  nonce: 1573057331
                  size: 215
                  tx:
                    - 2d05f0c9c3e1c226e63b5fac240137687544cf631cd616fd34fd188fc9020866
                  merkle: 2d05f0c9c3e1c226e63b5fac240137687544cf631cd616fd34fd188fc9020866
                  subsidy: 5000000000
                  fees: 0
                  outputs: 0
                  work: 433798316133
                - hash: 000000008f1a7008320c16b8402b7f11e82951f44ca2663caf6860ab2eeef320
                  height: 200
                  mainchain: true
                  previous: 00000000b7691ccc084542565697eca256e56bb7f67e560b48789db27f0468eb
                  time: 1231753120
                  version: 1
                  bits: 486604799
                  nonce: 1832536838
                  size: 215
                  tx:
                    - 2b1f06c2401d3b49a33c3f5ad5864c0bc70044c4068f9174546f3cfc1887d5ba
                  merkle: 2b1f06c2401d3b49a33c3f5ad5864c0bc70044c4068f9174546f3cfc1887d5ba
                  subsidy: 5000000000
                  fees: 0
                  outputs: 0
                  work: 863301599433
                - hash: 0000000062b69e4a2c3312a5782d7798b0711e9ebac065cd5d19f946439f8609
                  height: 300
                  mainchain: true
                  previous: 00000000b9b003c04b2fe21b4f7a2fa809eb643852573c3a1748653e2019f01c
                  time: 1231832435
                  version: 1
                  bits: 486604799
                  nonce: 951842076
                  size: 215
                  tx:
                    - bc15f9dcbe637c187bb94247057b14637316613630126fc396c22e08b89006ea
                  merkle: bc15f9dcbe637c187bb94247057b14637316613630126fc396c22e08b89006ea
                  subsidy: 5000000000
                  fees: 0
                  outputs: 0
                  work: 1292804882733
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Block not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/transaction/{txid}':
    get:
      tags:
        - Transaction
      operationId: getTransaction
      summary: Detailed Transaction
      description: |
        A transaction, with what this server knows about it beyond its raw form:
        where it is in the chain, the fee, the address and amount of every output it
        spends, and which transaction spends each of its outputs.

        Unconfirmed transactions are here too. A transaction that was removed from
        the mempool, or whose block was abandoned, is not found.
      parameters:
        - $ref: '#/components/parameters/txidParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Detailed transaction object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
              example:
                txid: 03c16602a41ae7cbc2a25b0d2801fdc3295e2e8ebfb26774030b2f7d538f5568
                size: 219
                version: 2
                locktime: 0
                fee: 220
                inputs:
                  - coinbase: false
                    txid: 02ea64dfff60b1f215282bbb4b2d729fecc50d81d2d0ef09a60d550a5a69418f
                    output: 1
                    sigscript: "41e3dc2001cffff05e62751c071ac05dee8511b9af626fe5b07bf271ce48df66\
                               cf4013d4b4b280bb74eac6206d772aa24f1e766bc813dc68a461736392ce97f8\
                               a04121028d75bdff57fcecff68f2927092b15074a4524a8d8182b6de761f6af3\
                               b8c6ba8f"
                    sequence: 0
                    pkscript: 76a914dd1eee80cebba451dc26f6423881b8836fe86a8388ac
                    value: 8985694
                    address: bitcoincash:qrw3am5qe6a6g5wuymmyywyphzpkl6r2svhy9jy2kz
                    witness: []
                outputs:
                  - address: bitcoincash:qrnltz5afhaxlh6grupll8nfdswpatwnvcsyucwcle
                    pkscript: 76a914e7f58a9d4dfa6fdf481f03ff9e696c1c1eadd36688ac
                    value: 1230
                    spent: false
                    spender: null
                  - address: bitcoincash:qrw3am5qe6a6g5wuymmyywyphzpkl6r2svhy9jy2kz
                    pkscript: 76a914dd1eee80cebba451dc26f6423881b8836fe86a8388ac
                    value: 8984244
                    spent: true
                    spender:
                      txid: 4670c8b46211c06aa1a1c42e8c7e090e971c2549d30aac65cdb12876782c2248
                      input: 0
                block:
                  height: 688804
                  position: 13
                deleted: false
                time: 1621593351
                rbf: false
                weight: 876
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Transaction not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/transaction/{txid}/raw':
    get:
      tags:
        - Transaction
      operationId: getRawTransaction
      summary: Raw Transaction
      description: |
        A transaction serialized as in the peer-to-peer protocol, as a node would
        send it.
      parameters:
        - $ref: '#/components/parameters/txidParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: >-
            Bitcoin protocol transaction.
            Hex string if using JSON.
          content:
            application/json:
              schema:
                type: string
                example: "02000000018f41695a0a550da609efd0d2810dc5ec9f722d4bbb2b2815f2b160\
                         ffdf64ea02010000006441e3dc2001cffff05e62751c071ac05dee8511b9af62\
                         6fe5b07bf271ce48df66cf4013d4b4b280bb74eac6206d772aa24f1e766bc813\
                         dc68a461736392ce97f8a04121028d75bdff57fcecff68f2927092b15074a452\
                         4a8d8182b6de761f6af3b8c6ba8f0000000002ce040000000000001976a914e7\
                         f58a9d4dfa6fdf481f03ff9e696c1c1eadd36688acb4168900000000001976a9\
                         14dd1eee80cebba451dc26f6423881b8836fe86a8388ac00000000"
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Transaction not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/transaction/{txid}/after/{height}':
    get:
      tags:
        - Transaction
      operationId: cbAfterHeight
      summary: Hard Fork Safety Check
      description: |
        Whether any ancestor of a transaction is a coinbase mined after a height.

        This answers a question that matters after a chain split, such as the one
        between BTC and BCH: coins created by miners after the split exist on one
        chain only, so a transaction that descends from them cannot be replayed on
        the other chain. The server follows the inputs of the transaction back
        through its ancestors, and answers `true` as soon as it finds such a
        coinbase, `false` when every path ends in older blocks, and `null` when it
        gives up after looking at 10,000 transactions, so that one request cannot
        keep the server busy for long.
      parameters:
        - $ref: '#/components/parameters/txidParam'
        - $ref: '#/components/parameters/blockHeightParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: >-
            Specify height of last common block to find out if this transaction
            is invalid on alternate chain.
          content:
            application/json:
              schema:
                type: object
                required:
                  - result
                properties:
                  result:
                    type: boolean
                    nullable: true
                    example: true
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/transactions':
    get:
      tags:
        - Transaction
      operationId: getTransactions
      summary: Multiple Detailed Transactions
      description: |
        Several transactions by id, in one call. Ids that are not known are left out
        of the response rather than failing the whole request, and repeated ids are
        answered once.
      parameters:
        - $ref: '#/components/parameters/txidsParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: List of detailed transaction objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Transaction'
              example:
                - txid: 02ea64dfff60b1f215282bbb4b2d729fecc50d81d2d0ef09a60d550a5a69418f
                  size: 217
                  version: 2
                  locktime: 0
                  fee: 218
                  inputs:
                    - coinbase: false
                      txid: a7319f9118f2dc743a17476e668b83f61e9ee5252cb0417baf0bea41ddd95ba6
                      output: 1
                      sigscript: "41f1489e83baad016eb63e3ebfe6bda264652fa188877e2efed9261566265cb3\
                                 1cff5091878f6a965b7184d538d8fe285b1ba4e3f18f53f44a30de3a36635750\
                                 c34121028d75bdff57fcecff68f2927092b15074a4524a8d8182b6de761f6af3\
                                 b8c6ba8f"
                      sequence: 0
                      pkscript: 76a914dd1eee80cebba451dc26f6423881b8836fe86a8388ac
                      value: 8987143
                      address: bitcoincash:qrw3am5qe6a6g5wuymmyywyphzpkl6r2svhy9jy2kz
                      witness: []
                  outputs:
                    - address: bitcoincash:prgmpvfetym4fm724dddyrgnm5a7stjmlcp8v7z3tn
                      pkscript: a914d1b0b139593754efcaab5ad20d13dd3be82e5bfe87
                      value: 1231
                      spent: false
                      spender: null
                    - address: bitcoincash:qrw3am5qe6a6g5wuymmyywyphzpkl6r2svhy9jy2kz
                      pkscript: 76a914dd1eee80cebba451dc26f6423881b8836fe86a8388ac
                      value: 8985694
                      spent: true
                      spender:
                        txid: 03c16602a41ae7cbc2a25b0d2801fdc3295e2e8ebfb26774030b2f7d538f5568
                        input: 0
                  block:
                    height: 688803
                    position: 17
                  deleted: false
                  time: 1621593002
                  rbf: false
                  weight: 868
                - txid: 03c16602a41ae7cbc2a25b0d2801fdc3295e2e8ebfb26774030b2f7d538f5568
                  size: 219
                  version: 2
                  locktime: 0
                  fee: 220
                  inputs:
                    - coinbase: false
                      txid: 02ea64dfff60b1f215282bbb4b2d729fecc50d81d2d0ef09a60d550a5a69418f
                      output: 1
                      sigscript: "41e3dc2001cffff05e62751c071ac05dee8511b9af626fe5b07bf271ce48df66\
                                 cf4013d4b4b280bb74eac6206d772aa24f1e766bc813dc68a461736392ce97f8\
                                 a04121028d75bdff57fcecff68f2927092b15074a4524a8d8182b6de761f6af3\
                                 b8c6ba8f"
                      sequence: 0
                      pkscript: 76a914dd1eee80cebba451dc26f6423881b8836fe86a8388ac
                      value: 8985694
                      address: bitcoincash:qrw3am5qe6a6g5wuymmyywyphzpkl6r2svhy9jy2kz
                      witness: []
                  outputs:
                    - address: bitcoincash:qrnltz5afhaxlh6grupll8nfdswpatwnvcsyucwcle
                      pkscript: 76a914e7f58a9d4dfa6fdf481f03ff9e696c1c1eadd36688ac
                      value: 1230
                      spent: false
                      spender: null
                    - address: bitcoincash:qrw3am5qe6a6g5wuymmyywyphzpkl6r2svhy9jy2kz
                      pkscript: 76a914dd1eee80cebba451dc26f6423881b8836fe86a8388ac
                      value: 8984244
                      spent: true
                      spender:
                        txid: 4670c8b46211c06aa1a1c42e8c7e090e971c2549d30aac65cdb12876782c2248
                        input: 0
                  block:
                    height: 688804
                    position: 13
                  deleted: false
                  time: 1621593351
                  rbf: false
                  weight: 876
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

    post:
      tags:
        - Transaction
      summary: Broadcast Transaction
      description: |
        Send a signed transaction to the network, and get its id back.

        The body is the transaction in hexadecimal (white space is ignored) or as
        raw bytes. It must be in the format that nodes of the network read: on BCH,
        which has no SegWit, the format without witness data.

        **A 200 means the transaction was sent, not that the network accepted it.**
        The server does not validate transactions; it gives the transaction to half
        of its peers, which check it as they would any other. If they accept it, they
        relay it back, and it appears in the mempool and in balances within seconds.
        To know whether it was accepted, look for it with `/transaction/{txid}` or
        watch `/events`.

        Five seconds later the server asks those peers for the transaction back. A
        peer that accepted it sends it, and the server imports it like any other
        transaction it hears about; a peer that refused it has nothing to send.
      operationId: postTransaction
      parameters:
        - $ref: '#/components/parameters/prettyParam'
      requestBody:
        description: >-
          Publish Transaction. The body holds one transaction and nothing
          else. Bytes after the transaction are refused. The transaction is
          in the format that peers of the network read. A network without
          SegWit, such as Bitcoin Cash, takes the format without witness
          only.
        content:
          text/plain:
            schema:
              type: string
              description: Hex-encoded Bitcoin protocol transaction.
              example: "0200000001bd7d375bfc0a4ac4246ccefba4df1c635e5627b607bdc4af22282e\
                       cd5869d8f9010000006441f92d192c9e33b8184c58b88eb11f57a1eb5b5a2b0e\
                       72b326864021d9e946cd2a5275efcf385fbc0d9e7c8a76f9189d624efc00ff74\
                       657a52e47efc6ffa0bfe3b412102a20b2f9bd8b475252ad054fdedb49045bd40\
                       c8926b65f64e312dd821b243a37c000000000211180000000000001976a91434\
                       04e444809abd438d85eb18e8d07c796e364afe88ac399b7c00000000001976a9\
                       1486a7f1a2047ed6719fa1ad5484f15c37c104887c88ac00000000"
          application/octet-stream:
            schema:
              type: string
              format: binary
              description: Bitcoin protocol transaction.
      responses:
        '200':
          description: Transaction accepted by network peer.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TxId'
              example:
                txid: 0b7cb07d848959fbd02ad6e2ed21fac888b8e8011c6b8c5362d05c703066ae67
            application/octet-stream:
              schema:
                type: string
                format: binary
        '400':
          description: Transaction rejected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: |
            Publishing transaction failed for one of these reasons:

            * No network peers available.
            * Timeout while publishing, most likely silent rejection.
            * Network peer disconnected while publishing transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/transactions/block/{block}':
    get:
      tags:
        - Transaction
        - Block
      operationId: getBlockTransactions
      summary: Transactions for Block
      description: |
        The full transactions of a block, in the order of the block.
      parameters:
        - $ref: '#/components/parameters/blockParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Detailed transactions from specified Block.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Transaction'
              example:
                - txid: 8c14f0db3df150123e6f3dbbf30f8b955a8249b62ac1d1ff16284aefa3d06d87
                  size: 135
                  version: 1
                  locktime: 0
                  fee: 0
                  inputs:
                    - coinbase: true
                      txid: "0000000000000000000000000000000000000000000000000000000000000000"
                      output: 4294967295
                      sigscript: 044c86041b020602
                      sequence: 4294967295
                      pkscript: null
                      value: null
                      address: null
                      witness: []
                  outputs:
                    - address: null
                      pkscript: "41041b0e8c2567c12536aa13357b79a073dc4444acb83c4ec7a0e2f99dd74575\
                                16c5817242da796924ca4e99947d087fedf9ce467cb9f7c6287078f801df276f\
                                df84ac"
                      value: 5000000000
                      spent: true
                      spender:
                        txid: f3e6066078e815bb24db0dfbff814f738943bddaaa76f8beba360cfe2882480a
                        input: 12
                  block:
                    height: 100000
                    position: 0
                  deleted: false
                  time: 1293623863
                  rbf: false
                  weight: 540
                - txid: fff2525b8931402dd09222c50775608f75787bd2b87e56995a7bdd30f79702c4
                  size: 259
                  version: 1
                  locktime: 0
                  fee: 0
                  inputs:
                    - coinbase: false
                      txid: 87a157f3fd88ac7907c05fc55e271dc4acdc5605d187d646604ca8c0e9382e03
                      output: 0
                      sigscript: "493046022100c352d3dd993a981beba4a63ad15c209275ca9470abfcd57da93b\
                                 58e4eb5dce82022100840792bc1f456062819f15d33ee7055cf7b5ee1af1ebcc\
                                 6028d9cdb1c3af7748014104f46db5e9d61a9dc27b8d64ad23e7383a4e6ca164\
                                 593c2527c038c0857eb67ee8e825dca65046b82c9331586c82e0fd1f633f25f8\
                                 7c161bc6f8a630121df2b3d3"
                      sequence: 4294967295
                      pkscript: 76a91471d7dd96d9edda09180fe9d57a477b5acc9cad1188ac
                      value: 5000000000
                      address: bitcoincash:qpca0hvkm8ka5zgcpl5a27j80ddve89dzy4ya2rc9q
                      witness: []
                  outputs:
                    - address: bitcoincash:qrpe3mafcwft5cqnchsyaeefw4000avtxgzc3zhzg2
                      pkscript: 76a914c398efa9c392ba6013c5e04ee729755ef7f58b3288ac
                      value: 556000000
                      spent: true
                      spender:
                        txid: 5aa8e36f9423ee5fcf17c1d0d45d6988b8a5773eae8ad25d945bf34352040009
                        input: 6
                    - address: bitcoincash:qz2gcaj6dy2dg0e20tqh0k3v9a449h3a0smpvqhnkh
                      pkscript: 76a914948c765a6914d43f2a7ac177da2c2f6b52de3d7c88ac
                      value: 4444000000
                      spent: true
                      spender:
                        txid: 220ebc64e21abece964927322cba69180ed853bb187fbc6923bac7d010b9d87a
                        input: 0
                  block:
                    height: 100000
                    position: 1
                  deleted: false
                  time: 1293623863
                  rbf: false
                  weight: 1036
                - txid: 6359f0868171b1d194cbee1af2f16ea598ae8fad666d9b012c8ed2b79a236ec4
                  size: 257
                  version: 1
                  locktime: 0
                  fee: 0
                  inputs:
                    - coinbase: false
                      txid: cf4e2978d0611ce46592e02d7e7daf8627a316ab69759a9f3df109a7f2bf3ec3
                      output: 1
                      sigscript: "4730440220032d30df5ee6f57fa46cddb5eb8d0d9fe8de6b342d27942ae90a32\
                                 31e0ba333e02203deee8060fdc70230a7f5b4ad7d7bc3e628cbe219a886b8426\
                                 9eaeb81e26b4fe014104ae31c31bf91278d99b8377a35bbce5b27d9fff154568\
                                 39e919453fc7b3f721f0ba403ff96c9deeb680e5fd341c0fc3a7b90da4631ee3\
                                 9560639db462e9cb850f"
                      sequence: 4294967295
                      pkscript: 76a91435fbee6a3bf8d99f17724ec54787567393a8a6b188ac
                      value: 300000000
                      address: bitcoincash:qq6lhmn280udn8chwf8v23u82eee829xkyfzh8lz80
                      witness: []
                  outputs:
                    - address: bitcoincash:qzcde0uha2l5gp8rrk2jga7wsgk6m0n7zq6q4n0ad0
                      pkscript: 76a914b0dcbf97eabf4404e31d952477ce822dadbe7e1088ac
                      value: 1000000
                      spent: true
                      spender:
                        txid: ae1933ba2b7dc9702c96b99fb00f1df1392d9dea998a24b88d61974e8da8d2ab
                        input: 0
                    - address: bitcoincash:qp439q0wcfdtfc0q0yllfcy2kx4mxsyumyaya6lvur
                      pkscript: 76a9146b1281eec25ab4e1e0793ff4e08ab1abb3409cd988ac
                      value: 299000000
                      spent: true
                      spender:
                        txid: 20ed3fc9688a13fceeae5fdd606266c351b1f15b90404d9df387644e4c3d5b90
                        input: 3
                  block:
                    height: 100000
                    position: 2
                  deleted: false
                  time: 1293623863
                  rbf: false
                  weight: 1028
                - txid: e9a66845e05d5abc0ad04ec80f774a7e585c6e8db975962d069a522137b80c1d
                  size: 225
                  version: 1
                  locktime: 0
                  fee: 0
                  inputs:
                    - coinbase: false
                      txid: f4515fed3dc4a19b90a317b9840c243bac26114cf637522373a7d486b372600b
                      output: 0
                      sigscript: "493046022100bb1ad26df930a51cce110cf44f7a48c3c561fd977500b1ae5d6b\
                                 6fd13d0b3f4a022100c5b42951acedff14abba2736fd574bdb465f3e6f8da12e\
                                 2c5303954aca7f78f3014104a7135bfe824c97ecc01ec7d7e336185c81e2aa2c\
                                 41ab175407c09484ce9694b44953fcb751206564a9c24dd094d42fdbfdd5aad3\
                                 e063ce6af4cfaaea4ea14fbb"
                      sequence: 4294967295
                      pkscript: 76a914c4eb47ecfdcf609a1848ee79acc2fa49d3caad7088ac
                      value: 1000000
                      address: bitcoincash:qrzwk3lvlh8kpxscfrh8ntxzlfya8j4dwqtfzxkdk7
                      witness: []
                  outputs:
                    - address: bitcoincash:qqu6502kncr2r4ujdhztuyvnexdl96u7uqczwuuqu6
                      pkscript: 76a91439aa3d569e06a1d7926dc4be1193c99bf2eb9ee088ac
                      value: 1000000
                      spent: true
                      spender:
                        txid: 1ebf2dd645b815a59e35485dd4ceebc0587a1b7588b810e42085b479ce507bfa
                        input: 1
                  block:
                    height: 100000
                    position: 3
                  deleted: false
                  time: 1293623863
                  rbf: false
                  weight: 900
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Block not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/transactions/block/{block}/raw':
    get:
      tags:
        - Transaction
        - Block
      operationId: getRawBlockTransactions
      summary: Raw Block Transactions
      description: |
        The transactions of a block, serialized as in the peer-to-peer protocol, in
        the order of the block.
      parameters:
        - $ref: '#/components/parameters/blockParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: >-
            Bitcoin protocol transactions.
            Hex strings if using JSON.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
              example:
                - "0100000001000000000000000000000000000000000000000000000000000000\
                  0000000000ffffffff08044c86041b020602ffffffff0100f2052a0100000043\
                  41041b0e8c2567c12536aa13357b79a073dc4444acb83c4ec7a0e2f99dd74575\
                  16c5817242da796924ca4e99947d087fedf9ce467cb9f7c6287078f801df276f\
                  df84ac00000000"
                - "0100000001032e38e9c0a84c6046d687d10556dcacc41d275ec55fc00779ac88\
                  fdf357a187000000008c493046022100c352d3dd993a981beba4a63ad15c2092\
                  75ca9470abfcd57da93b58e4eb5dce82022100840792bc1f456062819f15d33e\
                  e7055cf7b5ee1af1ebcc6028d9cdb1c3af7748014104f46db5e9d61a9dc27b8d\
                  64ad23e7383a4e6ca164593c2527c038c0857eb67ee8e825dca65046b82c9331\
                  586c82e0fd1f633f25f87c161bc6f8a630121df2b3d3ffffffff0200e3232100\
                  0000001976a914c398efa9c392ba6013c5e04ee729755ef7f58b3288ac000fe2\
                  08010000001976a914948c765a6914d43f2a7ac177da2c2f6b52de3d7c88ac00\
                  000000"
                - "0100000001c33ebff2a709f13d9f9a7569ab16a32786af7d7e2de09265e41c61\
                  d078294ecf010000008a4730440220032d30df5ee6f57fa46cddb5eb8d0d9fe8\
                  de6b342d27942ae90a3231e0ba333e02203deee8060fdc70230a7f5b4ad7d7bc\
                  3e628cbe219a886b84269eaeb81e26b4fe014104ae31c31bf91278d99b8377a3\
                  5bbce5b27d9fff15456839e919453fc7b3f721f0ba403ff96c9deeb680e5fd34\
                  1c0fc3a7b90da4631ee39560639db462e9cb850fffffffff0240420f00000000\
                  001976a914b0dcbf97eabf4404e31d952477ce822dadbe7e1088acc060d21100\
                  0000001976a9146b1281eec25ab4e1e0793ff4e08ab1abb3409cd988ac000000\
                  00"
                - "01000000010b6072b386d4a773235237f64c1126ac3b240c84b917a3909ba1c4\
                  3ded5f51f4000000008c493046022100bb1ad26df930a51cce110cf44f7a48c3\
                  c561fd977500b1ae5d6b6fd13d0b3f4a022100c5b42951acedff14abba2736fd\
                  574bdb465f3e6f8da12e2c5303954aca7f78f3014104a7135bfe824c97ecc01e\
                  c7d7e336185c81e2aa2c41ab175407c09484ce9694b44953fcb751206564a9c2\
                  4dd094d42fdbfdd5aad3e063ce6af4cfaaea4ea14fbbffffffff0140420f0000\
                  0000001976a91439aa3d569e06a1d7926dc4be1193c99bf2eb9ee088ac000000\
                  00"
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Block not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/transactions/raw':
    get:
      tags:
        - Transaction
      operationId: getRawTransactions
      summary: Raw Transactions
      description: |
        Several transactions by id, serialized as in the peer-to-peer protocol. Ids
        that are not known are left out.
      parameters:
        - $ref: '#/components/parameters/txidsParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: >
            Bitcoin protocol transactions.
            Hex strings if using JSON.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
              example:
                - "02000000018f41695a0a550da609efd0d2810dc5ec9f722d4bbb2b2815f2b160\
                  ffdf64ea02010000006441e3dc2001cffff05e62751c071ac05dee8511b9af62\
                  6fe5b07bf271ce48df66cf4013d4b4b280bb74eac6206d772aa24f1e766bc813\
                  dc68a461736392ce97f8a04121028d75bdff57fcecff68f2927092b15074a452\
                  4a8d8182b6de761f6af3b8c6ba8f0000000002ce040000000000001976a914e7\
                  f58a9d4dfa6fdf481f03ff9e696c1c1eadd36688acb4168900000000001976a9\
                  14dd1eee80cebba451dc26f6423881b8836fe86a8388ac00000000"
                - "0200000001a65bd9dd41ea0baf7b41b02c25e59e1ef6838b666e47173a74dcf2\
                  18919f31a7010000006441f1489e83baad016eb63e3ebfe6bda264652fa18887\
                  7e2efed9261566265cb31cff5091878f6a965b7184d538d8fe285b1ba4e3f18f\
                  53f44a30de3a36635750c34121028d75bdff57fcecff68f2927092b15074a452\
                  4a8d8182b6de761f6af3b8c6ba8f0000000002cf0400000000000017a914d1b0\
                  b139593754efcaab5ad20d13dd3be82e5bfe875e1c8900000000001976a914dd\
                  1eee80cebba451dc26f6423881b8836fe86a8388ac00000000"
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/mempool':
    get:
      tags:
        - Transaction
      operationId: getMempool
      summary: Mempool Transaction Hashes
      description: |
        The ids of the unconfirmed transactions, newest first, by the time this
        server first saw them.

        There is no maximum `limit` here: the mempool is bounded by the network, and
        ids are small.
      parameters:
        - $ref: '#/components/parameters/limitParam'
        - $ref: '#/components/parameters/offsetParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: List of transaction hashes from mempool.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
              example:
                - a60e3b0775e08877d0a8edac874090034f2fa55a15fb339b98b18abb5c8cbdf3
                - c9c50b1f75b4a69319c51ffae3a47df7de99b02089e696b711244fd4591eb51e
                - 11acbc09285f99d2cc11b707b61952258d554dcffe9a91ab0f6a22d1b06ac618
            application/octet-stream:
              schema:
                type: string
                format: binary

  '/events':
    get:
      tags:
        - Block
        - Transaction
      operationId: getEventStream
      parameters:
        - $ref: '#/components/parameters/prettyParam'
        - name: after
          in: query
          required: false
          description: |
            Hash of the last event heard, a block or a transaction: the stream
            starts with what came after it.
          schema:
            type: string
          example: 3e225aa5d41b0f7560ee641f86b00728adc626102b348f9d319e0fdfd848a0db
        - name: quiet
          in: query
          required: false
          description: |
            `true` to hear of blocks alone, until something is watched.
          schema:
            type: boolean
            default: false
        - name: addresses
          in: query
          required: false
          description: Addresses to watch from the start, separated by commas.
          schema:
            type: string
        - name: xpub
          in: query
          required: false
          description: Extended public key to watch from the start.
          schema:
            type: string
        - name: derive
          in: query
          required: false
          description: |
            Types of the addresses of `xpub`: `legacy`, `compat` or `segwit`,
            one or several separated by commas. `legacy` when left out.
          schema:
            type: string
          example: legacy,segwit
        - name: filter
          in: query
          required: false
          description: |
            Bloom filter to start with, in hex, with `functions`, and `tweak`
            and `flags` when they are not 0.
          schema:
            type: string
        - name: functions
          in: query
          required: false
          description: Number of hash functions of `filter`.
          schema:
            type: integer
        - name: tweak
          in: query
          required: false
          description: Tweak of `filter`.
          schema:
            type: integer
        - name: flags
          in: query
          required: false
          description: Flags of `filter`.
          schema:
            type: integer
      summary: Stream Blocks and Transactions
      description: |
        A stream of what happens on the network: one event per new block and per
        transaction that enters or leaves the mempool, as one line of JSON each.

        ```
        {"type":"tx","id":"9a5c…"}
        {"type":"block","id":"0000000000000000000a1b…"}
        ```

        An event names what changed and nothing else, which keeps the stream
        small; fetch the block or transaction if you need it. A transaction
        that a block confirms has no event of its own: the block is the event.

        ## Taking up where you left

        The server keeps its last 10,000 events, fewer when their transactions
        are very large. With `after` the stream starts after the event with
        that hash, so a client that reconnects misses nothing. If the server
        does not have that event the answer is 404: read again what you
        follow, and connect without `after`. A client that falls further
        behind than the server keeps is disconnected.

        A transaction that entered the mempool and left it unconfirmed has two
        events with the same hash. The stream starts after the first of them,
        so an event may come twice, and none is left out.

        In a fleet every server keeps the same events, also from before it
        started: come back to any of them.

        ## WebSocket

        The same events are sent over a **WebSocket** at the same path, one
        message each, and `after` works the same. The server pings every 30
        seconds and drops clients that do not answer within 60.

        Messages are JSON in text frames or binary in binary frames ("Binary
        format" above). The server answers in the kind of frame that the
        client last sent; before the client has sent any, in binary if the
        `Accept` header of the handshake asked for it, else in JSON.

        ## Choosing transactions

        Over the WebSocket a client can say which transactions it wants to
        hear about, with these messages. Blocks are always sent. A client that
        sends none of them hears of every transaction.

        | Message | Does |
        | --- | --- |
        | `{"type":"watch","addresses":["…"]}` | Watch these addresses too. |
        | `{"type":"unwatch","addresses":["…"]}` | Stop watching them. |
        | `{"type":"watch","xpub":"…","derive":"segwit"}` | Watch a key too. |
        | `{"type":"unwatch","xpub":"…","derive":"segwit"}` | Stop watching it. |
        | `{"type":"filterload","filter":"hex","functions":11,"tweak":0,"flags":0}` | Set the Bloom filter. |
        | `{"type":"filteradd","data":"hex"}` | Add an element to the filter. |
        | `{"type":"filterclear"}` | Remove the filter. |
        | `{"type":"all"}` | Forget all of it: every transaction again. |
        | `{"type":"none"}` | Forget all of it: blocks alone. |

        A transaction is sent when it pays to or spends from a watched address
        or an address of a watched key, or when it matches the filter.

        ## Choosing from the start

        A client that connects and then sends its messages is sent every
        transaction until the first of them is read. To avoid that, say in the
        URL what to start with, on the WebSocket or on the HTTP stream:

        ```
        /events?quiet=true
        /events?addresses=bc1q…,1A1z…
        /events?xpub=xpub6C…&derive=legacy,segwit
        /events?filter=b50f8a…&functions=11
        ```

        `quiet=true` starts with blocks alone; send messages afterwards to
        watch more. The others watch what they name, and can be combined. A
        list of addresses too long for a URL goes in messages after
        `quiet=true`, or, for the HTTP stream, in the form of a `POST`.

        - **Keys.** `derive` is `legacy`, `compat` or `segwit`, as on the
          `/xpub` endpoints, and `legacy` when left out. To watch one key under
          several types of address, send a message for each. The server
          watches the addresses in use and the gap of unused ones after them,
          and moves the gap on as payments come. At most 100 keys.
        - **Addresses.** At most 100,000.
        - **Bloom filter.** The filter of BIP 37, matched as a node matches it
          for an SPV client: against the hash of the transaction, the data in
          its output scripts, the outputs it spends and the data in its input
          scripts. One filter to a connection. The server never changes it:
          `flags` is accepted, but the outputs of matching transactions are
          not added, so add what you want to follow with `filteradd`. An empty
          filter matches everything.
        - **No answers.** As between a node and an SPV client, nothing is sent
          back. A message that the server cannot read or will not do closes
          the connection with code 1008 and the reason.
        - When the server does not know the transaction of an event, which
          happens when one leaves the mempool long after it entered, the event
          goes to every client.
      responses:
        '200':
          description: Events stream each on one line.
          content:
            application/x-json-stream:
              schema:
                $ref: '#/components/schemas/Event'
              example:
                type: tx
                id: 3e225aa5d41b0f7560ee641f86b00728adc626102b348f9d319e0fdfd848a0db
            application/octet-stream:
              schema:
                type: string
                format: binary
        '400':
          description: A parameter could not be read, or names too much to watch.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: The server has no event with the hash given in `after`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/peers':
    get:
      tags:
        - Network
      operationId: getPeers
      parameters:
        - $ref: '#/components/parameters/prettyParam'
      summary: Connected Network Peers
      description: |
        The nodes of the peer-to-peer network that this server is connected to. It
        is where blocks and transactions come from, and where broadcast transactions
        go.
      responses:
        '200':
          description: List of peer objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Peer'
              example:
                - useragent: /BCH Unlimited:1.9.2(EB32; AD12; 64bit)/
                  address: 162.250.189.42:8333
                  version: 80003
                  services: "0000000000000875"
                  relay: true
                - useragent: /BCH Unlimited:1.9.2(EB32; AD12; 64bit)/
                  address: 154.57.12.149:8331
                  version: 80003
                  services: "0000000000000875"
                  relay: true
                - useragent: /Bitcoin Cash Node:23.0.0(EB32.0)/
                  address: 206.189.127.50:8333
                  version: 70015
                  services: "0000000000000425"
                  relay: true
            application/octet-stream:
              schema:
                type: string
                format: binary

  '/xpub/{xpub}':
    get:
      tags:
        - Address
      operationId: getXPubSummary
      summary: Extended Public Key Summary
      description: |
        The summary of a wallet: its balance, and the index of the last used address
        of the receiving and of the change chain, so the wallet knows where to derive
        its next address.

        It is the cheapest way to check a wallet: it does not list transactions or
        outputs. See *Extended public keys* at the top for how the addresses are
        found.
      parameters:
        - $ref: '#/components/parameters/xpubParam'
        - $ref: '#/components/parameters/xpubDerive'
        - $ref: '#/components/parameters/nocacheParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Information about extended public key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/XPubSummary'
              example:
                balance:
                  confirmed: 84994
                  unconfirmed: 0
                  received: 137003577
                  utxo: 3
                indices:
                  change: 27
                  external: 73
            application/octet-stream:
              schema:
                type: string
                format: binary
        '400':
          description: |
            The wallet has no transactions with this `derive`, but has some with
            another kind of address; the message names it. A query parameter
            that does not parse also gives 400.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: user-error
                message: >-
                  This xpub has no transactions with derive=legacy, but has
                  some with derive=segwit; ask with derive=segwit.
        '404':
          description: Invalid extended public key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      tags:
        - Address
      operationId: deleteCachedXPub
      summary: Delete Cached Extended Key
      description: |
        Remove a wallet from the Redis cache of this server, if it has one. The
        answer says whether it was cached.

        There is rarely a reason to call this: cached wallets are kept up to date
        with every block and transaction, and the least recently used ones are
        evicted when the cache is full. It is there to free memory, or to rule out
        the cache when looking into a problem.
      parameters:
        - $ref: '#/components/parameters/xpubParam'
        - $ref: '#/components/parameters/xpubDerive'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: True if xpub got deleted from cache.
          content:
            application/json:
              schema:
                type: object
                required:
                  - result
                properties:
                  result:
                    type: boolean
                    nullable: false
                    example: true
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/xpub/{xpub}/transactions/full':
    get:
      tags:
        - Address
      operationId: getXPubTransactionsFull
      summary: Detailed Extended Public Key Transactions
      description: |
        Like `/xpub/{xpub}/transactions`, with the full transactions instead of
        their ids, and the lower maximum of full transactions.
      parameters:
        - $ref: '#/components/parameters/xpubParam'
        - $ref: '#/components/parameters/xpubDerive'
        - $ref: '#/components/parameters/heightParam'
        - $ref: '#/components/parameters/limitParam'
        - $ref: '#/components/parameters/offsetParam'
        - $ref: '#/components/parameters/nocacheParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: List of transaction objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Transaction'
              example:
                - txid: f2ffa044fa3851c88e739ef76f13b960a828b5c1c7a71005a9315969c4924103
                  size: 406
                  version: 1
                  locktime: 0
                  fee: 675
                  inputs:
                    - coinbase: false
                      txid: ae3fc465a80264f45fa6f865ede43017d9826560299b6fb344d5cde84416b931
                      output: 1
                      sigscript: "473044022073b48b298df7ffb4ed5bb54ae939968e82fa966bc92d61728c8f7e\
                                 6e6d914e1b022042164959fdbbd3cda2cdaf541a2143be79f4be85144bfef790\
                                 6223c8a8cb2b2a4121029c71d9b4b94e8aa48072d1affba3432560d3e7964849\
                                 1d4b6351d3ddff51aa8f"
                      sequence: 4294967295
                      pkscript: 76a91474e607acf5ecdef5f9746ffa280744413a595cdb88ac
                      value: 70000
                      address: bitcoincash:qp6wvpav7hkdaa0ew3hl52q8g3qn5k2umvmh76m9eh
                      witness: []
                    - coinbase: false
                      txid: 6fc0394cea4f5f82fe8f332118a9079469336be53bc73975e9d58a99fbbc7ca2
                      output: 1
                      sigscript: "47304402204dc38ccbb6b3f6dcf496b7405bfc3f1942c3834197a32af9e07e6a\
                                 1f2d916c9502203a9f536951cb672b76111ec58cca35971c06af2bfaa481bd1a\
                                 ee67a03428e78341210250dce9058b388bbc4014d3600770b9bb59b7636a2eef\
                                 591797d9572014065c94"
                      sequence: 4294967295
                      pkscript: 76a91473cdab4b3e2486f7cbe618845f106109e5920aa588ac
                      value: 546
                      address: bitcoincash:qpeum26t8cjgda7tucvgghcsvyy7tys255ej7ux8wg
                      witness: []
                  outputs:
                    - address: bitcoincash:qz3k0wyd62g3njyucgcnpd72zq0r7rpsmumj82gvl4
                      pkscript: 76a914a367b88dd29119c89cc23130b7ca101e3f0c30df88ac
                      value: 30000
                      spent: false
                      spender: null
                    - address: bitcoincash:qpfvtmtyvfh3m5ul9kyc8gxefdpk2fx0syxxf7f6py
                      pkscript: 76a91452c5ed64626f1dd39f2d8983a0d94b436524cf8188ac
                      value: 39325
                      spent: false
                      spender: null
                    - address: bitcoincash:qrdf6e456fx6cmp6nwn9vhp4t6es7cuv9cfhvgdg5m
                      pkscript: 76a914da9d66b4d24dac6c3a9ba6565c355eb30f638c2e88ac
                      value: 546
                      spent: true
                      spender:
                        txid: 8c9f0ab27f96baca66d7a2eee5db8acd6b0b5fc725afbc3c2ea69c3d5b04aa7d
                        input: 1
                  block:
                    height: 680268
                    position: 6664
                  deleted: false
                  time: 1616669866
                  rbf: false
                  weight: 1624
                - txid: ae3fc465a80264f45fa6f865ede43017d9826560299b6fb344d5cde84416b931
                  size: 851
                  version: 1
                  locktime: 0
                  fee: 1998
                  inputs:
                    - coinbase: false
                      txid: 26ce9896f0f64349670735bdc30fb42adadac61348e403e78c5f92c3fb697355
                      output: 0
                      sigscript: "483045022100b8feba7bfc7a0809c616694237bd5e82f6f3a5fafbe0bad03668\
                                 79732fa829bc02203dce83fe508b86a1449c404756c274e11ea47decc4f8802c\
                                 fd2ab7e92ed7b51b41210388e0b3a8e3aa50414ac8c03ae02ac1c9931d901ad7\
                                 b6c1b7b83d50554fb592d8"
                      sequence: 4294967295
                      pkscript: 76a914c58a0c635b60d94498c416d32d4a2c15b36f8a2388ac
                      value: 40537
                      address: bitcoincash:qrzc5rrrtdsdj3yccstdxt229s2mxmu2yvj7ppp3cl
                      witness: []
                    - coinbase: false
                      txid: 41a422e6c003596954f07eb5021d9a2d6951da297dd519a5de3885772ac60e7c
                      output: 1
                      sigscript: "483045022100ad61cb3b0f08af0ada0ebb5be16213377fa193c9da16e4dca58a\
                                 9350724106330220089ac5eea5193f0926a483668eef219c7add5fa7d2be99a6\
                                 3e41da985fc104a241210223dc345218b6feb1815f0f103bc30a8508e3e248c4\
                                 f9b4bfdfed1d4498f879b4"
                      sequence: 4294967295
                      pkscript: 76a9145590a6b61c7d22a199692ce9c55cef294acebbeb88ac
                      value: 40000
                      address: bitcoincash:qp2epf4kr37j9gvedykwn32uau554n4mavzhpyg2ua
                      witness: []
                    - coinbase: false
                      txid: de01f52644b2610d491d28ce474382c57655f102974526a3fba6b5a48f8ea812
                      output: 0
                      sigscript: "483045022100d29b0dd38462a33eac65eb8df53ba2b2905bac923057f5b37e20\
                                 94f1a6072355022017480d0f2eedaa5f3ff2ca620a7b5b9301292524dfcaaa9c\
                                 97859ee074f92b6e412102db25e4df201e02e95f167f63e06c55febe81fd0713\
                                 3fb09f65b07a356aa645ec"
                      sequence: 4294967295
                      pkscript: 76a91457725700f16eda53d75608972ff322dd05642a8f88ac
                      value: 3000
                      address: bitcoincash:qpthy4cq79hd557h2cyfwtlnytws2ep23u6k07qh8v
                      witness: []
                    - coinbase: false
                      txid: de01f52644b2610d491d28ce474382c57655f102974526a3fba6b5a48f8ea812
                      output: 1
                      sigscript: "4830450221008ee0107bfc71e063ff8d5ab98f83bb63f17bda387d049b2c9e7f\
                                 f885941a3859022015baabbc9280c70a19a6047f1028f261f5686b8342273316\
                                 b4e2d703ab72d6264121027b884db5a796d7f96412a2efbf5961ef824323c8b0\
                                 64e375c3e0dd512c6a010a"
                      sequence: 4294967295
                      pkscript: 76a9145f8e761ff252d3349c32e6bc12a5e11ba20aa3f188ac
                      value: 4130
                      address: bitcoincash:qp0cuasl7ffdxdyuxtntcy49uyd6yz4r7y8u0ss3yd
                      witness: []
                    - coinbase: false
                      txid: b0fddc9d29b86c695af3dd66b1834256c362698532585a597de9c800f04fde06
                      output: 401
                      sigscript: "473044022034251190cae8ba9197f81756778d5fbf071e63bb7460386fbb36cd\
                                 74d47560a9022050a1cfec6076b8e7f23cd6e843b64cb2582476fd4b44fadb38\
                                 7803ed9ad4f1e54121037779735684011f62563197944da9f9e074b17813c0c6\
                                 2e79aeac7d875f9b8bf2"
                      sequence: 4294967295
                      pkscript: 76a91475dcf340cbb686b30bdaf6a2c8f8c68dadf93a5a88ac
                      value: 546
                      address: bitcoincash:qp6aeu6qewmgdvctmtm29j8cc6x6m7f6tgc6ey2mqu
                      witness: []
                  outputs:
                    - address: bitcoincash:qpg4r52nu85ra68aj4uecg0mufzu9hkmj5pxlaxfp2
                      pkscript: 76a9145151d153e1e83ee8fd95799c21fbe245c2dedb9588ac
                      value: 15669
                      spent: false
                      spender: null
                    - address: bitcoincash:qp6wvpav7hkdaa0ew3hl52q8g3qn5k2umvmh76m9eh
                      pkscript: 76a91474e607acf5ecdef5f9746ffa280744413a595cdb88ac
                      value: 70000
                      spent: true
                      spender:
                        txid: f2ffa044fa3851c88e739ef76f13b960a828b5c1c7a71005a9315969c4924103
                        input: 0
                    - address: bitcoincash:qq0kufslm9n5v0t5m5vy9gtnuupvpep0wv57sfl7gj
                      pkscript: 76a9141f6e261fd967463d74dd1842a173e702c0e42f7388ac
                      value: 546
                      spent: true
                      spender:
                        txid: d84d05a569d944a92bcb9aa63049b9279369cd44e41ef365da13312ce680530f
                        input: 1
                  block:
                    height: 678972
                    position: 832
                  deleted: false
                  time: 1615894044
                  rbf: false
                  weight: 3404
                - txid: de01f52644b2610d491d28ce474382c57655f102974526a3fba6b5a48f8ea812
                  size: 406
                  version: 1
                  locktime: 0
                  fee: 675
                  inputs:
                    - coinbase: false
                      txid: 41a422e6c003596954f07eb5021d9a2d6951da297dd519a5de3885772ac60e7c
                      output: 0
                      sigscript: "473044022029a10619e7e98a3e7cb17821ab0725ef25b700a9b943965c8762ee\
                                 3b4e19546202200be34da0f640cd3209e5f11a3b1824409df92cae6a0efd8449\
                                 d8e22faaae7865412103b3a86c342fd06c33e94dcbe2565fc3d9d6c4c081caa0\
                                 f1ec42bb45bbbbaf2e43"
                      sequence: 4294967295
                      pkscript: 76a9144abb2deefe6ca46c695132adafd70f72d50cab2688ac
                      value: 7805
                      address: bitcoincash:qp9tkt0wlek2gmrf2ye2mt7hpaed2r9tycna42c5ax
                      witness: []
                    - coinbase: false
                      txid: 9a396103f3656b4e119f166610d7e41e24c01a5c45200a8fcb58d3b79fb0dcaf
                      output: 315
                      sigscript: "4730440220271872d09da2cc13b764b5bf13cc373da53d89421e0d31ac33a734\
                                 20c5e6a03902206e01bf837db72fa4340428e3d061685cc49ec156a65e4b48ba\
                                 bcfd5d6c89018f4121033da5e50b4615d790b9b755cf5db213b0d08d489587d8\
                                 946a7dfd1b8dc76a1829"
                      sequence: 4294967295
                      pkscript: 76a914485103c1b046fe0f3ca0ed9ced338b53437c0c8288ac
                      value: 546
                      address: bitcoincash:qpy9zq7pkpr0ureu5rkeemfn3df5xlqvsgf66pqne5
                      witness: []
                  outputs:
                    - address: bitcoincash:qpthy4cq79hd557h2cyfwtlnytws2ep23u6k07qh8v
                      pkscript: 76a91457725700f16eda53d75608972ff322dd05642a8f88ac
                      value: 3000
                      spent: true
                      spender:
                        txid: ae3fc465a80264f45fa6f865ede43017d9826560299b6fb344d5cde84416b931
                        input: 2
                    - address: bitcoincash:qp0cuasl7ffdxdyuxtntcy49uyd6yz4r7y8u0ss3yd
                      pkscript: 76a9145f8e761ff252d3349c32e6bc12a5e11ba20aa3f188ac
                      value: 4130
                      spent: true
                      spender:
                        txid: ae3fc465a80264f45fa6f865ede43017d9826560299b6fb344d5cde84416b931
                        input: 3
                    - address: bitcoincash:qrcdtjvwn9v2r94y6flka67tvqt99a9cjq3fk9k8ws
                      pkscript: 76a914f0d5c98e9958a196a4d27f6eebcb601652f4b89088ac
                      value: 546
                      spent: true
                      spender:
                        txid: a93609dbae718b5f6c9ab69cf3f8d979636f09a411f057db8fa65b17556de601
                        input: 1
                  block:
                    height: 678151
                    position: 657
                  deleted: false
                  time: 1615384806
                  rbf: false
                  weight: 1624

            application/octet-stream:
              schema:
                type: string
                format: binary
        '400':
          description: |
            The wallet has no transactions with this `derive`, but has some with
            another kind of address; the message names it. A query parameter
            that does not parse also gives 400.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: user-error
                message: >-
                  This xpub has no transactions with derive=legacy, but has
                  some with derive=segwit; ask with derive=segwit.
        '404':
          description: Invalid extended public key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/xpub/{xpub}/transactions':
    get:
      tags:
        - Address
      operationId: getXPubTransactions
      summary: Extended Public Key Transaction List
      description: |
        The transactions of every address of a wallet, merged into one list, newest
        first, as transaction ids with their place in the chain. A transaction
        between two addresses of the wallet appears once.
      parameters:
        - $ref: '#/components/parameters/xpubParam'
        - $ref: '#/components/parameters/xpubDerive'
        - $ref: '#/components/parameters/heightParam'
        - $ref: '#/components/parameters/limitParam'
        - $ref: '#/components/parameters/offsetParam'
        - $ref: '#/components/parameters/nocacheParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: List of transactions.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TxRef'
              example:
                - txid: f2ffa044fa3851c88e739ef76f13b960a828b5c1c7a71005a9315969c4924103
                  block:
                    height: 680268
                    position: 6664
                - txid: ae3fc465a80264f45fa6f865ede43017d9826560299b6fb344d5cde84416b931
                  block:
                    height: 678972
                    position: 832
                - txid: de01f52644b2610d491d28ce474382c57655f102974526a3fba6b5a48f8ea812
                  block:
                    height: 678151
                    position: 657
            application/octet-stream:
              schema:
                type: string
                format: binary
        '400':
          description: |
            The wallet has no transactions with this `derive`, but has some with
            another kind of address; the message names it. A query parameter
            that does not parse also gives 400.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: user-error
                message: >-
                  This xpub has no transactions with derive=legacy, but has
                  some with derive=segwit; ask with derive=segwit.
        '404':
          description: Invalid extended public key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/xpub/{xpub}/balances':
    get:
      tags:
        - Address
      operationId: getXPubBalances
      summary: Extended Public Key Balances
      description: |
        The balance of every address of a wallet that the server looked at, with its
        derivation path: each used address, and the unused ones of the gap, with
        zeros, so a wallet can see which addresses it may still hand out. For the
        total, use `/xpub/{xpub}`.
      parameters:
        - $ref: '#/components/parameters/xpubParam'
        - $ref: '#/components/parameters/xpubDerive'
        - $ref: '#/components/parameters/nocacheParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: Balances only for used addresses.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/XPubBalance'
              example:
                - path:
                    - 0
                    - 0
                  balance:
                    address: bitcoincash:qpyq63tvlk0pca8mah6a8c0zxrvq8qvjzymrrnwprn
                    confirmed: 0
                    unconfirmed: 0
                    utxo: 0
                    txs: 8
                    received: 4530000
                - path:
                    - 0
                    - 1
                  balance:
                    address: bitcoincash:qqjfkpxln3ya6dq7l27ffdxcmq2h9hlfjvr70vk9l7
                    confirmed: 0
                    unconfirmed: 0
                    utxo: 0
                    txs: 2
                    received: 10000
                - path:
                    - 0
                    - 2
                  balance:
                    address: bitcoincash:qzxfymuk5t4veu0kxf7t0cmkn76t69skuggxaq2q8d
                    confirmed: 0
                    unconfirmed: 0
                    utxo: 0
                    txs: 2
                    received: 23000
            application/octet-stream:
              schema:
                type: string
                format: binary
        '400':
          description: |
            The wallet has no transactions with this `derive`, but has some with
            another kind of address; the message names it. A query parameter
            that does not parse also gives 400.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: user-error
                message: >-
                  This xpub has no transactions with derive=legacy, but has
                  some with derive=segwit; ask with derive=segwit.
        '404':
          description: Invalid extended public key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/xpub/{xpub}/unspent':
    get:
      tags:
        - Address
      operationId: getXPubUnspent
      summary: Extended Public Key Unspent Outputs
      description: |
        The unspent outputs of a wallet, newest first, each with the derivation path
        of its address, so the wallet knows which key signs for it.
      parameters:
        - $ref: '#/components/parameters/xpubParam'
        - $ref: '#/components/parameters/xpubDerive'
        - $ref: '#/components/parameters/heightParam'
        - $ref: '#/components/parameters/limitParam'
        - $ref: '#/components/parameters/offsetParam'
        - $ref: '#/components/parameters/nocacheParam'
        - $ref: '#/components/parameters/prettyParam'
      responses:
        '200':
          description: List of unspent output objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/XPubUnspent'
              example:
                - unspent:
                    address: bitcoincash:qz3k0wyd62g3njyucgcnpd72zq0r7rpsmumj82gvl4
                    block:
                      height: 680268
                      position: 6664
                    txid: f2ffa044fa3851c88e739ef76f13b960a828b5c1c7a71005a9315969c4924103
                    index: 0
                    pkscript: 76a914a367b88dd29119c89cc23130b7ca101e3f0c30df88ac
                    value: 30000
                  path:
                    - 0
                    - 73
                - unspent:
                    address: bitcoincash:qpfvtmtyvfh3m5ul9kyc8gxefdpk2fx0syxxf7f6py
                    block:
                      height: 680268
                      position: 6664
                    txid: f2ffa044fa3851c88e739ef76f13b960a828b5c1c7a71005a9315969c4924103
                    index: 1
                    pkscript: 76a91452c5ed64626f1dd39f2d8983a0d94b436524cf8188ac
                    value: 39325
                  path:
                    - 1
                    - 27
                - unspent:
                    address: bitcoincash:qpg4r52nu85ra68aj4uecg0mufzu9hkmj5pxlaxfp2
                    block:
                      height: 678972
                      position: 832
                    txid: ae3fc465a80264f45fa6f865ede43017d9826560299b6fb344d5cde84416b931
                    index: 0
                    pkscript: 76a9145151d153e1e83ee8fd95799c21fbe245c2dedb9588ac
                    value: 15669
                  path:
                    - 1
                    - 26
            application/octet-stream:
              schema:
                type: string
                format: binary
        '400':
          description: |
            The wallet has no transactions with this `derive`, but has some with
            another kind of address; the message names it. A query parameter
            that does not parse also gives 400.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: user-error
                message: >-
                  This xpub has no transactions with derive=legacy, but has
                  some with derive=segwit; ask with derive=segwit.
        '404':
          description: Invalid extended public key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/balance':
    get:
      tags:
        - Blockchain
      operationId: getBinfoBalance
      summary: Address or XPub Balances
      description: |
        Short balances of addresses and wallets, keyed by the address or xpub as it
        was given, as Blockchain.info answers.
      parameters:
        - $ref: '#/components/parameters/binfoActive'
        - $ref: '#/components/parameters/binfoActiveP2SH'
        - $ref: '#/components/parameters/binfoActiveBech32'
        - $ref: '#/components/parameters/binfoCashAddr'
        - $ref: '#/components/parameters/binfoJsonFormat'
      responses:
        '200':
          description: Balance object map.
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/BinfoShortBalance'
              example:
                ? "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                  ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                :
                  final_balance: 84994
                  n_tx: 123
                  total_received: 137003577
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      tags:
        - Blockchain
      operationId: postBinfoBalance
      summary: Address or XPub Balances
      description: |
        Like the `GET`, with the parameters in a form in the body, for requests with
        too many addresses to fit in a URL.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BinfoBalanceReq'
      responses:
        '200':
          description: Balance object map.
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  $ref: '#/components/schemas/BinfoShortBalance'
              example:
                ? "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                  ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                :
                  final_balance: 84994
                  n_tx: 123
                  total_received: 137003577
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/rawaddr/{address}':
    get:
      tags:
        - Blockchain
      operationId: getBinfoRawAddr
      summary: Address Balance & Transactions
      description: |
        The balance and transactions of an address or an xpub, as Blockchain.info
        answers. Also served at `/blockchain/address/{address}` and
        `/blockchain/xpub/{address}`, for clients that use those paths.
      parameters:
        - $ref: '#/components/parameters/binfoAddr'
        - $ref: '#/components/parameters/binfoLimit'
        - $ref: '#/components/parameters/binfoOffset'
        - $ref: '#/components/parameters/xpubDerive'
        - $ref: '#/components/parameters/binfoTxIdIndex'
        - $ref: '#/components/parameters/binfoJsonFormat'
      responses:
        '200':
          description: Address balance & transactions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BinfoRawAddr'
              example:
                hash160: 37d070b3c6716a6174080722579fbdddad39bfb3
                address: bitcoincash:qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
                n_tx: 2
                n_unredeemed: 0
                total_received: 2275183814
                total_sent: 2275183814
                final_balance: 0
                txs:
                  - hash: 00f304a6089a708168cd10d5ad8abd2977c36791156a55b040117cb5a3db7fad
                    ver: 2
                    vin_sz: 1
                    vout_sz: 2
                    size: 225
                    weight: 900
                    fee: 4500
                    relayed_by: 0.0.0.0
                    lock_time: 688792
                    tx_index: 6104469036511106
                    double_spend: false
                    time: 1621583361
                    block_index: 688793
                    block_height: 688793
                    inputs:
                      - sequence: 4294967294
                        witness: ""
                        script: "47304402206a11f253c8035be2d9f5958a9ca838b3fd5a1a120441885e10e6ca\
                                d0fef3911f02202056263939a88fe06e7fc94368ff44c46f71e7daa603936d75\
                                5b35b8b2a21c154121027eb504988cbc043dd4c9fac51685d68718a24d7f9f1d\
                                4c07b9f8c3d04327794c"
                        index: 0
                        prev_out:
                          spent: true
                          script: 76a91437d070b3c6716a6174080722579fbdddad39bfb388ac
                          spending_outpoints:
                            - tx_index: 6104469036511106
                              n: 0
                          tx_index: 5028695321485056
                          value: 2275183814
                          addr: bitcoincash:qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
                          n: 1
                          type: 0
                    out:
                      - type: 0
                        spent: false
                        value: 15197686
                        spending_outpoints: []
                        n: 0
                        tx_index: 6104469036511106
                        script: 76a9143fd3cf57704a93e9782a97a4fb5a3bf7fb1a604788ac
                        addr: bitcoincash:qqla8n6hwp9f86tc92t6f76680mlkxnqgu5flcqwfe
                      - type: 0
                        spent: true
                        value: 2259981628
                        spending_outpoints:
                          - tx_index: 8410203892883835
                            n: 0
                        n: 1
                        tx_index: 6104469036511106
                        script: 76a9143ea707954f63a225fe4630701df0924c9e835a3488ac
                        addr: bitcoincash:qql2wpu4fa36yf07gcc8q80sjfxfaq66xssezyukg2
                    result: -2275183814
                    balance: 0
                  - hash: b810589c80335083ed715c03abf62f23968846d2f54343bac305f890f292ec8e
                    ver: 2
                    vin_sz: 1
                    vout_sz: 2
                    size: 225
                    weight: 900
                    fee: 4500
                    relayed_by: 0.0.0.0
                    lock_time: 688706
                    tx_index: 5028695321485056
                    double_spend: false
                    time: 1621533785
                    block_index: 688707
                    block_height: 688707
                    inputs:
                      - sequence: 4294967294
                        witness: ""
                        script: "4730440220298e397d155bcd0c3371a17f11d6dc06392c72c6d4646ac27fad72\
                                e86e7f18f50220471c7338a0f4573955e52a95c4c2717f5ae5d369ad153ae627\
                                49d0dcd9250482412103c60a0fd16eaf3c72dee4bf12a566ee3a6ae181a29b66\
                                a1f2407442f7a6d39ad2"
                        index: 0
                        prev_out:
                          spent: true
                          script: 76a9145124c4e68eed7ffc6110c2326d7d3739f55a09eb88ac
                          spending_outpoints:
                            - tx_index: 5028695321485056
                              n: 0
                          tx_index: 8915933840879415
                          value: 2775188314
                          addr: bitcoincash:qpgjf38x3mkhllrpzrprymtaxuul2ksfavle5hmhl4
                          n: 0
                          type: 0
                    out:
                      - type: 0
                        spent: false
                        value: 500000000
                        spending_outpoints: []
                        n: 0
                        tx_index: 5028695321485056
                        script: 76a9140cfccdb98e0de78db0deffae8681c60b306e70a088ac
                        addr: bitcoincash:qqx0ende3cx70rdsmml6ap5pcc9nqmns5qlc8yvhga
                      - type: 0
                        spent: true
                        value: 2275183814
                        spending_outpoints:
                          - tx_index: 6104469036511106
                            n: 0
                        n: 1
                        tx_index: 5028695321485056
                        script: 76a91437d070b3c6716a6174080722579fbdddad39bfb388ac
                        addr: bitcoincash:qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
                    result: 2275183814
                    balance: 2275183814

        '400':
          description: |
            The wallet has no transactions with this `derive`, but has some with
            another kind of address; the message names it. A query parameter
            that does not parse also gives 400.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: user-error
                message: >-
                  This xpub has no transactions with derive=legacy, but has
                  some with derive=segwit; ask with derive=segwit.
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/unconfirmed-transactions':
    get:
      tags:
        - Blockchain
      operationId: getBinfoMempool
      summary: Mempool Transactions
      description: |
        Unconfirmed transactions, newest first, as Blockchain.info answers.
      parameters:
        - $ref: '#/components/parameters/binfoLimit'
        - $ref: '#/components/parameters/binfoOffset'
        - $ref: '#/components/parameters/binfoTxIdIndex'
        - $ref: '#/components/parameters/binfoJsonFormat'
      responses:
        '200':
          description: Mempool transactions array.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BinfoTx'
              example:
                txs:
                  - hash: 2e77a3d4991383bd9b5fa0e286ba00e5abcf86414edb87581a559957dc674bfa
                    ver: 2
                    vin_sz: 1
                    vout_sz: 2
                    size: 225
                    weight: 900
                    fee: 10000
                    relayed_by: 0.0.0.0
                    lock_time: 0
                    tx_index: 8806456703513386
                    double_spend: false
                    time: 1621613080
                    block_index: null
                    block_height: null
                    inputs:
                      - sequence: 4294967295
                        witness: ""
                        script: "473044022027aaf94096c0b4c3e0a8405078db67f3c8680b0e1def70c5dac307\
                                cd0f4f6c4b022079ce8b9dbf26f9114a9a16575b478214294274d4158672ffaa\
                                758c8904aff91b4121031b3c18ce8efcf9a1ce214cb5c62489e842663b47908b\
                                43f3af789d840af71efb"
                        index: 0
                        prev_out:
                          spent: true
                          script: 76a914842b152a0bbd4647afaeceec8a6afaa90668e7c788ac
                          spending_outpoints:
                            - tx_index: 8806456703513386
                              n: 0
                          tx_index: 4182415564665005
                          value: 267599400
                          addr: bitcoincash:qzzzk9f2pw75v3a04m8wezn2l25sv688cua892qu7q
                          n: 0
                          type: 0
                    out:
                      - type: 0
                        spent: false
                        value: 1002000
                        spending_outpoints: []
                        n: 0
                        tx_index: 8806456703513386
                        script: 76a914e2102caa6155620b64f363295adc9c21074a26bb88ac
                        addr: bitcoincash:qr3pqt92v92kyzmy7d3jjkkunssswj3xhv4zmfpu9p
                      - type: 0
                        spent: false
                        value: 266587400
                        spending_outpoints: []
                        n: 1
                        tx_index: 8806456703513386
                        script: 76a914842b152a0bbd4647afaeceec8a6afaa90668e7c788ac
                        addr: bitcoincash:qzzzk9f2pw75v3a04m8wezn2l25sv688cua892qu7q
                  - hash: 12a015002de59ce4f6d3510df37e56ebde864138acdd35051618603173ca6ee5
                    ver: 2
                    vin_sz: 1
                    vout_sz: 2
                    size: 219
                    weight: 876
                    fee: 220
                    relayed_by: 0.0.0.0
                    lock_time: 0
                    tx_index: 8072448182725635
                    double_spend: false
                    time: 1621613078
                    block_index: null
                    block_height: null
                    inputs:
                      - sequence: 0
                        witness: ""
                        script: "41c49770d0b68eb9d4552a45d3ce23ab7dc84ecded730f76903b9a4ff948ace2\
                                92ba282b63ea1fa3a4203f79edffc8d00b7ef68be4a42bc530be9e9c9a6a0d2c\
                                d4412102ed4717b0f0ae1fd42423d8fa2c9ae36783bc53f7acd8839f68dc5ad5\
                                8a9cf8b2"
                        index: 0
                        prev_out:
                          spent: true
                          script: 76a9145638dda8466c4a9c7fc8557d504272b7403f4dc288ac
                          spending_outpoints:
                            - tx_index: 8072448182725635
                              n: 0
                          tx_index: 1836562911653034
                          value: 7514960
                          addr: bitcoincash:qptr3hdggeky48rlep2h65zzw2m5q06dcgnpyymlh5
                          n: 1
                          type: 0
                    out:
                      - type: 0
                        spent: false
                        value: 733
                        spending_outpoints: []
                        n: 0
                        tx_index: 8072448182725635
                        script: 76a9145d0bafa91a9d13e1958a8c2c57de70047abd5f6688ac
                        addr: bitcoincash:qpwshtafr2w38cv432xzc477wqz8402lvczv7zvppp
                      - type: 0
                        spent: false
                        value: 7514007
                        spending_outpoints: []
                        n: 1
                        tx_index: 8072448182725635
                        script: 76a9145638dda8466c4a9c7fc8557d504272b7403f4dc288ac
                        addr: bitcoincash:qptr3hdggeky48rlep2h65zzw2m5q06dcgnpyymlh5


  '/blockchain/multiaddr':
    get:
      tags:
        - Blockchain
      operationId: getBinfoMultiAddr
      summary: Wallet Data
      description: |
        The balances and transactions of a wallet made of addresses and xpubs, as
        Blockchain.info answers, with the current price of the coin in a currency
        of your choice.

        Transactions show the change to the balance of the wallet as a whole, and,
        by default, incoming transactions leave out outputs to other addresses
        (`noCompact` keeps them): a payment from an exchange can have hundreds of
        outputs to other people, which the wallet has no use for.
      parameters:
        - $ref: '#/components/parameters/binfoActive'
        - $ref: '#/components/parameters/binfoActiveP2SH'
        - $ref: '#/components/parameters/binfoActiveBech32'
        - $ref: '#/components/parameters/binfoOnlyShow'
        - $ref: '#/components/parameters/binfoCount'
        - $ref: '#/components/parameters/binfoOffset'
        - $ref: '#/components/parameters/binfoNoCompact'
        - $ref: '#/components/parameters/binfoCurrency'
        - $ref: '#/components/parameters/binfoCashAddr'
        - $ref: '#/components/parameters/binfoTxIdIndex'
        - $ref: '#/components/parameters/binfoFilter'
        - $ref: '#/components/parameters/binfoJsonFormat'
      responses:
        '200':
          description: Wallet information object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BinfoMultiAddr'
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      tags:
        - Blockchain
      operationId: postBinfoMultiAddr
      summary: Wallet Data
      description: |
        Like the `GET`, with the parameters in a form in the body, for wallets with
        too many addresses to fit in a URL.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BinfoMultiAddrReq'
      responses:
        '200':
          description: Wallet information object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BinfoMultiAddr'
              example:
                addresses:
                  - address: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                             ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                    change_index: 28
                    account_index: 74
                    final_balance: 84994
                    n_tx: 123
                    total_received: 137003577
                    total_sent: 136918583
                wallet:
                  final_balance: 84994
                  n_tx: 2
                  n_tx_filtered: 2
                  total_received: 137003577
                  total_sent: 136918583
                txs:
                  - hash: 2c7316f0b66bf4c5a2078cdaacd679d96c2249a32736ea7d3ce36af8b6a215c0
                    ver: 1
                    vin_sz: 2
                    vout_sz: 3
                    size: 406
                    weight: 1624
                    fee: 675
                    relayed_by: 0.0.0.0
                    lock_time: 0
                    tx_index: 2c7316f0b66bf4c5a2078cdaacd679d96c2249a32736ea7d3ce36af8b6a215c0
                    double_spend: false
                    time: 1613556477
                    block_index: 675214
                    block_height: 675214
                    inputs:
                      - sequence: 4294967295
                        witness: ""
                        script: "47304402200e85d6f05cf9675f60382fda3e245695e12bb478128c701447e8b8\
                                5d0321921d02200a8624652009ce2413718d748194ab020aef2945721c9a29e8\
                                59de034a00291841210266490eabd32e0a0eb4de6089590e6dbf5bd8b5411a3e\
                                c4b78cf40091e7200c23"
                        index: 0
                        prev_out:
                          spent: true
                          script: 76a91437be7ac52f6f08899051efe89f228c14a171bb2588ac
                          xpub:
                            path: M/0/66
                            m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                               ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                          spending_outpoints:
                            - tx_index: 2c7316f0b66bf4c5a2078cdaacd679d96c2249a32736ea7d3ce36af8b6a215c0
                              n: 0
                          tx_index: 671ba5996381a919c7b88415513ca1db54528e3741282a44228f7eea4d23ffad
                          value: 21000
                          addr: bitcoincash:qqmmu7k99ahs3zvs28h738ez3s22zudmy5squrulad
                          n: 1
                          type: 0
                      - sequence: 4294967295
                        witness: ""
                        script: "473044022030ade2f8405e47001dfe816fb2047cb4f6beff185c942e325d7b30\
                                70dca66622022001c0bb027e88d3ea2fce18c47553461dd063a0a26aa0f69252\
                                dcce8e26fe8cbc41210269115d4edff9823c494195a0e3a9497d868c61c43c76\
                                c37f851e28655d4fad60"
                        index: 1
                        prev_out:
                          spent: true
                          script: 76a914f1d4f42b339a3bc881085e4babfb0db98db8887888ac
                          spending_outpoints:
                            - tx_index: 2c7316f0b66bf4c5a2078cdaacd679d96c2249a32736ea7d3ce36af8b6a215c0
                              n: 1
                          tx_index: ac99b50918e84857b84a13b27a0635a9f0474d6e20ddae0b5d05f3b8503d3e5c
                          value: 546
                          addr: bitcoincash:qrcafaptxwdrhjyppp0yh2lmpkucmwyg0qf590pgku
                          n: 1
                          type: 0
                    out:
                      - type: 0
                        spent: true
                        value: 4485
                        spending_outpoints:
                          - tx_index: 26ce9896f0f64349670735bdc30fb42adadac61348e403e78c5f92c3fb697355
                            n: 2
                        n: 0
                        tx_index: 2c7316f0b66bf4c5a2078cdaacd679d96c2249a32736ea7d3ce36af8b6a215c0
                        script: 76a9147cf27910c2aa3e86e9d69f5bb8dc0f677a0e83fb88ac
                        addr: bitcoincash:qp70y7gsc24raphf6604hwxupanh5r5rlvh3jvjjan
                        xpub:
                          path: M/0/68
                          m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                             ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                      - type: 0
                        spent: true
                        value: 15840
                        spending_outpoints:
                          - tx_index: 26ce9896f0f64349670735bdc30fb42adadac61348e403e78c5f92c3fb697355
                            n: 3
                        n: 1
                        tx_index: 2c7316f0b66bf4c5a2078cdaacd679d96c2249a32736ea7d3ce36af8b6a215c0
                        script: 76a91457743547f518ef1ebf928e0065036230f246680288ac
                        addr: bitcoincash:qpthgd2875vw784lj28qqegrvgc0y3ngqga8fpcy8k
                        xpub:
                          path: M/1/22
                          m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                             ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                      - type: 0
                        spent: false
                        value: 546
                        spending_outpoints: []
                        n: 2
                        tx_index: 2c7316f0b66bf4c5a2078cdaacd679d96c2249a32736ea7d3ce36af8b6a215c0
                        script: 76a9140c511401eb2e64aee8f1fc3dc49869b32819845f88ac
                        addr: bitcoincash:qqx9z9qpavhxfthg787rm3ycdxejsxvytu8zyrvhsf
                    result: -675
                    balance: 91015
                  - hash: 0e81fa97ae5106f6e967de912908ee261473575e890e815fa78084f9d1b68382
                    ver: 1
                    vin_sz: 4
                    vout_sz: 3
                    size: 703
                    weight: 2812
                    fee: 1557
                    relayed_by: 0.0.0.0
                    lock_time: 0
                    tx_index: 0e81fa97ae5106f6e967de912908ee261473575e890e815fa78084f9d1b68382
                    double_spend: false
                    time: 1613556294
                    block_index: 675214
                    block_height: 675214
                    inputs:
                      - sequence: 4294967295
                        witness: ""
                        script: "483045022100a3d05e493ed722b9c9519ea77d2d3c139d70bb117497d8e517fb\
                                8b5b196ceeaf0220608a93847c452c461ad841eabccc75e065c310e8ae93ad6e\
                                60953e6c089a297c412103b4c6da6474554411af1f6ed8deeeafab9848bc6bfc\
                                6cb716f135e7dd674f7a26"
                        index: 0
                        prev_out:
                          spent: true
                          script: 76a9141369d9bd3ea79896797c4143c97e9748cc06262d88ac
                          xpub:
                            path: M/0/65
                            m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                               ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                          spending_outpoints:
                            - tx_index: 0e81fa97ae5106f6e967de912908ee261473575e890e815fa78084f9d1b68382
                              n: 0
                          tx_index: 4890ab0fed725daa08879afcea302a4c7925c094c98676cab3edcaa186adbc41
                          value: 7000
                          addr: bitcoincash:qqfknkda86ne39ne03q58jt7jayvcp3x95u9mrv7ra
                          n: 0
                          type: 0
                      - sequence: 4294967295
                        witness: ""
                        script: "483045022100b2e36d340c3ba421f762ce1e4adde0a8c7cf550aa30022a4add6\
                                ac1003ea1a7d02200cd9d8ccba03a33eccd6f4108189962067597d25d969b9f3\
                                ab019212a0bb6824412102e14eaaa6cec9deefe5983dec61bbb2c9fc82dbbc12\
                                4d395d97d26494864f30ec"
                        index: 1
                        prev_out:
                          spent: true
                          script: 76a9148ecd9c021c8650db874940103f1f77e6da14d88e88ac
                          xpub:
                            path: M/1/19
                            m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                               ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                          spending_outpoints:
                            - tx_index: 0e81fa97ae5106f6e967de912908ee261473575e890e815fa78084f9d1b68382
                              n: 1
                          tx_index: 4890ab0fed725daa08879afcea302a4c7925c094c98676cab3edcaa186adbc41
                          value: 45732
                          addr: bitcoincash:qz8vm8qzrjr9pku8f9qpq0clwlnd59xc3cvrfxdpkr
                          n: 1
                          type: 0
                      - sequence: 4294967295
                        witness: ""
                        script: "483045022100ff406af352e0680f20c3efcf8a7915ee8c2f1322073fce5736cd\
                                c7d264576ad00220637cec6bd985f68395bc5a29e7c15fd8a5b74dafd169c2ae\
                                d86e453c91eb196a4121025b8a5938fad2f4e6cc7d7a32dd2b6a206a0082e2c6\
                                ecdd5ab5a15e855e1a2ff3"
                        index: 2
                        prev_out:
                          spent: true
                          script: 76a914bcd2b9001eea656e1a69f280cdc8dd86dbc8bf9288ac
                          xpub:
                            path: M/1/20
                            m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                               ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                          spending_outpoints:
                            - tx_index: 0e81fa97ae5106f6e967de912908ee261473575e890e815fa78084f9d1b68382
                              n: 2
                          tx_index: 671ba5996381a919c7b88415513ca1db54528e3741282a44228f7eea4d23ffad
                          value: 19515
                          addr: bitcoincash:qz7d9wgqrm4x2ms6d8egpnwgmkrdhj9ljg80neqzgv
                          n: 0
                          type: 0
                      - sequence: 4294967295
                        witness: ""
                        script: "4730440220445da9cea01832fbb4882b8aeb12189a91f32c9e0eec42c2b8ab0f\
                                5af40c38de02202378f8f3e774c3515e7082460c34faf5631dbadc0fff072084\
                                9aabcc70b41dc44121028c8ec4b2d812141f34ecc23ed6b533ee1c36e1654619\
                                05dae99595072529957e"
                        index: 3
                        prev_out:
                          spent: true
                          script: 76a91401b513b7affb4ff8ca96d1e25a78431687d7709e88ac
                          spending_outpoints:
                            - tx_index: 0e81fa97ae5106f6e967de912908ee261473575e890e815fa78084f9d1b68382
                              n: 3
                          tx_index: adbaa9b985968e42369f5dc96890480c84ee68537fb0c200a2a09dc3bdd6c2d3
                          value: 546
                          addr: bitcoincash:qqqm2yah4la5l7x2jmg7ykncgvtg04msncm9ta8v9e
                          n: 0
                          type: 0
                    out:
                      - type: 0
                        spent: true
                        value: 690
                        spending_outpoints:
                          - tx_index: 26ce9896f0f64349670735bdc30fb42adadac61348e403e78c5f92c3fb697355
                            n: 0
                        n: 0
                        tx_index: 0e81fa97ae5106f6e967de912908ee261473575e890e815fa78084f9d1b68382
                        script: 76a914be0322af705fa04d0550606dee421dbfc28d7d9988ac
                        addr: bitcoincash:qzlqxg40wp06qng92psxmmjzrklu9rtanyazwxtjqa
                        xpub:
                          path: M/1/21
                          m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                             ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                      - type: 0
                        spent: true
                        value: 70000
                        spending_outpoints:
                          - tx_index: 26ce9896f0f64349670735bdc30fb42adadac61348e403e78c5f92c3fb697355
                            n: 1
                        n: 1
                        tx_index: 0e81fa97ae5106f6e967de912908ee261473575e890e815fa78084f9d1b68382
                        script: 76a914e53b8bc9d022aecb0cdd2f3eb874b6d563e73d8f88ac
                        addr: bitcoincash:qrjnhz7f6q32ajcvm5hnawr5km2k8eea3u5mcg7n9s
                        xpub:
                          path: M/0/67
                          m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                             ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                      - type: 0
                        spent: false
                        value: 546
                        spending_outpoints: []
                        n: 2
                        tx_index: 0e81fa97ae5106f6e967de912908ee261473575e890e815fa78084f9d1b68382
                        script: 76a914c45f36d8156fa82e2f380452b0c42abd0a7aeedc88ac
                        addr: bitcoincash:qrz97dkcz4h6st308qz99vxy927s57hwmszhkl5hdv
                    result: -1557
                    balance: 91690
                info:
                  nconnected: 20
                  conversion: 1.0e8
                  symbol_local:
                    code: EUR
                    symbol: €
                    name: Euro
                    conversion: 170436.14609786443
                    symbolAppearsAfter: false
                    local: true
                  symbol_btc:
                    code: BCH
                    symbol: BCH
                    name: Bitcoin Cash
                    conversion: 1.0e8
                    symbolAppearsAfter: true
                    local: false
                  latest_block:
                    hash: 0000000000000000005d55b8ab4de4c864b815edf9fb52278d69a614c3c7c72a
                    height: 688824
                    time: 1621613356
                    block_index: 688824
                recommend_include_fee: true
                cash_addr: true
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/rawblock/{block}':
    get:
      tags:
        - Blockchain
      operationId: getBinfoBlock
      summary: Raw Block
      description: |
        A block with its transactions, by hash or height, as Blockchain.info answers.
        With `format=hex`, the block serialized as in the peer-to-peer protocol.
      parameters:
        - $ref: '#/components/parameters/binfoBlockId'
        - $ref: '#/components/parameters/binfoFormat'
        - $ref: '#/components/parameters/binfoTxIdIndex'
      responses:
        '200':
          description: Raw block with transaction data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BinfoBlock'
              example:
                hash: 000000001aeae195809d120b5d66a39c83eb48792e068f8ea1fea19d84a4278a
                ver: 1
                prev_block: 000000000845517b31c6820d83f25cff46429bf136a7515fe504116427e60f8e
                mrkl_root: 27f1d66f8a1ee5280f4e92508dcb647e954d53004905d08a75574daee4988360
                time: 1270916538
                bits: 472518933
                next_block:
                  - 000000001c920d495e1eeef2452b6d1c6c229a919b28196c103ecffebabee141
                fee: 0
                nonce: 58489010
                n_tx: 1
                size: 216
                block_index: 50000
                main_chain: true
                height: 50000
                weight: 0
                tx:
                  - hash: 27f1d66f8a1ee5280f4e92508dcb647e954d53004905d08a75574daee4988360
                    ver: 1
                    vin_sz: 1
                    vout_sz: 1
                    size: 135
                    weight: 540
                    fee: 0
                    relayed_by: 0.0.0.0
                    lock_time: 0
                    tx_index: 3395786307389866
                    double_spend: false
                    time: 1270916538
                    block_index: 50000
                    block_height: 50000
                    inputs:
                      - sequence: 4294967295
                        witness: ""
                        script: 0415112a1c02c100
                        index: 0
                        prev_out: null
                    out:
                      - type: 0
                        spent: true
                        value: 5000000000
                        spending_outpoints:
                          - tx_index: 2434377525635237
                            n: 24
                        n: 0
                        tx_index: 3395786307389866
                        script: "4104a9d6840fdd1497b3067b8066db783acf90bf42071a38fe2cf6d2d8a04835\
                                d0b5c45716d8d6012ab5d56c7824c39718f7bc7486d389cd0047f53785f9a63c\
                                0c9dac"
                        addr: bitcoincash:qr52xkse9lqlpmfuzlx2lshmx4qnchljns9fmxxydw
            application/text:
              schema:
                type: string
                example: "010000008e0fe627641104e55f51a736f19b4246ff5cf2830d82c6317b514508\
                         00000000608398e4ae4d57758ad0054900534d957e64cb8d50924e0f28e51e8a\
                         6fd6f127baa5c04b15112a1cb2787c0301010000000100000000000000000000\
                         00000000000000000000000000000000000000000000ffffffff080415112a1c\
                         02c100ffffffff0100f2052a01000000434104a9d6840fdd1497b3067b8066db\
                         783acf90bf42071a38fe2cf6d2d8a04835d0b5c45716d8d6012ab5d56c7824c3\
                         9718f7bc7486d389cd0047f53785f9a63c0c9dac00000000"
        '404':
          description: Block not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/latestblock':
    get:
      tags:
        - Blockchain
      operationId: getBinfoLatest
      summary: Latest Block
      description: |
        The newest block, as Blockchain.info answers, with the ids of its
        transactions.
      parameters:
        - $ref: '#/components/parameters/binfoTxIdIndex'
        - $ref: '#/components/parameters/binfoJsonFormat'
      responses:
        '200':
          description: Latest block and list of transactions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BinfoHeader'
              example:
                height: 688824
                hash: 0000000000000000005d55b8ab4de4c864b815edf9fb52278d69a614c3c7c72a
                time: 1621613356
                block_index: 1621613356
                txIndexes:
                  - 4c38eb2b05ee5ed21d4f04aca264b6b5c2ecdebc463979880f34ff11d61b9df7
                  - 01823b17775de166d63f1a04cfb6dcdb758a864037808d8855db20e186db8a25
                  - 0448ff64f09a9b2942098edb92bf9ceb75277a21e4f3df5e33867b293aad7ec3
                  - 069023d56d47fa2c6f0f435b50fd160f7d2696ad73008753e344264750f48414
                  - 07145f7740f1204908194f9fec585b233d7b2b6dd260e43e4879f2affea02851
                  - 07ff00c1b6b058ee5823005fe05209f54ee71ed2059528a378aaa0bda9b8c2d6
                  - 08756d7b411d0ac4993f890fd216501944b1b4bc61df69ddaa9f721a4c75ec2a
                  - 0983b46978824feafcc7c67b5b0df164c81d8a71d9c02e0dd9b470d5f66c1a58
                  - 0a23d6bf0a8f7298bd422576d51eaab3e6a51e6b176424bfc61df48063b87a6c
                  - 0c08237a85fd2583958bfef936ef4c43784d0f13c57753e12492d304b7cf6155
                  - 0c090bd29a8b29f9f0ac36ad88c9ff0b5087f08ac51342de8a44f36bcfe20911
                  - 0cb873849e4f72fdab5c91b37bc3937c2c1b495349fa5424f57d4c9c72f62ead
                  - 0e5b552bffa5e732307f2c33ffbbc5ac8f523bfa991fd5a2711c8a5e698fe626
                  - 0f75524e1f8e0018275fb70a7463b0ac92f712485348bd0f0229baaf7149c039
                  - 1713d89ecaa24b8a82fee48740c032969a1be453608c760a36e9ac0c2925c568
                  - 1ab310ab552ce3a8103a565b9b63988898da47c0371d25cd51ad718c07173a9e
                  - 1c2ed964c3c5f825dfe67e3b1bd432cbfff712c69c94c9972cc790cd6d9690cf
                  - 1ffedd33d7df4777c4f623669b678a3a0ddda9649539d098522caa51ef4f8a61
                  - 2216e249cbf1eedc8fc525c74a64db4336da381cca724161bafbbef2cf713510
                  - 22a9d5a370cf548c2e5155109eca8e29c0cd88f5b16e2db8c2e63fa0a71c48d2
                  - 23e4aa5d99ee70c33dedd634435d208182f8b50f64a301766ba88c4143619cb1
                  - 26ad4b3701e7d23ef4cee7408a21393afe28ad03e4524788cc1fc18949a2a29a
                  - 270b9cc678b56a04aba36be6254acdc21ab11c9e3eb1ab6539595dcc35180742
                  - 29e14b7b36226f089b84778508434cbee387ac643a286a38f314d46649cabd2d
                  - 2b977eadd3052f2640ebfa33b2e602bea12af04bb30d7912634066159bafd738
                  - 2d283d80d8244bf4e21e2bf958b35d9946a7dacc6032b8ca75955ce649889619
                  - 33feebf0f5712ddaba475f4cf56cc10c33c1e8b6630885c1d16f0903b5f28f49
                  - 3b4749b05d4489fe3509a0eaeaa3bf84ebd18d9e899a4c0f93cec4906f0b4c72
                  - 3c445791dc93009e9e82a2cc7e1f063d2aaaba3541c79a5278e24b05d092f373
                  - 3e3e7b8c6a8ed50b44358d3501b4172cce9f7e6be2c3fa682cef69bc1b77ebbc
                  - 420d4e957e75a248a003349c6f36780bd7bac479af31e26d52bfc1580f1e05f4
                  - 43c659f05fe4bac95041ee8ad9cb487fb5c178f260ad111f79555c6208d465d6
                  - 448b6610021f4f74a7376da139167a85fc8fd34a9aa0c845841439a574676df0
                  - 44e23144d415417fae2d03f071621f7f87ffa4847a131b28e220238a82858384
                  - 45a34bf311e2544428a35924701a216306da67a1fd921a95520c130e164ceb40
                  - 45f96d25c71bac0f5026428b4a114ea4821e6923e7223fc9730e9cbacc52a476
                  - 47c83dde8a4ce80efcd63981f27fd90780f8f51694f7a83de66f15be201deaf0
                  - 47f43223ebded3e0397d143692ad93197d0c36fd2033cb6c21619cac26372783
                  - 4b86e1d7d66159eb795f059996ce2d25ae9b7adf1c4a08b7b77e3fd29d683588
                  - 4c237092cc3a1f6c3a6077aa929a53fa71879d607030db66158b899f6b691329
                  - 4c6370f1d46aea314c51d7221f436cc3d897d78c7de9b6413b17c7fa0d2d77e5
                  - 4c6fd1d42c445bd51c135ee3cecfb541d2467d40b2678663d56a39c20c12ced1
                  - 4cd70717f5dd726b19527837c58b1df094b83eda05c001c21a6fa9b9b8a6b9c3
                  - 4d5fd51538bfa055ed138ad83437ec1744186d71dcb10f2b668bc9ea3f889bde
                  - 4e84251545b58a7d76b6ec21973b99b317edcf6afc071bea7854a3c5b5a8d524
                  - 54dc82365400c51292ebe2a2351a172615527164c024b327688c435bf34a88d8
                  - 57e1c65a83b47dfdecadbecab3da05c65d0134ef997e88f5b9a478307be21cec
                  - 590d9ff2561efdfb2330ae736ca44486da720ef0d7f63168c9b5691dec93ab03
                  - 5b0cc365c8fa1256464f5bcb92ba937f778b489eab9b5903aa59ce35fb8d7ac6
                  - 5b565353fb2109962fdb7e550c7e3735890cedd45efd338d829a08bcff222224
                  - 5c46cc7305f0ca412bacf44c3f7c727aa55db0daeeb011b7d1042660563081df
                  - 60d2778361afe1230a0f8eafc2396d5cee8975fc13a8119e6205a61022ec9fd9
                  - 61b28c70c16c2e0dca2f8176bdb2eee168596bdb5c1101827f36c2a78e5963dd
                  - 63001aadaafa6f6c375368c653fbf38075f181f19d28e196879115b378fa4e0d
                  - 6787eb3bc645d7e1526ccb32efbf1e19c759c66559a8da2bbbb4b43ed4f2f101
                  - 687f32bd1f01e84bea246c9dbac219bf2904863d882d653bba1c13c1d4549e0a
                  - 6928119044c4718d2a146ee77a63d76d0f53d20a8c6d8166bb14c455e6db194d
                  - 6a8afc569208b5aadfe917eeb00cb63742b85f2bfb620e35480aa179c7bcc91a
                  - 6b19caf7d11225dc62bceba5835c5a9f676d5626138cfef7c717729758fd8120
                  - 6b73c2a0a8da9dd434eea8363a784fc4d3199266dc79598a15482519e15cd957
                  - 6c7fb02034c7768a0fd377823b90a03003be26973fc33e32cfe31709003dd0d8
                  - 73e99e7fd98eca88447bdc23f1f622c71eee973c24e16804431ca9540bdb3eba
                  - 75be45e58da8e1945d691dd0d6e37dd09e71bfa79aa3216bdb5d908523f68a0d
                  - 762eac92e4e6fe747c97c5894b2367a529e25774874afa0d00ba75c86a99a778
                  - 76e89ea97e8a465e1dd28f38620e755dface6b58fdc7466a8fefca0b172d14ae
                  - 785063b0221fddd9541395e636a440ecd03d20762371dedc73243c1ca835acad
                  - 789a6c7f59a852ab02974d7d3588e1d1f63850f320edd6d68cc8a20343b20353
                  - 791aaba586b112c7c40d503ec00d0cd092cfa11f460c2c7d03fb2b92f9d839ce
                  - 7b1a96d3dc25129876584fca0b354820e2315fc327c156e0074c824d1985ccbc
                  - 7b275d4724d3d79037e27a8ec2e6b9c25be2cc5d475f50f8e10f91c74b5836b5
                  - 7c234031e50aa853509fbe8eab5380bef517340064c9ddf7bd7529bda93265be
                  - 7cbee59f16df830c37ec51bc3f364731e17e71df95f743879aabfe3a5f10b401
                  - 7d79a6db1788061453f846d0a0f95dd0f6d76b223dd6f8eec0ad7154cbc6ff26
                  - 819e4070d42221831dc899b3ce1b8afadce75e2c29a7254a3704476729471a10
                  - 8621220b62b96f4fd16601b958536cb0574c9da0af8a9c0e0bfb88688ee82cb8
                  - 873c4755e36fabed41e9d340073536c6e328c243685b74f2dc6348f66d865458
                  - 94d9389300590814bf05309a141338ab0c096c16f469b3c64e8fd5e292fc35c3
                  - 98cafc73d825f0625e57f6a13513abead77f98d837f1a9ca41cf846f0a746d73
                  - 98ff1ea70619428f049acbfa914fc672b6fafabf754f3d8dc6368a2d5e7f169c
                  - 9cc4658b94a2c294f599fc5b621e0a718ef4237075bd31ee354e786c577fc9dc
                  - a258b428c7ff1d3fe238262b9c5c041cba8b90615a31df2073c6bf7730b50558
                  - ab50430d07205a389be9d7b48a5f1a8876fb362db7b1255e1c24543f8d07b57b
                  - ab7ed19e04e02b02652bad917fe47b08ec9ea5136ab83aee9d735e58aafa95cb
                  - ace73995984c36e16ef4eeb01cb0e92d361845f3d96bfa37d89404b8d56f4458
                  - ae2ff184a71aa3ac315d8df3b7575b221a96a65d5b7e821e28bc51d2b79a7728
                  - aff7771f7d855f3fdb82eed34d6bc2425726ae31050d19d84670b5f1a0cdb581
                  - b1afdb5db3855c10a3ab88bbcdc30a43abdc1b3358c3a3219c5dc23b29a164ac
                  - b994ba455aa12155589aea3dd37dc1e7de4a4075db90af3b39607d72727894b0
                  - b9aa95a14fe6da28fd0f5b25b1ffb3837aa0645b868e120b5d81f08376d2946e
                  - ba916c099c4595fa0e5629228e6339e7a9a516657ec0178af8cec7401ab99571
                  - bbf377dc25d8178cca37defea3fbbc1219c55c4988502eae61924f4e8c7b15c4
                  - bc0da2b7f532c318a0c5f087c65de8e175f11218178261b48e4b5a34237e307c
                  - be80998651ed346b57dde55b62daabf3f2b7ab1fa23949d74206eebf9e0dddbe
                  - beb4dd6722a980a68215f44824d71c68e85d476916f191e2b9b64aba70df5011
                  - bff3d9c73b79f2df57907f9585962be5005de77a38dcafb4ed45b2d767bd5f9c
                  - c16c7991aa4843435234ea2d430a2c8cffa89f9df7d6da573c766f90f1b02fb2
                  - c1e102bf7cc4fad1d653cf8bf2f6dfdb56cc15c90eba48826f499748ffbb453b
                  - c467c9e1597fec2186261553669f3a030bc1fde0d71a51a7138a62007dd45d26
                  - ca007fa6a1dd1cc19cabdfefed711868a903f945a44c23a736f8508fc595e779
                  - ccab8fbc8cf6e22fc18142ce528aa4f9d513699e1c9d5acbd085c6c2500ff621
                  - cd959b2aba269c1132b7250edc34a9ef85fe13bf6c78285c3511b97b8b7350f9
                  - cdff2a8b1ca912c733e45ab44a2b3f97962076e4a60996b6525f4a4fd3d701ec
                  - d0d28136d03f5bac5fa4cc9479a3ad7ad76ffc3e731abe061149be8e19d3a1f3
                  - d649b5579ffe5ad98ff93f0715a91ccf1ebf60a564cefc01baba969eb6fc024a
                  - d67df8392a5822c420ee057ac19c6b123fb514853e43d40173f84c9853f54835
                  - d8bab30bd3cefdbb2ccbbe94efd22387584373256e26fd914fc3a4e7fdb06aab
                  - d951327e966ae8bede3ec5a0dceef158479c40dcb5805fe291e7a9149e84c418
                  - da74f9ec7c74131689bca50d48a8b3eabd6676668d828b74782d2f5e386d10e4
                  - db0666026842647e0de6cf67fa873eab94b541995daaec66af0169aa65186dbb
                  - dc5a07a8f0e3ee69a21c4da7f7ca3220154930c9d45c497ec738fdee2e9e79f0
                  - de629914e7be3f2f40ad87f70f6aeaca08e45f8c8031c2e587e48457ff05b33e
                  - def688cb3656706f4bbc98f0b23ef28c45de111e4171f5ccea872f15bfdb3606
                  - e1706c7cedf8dc991e52dffcd7d13f968471cce2e448532dfc4b42176111862f
                  - e3e332c6817077f6cb79253bb5ce2a680f097f7d85fc2d544738d6bf7ffc0c77
                  - e42d25d5fd76c7ee79794c2f3601b5616c518f54ce89f6c016fa10a6b41af055
                  - e54814a2125e258680824bcca3968eb7b9004bba955db3921326112050aeb366
                  - e55057e4e52a0ec20f4e00462f2974ac46ace4b31ba7b8764a4f8f371787f72f
                  - e5c9ed1d58b2a682219960ee90fd662519023913e741ea7caa5fdd6700890cd2
                  - e938943a6e66089f6200ffa6c211ec219beaaee383c3ac73c9cc15ccc9b67a6e
                  - e9af46657882c81d9280515f3db830628af7acb54d4598832f12081b9a2aab4b
                  - ebcb08f6a064672ee79d97949ee4ad783490cac01dba3188c02b457603882cd0
                  - ec0e5b73cf988356cf3d7140177c456811949cc610690537c484f37bfc586fe1
                  - ed4d51bd70497507a836f76d111b09ef659a912b7f2c34c4a85c83718603cdad
                  - f2a745c03817fb06f8c734eb84a535476a01ee3fca7a6eb4b58af06919a194c9
                  - f36881938c4081d5c3c07ea7c472436010a9bc50a272e5f98f2ba0c5be4541eb
                  - f5dd09f486fd31bb4ca2455b1ded267daf5b6b4afe77496e2f832537aae25ea2
                  - f5f93376df7b16aa5724b0999b7e512f1daf65671c952d544dce66d832ac7ffe
                  - f9bf3c16de953a3e4992c278706fd7ff7776da6b6c6aa14dfe8db4461cd04243
                  - fc9b718701edecf2c4031c7043a510c2cb9233138e2061caa8b18327f7d1a2b4
                  - fca2aa70b428bed7ed7d463c880491e720b6a46ad649601ed9a25048ab72dac3
                  - fef4d9bff10845b426cdb246c5450207a947cea02b014ec8523da5d8ed987a58

  '/blockchain/blocks/{milliseconds}':
    get:
      tags:
        - Blockchain
      operationId: getBinfoBlocksDay
      summary: Blocks for a Day
      description: |
        The blocks of the 24 hours before a time, newest first, as Blockchain.info
        answers. The time is in **milliseconds**, as Blockchain.info takes it.
      parameters:
        - name: milliseconds
          in: path
          required: true
          schema:
            type: integer
            example: 1304208000000
        - $ref: '#/components/parameters/binfoJsonFormat'
      responses:
        '200':
          description: List of blocks for a 24 hour period ending at given timestamp.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BinfoBlockInfo'
              example:
                - hash: 000000000000475e465114fac64a267ef55a79f0431af774f0ec90d42ea1f2d6
                  height: 121126
                  time: 1304207878
                  block_index: 121126
                - hash: 00000000000037351a4fa2e4cc97852cb4a498419844d79fb29e119c6d4cb32e
                  height: 121125
                  time: 1304207785
                  block_index: 121125
                - hash: 0000000000006429474c3f6635636d3824f68841935debde15a763bce02a7c18
                  height: 121124
                  time: 1304207337
                  block_index: 121124
                - hash: 000000000000223b64b7083652f2c3c79b0e5f175bd885697377a39e79502297
                  height: 121123
                  time: 1304206894
                  block_index: 121123
                - hash: 0000000000009487db37d79be368408e08196c327e124a033ae164db10753dc9
                  height: 121122
                  time: 1304206476
                  block_index: 121122
                - hash: 0000000000004d8ce1babf4fdbf153f813ec4776ea53f7e36cd4897886349f0d
                  height: 121121
                  time: 1304206238
                  block_index: 121121
                - hash: 000000000000538fd5bb2e5e98ca0019eb5d121fb429021cefbac1413fe56ccd
                  height: 121120
                  time: 1304205547
                  block_index: 121120
                - hash: 00000000000049fdef5f0074a089e9f82bed072d5e6d975fc411cb1ba6d64c00
                  height: 121119
                  time: 1304205476
                  block_index: 121119
                - hash: 000000000000555ba01c35729fd735cc063ef7900db77cddca3656db755be830
                  height: 121118
                  time: 1304205252
                  block_index: 121118
                - hash: 0000000000008264df3eee52f65383383e4d852d2636718632f8b3b9a1cefe42
                  height: 121117
                  time: 1304205083
                  block_index: 121117
                - hash: 0000000000001f04dc63a2c8965e8ed033aa4f51a3d57905814f883a6f2e5590
                  height: 121116
                  time: 1304204752
                  block_index: 121116
                - hash: 00000000000007cdee3c6a4aa379d4e8464692882572a4f9e71f5e2401752284
                  height: 121115
                  time: 1304203893
                  block_index: 121115
                - hash: 000000000000560f1d2a1da96a60bc7f57a35d31686fadf2ded8a71347f049db
                  height: 121114
                  time: 1304203470
                  block_index: 121114
                - hash: 00000000000080e7dbe1831f5ad5190ff80da15196829bec92ece2c7b577f36b
                  height: 121113
                  time: 1304202421
                  block_index: 121113
                - hash: 0000000000000cd3ff350131f2879af7917390825cd027150d05beb8147582c3
                  height: 121112
                  time: 1304202114
                  block_index: 121112
                - hash: 000000000000220aec71a1052b33d11444db6f88e3a6e6313159c4609d0b92ca
                  height: 121111
                  time: 1304200737
                  block_index: 121111
                - hash: 0000000000008c32948edaeec42a90afd6cebb14d4e773e1b1ec5b4102d8bc52
                  height: 121110
                  time: 1304200549
                  block_index: 121110
                - hash: 000000000000876ce07b94635e3a8959ae23bda70a0ae1965998f4830ab2095d
                  height: 121109
                  time: 1304200510
                  block_index: 121109
                - hash: 0000000000008ce13ce258833d3551bf5031f08ee9fae3d1ffaad4e9967cad90
                  height: 121108
                  time: 1304200222
                  block_index: 121108
                - hash: 00000000000067ac45b2c3e1e5bdf1bfd04442adf0931943f9be47ba81c42b17
                  height: 121107
                  time: 1304200205
                  block_index: 121107
                - hash: 0000000000002384a7723c2e09e9b20a3ca23773d1539d64494ea06a1637272b
                  height: 121106
                  time: 1304199799
                  block_index: 121106
                - hash: 0000000000003da280d8a0a9689a96812b0ab29ac807eb814809e4ee78fd7576
                  height: 121105
                  time: 1304199563
                  block_index: 121105
                - hash: 0000000000005f22c5b947dd24621e55a24fb52cfe445c50836bbc8017ce4ef4
                  height: 121104
                  time: 1304199026
                  block_index: 121104
                - hash: 00000000000073011e748bfd2d6307285cbe28568a613ac9f8115e8fb1f1bd11
                  height: 121103
                  time: 1304198789
                  block_index: 121103
                - hash: 00000000000038e334a9c559b7f49cd76fb8f2d99537be7fc8d1cf69ed01bfdb
                  height: 121102
                  time: 1304198658
                  block_index: 121102
                - hash: 00000000000095015156b62244ae673fa593f901c61904ab112928bac95525bb
                  height: 121101
                  time: 1304198316
                  block_index: 121101
                - hash: 000000000000177ef47ee4d1b9ccbe1f18e5b58ad0c4c067c889a149486dd327
                  height: 121100
                  time: 1304198133
                  block_index: 121100
                - hash: 0000000000006f134512ebd1d7f8049ec2922045219227883bef6875ca7dad07
                  height: 121099
                  time: 1304197977
                  block_index: 121099
                - hash: 00000000000079458e8d4b02e9592e68990807028b57a6e604504820a4c956cd
                  height: 121098
                  time: 1304197956
                  block_index: 121098
                - hash: 000000000000941e8f34fae1ae47cee6f0232aac4bed2651f42ceb9c274940b8
                  height: 121097
                  time: 1304196739
                  block_index: 121097
                - hash: 000000000000013f70963dae6aabc2567494e4df00b77b21de27f9f7d51cda37
                  height: 121096
                  time: 1304196601
                  block_index: 121096
                - hash: 0000000000005678a39dbea710b9afc0d270d9a26cc9be9291bdc07957e53c8f
                  height: 121095
                  time: 1304196158
                  block_index: 121095
                - hash: 00000000000015b35809c71bf09ee6fa1273d9aa7912c7f73fcfdec983ac8616
                  height: 121094
                  time: 1304196111
                  block_index: 121094
                - hash: 0000000000006dba6d8651749fe59df7f784ba02a3af389e0d8de87556a7f2d9
                  height: 121093
                  time: 1304194495
                  block_index: 121093
                - hash: 0000000000000c347a3da7bfee84419ee0442483ad6bc398d447197381e1b435
                  height: 121092
                  time: 1304194427
                  block_index: 121092
                - hash: 0000000000001f50198f4121b99f8cf411a3677357e1963c96f37454aa4b91ff
                  height: 121091
                  time: 1304194291
                  block_index: 121091
                - hash: 0000000000003e5942271bbecdf8f2ea806b10f174fdcf4216c80cc96853ceae
                  height: 121090
                  time: 1304193527
                  block_index: 121090
                - hash: 000000000000983fa6142a7729efefa0cb792af99aa2c8fab9896a1556ba512b
                  height: 121089
                  time: 1304192511
                  block_index: 121089
                - hash: 00000000000077f33539182dab2d04bebdc6c1d74ccc7f9f7d4329575967a833
                  height: 121088
                  time: 1304192188
                  block_index: 121088
                - hash: 0000000000003db3d299a94b459863fdf9eb18f671f3d8bb16d94bea54ddd575
                  height: 121087
                  time: 1304190190
                  block_index: 121087
                - hash: 000000000000369f02d4c94f18ae5681b4286b7170a9193c85b5647ebc544c63
                  height: 121086
                  time: 1304190025
                  block_index: 121086
                - hash: 000000000000931f5591dddf392068a34ee7332943a04ad5925414e038882a33
                  height: 121085
                  time: 1304189376
                  block_index: 121085
                - hash: 0000000000007d65cd99d0711480f26aba3ba5c02a4a40360eb0d4c09ef8b1ab
                  height: 121084
                  time: 1304188567
                  block_index: 121084
                - hash: 0000000000006fefa18e7c8941b3829c17579757bcd5f5165af0fdaeaca29ae2
                  height: 121083
                  time: 1304188375
                  block_index: 121083
                - hash: 00000000000043cec6cd5155c65ce226db650faf2c54878db4702505cbdbbd4e
                  height: 121082
                  time: 1304187578
                  block_index: 121082
                - hash: 00000000000060316bb5b36d752d49890ccbb73a184f7cbc060680b6933584ef
                  height: 121081
                  time: 1304187368
                  block_index: 121081
                - hash: 00000000000068f040c2cde5c82894727b33610de4c05ea1b1233d2aa2fca6bd
                  height: 121080
                  time: 1304187123
                  block_index: 121080
                - hash: 00000000000028c05d4651de60cd3b44b5be2b1816243d8d965528a81ae7875a
                  height: 121079
                  time: 1304187008
                  block_index: 121079
                - hash: 000000000000472bd5cf01798c1dbd0e6d25dab52f8d696753580008db80e893
                  height: 121078
                  time: 1304186628
                  block_index: 121078
                - hash: 000000000000372744c19efaf112182bbed961a0fee0d89a6f04b4984e4f4584
                  height: 121077
                  time: 1304186553
                  block_index: 121077
                - hash: 0000000000003d4b7b5da478538beb0060ca553c54b35c8946f9a5ccb24512e0
                  height: 121076
                  time: 1304185981
                  block_index: 121076
                - hash: 000000000000033dcfc64fde1d82e1d8bc5c58e27a8f8d13c0bf4cba5d9d2adf
                  height: 121075
                  time: 1304185447
                  block_index: 121075
                - hash: 000000000000247a36e8f3abf31335721f15c2444f627e0a248671b9c907f7e5
                  height: 121074
                  time: 1304183466
                  block_index: 121074
                - hash: 00000000000072cb4cdd156e0eb5136f8c6c6b575f785c22949608236508f7ca
                  height: 121073
                  time: 1304182511
                  block_index: 121073
                - hash: 000000000000444ae09cec4ce9f07fe7b32cef925ec85b0891352a8ce4b1451b
                  height: 121072
                  time: 1304182067
                  block_index: 121072
                - hash: 0000000000001c6430c1997d19f4feaacf39dae96097255faf9fd20281cfa69a
                  height: 121071
                  time: 1304180846
                  block_index: 121071
                - hash: 0000000000001fc948f18a1a71312ad0cf8dd9163e4b5b4fab8c440915af16f7
                  height: 121070
                  time: 1304180836
                  block_index: 121070
                - hash: 0000000000000adbec0c504df39383277cfcde45965a598381226c9d69ac49d4
                  height: 121069
                  time: 1304179491
                  block_index: 121069
                - hash: 000000000000418f02482273ac6a32d16edec9b32ab0ba4df6cedace84296896
                  height: 121068
                  time: 1304179436
                  block_index: 121068
                - hash: 0000000000000d80f675420be668f669c8fe2fb47dd37973bc03acfdb65f85b8
                  height: 121067
                  time: 1304179294
                  block_index: 121067
                - hash: 00000000000040b5f954e6fafcee88e83bfc518652e38c4ddf0093fefbff180a
                  height: 121066
                  time: 1304178353
                  block_index: 121066
                - hash: 0000000000003fda5b8545f616c8669068ec0d55df9a2ab7c3eef56f1d27c7b2
                  height: 121065
                  time: 1304178052
                  block_index: 121065
                - hash: 0000000000009366035bfaac09768eda7c6c00f30dc43a82f242b03cded2af61
                  height: 121064
                  time: 1304177919
                  block_index: 121064
                - hash: 0000000000009149970f8b22ebc89bc39f94ecf62fb2d103895b140cd1e6929c
                  height: 121063
                  time: 1304176797
                  block_index: 121063
                - hash: 0000000000002fd2fcb88fb3161f8b1dc957edec768a92197a2682ef1e411111
                  height: 121062
                  time: 1304176684
                  block_index: 121062
                - hash: 000000000000423ab1d771c156011400c26796aeaa4a696e50883110d106e189
                  height: 121061
                  time: 1304176496
                  block_index: 121061
                - hash: 00000000000051f16c0a2856278559367d52f78e2edbe4e1209665899f504cb4
                  height: 121060
                  time: 1304176203
                  block_index: 121060
                - hash: 00000000000031a668ff1516b7760192175e11493a783cfc1fedced3fdf1ec68
                  height: 121059
                  time: 1304175932
                  block_index: 121059
                - hash: 00000000000024d6fbd7eb65351e6ed7891ff1adbcaab04ab806a623b375d702
                  height: 121058
                  time: 1304175282
                  block_index: 121058
                - hash: 0000000000008e60cef7434121c415367e71d331f66a7391c95d21eafed494f7
                  height: 121057
                  time: 1304175040
                  block_index: 121057
                - hash: 0000000000008e6ff594414d2ca8c59f7165664c97f46380e7fc7549f93850cb
                  height: 121056
                  time: 1304174913
                  block_index: 121056
                - hash: 0000000000008290778cf07c8352a105667c87209e0acd330efb871ef75add7d
                  height: 121055
                  time: 1304174863
                  block_index: 121055
                - hash: 000000000000443b9bf8b6471bf1ffd7d6cac5925bf6c4225eecd0ae9e7291e6
                  height: 121054
                  time: 1304173391
                  block_index: 121054
                - hash: 0000000000003795781dafa7d1634569ee4f553da536b34f5dbe24f381f3e0a4
                  height: 121053
                  time: 1304173084
                  block_index: 121053
                - hash: 0000000000001e35337c744b329dd4149732a5e72600ad8d3b16e541da0bbfeb
                  height: 121052
                  time: 1304172896
                  block_index: 121052
                - hash: 000000000000563c5e4e43915fdf15e5d64edff4f376d6293b1cd72078d563b7
                  height: 121051
                  time: 1304172724
                  block_index: 121051
                - hash: 0000000000007bbb29af8f47ac5f262af8b5eee80e33fbf450525e2bfcfa36b7
                  height: 121050
                  time: 1304172668
                  block_index: 121050
                - hash: 00000000000096640555f4cab1cfafc51cd71637fde69145d06eca19524eaeda
                  height: 121049
                  time: 1304172150
                  block_index: 121049
                - hash: 000000000000200bae132975386a7dda629616a7a0e64ee9d140510dae7d8e7b
                  height: 121048
                  time: 1304171784
                  block_index: 121048
                - hash: 00000000000012b170573c74b308a605eccb4bc7ab7bcb0b3ba83534ba9133a3
                  height: 121047
                  time: 1304171467
                  block_index: 121047
                - hash: 000000000000597cbe5b6e79c61486d44370f163da0d9fb6752ddf4d59f7d5b9
                  height: 121046
                  time: 1304170765
                  block_index: 121046
                - hash: 0000000000001071171398c29d9ef827e1bf53378cea6a963c9b3f129febbf1b
                  height: 121045
                  time: 1304170541
                  block_index: 121045
                - hash: 0000000000003f8500cd6c42ecff802315281fd87f80af54c5ec2b063d771fb2
                  height: 121044
                  time: 1304170240
                  block_index: 121044
                - hash: 0000000000008900678ecf84aaca49f1274ea64bfacbe0b1edd08f6a8f0bfc39
                  height: 121043
                  time: 1304170185
                  block_index: 121043
                - hash: 0000000000005640d1cecde32f56f82200507aa2ccf1ed044a3d849a0fa26a6e
                  height: 121042
                  time: 1304169993
                  block_index: 121042
                - hash: 0000000000003784a99e57cb832ea4ff50c0c2ccb6e69a22fbfc6a752f2d6170
                  height: 121041
                  time: 1304169545
                  block_index: 121041
                - hash: 00000000000072353d12f50a216d98d8b6080ad09210e32cef475f018d8f7648
                  height: 121040
                  time: 1304168718
                  block_index: 121040
                - hash: 0000000000006b7e67295ede5da1a1185268367b092ac569cb74a32be6f75b59
                  height: 121039
                  time: 1304167964
                  block_index: 121039
                - hash: 00000000000050f019b53f0d9378879f30fe38cb73d614fcb600809ca447236f
                  height: 121038
                  time: 1304167287
                  block_index: 121038
                - hash: 000000000000056017a46b9eb7543a9f99651cf93e764d52aadf2dfad7071d05
                  height: 121037
                  time: 1304167052
                  block_index: 121037
                - hash: 00000000000043e5c795a4d21051d4281e303526bcc552302441be294b0da0a8
                  height: 121036
                  time: 1304166837
                  block_index: 121036
                - hash: 0000000000005c89ac2411fe50f9b0ccaac59ea566561a02e4ae0dc4289244cb
                  height: 121035
                  time: 1304166380
                  block_index: 121035
                - hash: 0000000000008ba010cc430bece41b71417b7ed4102dcb4b5b3ba759231e909e
                  height: 121034
                  time: 1304166346
                  block_index: 121034
                - hash: 0000000000005a6e318a7cd5fda64ffa3c21688afdb92b2ba75208ac283222f1
                  height: 121033
                  time: 1304165870
                  block_index: 121033
                - hash: 00000000000054a4313bcabfc559bdeddfa072b47858d35c18f3f128b9a8f827
                  height: 121032
                  time: 1304165849
                  block_index: 121032
                - hash: 0000000000001a2585f316f81b20623e693845515f216f3ecb787583f4b79874
                  height: 121031
                  time: 1304165435
                  block_index: 121031
                - hash: 0000000000002df0d65141941ff46360950bd6d59e840e7543d7b1a02a587cdf
                  height: 121030
                  time: 1304163816
                  block_index: 121030
                - hash: 00000000000021116f3a21c0ffa0d44173274b53bddce4e3e3619d18a7e65036
                  height: 121029
                  time: 1304163476
                  block_index: 121029
                - hash: 00000000000072a74cc890fd65a1f1fc870e53ffa3bad2e2ed366316ae46533d
                  height: 121028
                  time: 1304163417
                  block_index: 121028
                - hash: 000000000000555d687591c8ee63ab8483166688e529eee9e09f1ccada907ede
                  height: 121027
                  time: 1304161895
                  block_index: 121027
                - hash: 000000000000148b26490d48f10bea50ee749ee78d06cb8a4bd7a664e4e5556d
                  height: 121026
                  time: 1304161868
                  block_index: 121026
                - hash: 0000000000006b01c6bcc0c42fb60dd8ffb3abc3c43c77acddf51968439b96d9
                  height: 121025
                  time: 1304161256
                  block_index: 121025
                - hash: 00000000000098d028553328669d0d32593c084d28dd2a000d90e486d32f6f91
                  height: 121024
                  time: 1304160847
                  block_index: 121024
                - hash: 0000000000004eae95bb184dacd3fe1e272e4eeb8e2c6dfeee3314bd88901470
                  height: 121023
                  time: 1304160368
                  block_index: 121023
                - hash: 00000000000033b9d36ac45cba7fd17ce0a641c88175a4e3b2c9f0a8cac22f58
                  height: 121022
                  time: 1304160199
                  block_index: 121022
                - hash: 0000000000008fbfc9fec3ea613bae59118c86eddd3e0df1ef645058c3998c3b
                  height: 121021
                  time: 1304159323
                  block_index: 121021
                - hash: 0000000000000a93ce027acf500aa294e2c6ff58e74499bde8070e848135adf4
                  height: 121020
                  time: 1304158552
                  block_index: 121020
                - hash: 00000000000069cbf9663a3f1dd07f52eabc55c9432310ca9ef4490bd57243a0
                  height: 121019
                  time: 1304157443
                  block_index: 121019
                - hash: 0000000000004441bb7e8d53adbf047a281a06dbde22a79b05b0e7a2bddc9f9d
                  height: 121018
                  time: 1304157425
                  block_index: 121018
                - hash: 0000000000003549dbf901d348ed95e2e920e7311c304b109f8e6791ea6c4853
                  height: 121017
                  time: 1304157199
                  block_index: 121017
                - hash: 00000000000088aafd531b7c10e0d3cd2e5f9fad0870786eaed442194b9b12e3
                  height: 121016
                  time: 1304156123
                  block_index: 121016
                - hash: 0000000000008ebdfb11ffc304957ffd46bd34fe8f958fa3bc485992a24478c3
                  height: 121015
                  time: 1304155401
                  block_index: 121015
                - hash: 00000000000043c8d4081d8259ab0d45b696f2b920ede34aa41e359aded77662
                  height: 121014
                  time: 1304155199
                  block_index: 121014
                - hash: 0000000000002ae7ed932ab9bab081de9d7aa7d5834e24a33707ade32cab328a
                  height: 121013
                  time: 1304154121
                  block_index: 121013
                - hash: 00000000000065342830dd781b0228588bce6783e14153b759c1f07044fdf90b
                  height: 121012
                  time: 1304153720
                  block_index: 121012
                - hash: 00000000000025adfa13b670aa30dcbfbd188807dcb586e92d671ea14561d333
                  height: 121011
                  time: 1304153294
                  block_index: 121011
                - hash: 00000000000069e01c12dace34a54f202593dea75c729297e512084e87d3b4c1
                  height: 121010
                  time: 1304152433
                  block_index: 121010
                - hash: 00000000000088b7820a82e16e46533399bad43f33c1bff76e3ab31fdf9babe7
                  height: 121009
                  time: 1304152394
                  block_index: 121009
                - hash: 000000000000495dfd2d08a2985b53f18cb4f0cf35500a4f5b1433ca0c8924c1
                  height: 121008
                  time: 1304151121
                  block_index: 121008
                - hash: 0000000000003c08e84cb8e3b12abee5b70bc48d16841b4ecaa1e2fc94a7fcf6
                  height: 121007
                  time: 1304150249
                  block_index: 121007
                - hash: 000000000000904daae12718c3166c646e564cf27878992b5de64ddac87d5273
                  height: 121006
                  time: 1304149962
                  block_index: 121006
                - hash: 00000000000055880368265ceddf3d540af70c46c20de79b4f23f7300a1f8341
                  height: 121005
                  time: 1304149231
                  block_index: 121005
                - hash: 0000000000004d471350cdbe5f5aba72d6441364ffdfa2a9553ec86ea4caec64
                  height: 121004
                  time: 1304149175
                  block_index: 121004
                - hash: 000000000000685609514052e0715eba6a1e7c0deaf59a24315c259e9fbc1732
                  height: 121003
                  time: 1304147388
                  block_index: 121003
                - hash: 0000000000008379f91db9289063f330e39a6b480723b86abe0bcbd2f0d46628
                  height: 121002
                  time: 1304146407
                  block_index: 121002
                - hash: 00000000000087390012d022582eeb5abe18f817b11dd9a89be678c0ea293dde
                  height: 121001
                  time: 1304146354
                  block_index: 121001
                - hash: 0000000000008addb06debe0ba6b11e220b14b2b531750fda710b62bb1d3d706
                  height: 121000
                  time: 1304146291
                  block_index: 121000
                - hash: 00000000000075216989a1ad8b35d434f9aa4fa3bb5b998da8f422ee53923d9b
                  height: 120999
                  time: 1304146163
                  block_index: 120999
                - hash: 00000000000091a7063abd88ad281dc11f88fbc7e3766a831ddaee151470ec57
                  height: 120998
                  time: 1304146157
                  block_index: 120998
                - hash: 0000000000003160d4319a2d75851bb2c7adf63b68313bc63753d86cb5138a40
                  height: 120997
                  time: 1304146052
                  block_index: 120997
                - hash: 00000000000006d844c0d73ab70de03066f4d3c6143246dc15ea1484dc9cfc81
                  height: 120996
                  time: 1304145624
                  block_index: 120996
                - hash: 000000000000127eaca1e5dca20b151356197fffc51e19c7735427f986568a81
                  height: 120995
                  time: 1304145067
                  block_index: 120995
                - hash: 0000000000001bb36473406f41a0018376d1e3686c956fd0bb72013007edba39
                  height: 120994
                  time: 1304144388
                  block_index: 120994
                - hash: 0000000000004b741ac6b5514fd4e19c8ed1ff3b78bb80bc0a6eed7ed61e6822
                  height: 120993
                  time: 1304143780
                  block_index: 120993
                - hash: 000000000000941e65511aa5408d5db8a0140a686bd01e64bbdd34d5c7831246
                  height: 120992
                  time: 1304143492
                  block_index: 120992
                - hash: 00000000000091fc5ae72d2c5a3c32f9e31206fd0bc9f6d3c80a9fb614dcff1e
                  height: 120991
                  time: 1304143441
                  block_index: 120991
                - hash: 0000000000002f283c01d88eed0b948fab4f885ef39c66b109d5a17fc549e42f
                  height: 120990
                  time: 1304143399
                  block_index: 120990
                - hash: 0000000000002812eecd335460ff3c2171d11df51989d247460e6e11ab8bef6e
                  height: 120989
                  time: 1304143270
                  block_index: 120989
                - hash: 0000000000005aef4b7065038db827431088b52216f1a5249692e7046223a071
                  height: 120988
                  time: 1304143015
                  block_index: 120988
                - hash: 00000000000062033f6c4ed1e44e1538a6c543c8937c030bccdb4d368eb62ceb
                  height: 120987
                  time: 1304142945
                  block_index: 120987
                - hash: 00000000000062c28dfa926828d6b7b43bac3366a153542bd9e7f156d882b34c
                  height: 120986
                  time: 1304142356
                  block_index: 120986
                - hash: 00000000000027987257100dd3c6337e3d41391f4736a9bdd1721a2108111e87
                  height: 120985
                  time: 1304142114
                  block_index: 120985
                - hash: 00000000000000bb19cf058b82c71b021f0de98ac1ae36315396b0e65805e9bb
                  height: 120984
                  time: 1304141057
                  block_index: 120984
                - hash: 0000000000004334e532084c786d0e15fbcd10ed096784319cf8944d973fb97d
                  height: 120983
                  time: 1304140925
                  block_index: 120983
                - hash: 000000000000448253842df0ae6bedb71af40ff5dbf4f8f9443471361fc3b6f6
                  height: 120982
                  time: 1304140819
                  block_index: 120982
                - hash: 0000000000008ba2594881b59f927b618d7539b44c6315dabe9173d237f2079c
                  height: 120981
                  time: 1304140628
                  block_index: 120981
                - hash: 00000000000079f504aca0b771e37eb71d2ea263acf38c7bab77f8ad58e7c104
                  height: 120980
                  time: 1304139778
                  block_index: 120980
                - hash: 0000000000002b5cecc48211794512bffe632337a10bb8dbf5cb5a82f386aa9f
                  height: 120979
                  time: 1304139554
                  block_index: 120979
                - hash: 0000000000003648d4aff647ea4e4b61bb6ee8c055a0be09c5d10252d7aa2532
                  height: 120978
                  time: 1304139523
                  block_index: 120978
                - hash: 000000000000609d4147b41cead0f8a7d966b6e721e0585c6257ebe6caddf45e
                  height: 120977
                  time: 1304139435
                  block_index: 120977
                - hash: 0000000000003a8c92682547fbf0acab4cc2223192d77f6df8e437858b49b86b
                  height: 120976
                  time: 1304139383
                  block_index: 120976
                - hash: 0000000000001dcc62bca24efa6271c4c9ffc5e60067a3c2ad64e352fd13f2d3
                  height: 120975
                  time: 1304139145
                  block_index: 120975
                - hash: 00000000000026bc82ee2da9b2a7a240aae8a9112bc81a78895f1d138d9a1db5
                  height: 120974
                  time: 1304138241
                  block_index: 120974
                - hash: 0000000000000e011816b36f39b1e0b84682e84720e79ad58643e741b295b060
                  height: 120973
                  time: 1304137450
                  block_index: 120973
                - hash: 00000000000086bdcbbb0c4a66b999fdff516717d22ccfda08ea1592561ef37f
                  height: 120972
                  time: 1304136499
                  block_index: 120972
                - hash: 0000000000000edd47e67c32af711f0e14ab50d6a83854df2792152dace03a26
                  height: 120971
                  time: 1304136159
                  block_index: 120971
                - hash: 00000000000017a29a60c514c4cadd52dd95ae171a324f9805fa5491d27c1611
                  height: 120970
                  time: 1304136043
                  block_index: 120970
                - hash: 00000000000006d46cba774fa65a02486974b85442dab196b55c550fd6896726
                  height: 120969
                  time: 1304135319
                  block_index: 120969
                - hash: 000000000000922d45711f822fc486373d5754d7033730393e93755f8e7af95a
                  height: 120968
                  time: 1304135196
                  block_index: 120968
                - hash: 0000000000005bcc470f7d6fc5d4cb43526e16811413a7a6dd1ec06a6f7e9ed2
                  height: 120967
                  time: 1304134362
                  block_index: 120967
                - hash: 0000000000007251370503ea542f688e576d3d48a6355e14ab71a0f4d132b9c6
                  height: 120966
                  time: 1304133971
                  block_index: 120966
                - hash: 000000000000135da63a64e0f50210b8701ed4bbb2fc0fee1bb51abe65ea3448
                  height: 120965
                  time: 1304133543
                  block_index: 120965
                - hash: 0000000000004cbe5edd3762ca610edba5332926e1c9496e4726452943797a8b
                  height: 120964
                  time: 1304132764
                  block_index: 120964
                - hash: 0000000000002dc81281b024cfd4097e386e0ae7b0797b0c13ec5a3d4328f9e5
                  height: 120963
                  time: 1304132750
                  block_index: 120963
                - hash: 00000000000036e40cb69cdb0e44695d06e06fac00953b73ef4f99b777b2b1ba
                  height: 120962
                  time: 1304132626
                  block_index: 120962
                - hash: 00000000000039ade9fc6ac0c4d198fe7ba1079a1d5ff65fd92adea7b4c12383
                  height: 120961
                  time: 1304132499
                  block_index: 120961
                - hash: 0000000000002c920cf7e4406b969ae9c807b5c4f271f490ca3de1b0770836fc
                  height: 120960
                  time: 1304131980
                  block_index: 120960
                - hash: 000000000000a384acb522e4e5935ad2bc31366ecf1f16f1f11023e967ef033d
                  height: 120959
                  time: 1304131540
                  block_index: 120959
                - hash: 00000000000018af296a8d96a27105b528e8ab8905e01f2d7c8d4d12f0b09a7f
                  height: 120958
                  time: 1304131535
                  block_index: 120958
                - hash: 000000000000832d2dfa3edf46fc7eadb2477946dd73b0cfd54f6a93a3fa75e9
                  height: 120957
                  time: 1304129824
                  block_index: 120957
                - hash: 00000000000031ca732091ab864e0ca3d01c382d3270aaffb96c755d14be4a15
                  height: 120956
                  time: 1304129464
                  block_index: 120956
                - hash: 00000000000096954f1ea00788a00fd1263b9699f9baa3b6ffaf5a44b9e6e892
                  height: 120955
                  time: 1304128815
                  block_index: 120955
                - hash: 00000000000066f10dd6f10f890f511eb86f61f15dbdb2945a6ab3b7b894f811
                  height: 120954
                  time: 1304128647
                  block_index: 120954
                - hash: 0000000000001e163570aa00712337aeccd4e4cc6d721d46412bdbab40d4f2f5
                  height: 120953
                  time: 1304128013
                  block_index: 120953
                - hash: 0000000000000e0365819cafabe8dee9c85959f911546382503ce3e108fbe9f3
                  height: 120952
                  time: 1304127626
                  block_index: 120952
                - hash: 00000000000095c349dd239d1b2129d57c3323affd8f0604fd5945b6bb94974c
                  height: 120951
                  time: 1304126785
                  block_index: 120951
                - hash: 00000000000067e5370cbdc09ed3b6d07656f697e0551b11fb983b2cb7878121
                  height: 120950
                  time: 1304126698
                  block_index: 120950
                - hash: 00000000000046bc557910c589a83e6117763ee3aae6a1a83df646e72d37235b
                  height: 120949
                  time: 1304125871
                  block_index: 120949
                - hash: 0000000000000fa04c2783eaefd10bcde5917ef54dd6ca628886711c4b0aa805
                  height: 120948
                  time: 1304125780
                  block_index: 120948
                - hash: 000000000000b50ad67288000882c78a19c6d237520c6975e7b048d331d678b3
                  height: 120947
                  time: 1304125012
                  block_index: 120947
                - hash: 0000000000007425ae5ed2957026812f654b9a431cdac9b349b812b964ff6f1a
                  height: 120946
                  time: 1304124382
                  block_index: 120946
                - hash: 000000000000a2c8f100a28745fe76f8a1e70f753d3301c5dbb50becef0884e2
                  height: 120945
                  time: 1304124257
                  block_index: 120945
                - hash: 000000000000ad8259a2a50e456c5af3cab76906e338a062a245d934585b548b
                  height: 120944
                  time: 1304124200
                  block_index: 120944
                - hash: 0000000000000ba80470c0420793db59ace3d4428c71e84b3ad9d351c5c0dc3a
                  height: 120943
                  time: 1304123958
                  block_index: 120943
                - hash: 00000000000038128f013486d0654d304c6c1934e613336f38879e0fe42dea94
                  height: 120942
                  time: 1304123312
                  block_index: 120942
                - hash: 000000000000676c8fda22d1fa9d4e89361045dbdd5a136a5ff79577e4f1d350
                  height: 120941
                  time: 1304123030
                  block_index: 120941
                - hash: 0000000000001734d7eda67ca7c38acef939e68433fbe04d7c1d1b98c3090752
                  height: 120940
                  time: 1304122790
                  block_index: 120940
                - hash: 000000000000922ffbbb889287edc43e0e7dade424c88c2f0623165a793af23f
                  height: 120939
                  time: 1304122769
                  block_index: 120939
                - hash: 000000000000476e861117a3a9c2fd4de1765ad93e120325749c15b9ecef4ced
                  height: 120938
                  time: 1304122310
                  block_index: 120938

  '/blockchain/block-height/{height}':
    get:
      tags:
        - Blockchain
      operationId: getBinfoBlockHeight
      summary: Blocks at Height
      description: |
        The blocks at a height, with their transactions, as Blockchain.info answers.
      parameters:
        - name: height
          in: path
          required: true
          schema:
            type: integer
            example: 100
        - $ref: '#/components/parameters/binfoTxIdIndex'
        - $ref: '#/components/parameters/binfoJsonFormat'
      responses:
        '200':
          description: List of blocks with transaction data.
          content:
            application/json:
              schema:
                type: object
                required:
                  - blocks
                properties:
                  blocks:
                    type: array
                    items:
                      $ref: '#/components/schemas/BinfoBlock'
              example:
                blocks:
                  - hash: 000000007bc154e0fa7ea32218a72fe2c1bb9f86cf8c9ebf9a715ed27fdb229a
                    ver: 1
                    prev_block: 00000000cd9b12643e6854cb25939b39cd7a1ad0af31a9bd8b2efe67854b1995
                    mrkl_root: 2d05f0c9c3e1c226e63b5fac240137687544cf631cd616fd34fd188fc9020866
                    time: 1231660825
                    bits: 486604799
                    next_block:
                      - 00000000b69bd8e4dc60580117617a466d5c76ada85fb7b87e9baea01f9d9984
                    fee: 0
                    nonce: 1573057331
                    n_tx: 1
                    size: 215
                    block_index: 100
                    main_chain: true
                    height: 100
                    weight: 0
                    tx:
                      - hash: 2d05f0c9c3e1c226e63b5fac240137687544cf631cd616fd34fd188fc9020866
                        ver: 1
                        vin_sz: 1
                        vout_sz: 1
                        size: 134
                        weight: 536
                        fee: 0
                        relayed_by: 0.0.0.0
                        lock_time: 0
                        tx_index: 3589906961130271
                        double_spend: false
                        time: 1231660825
                        block_index: 100
                        block_height: 100
                        inputs:
                          - sequence: 4294967295
                            witness: ""
                            script: 04ffff001d014d
                            index: 0
                            prev_out: null
                        out:
                          - type: 0
                            spent: false
                            value: 5000000000
                            spending_outpoints: []
                            n: 0
                            tx_index: 3589906961130271
                            script: "4104e70a02f5af48a1989bf630d92523c9d14c45c75f7d1b998e962bff6ff999\
                                    5fc5bdb44f1793b37495d80324acba7c8f537caaf8432b8d47987313060cc82d\
                                    8a93ac"
                            addr: bitcoincash:qqt6g6wul02yakpt05amm0hey67lhh7wagrrqxcmys

  '/blockchain/rawtx/{txid}':
    get:
      tags:
        - Blockchain
      operationId: getBinfoRawTx
      summary: Transaction Data
      description: |
        A transaction by id or by short number, as Blockchain.info answers. With
        `format=hex`, the transaction serialized as in the peer-to-peer protocol.

        A short number that matches several transactions gives 409 with their ids.
      parameters:
        - $ref: '#/components/parameters/binfoTxId'
        - $ref: '#/components/parameters/binfoFormat'
        - $ref: '#/components/parameters/binfoTxIdIndex'
      responses:
        '200':
          description: Transaction data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BinfoTx'
              example:
                hash: 2d05f0c9c3e1c226e63b5fac240137687544cf631cd616fd34fd188fc9020866
                ver: 1
                vin_sz: 1
                vout_sz: 1
                size: 134
                weight: 536
                fee: 0
                relayed_by: 0.0.0.0
                lock_time: 0
                tx_index: 3589906961130271
                double_spend: false
                time: 1231660825
                block_index: 100
                block_height: 100
                inputs:
                  - sequence: 4294967295
                    witness: ""
                    script: 04ffff001d014d
                    index: 0
                    prev_out: null
                out:
                  - type: 0
                    spent: false
                    value: 5000000000
                    spending_outpoints: []
                    n: 0
                    tx_index: 3589906961130271
                    script: "4104e70a02f5af48a1989bf630d92523c9d14c45c75f7d1b998e962bff6ff999\
                            5fc5bdb44f1793b37495d80324acba7c8f537caaf8432b8d47987313060cc82d\
                            8a93ac"
                    addr: bitcoincash:qqt6g6wul02yakpt05amm0hey67lhh7wagrrqxcmys
            application/text:
              schema:
                type: string
                example: "0100000001000000000000000000000000000000000000000000000000000000\
                         0000000000ffffffff0704ffff001d014dffffffff0100f2052a010000004341\
                         04e70a02f5af48a1989bf630d92523c9d14c45c75f7d1b998e962bff6ff9995f\
                         c5bdb44f1793b37495d80324acba7c8f537caaf8432b8d47987313060cc82d8a\
                         93ac00000000"
        '404':
          description: Transaction not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Transaction index conflict.
          content:
            applicaton/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: multiple-tx-index
                message: Multiple txs match that index

  '/blockchain/unspent':
    get:
      tags:
        - Blockchain
      operationId: getBinfoUnspent
      summary: Unspent Outputs
      description: |
        The unspent outputs of addresses and xpubs, newest first, as Blockchain.info
        answers. At most 1,000 per call, 250 by default.
      parameters:
        - $ref: '#/components/parameters/binfoActive'
        - $ref: '#/components/parameters/binfoActiveP2SH'
        - $ref: '#/components/parameters/binfoActiveBech32'
        - $ref: '#/components/parameters/binfoLimit'
        - $ref: '#/components/parameters/binfoConfirmations'
        - $ref: '#/components/parameters/binfoTxIdIndex'
        - $ref: '#/components/parameters/binfoJsonFormat'
      responses:
        '200':
          description: Unspent outputs.
          content:
            application/json:
              schema:
                type: object
                required:
                  - unspent_outputs
                properties:
                  unspent_outputs:
                    type: array
                    items:
                      $ref: '#/components/schemas/BinfoUnspent'
                  notice:
                    type: string
              example:
                notice: ""
                unspent_outputs:
                  - tx_hash_big_endian: f2ffa044fa3851c88e739ef76f13b960a828b5c1c7a71005a9315969c4924103
                    tx_hash: 034192c4695931a90510a7c7c1b528a860b9136ff79e738ec85138fa44a0fff2
                    tx_output_n: 0
                    script: 76a914a367b88dd29119c89cc23130b7ca101e3f0c30df88ac
                    value: 30000
                    value_hex: "7530"
                    confirmations: 8557
                    tx_index: 114565443300134
                    xpub:
                      m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                         ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                      path: M/0/73
                  - tx_hash_big_endian: f2ffa044fa3851c88e739ef76f13b960a828b5c1c7a71005a9315969c4924103
                    tx_hash: 034192c4695931a90510a7c7c1b528a860b9136ff79e738ec85138fa44a0fff2
                    tx_output_n: 1
                    script: 76a91452c5ed64626f1dd39f2d8983a0d94b436524cf8188ac
                    value: 39325
                    value_hex: 00999d
                    confirmations: 8557
                    tx_index: 114565443300134
                    xpub:
                      m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                         ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                      path: M/1/27
                  - tx_hash_big_endian: ae3fc465a80264f45fa6f865ede43017d9826560299b6fb344d5cde84416b931
                    tx_hash: 31b91644e8cdd544b36f9b29606582d91730e4ed65f8a65ff46402a865c43fae
                    tx_output_n: 0
                    script: 76a9145151d153e1e83ee8fd95799c21fbe245c2dedb9588ac
                    value: 15669
                    value_hex: 3d35
                    confirmations: 9853
                    tx_index: 1749472394418618
                    xpub:
                      m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                         ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                      path: M/1/26
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      tags:
        - Blockchain
      operationId: postBinfoUnspent
      summary: Unspent Outputs
      description: |
        Like the `GET`, with the parameters in a form in the body.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BinfoUnspentReq'
      responses:
        '200':
          description: Unspent outputs.
          content:
            application/json:
              schema:
                type: object
                required:
                  - unspent_outputs
                properties:
                  unspent_outputs:
                    type: array
                    items:
                      $ref: '#/components/schemas/BinfoUnspent'
                  notice:
                    type: string
              example:
                notice: ""
                unspent_outputs:
                  - tx_hash_big_endian: f2ffa044fa3851c88e739ef76f13b960a828b5c1c7a71005a9315969c4924103
                    tx_hash: 034192c4695931a90510a7c7c1b528a860b9136ff79e738ec85138fa44a0fff2
                    tx_output_n: 0
                    script: 76a914a367b88dd29119c89cc23130b7ca101e3f0c30df88ac
                    value: 30000
                    value_hex: "7530"
                    confirmations: 8557
                    tx_index: 114565443300134
                    xpub:
                      m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                         ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                      path: M/0/73
                  - tx_hash_big_endian: f2ffa044fa3851c88e739ef76f13b960a828b5c1c7a71005a9315969c4924103
                    tx_hash: 034192c4695931a90510a7c7c1b528a860b9136ff79e738ec85138fa44a0fff2
                    tx_output_n: 1
                    script: 76a91452c5ed64626f1dd39f2d8983a0d94b436524cf8188ac
                    value: 39325
                    value_hex: 00999d
                    confirmations: 8557
                    tx_index: 114565443300134
                    xpub:
                      m: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                         ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
                      path: M/1/27
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/export-history':
    get:
      tags:
        - Blockchain
      operationId: getBinfoHistory
      summary: Transaction History
      description: |
        The history of a wallet between two dates, one entry per transaction, with
        its value in a currency at the time and now, for accounting.

        Prices come from the price service that the operator configured
        (Blockchain.info by default). If it cannot be reached, the prices are zero
        and the rest of the history is still there.
      parameters:
        - $ref: '#/components/parameters/binfoActive'
        - $ref: '#/components/parameters/binfoActiveP2SH'
        - $ref: '#/components/parameters/binfoActiveBech32'
        - $ref: '#/components/parameters/binfoStart'
        - $ref: '#/components/parameters/binfoEnd'
        - $ref: '#/components/parameters/binfoCurrency'
        - $ref: '#/components/parameters/binfoJsonFormat'
      responses:
        '200':
          description: Transaction history with price.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BinfoHistory'
              example:
                - tx: f2ffa044fa3851c88e739ef76f13b960a828b5c1c7a71005a9315969c4924103
                  amount: -6.75e-6
                  time: 10:57:46 GMT +00:00
                  exchange_rate_then: 404.5806367
                  date: "2021-03-25"
                  value_now: -3.86586e-3
                  type: sent
                  value_then: -2.730919297725e-3
                  fee: 6.75e-06
                - tx: ae3fc465a80264f45fa6f865ede43017d9826560299b6fb344d5cde84416b931
                  amount: -1.998e-5
                  time: 11:27:24 GMT +00:00
                  exchange_rate_then: 440.3835254
                  date: "2021-03-16"
                  value_now: -1.14429456e-2
                  type: sent
                  value_then: -8.798862837492e-3
                  fee: 1.998e-05
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      tags:
        - Blockchain
      operationId: postBinfoHistory
      summary: Transaction History
      description: |
        Like the `GET`, with the parameters in a form in the body.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BinfoHistoryReq'
      responses:
        '200':
          description: Transaction history with price.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BinfoHistory'
              example:
                - tx: f2ffa044fa3851c88e739ef76f13b960a828b5c1c7a71005a9315969c4924103
                  amount: -6.75e-6
                  time: 10:57:46 GMT +00:00
                  exchange_rate_then: 404.5806367
                  date: "2021-03-25"
                  value_now: -3.86586e-3
                  type: sent
                  value_then: -2.730919297725e-3
                  fee: 6.75e-06
                - tx: ae3fc465a80264f45fa6f865ede43017d9826560299b6fb344d5cde84416b931
                  amount: -1.998e-5
                  time: 11:27:24 GMT +00:00
                  exchange_rate_then: 440.3835254
                  date: "2021-03-16"
                  value_now: -1.14429456e-2
                  type: sent
                  value_then: -8.798862837492e-3
                  fee: 1.998e-05
        '404':
          description: Invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/addresstohash/{address}':
    get:
      tags:
        - Blockchain
      operationId: getAddressHash
      summary: Address Hash
      description: |
        The hash160 of an address, in hexadecimal, as plain text.

        The `/blockchain/q/` endpoints answer in plain text rather than JSON, as
        those of Blockchain.info do, so that a shell script can use the answer as it
        is.
      parameters:
        - $ref: '#/components/parameters/addressParam'
      responses:
        '200':
          description: Address hash.
          content:
            text/plain:
              schema:
                type: string
                example: 37d070b3c6716a6174080722579fbdddad39bfb3
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/hashtoaddress/{hash}':
    get:
      tags:
        - Blockchain
      operationId: getHashAddress
      summary: Hash Address
      description: |
        The pay-to-public-key-hash address of a hash160, as plain text.
      parameters:
        - $ref: '#/components/parameters/hashParam'
      responses:
        '200':
          description: Hash address.
          content:
            text/plain:
              schema:
                type: string
                example: qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
        '404':
          description: Invalid hash.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/addrpubkey/{pubkey}':
    get:
      tags:
        - Blockchain
      operationId: getPubKeyAddress
      summary: Public Key Address
      description: |
        The pay-to-public-key-hash address of a public key, as plain text.
      parameters:
        - $ref: '#/components/parameters/pubKeyParam'
      responses:
        '200':
          description: Public key address.
          content:
            text/plain:
              schema:
                type: string
                example: bitcoincash:qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
        '404':
          description: Invalid public key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/pubkeyaddr/{address}':
    get:
      tags:
        - Blockchain
      operationId: getAddressPubKey
      summary: Address Public Key
      description: |
        The public key of an address, in hexadecimal, as plain text.

        An address is a hash of its public key, so the key can only be found once the
        address has spent something: the server looks for an input that spends from
        the address among its recent transactions, and reads the key from it. An
        address that has never spent gives 404.
      parameters:
        - $ref: '#/components/parameters/addressParam'
      responses:
        '200':
          description: Address public key.
          content:
            text/plain:
              schema:
                type: string
                example: 027eb504988cbc043dd4c9fac51685d68718a24d7f9f1d4c07b9f8c3d04327794c
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/hashpubkey/{pubkey}':
    get:
      tags:
        - Blockchain
      operationId: getPubKeyHash
      summary: Public Key Hash
      description: |
        The hash160 of a public key, in hexadecimal, as plain text.
      parameters:
        - $ref: '#/components/parameters/pubKeyParam'
      responses:
        '200':
          description: Public key hash.
          content:
            text/plain:
              schema:
                type: string
                example: 37d070b3c6716a6174080722579fbdddad39bfb3
        '404':
          description: Invalid public key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/getblockcount':
    get:
      tags:
        - Blockchain
      operationId: getBlockCount
      summary: Block Count
      description: |
        The height of the newest block header, as plain text. Headers arrive before
        blocks, so it can be ahead of `/block/best`.
      responses:
        '200':
          description: Height of block chain.
          content:
            text/plain:
              schema:
                type: number
                example: 688824

  '/blockchain/q/latesthash':
    get:
      tags:
        - Blockchain
      operationId: getLatestHash
      summary: Latest Block Hash
      description: |
        The hash of the newest block header, as plain text.
      responses:
        '200':
          description: Latest block hash.
          content:
            text/plain:
              schema:
                type: string
                example: 0000000000000000005d55b8ab4de4c864b815edf9fb52278d69a614c3c7c72a

  '/blockchain/q/bcperblock':
    get:
      tags:
        - Blockchain
      operationId: getBlockSubsidy
      summary: Block Subsidy
      description: |
        The subsidy of the next block, in satoshis, as plain text: the new coins its
        miner will create, which halve every 210,000 blocks.
      responses:
        '200':
          description: Block subsidy for next block.
          content:
            text/plain:
              schema:
                type: number
                example: 6.25

  '/blockchain/q/txtotalbtcoutput/{txid}':
    get:
      tags:
        - Blockchain
      operationId: getTotalOutput
      summary: Total Output
      description: |
        The total value of the outputs of a transaction, in satoshis, as plain text.
      parameters:
        - $ref: '#/components/parameters/binfoTxId'
      responses:
        '200':
          description: Total amount in transaction outputs.
          content:
            text/plain:
              schema:
                type: number
                example: 9.94e-4
        '404':
          description: Invalid transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/txtotalbtcinput/{txid}':
    get:
      tags:
        - Blockchain
      operationId: getTotalInput
      summary: Total Spent
      description: |
        The total value of the outputs that a transaction spends, in satoshis, as
        plain text.
      parameters:
        - $ref: '#/components/parameters/binfoTxId'
      responses:
        '200':
          description: Total amount spent by transaction.
          content:
            text/plain:
              schema:
                type: number
                example: 9.9973e-4
        '404':
          description: Invalid transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/txfee/{txid}':
    get:
      tags:
        - Blockchain
      operationId: getTxFee
      summary: Transaction Fee
      description: |
        The fee of a transaction, in satoshis, as plain text: what it spends minus
        what it pays out.
      parameters:
        - $ref: '#/components/parameters/binfoTxId'
      responses:
        '200':
          description: Fees paid by transaction.
          content:
            text/plain:
              schema:
                type: number
                example: 5.73e-6
        '404':
          description: Invalid transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/txresult/{txid}/{address}':
    get:
      tags:
        - Blockchain
      operationId: getTxResult
      summary: Transaction Address Amount
      description: |
        How much a transaction changes the balance of an address, in satoshis, as
        plain text: what it pays to the address minus what it spends from it.
      parameters:
        - $ref: '#/components/parameters/addressParam'
        - $ref: '#/components/parameters/binfoTxId'
      responses:
        '200':
          description: Value of transaction affecting address balance.
          content:
            text/plain:
              schema:
                type: number
                example: 0
        '404':
          description: Invalid transaction or address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/getreceivedbyaddress/{address}':
    get:
      tags:
        - Blockchain
      operationId: getReceivedByAddress
      summary: Total Received by Address
      description: |
        The total ever received by an address, in satoshis, as plain text.
      parameters:
        - $ref: '#/components/parameters/addressParam'
      responses:
        '200':
          description: Value of total received by address
          content:
            text/plain:
              schema:
                type: number
                example: 2275183814
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/getsentbyaddress/{address}':
    get:
      tags:
        - Blockchain
      operationId: getSentByAddress
      summary: Total Sent by Address
      description: |
        The total ever sent from an address, in satoshis, as plain text.
      parameters:
        - $ref: '#/components/parameters/addressParam'
      responses:
        '200':
          description: Value of total sent by address
          content:
            text/plain:
              schema:
                type: number
                example: 2275183814
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/addressbalance/{address}':
    get:
      tags:
        - Blockchain
      operationId: getAddressBalance
      summary: Balance for Address
      description: |
        The balance of an address, confirmed and unconfirmed, in satoshis, as plain
        text.
      parameters:
        - $ref: '#/components/parameters/addressParam'
      responses:
        '200':
          description: Total unspent balance for address.
          content:
            text/plain:
              schema:
                type: number
                example: 0
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  '/blockchain/q/addressfirstseen/{address}':
    get:
      tags:
        - Blockchain
      operationId: getAddressFirstSeen
      summary: Address First Seen
      description: |
        The time of the first block with a transaction of an address, as a Unix
        timestamp in plain text, or `0` if it has none.
      parameters:
        - $ref: '#/components/parameters/addressParam'
      responses:
        '200':
          description: Time when address was first seen.
          content:
            text/plain:
              schema:
                type: number
                example: 1621533785
        '404':
          description: Invalid address.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'


  '/dbstats':
    get:
      tags:
        - Network
      summary: Database Statistics
      operationId: getDbStats
      description: |
        How the database of this server uses memory, by column family, and the
        statistics that RocksDB keeps, as plain text for the operator to read. The
        format is that of RocksDB and may change between versions, so do not parse
        it.
      responses:
        '200':
          description: Memory use and statistics of RocksDB.
          content:
            text/plain:
              schema:
                type: string

components:
  schemas:

    BlockRef:
      description: |
        Where a transaction or output is: in a block, with its height and position,
        or in the mempool, with the time this server first saw it. A transaction
        moves from one form to the other when it is confirmed, or back after a
        reorganisation.
      oneOf:
        - $ref: '#/components/schemas/Block'
        - $ref: '#/components/schemas/Mempool'

    Block:
      type: object
      description: |
        A place in a block.
      required:
        - height
        - position
      properties:
        height:
          type: integer
          description: |
            Height of the block.
        position:
          type: integer
          description: |
            Position of the transaction in the block, from 0.

    Mempool:
      type: object
      description: |
        A place in the mempool.
      required:
        - mempool
      properties:
        mempool:
          type: integer
          description: |
            Unix time when this server first saw the transaction. Other servers may
            have seen it at another time; it orders the unconfirmed transactions.
          format: int64

    XPubBalance:
      type: object
      description: |
        The balance of one address of a wallet, with its derivation path below the
        extended public key.
      required:
        - path
        - balance
      properties:
        path:
          $ref: '#/components/schemas/XPubPath'
        balance:
          $ref: '#/components/schemas/Balance'

    XPubPath:
      type: array
      description: |
        Derivation path of an address below the extended public key: the chain
        (`0` receiving, `1` change) and the index of the address in it, so `[1, 4]`
        is the fifth change address.
      items:
        type: integer

    XPubUnspent:
      type: object
      description: |
        An unspent output of a wallet, with the derivation path of its address, so
        the wallet knows which key signs for it.
      required:
        - path
        - unspent
      properties:
        path:
          $ref: '#/components/schemas/XPubPath'
        unspent:
          $ref: '#/components/schemas/Unspent'

    XPubSummary:
      type: object
      description: |
        The balance of a wallet and how far it has used its addresses.
      required:
        - balance
        - indices
      properties:
        balance:
          type: object
          description: |
            Totals over every address of the wallet, in satoshis: `confirmed`,
            `unconfirmed` and `received` as in an address balance, and `utxo`, the
            number of unspent outputs.
          required:
            - confirmed
            - unconfirmed
            - received
            - utxo
          properties:
            confirmed:
              description: Confirmed balance for all addresses.
              type: integer
            unconfirmed:
              description: Unconfirmed balance for all addresses.
              type: integer
            received:
              description: Total received on all external addresses.
              type: integer
            utxo:
              description: Unspent transaction output count.
              type: integer
        indices:
          type: object
          description: |
            Index of the last used address of the receiving chain (`external`) and of
            the change chain (`change`). The next unused address is one past it.
          required:
            - external
            - change
          properties:
            external:
              type: integer
            change:
              type: integer

    TxRef:
      type: object
      description: |
        A transaction id and where the transaction is. Lists of transactions return
        these rather than full transactions, which are much larger; fetch the ones
        you need.
      required:
        - block
        - txid
      properties:
        block:
          $ref: '#/components/schemas/BlockRef'
        txid:
          type: string
          description: |
            Transaction id.

    Balance:
      type: object
      description: |
        The balance of an address. `confirmed` plus `unconfirmed` is what the address
        holds now, counting unconfirmed transactions; `confirmed` alone is what it
        holds in coins that are in blocks and are not being spent.
      required:
        - address
        - confirmed
        - unconfirmed
        - utxo
        - received
        - txs
      properties:
        address:
          type: string
          description: |
            The address.
        confirmed:
          type: integer
          description: |
            Sum of the unspent outputs of the address that are confirmed, in satoshis.
            An output spent by an unconfirmed transaction no longer counts.
          format: int64
        unconfirmed:
          type: integer
          description: |
            Sum of the unspent outputs of the address that are not confirmed yet, in
            satoshis.
          format: int64
        utxo:
          type: integer
          description: |
            Number of unspent outputs.
          format: int64
        received:
          type: integer
          description: |
            Total ever paid to the address, spent or not, confirmed or not, in
            satoshis.
          format: int64
        txs:
          type: integer
          description: |
            Number of transactions that pay to or spend from the address.
          format: int64

    Unspent:
      type: object
      description: |
        An output that is not spent yet: a coin that can be spent.
      required:
        - address
        - block
        - txid
        - index
        - pkscript
        - value
      properties:
        address:
          type: string
          description: |
            Address of the output. Null for scripts that have no address, such as
            data outputs or bare multisig.
          nullable: true
        block:
          $ref: '#/components/schemas/BlockRef'
        txid:
          type: string
          description: |
            Id of the transaction that created the output.
        index:
          type: integer
          description: |
            Position of the output in that transaction, from 0.
        pkscript:
          type: string
          description: |
            Output script in hexadecimal, needed to sign a spend.
        value:
          type: integer
          description: |
            Value in satoshis.
          format: int64

    BlockData:
      type: object
      description: |
        A block, with its header and what the server computed from it.
      required:
        - hash
        - height
        - mainchain
        - previous
        - time
        - version
        - bits
        - nonce
        - size
        - tx
        - merkle
        - subsidy
        - fees
        - outputs
        - work
      properties:
        hash:
          type: string
          description: |
            Block hash.
        size:
          type: integer
          description: |
            Size of the serialized block, in bytes, witness data included.
        height:
          type: integer
          description: |
            Height in its chain.
        mainchain:
          type: boolean
          description: |
            Whether the block is in the chain with the most work. Blocks of chains
            abandoned in a reorganisation are kept, with `false`.
        previous:
          type: string
          description: |
            Hash of the previous block.
        time:
          type: integer
          description: |
            Timestamp set by the miner, as a Unix time. Only roughly right.
          format: int64
        version:
          type: integer
          description: |
            Block version.
          format: int64
        bits:
          type: integer
          description: |
            Proof-of-work target, in compact form.
          format: int64
        nonce:
          type: integer
          description: |
            Nonce found by the miner.
          format: int64
        tx:
          type: array
          description: |
            Ids of the transactions, in order; the first is the coinbase.
          items:
            type: string
        merkle:
          type: string
          description: |
            Merkle root of the transactions.
        subsidy:
          type: integer
          description: |
            New coins created by the block, in satoshis.
          format: int64
        fees:
          type: integer
          description: |
            Sum of the fees of its transactions, in satoshis.
          format: int64
        outputs:
          type: integer
          description: |
            Sum of the outputs of its transactions, in satoshis.
          format: int64
        weight:
          type: integer
          description: |
            Block weight, on networks with SegWit only.
        work:
          type: integer
          description: |
            Proof of work accumulated by the chain up to this block.

    Input:
      type: object
      description: |
        An input of a transaction, with the address and value of the output it
        spends, which the raw transaction does not contain and which the server
        looks up.
      required:
        - coinbase
        - txid
        - output
        - sigscript
        - sequence
        - pkscript
        - witness
        - value
        - address
      properties:
        coinbase:
          type: boolean
          description: |
            Whether this is the input of a coinbase, which spends nothing.
        txid:
          type: string
          description: |
            Id of the transaction whose output is spent.
        output:
          type: integer
          description: |
            Position of that output in its transaction.
        sigscript:
          type: string
          description: |
            Input script in hexadecimal.
        value:
          type: integer
          description: |
            Value of the output spent, in satoshis.
          format: int64
          nullable: true
        sequence:
          type: integer
          description: |
            Sequence number.
          format: int64
        address:
          type: string
          description: |
            Address of the output spent; null if it has none.
          nullable: true
        pkscript:
          type: string
          description: |
            Script of the output spent, in hexadecimal.
          nullable: true
        witness:
          type: array
          description: |
            Witness stack, each item in hexadecimal; empty without SegWit.
          items:
            type: string

    Spender:
      type: object
      description: |
        The input that spends an output.
      required:
        - txid
        - input
      properties:
        txid:
          type: string
          description: |
            Id of the spending transaction.
        input:
          type: integer
          description: |
            Position of the input in that transaction.

    Output:
      type: object
      description: |
        An output of a transaction, with whether and by what it is spent.
      required:
        - address
        - pkscript
        - value
        - spent
      properties:
        address:
          type: string
          description: |
            Address of the output; null for scripts without one.
          nullable: true
        pkscript:
          type: string
          description: |
            Output script in hexadecimal.
        value:
          type: integer
          description: |
            Value in satoshis.
          format: int64
        spent:
          type: boolean
          description: |
            Whether a transaction spends it, confirmed or not.
        spender:
          description: |
            The input that spends it, if any.
          allOf:
            - $ref: '#/components/schemas/Spender'

    Transaction:
      type: object
      description: |
        A transaction with what the server knows about it beyond its raw form: its
        place in the chain, its fee, and, for each input and output, the address and
        value involved.
      required:
        - txid
        - size
        - version
        - locktime
        - fee
        - inputs
        - outputs
        - block
        - deleted
        - time
        - rbf
        - weight
      properties:
        txid:
          type: string
          description: |
            Transaction id.
        size:
          type: integer
          description: |
            Size of the serialized transaction, in bytes, witness data included.
        version:
          type: integer
          description: |
            Transaction version.
          format: int64
        locktime:
          type: integer
          description: |
            Lock time.
          format: int64
        fee:
          type: integer
          description: |
            Fee in satoshis: inputs minus outputs; 0 for a coinbase.
          format: int64
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/Input'
        outputs:
          type: array
          items:
            $ref: '#/components/schemas/Output'
        block:
          $ref: '#/components/schemas/BlockRef'
        deleted:
          type: boolean
          description: |
            Always false. The server no longer returns transactions that were
            removed: replaced by fee, double-spent by a confirmed transaction, or
            the coinbase of a block that left the main chain. The field is kept so
            that clients that read it go on working.
        time:
          type: integer
          description: |
            Timestamp of its block, or, if unconfirmed, the Unix time this server first
            saw it; in a fleet, the time at which the first server of the fleet did. A
            confirmed transaction has the time of its block on every server, whether
            the server saw it before the block or not: until database version 22 a
            server that had seen it unconfirmed went on giving the time of that. A
            transaction that goes back to the mempool because its block left the main
            chain keeps the time of that block.
          format: int64
        rbf:
          type: boolean
          description: |
            Whether the transaction can still be replaced by one paying a higher fee:
            it signals replace-by-fee (BIP 125), or spends an unconfirmed transaction
            that does. Only meaningful while unconfirmed, and on BTC.
        weight:
          type: integer
          description: |
            Transaction weight, as SegWit counts it.

    Event:
      type: object
      description: |
        Something that happened, as `/events` sends it.
      required:
        - type
        - id
      properties:
        type:
          type: string
          description: |
            `block` for a new best block, `tx` for a mempool change.
          enum:
            - tx
            - block
        id:
          type: string
          description: |
            Hash of the block or id of the transaction.

    Peer:
      type: object
      description: |
        A node of the peer-to-peer network that the server is connected to.
      required:
        - useragent
        - address
        - version
        - services
        - relay
      properties:
        useragent:
          type: string
          description: |
            Software of the peer, as it announces itself.
        address:
          type: string
          description: |
            Network address of the peer.
        version:
          type: integer
          description: |
            Protocol version from the version message of the peer.
          format: int32
        services:
          type: string
          description: |
            Services the peer offers, as a bit field in hexadecimal.
        relay:
          type: boolean
          description: |
            Whether the peer relays transactions.

    BlockHealth:
      type: object
      description: |
        Whether the blocks are caught up with the headers.
      required:
        - headers
        - blocks
        - diff
        - max
        - ok
      properties:
        headers:
          type: integer
          description: |
            Height of the newest header.
        blocks:
          type: integer
          description: |
            Height of the newest imported block.
        diff:
          type: integer
          description: |
            Headers minus blocks.
        max:
          type: integer
          description: |
            Most blocks the server may be behind and still be healthy.
        ok:
          type: boolean
          description: |
            Whether `diff` is at most `max`.

    TimeHealth:
      type: object
      description: |
        Whether something happened recently enough.
      required:
        - age
        - max
        - ok
      properties:
        age:
          type: integer
          description: |
            Seconds since it happened.
        max:
          type: integer
          description: |
            Most seconds allowed.
        ok:
          type: boolean
          description: |
            Whether `age` is at most `max`.

    CountHealth:
      type: object
      description: |
        Whether there are enough of something.
      required:
        - count
        - min
        - ok
      properties:
        count:
          type: integer
          description: |
            How many there are.
        min:
          type: integer
          description: |
            How many are needed.
        ok:
          type: boolean
          description: |
            Whether `count` is at least `min`.

    MaxHealth:
      type: object
      description: |
        Whether there are not too many of something.
      required:
        - count
        - max
        - ok
      properties:
        count:
          type: integer
          description: |
            How many there are.
        max:
          type: integer
          description: |
            Most allowed.
        ok:
          type: boolean
          description: |
            Whether `count` is at most `max`.

    HealthCheck:
      type: object
      description: |
        The result of the latest health check. `ok` is true when every check passes.
        The limits are set by the operator of the server.
      required:
        - blocks
        - last-block
        - last-tx
        - pending-txs
        - peers
        - net
        - version
        - ok
      properties:
        blocks:
          description: |
            Whether the imported blocks have caught up with the headers.
          allOf:
            - $ref: '#/components/schemas/BlockHealth'
        last-block:
          description: |
            Age of the newest header. A network that has found no block for hours
            usually means the server lost touch with it.
          allOf:
            - $ref: '#/components/schemas/TimeHealth'
        last-tx:
          description: |
            Age of the newest unconfirmed transaction (or block, if newer). A busy
            network sends transactions all the time, so silence means trouble.
          allOf:
            - $ref: '#/components/schemas/TimeHealth'
        pending-txs:
          description: |
            Transactions received but not imported yet.
          allOf:
            - $ref: '#/components/schemas/MaxHealth'
        peers:
          description: |
            Connected peers.
          allOf:
            - $ref: '#/components/schemas/CountHealth'
        redis:
          type: object
          description: |
            Whether the Redis cache answers. Only for a server that has one. It does
            not count towards `ok`: a server without its Redis still answers every
            request, from its own database, and `/health` gives 203.
          required:
            - ok
          properties:
            ok:
              type: boolean
        net:
          type: string
          description: |
            Network of the server.
        version:
          type: string
          description: |
            Version of Haskoin Store.
        ok:
          type: boolean
          description: |
            Whether every check passed.
        time:
          type: string
          description: |
            When the check ran.

    Error:
      type: object
      description: |
        An error. `error` is a stable code for programs to test; `message` is for
        people and may change. See *Errors* at the top.
      required:
        - error
      properties:
        error:
          type: string
          description: |
            Error code, such as `not-found-or-invalid-arg` or `user-error`.
          example: not-found-or-invalid-arg
        message:
          type: string
          description: |
            What went wrong, for people.
          example: Item not found or argument invalid
    TxId:
      type: object
      description: |
        The id of a transaction.
      required:
        - txid
      properties:
        txid:
          type: string
          description: |
            Transaction id.

    BinfoTxIdHash:
      type: string

    BinfoTxIdIndex:
      type: integer

    BinfoTxId:
      description: |
        A transaction id in hexadecimal, or its short number (see the `txidindex`
        parameter).
      oneOf:
        - $ref: '#/components/schemas/BinfoTxIdHash'
        - $ref: '#/components/schemas/BinfoTxIdIndex'
      example: 2d05f0c9c3e1c226e63b5fac240137687544cf631cd616fd34fd188fc9020866

    BinfoWallet:
      type: object
      required:
        - final_balance
        - n_tx
        - n_tx_filtered
        - total_received
        - total_sent
      properties:
        final_balance:
          type: integer
        n_tx:
          type: integer
          description: |
            Number of transactions of the addresses and extended public keys
            shown (`onlyShow`, or all the active ones), each counted once, not
            only those on this page.
        n_tx_filtered:
          type: integer
          description: |
            Number of those transactions that pass the `filter`, not only
            those on this page.
        total_received:
          type: integer
        total_sent:
          type: integer


    BinfoSymbol:
      type: object
      required:
        - code
        - symbol
        - name
        - conversion
        - symbolAppearsAfter
        - local
      properties:
        code:
          type: string
        symbol:
          type: string
        name:
          type: string
        conversion:
          type: number
          format: double
        symbolAppearsAfter:
          type: boolean
        local:
          type: boolean

    BinfoBlockInfo:
      type: object
      required:
        - hash
        - height
        - time
        - block_index
      properties:
        hash:
          type: string
        height:
          type: integer
        time:
          type: integer
        block_index:
          type: integer

    BinfoInfo:
      type: object
      required:
        - nconnected
        - conversion
        - symbol_local
        - symbol_btc
        - latest_block
      properties:
        nconnected:
          type: integer
        conversion:
          type: number
          format: double
        symbol_local:
          $ref: '#/components/schemas/BinfoSymbol'
        symbol_btc:
          $ref: '#/components/schemas/BinfoSymbol'
        latest_block:
          $ref: '#/components/schemas/BinfoBlockInfo'

    BinfoXPubBalance:
      type: object
      required:
        - address
        - final_balance
        - n_tx
        - total_received
        - total_sent
        - account_index
        - change_index
      properties:
        address:
          type: string
        final_balance:
          type: integer
          format: int64
        n_tx:
          type: integer
        total_received:
          type: integer
          format: int64
        total_sent:
          type: integer
          format: int64
        account_index:
          type: integer
        change_index:
          type: integer


    BinfoAddrBalance:
      type: object
      required:
        - address
        - final_balance
        - n_tx
        - total_received
        - total_sent
      properties:
        address:
          type: string
        final_balance:
          type: integer
          format: int64
        n_tx:
          type: integer
        total_received:
          type: integer
          format: int64
        total_sent:
          type: integer
          format: int64

    BinfoRawAddr:
      type: object
      required:
        - hash160
        - address
        - n_tx
        - n_unredeemed
        - total_received
        - total_sent
        - final_balance
        - txs
      properties:
        hash160:
          type: string
        address:
          type: string
        n_tx:
          type: integer
          description: |
            Number of transactions of the address or extended public key, not
            only those on this page.
        n_unredeemed:
          type: integer
        total_received:
          type: integer
          format: int64
        total_sent:
          type: integer
          format: int64
        final_balance:
          type: integer
          format: int64
        txs:
          type: array
          items:
            $ref: '#/components/schemas/BinfoTx'

    BinfoBalance:
      oneOf:
        - $ref: '#/components/schemas/BinfoXPubBalance'
        - $ref: '#/components/schemas/BinfoAddrBalance'

    BinfoShortBalance:
      type: object
      required:
        - final_balance
        - n_tx
        - total_received
      properties:
        final_balance:
          type: integer
          format: int64
        n_tx:
          type: integer
        total_received:
          type: integer
          format: int64

    BinfoMultiAddr:
      type: object
      required:
        - wallet
        - info
        - addresses
        - recommend_include_fee
      properties:
        wallet:
          $ref: '#/components/schemas/BinfoWallet'
        info:
          $ref: '#/components/schemas/BinfoInfo'
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/BinfoBalance'
        txs:
          type: array
          items:
            $ref: '#/components/schemas/BinfoTx'
        recommend_include_fee:
          type: boolean
        cash_addr:
          type: boolean

    BinfoTxInput:
      type: object
      required:
        - index
        - script
        - prev_out
        - sequence
        - witness
      properties:
        index:
          type: integer
        script:
          type: string
        prev_out:
          $ref: '#/components/schemas/BinfoTxOutput'
        sequence:
          type: integer
        witness:
          type: string

    BinfoXPubPath:
      type: object
      required:
        - 'm'
        - path
      properties:
        m:
          type: string
        path:
          type: string

    BinfoSpender:
      type: object
      required:
        - tx_index
        - 'n'
      properties:
        tx_index:
          $ref: '#/components/schemas/BinfoTxId'
        n:
          type: integer

    BinfoTxOutput:
      type: object
      required:
        - tx_index
        - 'n'
        - type
        - spent
        - value
        - spending_outpoints
        - script
      properties:
        type:
          type: integer
        spent:
          type: boolean
        value:
          type: integer
          format: int64
        spending_outpoints:
          $ref: '#/components/schemas/BinfoSpender'
        n:
          type: integer
        tx_index:
          $ref: '#/components/schemas/BinfoTxId'
        script:
          type: string
        addr:
          type: string
        xpub:
          $ref: '#/components/schemas/BinfoXPubPath'

    BinfoHeader:
      type: object
      required:
        - hash
        - time
        - block_index
        - height
        - txIndexes
      properties:
        hash:
          type: string
        time:
          type: integer
        block_index:
          type: integer
        height:
          type: integer
        txIndexes:
          type: array
          items:
            $ref: '#/components/schemas/BinfoTxId'


    BinfoBlock:
      type: object
      required:
        - hash
        - ver
        - prev_block
        - mrkl_root
        - time
        - bits
        - next_block
        - fee
        - nonce
        - n_tx
        - size
        - block_index
        - main_chain
        - height
        - weight
        - tx
      properties:
        hash:
          type: string
        ver:
          type: integer
        prev_block:
          type: string
        mrkl_root:
          type: string
        time:
          type: integer
        bits:
          type: integer
        next_block:
          type: array
          items:
            type: string
        fee:
          type: integer
          format: int64
        nonce:
          type: integer
        n_tx:
          type: integer
        size:
          type: integer
        block_index:
          type: integer
        main_chain:
          type: boolean
        height:
          type: integer
        weight:
          type: integer
        tx:
          type: array
          items:
            $ref: '#/components/schemas/BinfoTx'

    BinfoHistory:
      type: object
      required:
        - date
        - time
        - type
        - amount
        - value_then
        - value_now
        - exchange_rate_then
        - tx
        - fee
      properties:
        date:
          type: string
        time:
          type: string
        type:
          type: string
          enum:
            - sent
            - received
        amount:
          type: number
        value_then:
          type: number
        value_now:
          type: number
        exchange_rate_then:
          type: number
        tx:
          type: string
        fee:
          type: number

    BinfoTx:
      type: object
      required:
        - hash
        - ver
        - vin_sz
        - vout_sz
        - size
        - weight
        - fee
        - relayed_by
        - lock_time
        - tx_index
        - double_spend
        - time
        - block_index
        - block_height
        - inputs
        - out
      properties:
        hash:
          type: string
        ver:
          type: integer
        vin_sz:
          type: integer
        vout_sz:
          type: integer
        size:
          type: integer
        weight:
          type: integer
        fee:
          type: integer
          format: int64
        relayed_by:
          type: string
        lock_time:
          type: integer
        tx_index:
          $ref: '#/components/schemas/BinfoTxId'
        double_spend:
          type: boolean
        time:
          type: integer
        block_index:
          type: integer
        block_height:
          type: integer
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/BinfoTxInput'
        out:
          type: array
          items:
            $ref: '#/components/schemas/BinfoTxOutput'
        result:
          type: integer
          format: int64
        balance:
          type: integer
          format: int64
        rbf:
          type: boolean

    BinfoUnspent:
      type: object
      required:
        - tx_hash_big_endian
        - tx_hash
        - tx_output_n
        - script
        - value
        - value_hex
        - confirmations
        - tx_index
      properties:
        tx_hash_big_endian:
          type: string
        tx_hash:
          type: string
        tx_output_n:
          type: integer
        script:
          type: string
        value:
          type: integer
          format: int64
        value_hex:
          type: string
        confirmations:
          type: integer
        tx_index:
          $ref: '#/components/schemas/BinfoTxId'

    BinfoBalanceReq:
      type: object
      properties:
        active:
          type: array
          items:
            type: string
            example: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                     ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
        activeP2SH:
          type: array
          items:
            type: string
        activeBech32:
          type: array
          items:
            type: string
        cashaddr:
          type: boolean
          example: true

    BinfoHistoryReq:
      type: object
      properties:
        active:
          type: array
          items:
            type: string
            example: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                     ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
        activeP2SH:
          type: array
          items:
            type: string
        activeBech32:
          type: array
          items:
            type: string
        currency:
          type: string
          example: eur
        start:
          type: string
          example: 20-10-2020
        end:
          type: string
          example: 09-04-2021

    BinfoMultiAddrReq:
      type: object
      properties:
        active:
          type: array
          items:
            type: string
            example: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                     ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
        activeP2SH:
          type: array
          items:
            type: string
        activeBech32:
          type: array
          items:
            type: string
        onlyShow:
          type: array
          items:
            type: string
        n:
          type: integer
          example: 2
        offset:
          type: integer
          example: 5
        noCompact:
          type: boolean
          example: false
        currency:
          type: string
          example: eur
        cashaddr:
          type: boolean
          example: true
        txidindex:
          type: boolean
          example: true
        filter:
          type: integer
          enum: [0,1,2,3,5,7]
          example: 5

    BinfoUnspentReq:
      type: object
      properties:
        active:
          type: array
          items:
            type: string
            example: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                     ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"
        activeP2SH:
          type: array
          items:
            type: string
        activeBech32:
          type: array
          items:
            type: string
        limit:
          type: integer
          example: 2
        confirmations:
          type: integer
          example: 6
        txidindex:
          type: boolean
          example: true

  parameters:

    pubKeyParam:
      name: pubkey
      in: path
      description: |
        A public key in hexadecimal, compressed or not.
      required: true
      schema:
        type: string
        example: 027eb504988cbc043dd4c9fac51685d68718a24d7f9f1d4c07b9f8c3d04327794c

    addressParam:
      name: address
      in: path
      description: |
        An address of the network of the server. An address that does not parse,
        or is of another network, gives 404.
      required: true
      schema:
        type: string
      example: qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u

    hashParam:
      name: hash
      in: path
      description: |
        A hash160 (20 bytes) in hexadecimal.
      required: true
      schema:
        type: string
      example: 37d070b3c6716a6174080722579fbdddad39bfb3

    addressesParam:
      name: addresses
      in: query
      description: |
        Addresses, separated by commas. Every address must be valid: one that is not
        fails the whole request with 400, rather than giving an answer that silently
        leaves it out.
      explode: false
      required: true
      schema:
        type: array
        items:
          type: string
        example:
          - qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u
          - qql2wpu4fa36yf07gcc8q80sjfxfaq66xssezyukg2

    limitParam:
      name: limit
      in: query
      description: |
        How many items to return at most. Without it, the server's default (100
        unless the operator changed it). `0` asks for the server's maximum. A
        larger number is lowered to the maximum rather than refused. See *Paging* at
        the top.
      required: false
      schema:
        type: integer

    heightParam:
      name: height
      in: query
      description: |
        Where the page starts: a transaction id (included), a block hash, a block
        height (transactions confirmed at or below it), or a Unix time (the last
        block at or before it). Numbers up to 1,230,768,000 are heights, larger ones
        times. Unconfirmed transactions come first in every list, and a page that
        starts at a height, a block or a time has none of them, even when the height
        is above the best block.

        To get the next page, pass the id of the last transaction you received here,
        with `offset=1`. See *Paging* at the top for why this is better than a large
        offset.
      required: false
      schema:
        oneOf:
          - type: integer
          - type: string

    offsetParam:
      name: offset
      in: query
      description: |
        How many items to skip after the start. Above the server's maximum (50,000
        unless the operator changed it), the request fails with 400; use `height` to
        go further back.
      required: false
      schema:
        type: integer

    nocacheParam:
      name: nocache
      in: query
      description: |
        Answer from the database of this server, without reading the Redis cache and
        without caching the wallet. The answer is the same; this is for comparing,
        and for servers whose cache is shared with others that may be ahead of or
        behind this one. A server of a fleet still answers from the block and the
        mempool that the fleet shares, only without its cache of wallets.
      required: false
      schema:
        type: boolean

    notxParam:
      name: notx
      in: query
      description: |
        Leave out the transaction ids, except the first (the coinbase). A block can
        have thousands of transactions, and pages that list blocks rarely need them.
      required: false
      schema:
        type: boolean

    blockParam:
      name: block
      in: path
      description: |
        A block hash in hexadecimal.
      required: true
      schema:
        type: string
        example: 000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506

    blocksParam:
      name: blocks
      in: query
      description: |
        Block hashes in hexadecimal, separated by commas.
      explode: false
      required: true
      schema:
        type: array
        items:
          type: string
        example:
          - 000000001aeae195809d120b5d66a39c83eb48792e068f8ea1fea19d84a4278a
          - 000000000845517b31c6820d83f25cff46429bf136a7515fe504116427e60f8e

    blockHeightParam:
      name: height
      in: path
      description: |
        A block height. The first block is at height 0.
      required: true
      schema:
        type: integer
      example: 200

    blockHeightsParam:
      name: heights
      in: query
      description: |
        Block heights, separated by commas.
      explode: false
      required: true
      schema:
        type: array
        items:
          type: integer
        example:
          - 100
          - 200
          - 300

    txidParam:
      name: txid
      in: path
      description: |
        A transaction id in hexadecimal.
      required: true
      schema:
        type: string
        example: 03c16602a41ae7cbc2a25b0d2801fdc3295e2e8ebfb26774030b2f7d538f5568

    timeParam:
      name: time
      in: path
      description: |
        A Unix timestamp, in seconds.
      required: true
      schema:
        type: integer
        example: 1231753120

    txidsParam:
      name: txids
      in: query
      description: |
        Transaction ids in hexadecimal, separated by commas.
      explode: false
      required: true
      schema:
        type: array
        items:
          type: string
        example:
          - 03c16602a41ae7cbc2a25b0d2801fdc3295e2e8ebfb26774030b2f7d538f5568
          - 02ea64dfff60b1f215282bbb4b2d729fecc50d81d2d0ef09a60d550a5a69418f

    xpubParam:
      name: xpub
      in: path
      description: |
        An extended public key of the network of the server: `xpub` on BTC and BCH,
        `tpub` on test networks. Keys that wallets export as `ypub` or `zpub` are
        not accepted; export them as `xpub` and say the kind of address with
        `derive`.
      required: true
      schema:
        type: string
        example: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                 ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"

    xpubDerive:
      name: derive
      in: query
      description: |
        The kind of address the wallet derives from the key:

        - `legacy`: pay-to-public-key-hash (P2PKH), addresses starting with `1`
          on BTC; the default, and the only kind on networks without SegWit, such as
          BCH. `normal`, its name up to version 1.8, is still accepted, so old
          URLs keep working;
        - `compat`: SegWit nested in pay-to-script-hash (P2SH-P2WPKH), addresses
          starting with `3`, as BIP 49 wallets use;
        - `segwit`: native SegWit (P2WPKH), addresses starting with `bc1q`, as BIP
          84 wallets use.

        An xpub does not record which kind its wallet uses, and each kind gives
        different addresses from the same key. When the wallet has no
        transactions with this kind but has some with another, the request
        fails with 400 and a message that names the right kind, rather than
        answering with an empty wallet.
      required: false
      schema:
        type: string
        enum: [legacy, compat, segwit, normal]
        default: legacy

    prettyParam:
      name: pretty
      in: query
      description: |
        Indent the JSON, for people to read. Responses are compact by default to
        save bandwidth.
      required: false
      schema:
        type: boolean

    binfoAddr:
      name: address
      in: path
      description: |
        An address or an extended public key.
      required: true
      schema:
        type: string
      example: qqmaqu9nceck5ct5pqrjy4ulhhw66wdlkv2s7f2l9u

    binfoActive:
      name: active
      in: query
      description: |
        Addresses and extended public keys of the wallet, separated by `|` or `,`.
        Extended public keys here derive legacy (P2PKH) addresses.
      required: false
      schema:
        type: string
        example: "xpub6By8JDaPr5L6oHfgQDc47quD69qH1hTwnFYbuia8paiYxSE9u84K\
                 ZfYqn6xLMUqxKK3wNpsgP4Kwu1gzXHD5xBxj5HrLposEYL6PwZzpAMZ"

    binfoActiveP2SH:
      name: activeP2SH
      in: query
      description: |
        Extended public keys that derive SegWit addresses nested in
        pay-to-script-hash (P2SH-P2WPKH), separated by `|` or `,`.
      required: false
      schema:
        type: string

    binfoActiveBech32:
      name: activeBech32
      in: query
      description: |
        Extended public keys that derive native SegWit (P2WPKH) addresses, separated
        by `|` or `,`.
      required: false
      schema:
        type: string

    binfoOnlyShow:
      name: onlyShow
      in: query
      description: |
        The addresses and extended public keys, among the active ones, whose
        balances to list and from whose point of view to compute the result of each
        transaction, separated by `|` or `,`. All the active ones if left out.
      required: false
      schema:
        type: string

    binfoFilter:
      name: filter
      in: query
      description: |
        Which transactions to list (`0` or `6` for all of them):

        - `1`: those that send coins out of the wallet;
        - `2`: those that bring coins into the wallet;
        - `3`: those that move coins within the wallet, changing its balance by
          the fee only;
        - `5`: confirmed ones;
        - `7`: unconfirmed ones.
      required: false
      schema:
        type: integer
        enum: [0,1,2,3,5,7]
      example: 5

    binfoLimit:
      name: limit
      in: query
      description: |
        How many items to return at most. The default and maximum are those of the
        server.
      required: false
      schema:
        type: integer
        example: 2

    binfoCount:
      name: n
      in: query
      description: |
        How many transactions to return at most. The default and maximum are those
        of the server for full transactions.
      required: false
      schema:
        type: integer
        example: 2

    binfoOffset:
      name: offset
      in: query
      description: |
        How many items to skip at the start. Above the server's maximum, the request
        fails with 400.
      required: false
      schema:
        type: integer

    binfoConfirmations:
      name: confirmations
      in: query
      description: |
        Only return outputs with at least this many confirmations. `0`, the default,
        includes unconfirmed ones.
      required: false
      schema:
        type: integer

    binfoNoCompact:
      name: noCompact
      in: query
      description: |
        Keep the outputs of incoming transactions that pay to other addresses. They
        are left out by default, as they belong to other people and can be many.
        `no_compact` is accepted as another name for it; `noCompact` wins if both
        are given.
      required: false
      schema:
        type: boolean
        example: false

    binfoCurrency:
      name: currency
      in: query
      description: |
        The currency for the `info` section, such as `USD`, `EUR` or `GBP`, in any
        case. `USD` by default. A currency that the price service does not list
        is refused. Until the server has prices, which it does not if the price
        service cannot be reached, every currency is accepted with a price of
        zero.
      required: false
      schema:
        type: string
        example: eur

    binfoCashAddr:
      name: cashaddr
      in: query
      description: |
        Write Bitcoin Cash addresses in CashAddr format. They are in the legacy
        format by default, as Blockchain.info writes them, so that software written
        for it reads them.
      required: false
      schema:
        type: boolean
        example: true

    binfoTxIdIndex:
      name: txidindex
      in: query
      description: |
        Identify transactions by their id (`true`) rather than by a short number
        (the default).

        Blockchain.info identifies transactions by a number, and software written
        for it expects one. The server derives it from the transaction id: the first
        64 bits, shifted right by 11, so that it fits in the 53 bits that numbers in
        JavaScript hold exactly. Two transactions can share a number, rarely; the
        ids never collide, so use them when you can.
      required: false
      schema:
        type: boolean
        example: true

    binfoBlockId:
      name: block
      in: path
      description: |
        A block hash in hexadecimal, or a block height.
      required: true
      schema:
        oneOf:
          - type: string
          - type: integer
      example: 50000

    binfoTxId:
      name: txid
      in: path
      description: |
        A transaction id in hexadecimal, or the short number of a transaction (see
        `txidindex`).
      required: true
      schema:
        oneOf:
          - type: string
          - type: integer
      example: 369c2a28fc84b060e4423e26ac898fa4ce9eda8943a36d0a48df66e6a6275aa6

    binfoJsonFormat:
      name: format
      in: query
      description: |
        Only `json` is accepted. Software written for Blockchain.info often sends
        `format=json`, so it is accepted; any other value is refused rather than
        answered in JSON anyway.
      required: false
      schema:
        type: string
        enum: [json]

    binfoFormat:
      name: format
      in: query
      description: |
        `json`, the default, or `hex` for the data serialized as in the peer-to-peer
        protocol.
      required: false
      schema:
        type: string
        enum:
          - json
          - hex

    binfoStart:
      name: start
      in: query
      description: |
        The first day of the history, as `dd-mm-yyyy` or `dd/mm/yyyy`.
      required: true
      schema:
        type: string
        example: 20-10-2020

    binfoEnd:
      name: end
      in: query
      description: |
        The last day of the history, included, as `dd-mm-yyyy` or `dd/mm/yyyy`.
      required: true
      schema:
        type: string
        example: 09-04-2021