openapi: 3.0.3
info:
    title: Swagger Zebra API - OpenAPI 3.0
    version: 0.0.1
    description: |-
        This is the Zebra API. It is a JSON-RPC 2.0 API that allows you to interact with the Zebra node.

        Useful links:
        - [The Zebra repository](https://github.com/ZcashFoundation/zebra)
        - [The latests API spec](https://github.com/ZcashFoundation/zebra/blob/main/openapi.yaml)
servers:
  - url: http://localhost:8232
paths:
  /sendrawtransaction:
    post:
      tags:
      - transaction
      description: |-
        Sends the raw bytes of a signed transaction to the local node''s mempool, if the transaction is valid."]

        **Request body `params` arguments:**

        - `raw_transaction_hex` - The hex-encoded raw transaction bytes.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                params:
                  type: array
                  items: {}
                  default: '["signedhex"]'
                method:
                  type: string
                  default: sendrawtransaction
                id:
                  type: number
                  default: '123'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    default: Invalid parameters
  /getinfo:
    post:
      tags:
      - control
      description: Returns software information from the RPC server, as a [`GetInfo`] JSON struct."]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                method:
                  type: string
                  default: getinfo
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '[]'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{"build":"some build version","subversion":"some subversion"}'
  /getblockhash:
    post:
      tags:
      - blockchain
      description: |-
        Returns the hash of the block of a given height iff the index argument correspond"]

        **Request body `params` arguments:**

        - `index` - The block index.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                params:
                  type: array
                  items: {}
                  default: '[1]'
                method:
                  type: string
                  default: getblockhash
                id:
                  type: number
                  default: '123'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '"0000000000000000000000000000000000000000000000000000000000000000"'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    default: Invalid parameters
  /getmininginfo:
    post:
      tags:
      - mining
      description: Returns mining-related information."]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                method:
                  type: string
                  default: getmininginfo
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '[]'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /validateaddress:
    post:
      tags:
      - util
      description: |-
        Checks if a zcash address is valid."]

        **Request body `params` arguments:**

        - `address` - The zcash address to validate.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                method:
                  type: string
                  default: validateaddress
                params:
                  type: array
                  items: {}
                  default: '[]'
                id:
                  type: number
                  default: '123'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /getblocksubsidy:
    post:
      tags:
      - mining
      description: |-
        Returns the block subsidy reward of the block at `height`, taking into account the mining slow start."]

        **Request body `params` arguments:**

        - `height` - Can be any valid current or future height.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '[1]'
                method:
                  type: string
                  default: getblocksubsidy
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    default: Invalid parameters
  /submitblock:
    post:
      tags:
      - mining
      description: |-
        Submits block to the node to be validated and committed."]

        **Request body `params` arguments:**

        - `jsonparametersobject` - - currently ignored
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '[]'
                method:
                  type: string
                  default: submitblock
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /z_listunifiedreceivers:
    post:
      tags:
      - wallet
      description: |-
        Returns the list of individual payment addresses given a unified address."]

        **Request body `params` arguments:**

        - `address` - The zcash unified address to get the list from.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                method:
                  type: string
                  default: z_listunifiedreceivers
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '[]'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /getblockcount:
    post:
      tags:
      - blockchain
      description: Returns the height of the most recent block in the best valid block chain (equivalently,"]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '[]'
                method:
                  type: string
                  default: getblockcount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /getaddressutxos:
    post:
      tags:
      - address
      description: |-
        Returns all unspent outputs for a list of addresses."]

        **Request body `params` arguments:**

        - `addresses` - The addresses to get outputs from.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: number
                  default: '123'
                method:
                  type: string
                  default: getaddressutxos
                params:
                  type: array
                  items: {}
                  default: '[{"addresses": ["tmYXBYJj1K7vhejSec5osXK2QsGa5MTisUQ"]}]'
      responses:
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    default: Invalid parameters
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /getaddresstxids:
    post:
      tags:
      - address
      description: |-
        Returns the transaction ids made by the provided transparent addresses."]

        **Request body `params` arguments:**

        - `request` - A struct with the following named fields:
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                method:
                  type: string
                  default: getaddresstxids
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '[{"addresses": ["tmYXBYJj1K7vhejSec5osXK2QsGa5MTisUQ"], "start": 1000, "end": 2000}]'
      responses:
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    default: Invalid parameters
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /z_getsubtreesbyindex:
    post:
      tags:
      - blockchain
      description: |-
        Returns information about a range of Sapling or Orchard subtrees."]

        **Request body `params` arguments:**

        - `pool` - The pool from which subtrees should be returned. Either \"sapling\" or \"orchard\".
        - `start_index` - The index of the first 2^16-leaf subtree to return.
        - `limit` - The maximum number of subtree values to return.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                params:
                  type: array
                  items: {}
                  default: '[]'
                method:
                  type: string
                  default: z_getsubtreesbyindex
                id:
                  type: number
                  default: '123'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /getpeerinfo:
    post:
      tags:
      - network
      description: Returns data about each connected network node."]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '[]'
                method:
                  type: string
                  default: getpeerinfo
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /getbestblockhash:
    post:
      tags:
      - blockchain
      description: Returns the hash of the current best blockchain tip block, as a [`GetBlockHash`] JSON string."]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: number
                  default: '123'
                method:
                  type: string
                  default: getbestblockhash
                params:
                  type: array
                  items: {}
                  default: '[]'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '"0000000000000000000000000000000000000000000000000000000000000000"'
  /getblocktemplate:
    post:
      tags:
      - mining
      description: |-
        Returns a block template for mining new Zcash blocks."]

        **Request body `params` arguments:**

        - `jsonrequestobject` - A JSON object containing arguments.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '[]'
                method:
                  type: string
                  default: getblocktemplate
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /getdifficulty:
    post:
      tags:
      - blockchain
      description: Returns the proof-of-work difficulty as a multiple of the minimum difficulty."]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '[]'
                method:
                  type: string
                  default: getdifficulty
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /getrawmempool:
    post:
      tags:
      - blockchain
      description: Returns all transaction ids in the memory pool, as a JSON array."]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                params:
                  type: array
                  items: {}
                  default: '[]'
                id:
                  type: number
                  default: '123'
                method:
                  type: string
                  default: getrawmempool
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /getaddressbalance:
    post:
      tags:
      - address
      description: |-
        Returns the total balance of a provided `addresses` in an [`AddressBalance`] instance."]

        **Request body `params` arguments:**

        - `address_strings` - A JSON map with a single entry
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: number
                  default: '123'
                method:
                  type: string
                  default: getaddressbalance
                params:
                  type: array
                  items: {}
                  default: '[{"addresses": ["tmYXBYJj1K7vhejSec5osXK2QsGa5MTisUQ"]}]'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    default: Invalid parameters
  /getnetworksolps:
    post:
      tags:
      - mining
      description: Returns the estimated network solutions per second based on the last `num_blocks` before"]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                params:
                  type: array
                  items: {}
                  default: '[]'
                id:
                  type: number
                  default: '123'
                method:
                  type: string
                  default: getnetworksolps
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /z_gettreestate:
    post:
      tags:
      - blockchain
      description: |-
        Returns information about the given block''s Sapling & Orchard tree state."]

        **Request body `params` arguments:**

        - `hash | height` - The block hash or height.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '["00000000febc373a1da2bd9f887b105ad79ddc26ac26c2b28652d64e5207c5b5"]'
                method:
                  type: string
                  default: z_gettreestate
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{"hash":"0000000000000000000000000000000000000000000000000000000000000000","height":0,"time":0}'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    default: Invalid parameters
  /getrawtransaction:
    post:
      tags:
      - transaction
      description: |-
        Returns the raw transaction data, as a [`GetRawTransaction`] JSON string or structure."]

        **Request body `params` arguments:**

        - `txid` - The transaction ID of the transaction to be returned.
        - `verbose` - If 0, return a string of hex-encoded data, otherwise return a JSON object.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                method:
                  type: string
                  default: getrawtransaction
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '["mytxid", 1]'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    default: Invalid parameters
  /z_validateaddress:
    post:
      tags:
      - util
      description: |-
        Checks if a zcash address is valid."]

        **Request body `params` arguments:**

        - `address` - The zcash address to validate.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                params:
                  type: array
                  items: {}
                  default: '[]'
                id:
                  type: number
                  default: '123'
                method:
                  type: string
                  default: z_validateaddress
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /getblock:
    post:
      tags:
      - blockchain
      description: |-
        Returns the requested block by hash or height, as a [`GetBlock`] JSON string."]

        **Request body `params` arguments:**

        - `hash_or_height` - The hash or height for the block to be returned.
        - `verbosity` - 0 for hex encoded data, 1 for a json object, and 2 for json object with transaction data.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                method:
                  type: string
                  default: getblock
                params:
                  type: array
                  items: {}
                  default: '["1", 1]'
                id:
                  type: number
                  default: '123'
      responses:
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    default: Invalid parameters
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{"hash":"0000000000000000000000000000000000000000000000000000000000000000","confirmations":0,"tx":[],"trees":{}}'
  /getnetworkhashps:
    post:
      tags:
      - mining
      description: Returns the estimated network solutions per second based on the last `num_blocks` before"]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                params:
                  type: array
                  items: {}
                  default: '[]'
                method:
                  type: string
                  default: getnetworkhashps
                id:
                  type: number
                  default: '123'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{}'
  /getblockchaininfo:
    post:
      tags:
      - blockchain
      description: Returns blockchain state information, as a [`GetBlockChainInfo`] JSON struct."]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                method:
                  type: string
                  default: getblockchaininfo
                id:
                  type: number
                  default: '123'
                params:
                  type: array
                  items: {}
                  default: '[]'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    default: '{"chain":"main","blocks":1,"bestblockhash":"0000000000000000000000000000000000000000000000000000000000000000","estimatedheight":1,"upgrades":{},"consensus":{"chaintip":"00000000","nextblock":"00000000"}}'
