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"
}

```
result.pushKV("transactions", transactions);
    result.pushKV("coinbaseaux", aux);
    result.pushKV("coinbasevalue", (int64_t)pblock->vtx[0]->vout[0].nValue);
    result.pushKV("longpollid", ::ChainActive().Tip()->GetBlockHash().GetHex() + ToString(nTransactionsUpdatedLast));
    result.pushKV("target", hashTarget.GetHex());
    result.pushKV("mintime", (int64_t)pindexPrev->GetMedianTimePast()+1);
    result.pushKV("mutable", aMutable);
    result.pushKV("noncerange", "00000000ffffffff");
    int64_t nSigOpLimit = MAX_BLOCK_SIGOPS_COST;
    int64_t nSizeLimit = MAX_BLOCK_SERIALIZED_SIZE;
    if (fPreSegWit) {
        CHECK_NONFATAL(nSigOpLimit % WITNESS_SCALE_FACTOR == 0);
        nSigOpLimit /= WITNESS_SCALE_FACTOR;
        CHECK_NONFATAL(nSizeLimit % WITNESS_SCALE_FACTOR == 0);
        nSizeLimit /= WITNESS_SCALE_FACTOR;
    }
    result.pushKV("sigoplimit", nSigOpLimit);
    result.pushKV("sizelimit", nSizeLimit);
    if (!fPreSegWit) {
        result.pushKV("weightlimit", (int64_t)MAX_BLOCK_WEIGHT);
    }
    result.pushKV("curtime", pblock->GetBlockTime());
    result.pushKV("bits", strprintf("%08x", pblock->nBits));
    result.pushKV("height", (int64_t)(pindexPrev->nHeight+1));
    if (!pblocktemplate->vchCoinbaseCommitment.empty()) {
        result.pushKV("default_witness_commitment", HexStr(pblocktemplate->vchCoinbaseCommitment));
    }
    return result;
}
class submitblock_StateCatcher final : public CValidationInterface