Invoking ```bitcoin-cli help getblocktemplate``` shows the following as example result:

```
{                                 (json object)
  "version" : n,                  (numeric) The preferred block version
  "rules" : [                     (json array) specific block rules that are to be enforced
    "str",                        (string) rulename
    ...
  ],
  "vbavailable" : {               (json object) set of pending, supported versionbit (BIP 9) softfork deployments
    "rulename" : n,               (numeric) identifies the bit number as indicating acceptance and readiness for the named softfork rule
    ...
  },
  "vbrequired" : n,               (numeric) bit mask of versionbits the server requires set in submissions
  "previousblockhash" : "str",    (string) The hash of current highest block
  "" : [                          (json array) contents of non-coinbase transactions that should be included in the next block
    {                             (json object)
      "data" : "hex",             (string) transaction data encoded in hexadecimal (byte-for-byte)
      "txid" : "hex",             (string) transaction id encoded in little-endian hexadecimal
      "hash" : "hex",             (string) hash encoded in little-endian hexadecimal (including witness data)
      "depends" : [               (json array) array of numbers
        n,                        (numeric) transactions before this one (by 1-based index in 'transactions' list) that must be present in the final block if this one is
        ...
      ],
      "fee" : n,                  (numeric) difference in value between transaction inputs and outputs (in satoshis); for coinbase transactions, this is a negative Number of the total collected block fees (ie, not including the block subsidy); if key is not present, fee is unknown and clients MUST NOT assume there isn't one
      "sigops" : n,               (numeric) total SigOps cost, as counted for purposes of block limits; if key is not present, sigop cost is unknown and clients MUST NOT assume it is zero
      "weight" : n                (numeric) total transaction weight, as counted for purposes of block limits
    },
    ...
  ],
  "coinbaseaux" : {               (json object) data that should be included in the coinbase's scriptSig content
    ...
  },
  "coinbasevalue" : n,            (numeric) maximum allowable input to coinbase transaction, including the generation award and transaction fees (in satoshis)
  "coinbasetxn" : {               (json object) information for coinbase transaction
    ...
  },
  "target" : "str",               (string) The hash target
  "mintime" : xxx,                (numeric) The minimum timestamp appropriate for the next block time, expressed in UNIX epoch time
  "mutable" : [                   (json array) list of ways the block template may be changed
    "str",                        (string) A way the block template may be changed, e.g. 'time', 'transactions', 'prevblock'
    ...
  ],
  "noncerange" : "hex",           (string) A range of valid nonces
  "sigoplimit" : n,               (numeric) limit of sigops in blocks
  "sizelimit" : n,                (numeric) limit of block size
  "weightlimit" : n,              (numeric) limit of block weight
  "curtime" : xxx,                (numeric) current timestamp in UNIX epoch time
  "bits" : "str",                 (string) compressed target of next block
  "height" : n                    (numeric) The height of the next block
}
```

actual result has more fields (**capabilities**, **transactions**(probably the field without a name), **default_witness_commitment**, **longpollid**) one field is missing (**coinbasetxn**):

```
{
  "capabilities": [
    "proposal"
  ],
  "version": 536870912,
  "rules": [
    "csv",
    "!segwit"
  ],
  "vbavailable": {
  },
  "vbrequired": 0,
  "previousblockhash": "000000005b00d9476d756947955556e6db801c676e6650118d633e66e800b940",
  "transactions": [
    {
      "data": "02000000000106a84cea3a37cfe6a38c12fbf64761ac926c2f4ab05bbdac5b187e438f40860cc00000000017160014422b977c6a28f69359e2f0dfb6aa5197e466e5b8fdffffff33d588cec09c12f009fa9663a3db4390a4e8ddafe7d9a31092b3d$
      "txid": "9493cb4f621a1f95a264526f216914f741e6f01bff3dfdab5ab9ec81c3ce16a5",
      "hash": "543794756b046709b40c22ed9d0aa9492ef64e1f28d193a00efd6fd06e419f0a",
      "depends": [
      ],
      "fee": 133272,
      "sigops": 6,
      "weight": 2467
    },
    ...
  ],
  "coinbaseaux": {
  },
  "coinbasevalue": 19864212,
  "longpollid": "000000005b00d9476d756947955556e6db801c676e6650118d633e66e800b940529",
  "target": "000000000000000e7e1000000000000000000000000000000000000000000000",
  "mintime": 1596097882,
  "mutable": [
    "time",
    "transactions",
    "prevblock"
  ],
  "noncerange": "00000000ffffffff",
  "sigoplimit": 80000,
  "sizelimit": 4000000,
  "weightlimit": 4000000,
  "curtime": 1596104418,
  "bits": "190e7e10",
  "height": 1781942,
  "default_witness_commitment": "6a24aa21a9ed167e62a901109d5cbbc8d3892c8e12f66c2b52a8675df9bbb0b30fa2c033ae30"
}

```
{RPCResult::Type::NUM, "feerate",  true, "estimate fee rate in " + CURRENCY_UNIT + "/kB (only present if no errors were encountered)"},
                        {RPCResult::Type::ARR, "errors",  true, "Errors encountered during processing (if there are any)",
                            {
                                {RPCResult::Type::STR, "", "error"},
                            }},
                        {RPCResult::Type::NUM, "blocks", "block number where estimate was found\n"
            "The request target will be clamped between 2 and the highest target\n"
            "fee estimation is able to return based on how long it has been running.\n"
            "An error is returned if not enough transactions and blocks\n"
            "have been observed to make an estimate for any number of blocks."},
                    }},
                RPCExamples{
                    HelpExampleCli("estimatesmartfee", "6")
                },
            }.Check(request);
    RPCTypeCheck(request.params, {UniValue::VNUM, UniValue::VSTR});
    RPCTypeCheckArgument(request.params[0], UniValue::VNUM);
    unsigned int max_target = ::feeEstimator.HighestTargetTracked(FeeEstimateHorizon::LONG_HALFLIFE);
    unsigned int conf_target = ParseConfirmTarget(request.params[0], max_target);
    bool conservative = true;
    if (!request.params[1].isNull()) {
        FeeEstimateMode fee_mode;
        if (!FeeModeFromString(request.params[1].get_str(), fee_mode)) {
            throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid estimate_mode parameter");
        }
        if (fee_mode == FeeEstimateMode::ECONOMICAL) conservative = false;
    }
    UniValue result(UniValue::VOBJ);
    UniValue errors(UniValue::VARR);
    FeeCalculation feeCalc;