{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/sochain-com/json-schema/sochain-com-transaction-status-schema.json",
  "title": "TransactionStatus",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/sochain-com-openapi.json#/components/schemas/TransactionStatus",
  "type": "object",
  "required": [
    "network",
    "hash",
    "status",
    "block_height",
    "confirmations",
    "replaced_by",
    "replaced_by_status",
    "replaced_by_height",
    "replaced_ancestor",
    "removed_at"
  ],
  "properties": {
    "network": {
      "enum": [
        "BTC",
        "LTC",
        "DOGE",
        "ZEC",
        "BTCTEST",
        "LTCTEST",
        "DOGETEST",
        "ZECTEST"
      ]
    },
    "hash": {
      "type": "string",
      "description": "The transaction ID."
    },
    "status": {
      "enum": [
        "pending",
        "mined",
        "replaced",
        "dropped",
        "expired",
        "unknown"
      ],
      "description": "pending: waiting in the mempool. mined: in a block. replaced: another transaction spends one of its inputs. dropped: it left the mempool unconfirmed. expired (Zcash): it passed its expiry height unmined. unknown: SoChain can't tell (it never saw it, or it left the mempool too long ago)."
    },
    "block_height": {
      "type": [
        "integer",
        "null"
      ],
      "description": "The block it's in, once mined."
    },
    "confirmations": {
      "type": [
        "integer",
        "null"
      ],
      "description": "0 while pending, 1 or more once mined; null otherwise."
    },
    "replaced_by": {
      "type": [
        "string",
        "null"
      ],
      "description": "The transaction that now spends one of its inputs (the last one, after several quick replacements)."
    },
    "replaced_by_status": {
      "enum": [
        "pending",
        "mined",
        "unknown",
        null
      ],
      "description": "unknown: the replacement left the mempool unconfirmed too."
    },
    "replaced_by_height": {
      "type": [
        "integer",
        "null"
      ],
      "description": "The replacement's block, once mined."
    },
    "replaced_ancestor": {
      "type": [
        "string",
        "null"
      ],
      "description": "Set when it was replaced because a transaction it spends from was: that transaction."
    },
    "removed_at": {
      "type": [
        "integer",
        "null"
      ],
      "description": "When it left the mempool (Unix time)."
    }
  }
}