{
  "description": "GET request that returns stats on mempool transactions",
  "title": "MempoolTransactionStatsResponse",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "tx_type_counts",
    "tx_simple_fee_averages",
    "tx_ages",
    "tx_byte_sizes"
  ],
  "properties": {
    "tx_type_counts": {
      "type": "object",
      "description": "Number of tranasction in the mempool, broken down by transaction type.",
      "additionalProperties": false,
      "required": [
        "token_transfer",
        "smart_contract",
        "contract_call",
        "poison_microblock"
      ],
      "properties": {
        "token_transfer": {
          "type": "number"
        },
        "smart_contract": {
          "type": "number"
        },
        "contract_call": {
          "type": "number"
        },
        "poison_microblock": {
          "type": "number"
        }
      }
    },
    "tx_simple_fee_averages": {
      "type": "object",
      "description": "The simple mean (average) transaction fee, broken down by transaction type. Note that this does not factor in actual execution costs. The average fee is not a reliable metric for calculating a fee for a new transaction.",
      "additionalProperties": false,
      "required": [
        "token_transfer",
        "smart_contract",
        "contract_call",
        "poison_microblock"
      ],
      "properties": {
        "token_transfer": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "p25",
            "p50",
            "p75",
            "p95"
          ],
          "properties": {
            "p25": {
              "type": "number",
              "nullable": true
            },
            "p50": {
              "type": "number",
              "nullable": true
            },
            "p75": {
              "type": "number",
              "nullable": true
            },
            "p95": {
              "type": "number",
              "nullable": true
            }
          }
        },
        "smart_contract": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "p25",
            "p50",
            "p75",
            "p95"
          ],
          "properties": {
            "p25": {
              "type": "number",
              "nullable": true
            },
            "p50": {
              "type": "number",
              "nullable": true
            },
            "p75": {
              "type": "number",
              "nullable": true
            },
            "p95": {
              "type": "number",
              "nullable": true
            }
          }
        },
        "contract_call": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "p25",
            "p50",
            "p75",
            "p95"
          ],
          "properties": {
            "p25": {
              "type": "number",
              "nullable": true
            },
            "p50": {
              "type": "number",
              "nullable": true
            },
            "p75": {
              "type": "number",
              "nullable": true
            },
            "p95": {
              "type": "number",
              "nullable": true
            }
          }
        },
        "poison_microblock": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "p25",
            "p50",
            "p75",
            "p95"
          ],
          "properties": {
            "p25": {
              "type": "number",
              "nullable": true
            },
            "p50": {
              "type": "number",
              "nullable": true
            },
            "p75": {
              "type": "number",
              "nullable": true
            },
            "p95": {
              "type": "number",
              "nullable": true
            }
          }
        }
      }
    },
    "tx_ages": {
      "type": "object",
      "description": "The average time (in blocks) that transactions have lived in the mempool. The start block height is simply the current chain-tip of when the attached Stacks node receives the transaction. This timing can be different across Stacks nodes / API instances due to propagation timing differences in the p2p network.",
      "additionalProperties": false,
      "required": [
        "token_transfer",
        "smart_contract",
        "contract_call",
        "poison_microblock"
      ],
      "properties": {
        "token_transfer": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "p25",
            "p50",
            "p75",
            "p95"
          ],
          "properties": {
            "p25": {
              "type": "number",
              "nullable": true
            },
            "p50": {
              "type": "number",
              "nullable": true
            },
            "p75": {
              "type": "number",
              "nullable": true
            },
            "p95": {
              "type": "number",
              "nullable": true
            }
          }
        },
        "smart_contract": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "p25",
            "p50",
            "p75",
            "p95"
          ],
          "properties": {
            "p25": {
              "type": "number",
              "nullable": true
            },
            "p50": {
              "type": "number",
              "nullable": true
            },
            "p75": {
              "type": "number",
              "nullable": true
            },
            "p95": {
              "type": "number",
              "nullable": true
            }
          }
        },
        "contract_call": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "p25",
            "p50",
            "p75",
            "p95"
          ],
          "properties": {
            "p25": {
              "type": "number",
              "nullable": true
            },
            "p50": {
              "type": "number",
              "nullable": true
            },
            "p75": {
              "type": "number",
              "nullable": true
            },
            "p95": {
              "type": "number",
              "nullable": true
            }
          }
        },
        "poison_microblock": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "p25",
            "p50",
            "p75",
            "p95"
          ],
          "properties": {
            "p25": {
              "type": "number",
              "nullable": true
            },
            "p50": {
              "type": "number",
              "nullable": true
            },
            "p75": {
              "type": "number",
              "nullable": true
            },
            "p95": {
              "type": "number",
              "nullable": true
            }
          }
        }
      }
    },
    "tx_byte_sizes": {
      "type": "object",
      "description": "The average byte size of transactions in the mempool, broken down by transaction type.",
      "additionalProperties": false,
      "required": [
        "token_transfer",
        "smart_contract",
        "contract_call",
        "poison_microblock"
      ],
      "properties": {
        "token_transfer": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "p25",
            "p50",
            "p75",
            "p95"
          ],
          "properties": {
            "p25": {
              "type": "number",
              "nullable": true
            },
            "p50": {
              "type": "number",
              "nullable": true
            },
            "p75": {
              "type": "number",
              "nullable": true
            },
            "p95": {
              "type": "number",
              "nullable": true
            }
          }
        },
        "smart_contract": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "p25",
            "p50",
            "p75",
            "p95"
          ],
          "properties": {
            "p25": {
              "type": "number",
              "nullable": true
            },
            "p50": {
              "type": "number",
              "nullable": true
            },
            "p75": {
              "type": "number",
              "nullable": true
            },
            "p95": {
              "type": "number",
              "nullable": true
            }
          }
        },
        "contract_call": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "p25",
            "p50",
            "p75",
            "p95"
          ],
          "properties": {
            "p25": {
              "type": "number",
              "nullable": true
            },
            "p50": {
              "type": "number",
              "nullable": true
            },
            "p75": {
              "type": "number",
              "nullable": true
            },
            "p95": {
              "type": "number",
              "nullable": true
            }
          }
        },
        "poison_microblock": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "p25",
            "p50",
            "p75",
            "p95"
          ],
          "properties": {
            "p25": {
              "type": "number",
              "nullable": true
            },
            "p50": {
              "type": "number",
              "nullable": true
            },
            "p75": {
              "type": "number",
              "nullable": true
            },
            "p95": {
              "type": "number",
              "nullable": true
            }
          }
        }
      }
    }
  }
}
