{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "$id": "https://raw.githubusercontent.com/IntersectMBO/cardano-addresses/master/command-line/schemas/address-inspect.json",
  "description": "JSON specification for address inspection.",
  "type": "object",
  "required": [
    "address_style",
    "stake_reference",
    "network_tag"
  ],
  "properties": {
    "address_style": {
      "type": "string",
      "enum": ["Shelley", "Icarus", "Byron"]
    },
    "stake_reference": {
      "type": "string",
      "enum": ["none", "by value", "by pointer"]
    },
    "network_tag": {
      "description": "Can only be null for 'Icarus' and 'Byron' styles.",
      "oneOf": [
        {
          "type": "integer",
          "minimum": 0
        },
        {
          "type": "null"
        }
      ]
    },
    "spending_key_hash": {
      "type": "string",
      "format": "base16",
      "minimum_length": "56",
      "maximum_length": "56"
    },
    "spending_key_hash_bech32": {
      "type": "string",
      "format": "bech32"
    },
    "stake_key_hash": {
      "type": "string",
      "format": "base16",
      "minimum_length": "56",
      "maximum_length": "56"
    },
    "stake_key_hash_bech32": {
      "type": "string",
      "format": "bech32"
    },
    "script_hash": {
      "type": "string",
      "format": "base16",
      "minimum_length": "56",
      "maximum_length": "56"
    },
    "script_key_hash_bech32": {
      "type": "string",
      "format": "bech32"
    },
    "pointer": {
      "type": "object",
      "additionalProperties": false,
      "required": [ "slot_num", "transaction_index", "output_index" ],
      "properties": {
        "slot_num": {
          "type": "integer",
          "minimum": 0
        },
        "transaction_index": {
          "type": "integer",
          "minimum": 0
        },
        "output_index": {
          "type": "integer",
          "minimum": 0
        }
      }
    },
    "address_root": {
      "description": "Only for 'Icarus' and 'Byron' styles.",
      "type": "string",
      "format": "base16"
    },
    "derivation_path": {
      "description": "Only for 'Byron' style.",
      "oneOf": [
        {
          "type": "string",
          "format": "base16"
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["account_index", "address_index"],
          "properties": {
            "account_index": {
              "type": "string",
              "pattern": "^[0-9]+H?$"
            },
            "address_index": {
              "type": "string",
              "pattern": "^[0-9]+H?$"
            }
          }
        }
      ]
    }
  }
}
