{
  "$id": "manifest.schema.json",
  "title": "Manifest schema for Wallet App",
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "id": {
      "type": "string",
      "minLength": 3,
      "maxLength": 50,
      "pattern": "^[a-zA-Z0-9_][a-zA-Z0-9_-]*$",
      "errorMessage": {
        "pattern": "${0#} must start with a letter or digit and can only contain letters, digits, or hyphens."
      }
    },
    "author": {
      "type": "string"
    },
    "branch": {
      "type": "string"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    },
    "url": {
      "type": "string",
      "format": "uri"
    },
    "homepageUrl": {
      "type": "string",
      "format": "uri"
    },
    "supportUrl": {
      "type": "string",
      "format": "uri"
    },
    "icon": {
      "type": "string",
      "format": "uri"
    },
    "private": {
      "type": "boolean"
    },
    "platforms": {
      "type": "array",
      "uniqueItems": true,
      "minItems": 1,
      "items": {
        "type": "string",
        "enum": [
          "desktop",
          "ios",
          "android"
        ]
      }
    },
    "apiVersion": {
      "type": "string"
    },
    "manifestVersion": {
      "type": "string",
      "enum": [
        "2"
      ]
    },
    "categories": {
      "type": "array",
      "uniqueItems": true,
      "minItems": 1,
      "items": {
        "type": "string",
        "errorMessage": {}
      }
    },
    "currencies": {
      "oneOf": [
        {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "type": "string",
            "examples": [
              "aptos",
              "aptos_testnet",
              "adi",
              "near",
              "aeternity",
              "aion",
              "akroma",
              "algorand",
              "ark",
              "atheios",
              "avalanche_c_chain",
              "avalanche_c_chain_fuji",
              "axelar",
              "banano",
              "bitcoin",
              "bitcoin_cash",
              "bitcoin_gold",
              "bitcoin_private",
              "bitlayer",
              "bsc",
              "callisto",
              "canton_network",
              "canton_network_testnet",
              "canton_network_devnet",
              "cardano",
              "cardano_testnet",
              "celo",
              "clubcoin",
              "concordium",
              "concordium_testnet",
              "coreum",
              "cosmos",
              "cosmos_testnet",
              "dash",
              "decred",
              "desmos",
              "dexon",
              "digibyte",
              "dogecoin",
              "dydx",
              "elastos",
              "ellaism",
              "eos",
              "ethereum",
              "ethereum_classic",
              "ether1",
              "ethergem",
              "ethersocial",
              "expanse",
              "factom",
              "fic",
              "flow",
              "game_credits",
              "gochain",
              "groestlcoin",
              "hcash",
              "hedera",
              "hedera_testnet",
              "helium",
              "hpb",
              "hycon",
              "icon",
              "icon_berlin_testnet",
              "iota",
              "iov",
              "kaspa",
              "kin",
              "komodo",
              "kusama",
              "lbry",
              "litecoin",
              "lisk",
              "mix",
              "monero",
              "elrond",
              "musicoin",
              "nano",
              "nem",
              "neo",
              "nervos",
              "nimiq",
              "nix",
              "nos",
              "nyx",
              "ontology",
              "particl",
              "persistence",
              "pirl",
              "poa",
              "polkadot",
              "assethub_polkadot",
              "polygon",
              "polygon_amoy",
              "poswallet",
              "qrl",
              "qtum",
              "quicksilver",
              "ravencoin",
              "ripple",
              "rise",
              "reosc",
              "resistance",
              "secret_network",
              "solana",
              "stakenet",
              "stargaze",
              "stratis",
              "stellar",
              "osmosis",
              "shyft",
              "stride",
              "tezos",
              "thundercore",
              "tomo",
              "ton",
              "tron",
              "ubiq",
              "umee",
              "vechain",
              "wanchain",
              "waves",
              "zcash",
              "zclassic",
              "zcoin",
              "zencash",
              "zilliqa",
              "crypto_org",
              "westend",
              "assethub_westend",
              "bittensor",
              "bitcoin_testnet",
              "bitcoin_regtest",
              "ethereum_sepolia",
              "ethereum_hoodi",
              "stacks",
              "crypto_org_croeseid",
              "solana_testnet",
              "solana_devnet",
              "filecoin",
              "internet_computer",
              "mina",
              "injective",
              "casper",
              "sonic",
              "arbitrum",
              "arbitrum_sepolia",
              "cronos",
              "core",
              "fantom",
              "flare",
              "songbird",
              "moonbeam",
              "rsk",
              "bittorrent",
              "optimism",
              "optimism_sepolia",
              "energy_web",
              "astar",
              "metis",
              "boba",
              "moonriver",
              "velas_evm",
              "syscoin",
              "telos_evm",
              "berachain",
              "sei_evm",
              "hyperevm",
              "arc",
              "arc_testnet",
              "polygon_zk_evm",
              "polygon_zk_evm_testnet",
              "base",
              "base_sepolia",
              "mantle",
              "mantle_sepolia",
              "klaytn",
              "klaytn_baobab",
              "neon_evm",
              "lukso",
              "linea",
              "linea_sepolia",
              "blast",
              "blast_sepolia",
              "scroll",
              "scroll_sepolia",
              "shape",
              "story",
              "etherlink",
              "zksync",
              "zksync_sepolia",
              "binance_beacon_chain",
              "mantra",
              "xion",
              "zenrock",
              "sui",
              "sui_testnet",
              "babylon",
              "monad",
              "monad_testnet",
              "somnia",
              "zero_gravity",
              "aleo",
              "aleo_testnet",
              "unichain",
              "unichain_sepolia",
              "robinhood",
              "robinhood_testnet",
              "groestcoin",
              "LBRY",
              "osmo"
            ]
          }
        },
        {
          "type": "string",
          "const": "*"
        }
      ],
      "errorMessage": {
        "oneOf": "Must be type of array with a least 1 value or a string equal to \"*\""
      }
    },
    "featureFlags": {
      "oneOf": [
        {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "type": "string"
          }
        },
        {
          "type": "string",
          "const": "*"
        }
      ],
      "errorMessage": {
        "oneOf": "Must be type of array with a least 1 value or a string equal to \"*\""
      }
    },
    "highlight": {
      "type": "boolean"
    },
    "overrides": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "dapp": {
      "type": "object",
      "properties": {
        "nanoApp": {
          "minLength": 1,
          "maxLength": 50,
          "type": "string"
        },
        "networks": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "examples": [
                  "aptos",
                  "aptos_testnet",
                  "adi",
                  "near",
                  "aeternity",
                  "aion",
                  "akroma",
                  "algorand",
                  "ark",
                  "atheios",
                  "avalanche_c_chain",
                  "avalanche_c_chain_fuji",
                  "axelar",
                  "banano",
                  "bitcoin",
                  "bitcoin_cash",
                  "bitcoin_gold",
                  "bitcoin_private",
                  "bitlayer",
                  "bsc",
                  "callisto",
                  "canton_network",
                  "canton_network_testnet",
                  "canton_network_devnet",
                  "cardano",
                  "cardano_testnet",
                  "celo",
                  "clubcoin",
                  "concordium",
                  "concordium_testnet",
                  "coreum",
                  "cosmos",
                  "cosmos_testnet",
                  "dash",
                  "decred",
                  "desmos",
                  "dexon",
                  "digibyte",
                  "dogecoin",
                  "dydx",
                  "elastos",
                  "ellaism",
                  "eos",
                  "ethereum",
                  "ethereum_classic",
                  "ether1",
                  "ethergem",
                  "ethersocial",
                  "expanse",
                  "factom",
                  "fic",
                  "flow",
                  "game_credits",
                  "gochain",
                  "groestlcoin",
                  "hcash",
                  "hedera",
                  "hedera_testnet",
                  "helium",
                  "hpb",
                  "hycon",
                  "icon",
                  "icon_berlin_testnet",
                  "iota",
                  "iov",
                  "kaspa",
                  "kin",
                  "komodo",
                  "kusama",
                  "lbry",
                  "litecoin",
                  "lisk",
                  "mix",
                  "monero",
                  "elrond",
                  "musicoin",
                  "nano",
                  "nem",
                  "neo",
                  "nervos",
                  "nimiq",
                  "nix",
                  "nos",
                  "nyx",
                  "ontology",
                  "particl",
                  "persistence",
                  "pirl",
                  "poa",
                  "polkadot",
                  "assethub_polkadot",
                  "polygon",
                  "polygon_amoy",
                  "poswallet",
                  "qrl",
                  "qtum",
                  "quicksilver",
                  "ravencoin",
                  "ripple",
                  "rise",
                  "reosc",
                  "resistance",
                  "secret_network",
                  "solana",
                  "stakenet",
                  "stargaze",
                  "stratis",
                  "stellar",
                  "osmosis",
                  "shyft",
                  "stride",
                  "tezos",
                  "thundercore",
                  "tomo",
                  "ton",
                  "tron",
                  "ubiq",
                  "umee",
                  "vechain",
                  "wanchain",
                  "waves",
                  "zcash",
                  "zclassic",
                  "zcoin",
                  "zencash",
                  "zilliqa",
                  "crypto_org",
                  "westend",
                  "assethub_westend",
                  "bittensor",
                  "bitcoin_testnet",
                  "bitcoin_regtest",
                  "ethereum_sepolia",
                  "ethereum_hoodi",
                  "stacks",
                  "crypto_org_croeseid",
                  "solana_testnet",
                  "solana_devnet",
                  "filecoin",
                  "internet_computer",
                  "mina",
                  "injective",
                  "casper",
                  "sonic",
                  "arbitrum",
                  "arbitrum_sepolia",
                  "cronos",
                  "core",
                  "fantom",
                  "flare",
                  "songbird",
                  "moonbeam",
                  "rsk",
                  "bittorrent",
                  "optimism",
                  "optimism_sepolia",
                  "energy_web",
                  "astar",
                  "metis",
                  "boba",
                  "moonriver",
                  "velas_evm",
                  "syscoin",
                  "telos_evm",
                  "berachain",
                  "sei_evm",
                  "hyperevm",
                  "arc",
                  "arc_testnet",
                  "polygon_zk_evm",
                  "polygon_zk_evm_testnet",
                  "base",
                  "base_sepolia",
                  "mantle",
                  "mantle_sepolia",
                  "klaytn",
                  "klaytn_baobab",
                  "neon_evm",
                  "lukso",
                  "linea",
                  "linea_sepolia",
                  "blast",
                  "blast_sepolia",
                  "scroll",
                  "scroll_sepolia",
                  "shape",
                  "story",
                  "etherlink",
                  "zksync",
                  "zksync_sepolia",
                  "binance_beacon_chain",
                  "mantra",
                  "xion",
                  "zenrock",
                  "sui",
                  "sui_testnet",
                  "babylon",
                  "monad",
                  "monad_testnet",
                  "somnia",
                  "zero_gravity",
                  "aleo",
                  "aleo_testnet",
                  "unichain",
                  "unichain_sepolia",
                  "robinhood",
                  "robinhood_testnet",
                  "groestcoin",
                  "LBRY",
                  "osmo"
                ]
              },
              "chainID": {
                "type": "number"
              },
              "nodeURL": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "currency",
              "chainID",
              "nodeURL"
            ],
            "additionalProperties": {
              "not": true,
              "errorMessage": "extra property are not allowed, please remove the property ${0#}"
            }
          }
        },
        "provider": {
          "const": "evm"
        }
      },
      "required": [
        "nanoApp",
        "networks",
        "provider"
      ]
    },
    "content": {
      "type": "object",
      "properties": {
        "cta": {
          "type": "object",
          "properties": {
            "en": {
              "type": "string",
              "maxLength": 40
            }
          }
        },
        "subtitle": {
          "type": "object",
          "properties": {
            "en": {
              "type": "string"
            }
          }
        },
        "shortDescription": {
          "type": "object",
          "properties": {
            "en": {
              "type": "string"
            }
          }
        },
        "description": {
          "type": "object",
          "properties": {
            "en": {
              "type": "string"
            }
          }
        }
      },
      "required": [
        "shortDescription",
        "description"
      ],
      "additionalProperties": {
        "not": true,
        "errorMessage": "extra property are not allowed, please remove the property ${0#}"
      }
    },
    "permissions": {
      "type": "array",
      "minItems": 0,
      "items": {
        "type": "string"
      }
    },
    "domains": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "errorMessage": {}
      }
    },
    "visibility": {
      "type": "string",
      "enum": [
        "complete",
        "searchable",
        "deep"
      ]
    },
    "params": {
      "type": "object"
    },
    "storage": {
      "type": "array",
      "minItems": 0,
      "items": {
        "type": "string"
      }
    }
  },
  "if": {
    "properties": {
      "url": {
        "type": "string",
        "pattern": ".*dapp-browser.apps.ledger.com.*"
      }
    }
  },
  "then": {
    "properties": {
      "params": {
        "type": "object",
        "properties": {
          "dappUrl": {
            "type": "string",
            "format": "uri"
          },
          "nanoApp": {
            "minLength": 1,
            "maxLength": 50,
            "type": "string"
          },
          "dappName": {
            "minLength": 1,
            "maxLength": 50,
            "type": "string"
          },
          "networks": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
              "type": "object",
              "properties": {
                "currency": {
                  "type": "string",
                  "examples": [
                    "aptos",
                    "aptos_testnet",
                    "adi",
                    "near",
                    "aeternity",
                    "aion",
                    "akroma",
                    "algorand",
                    "ark",
                    "atheios",
                    "avalanche_c_chain",
                    "avalanche_c_chain_fuji",
                    "axelar",
                    "banano",
                    "bitcoin",
                    "bitcoin_cash",
                    "bitcoin_gold",
                    "bitcoin_private",
                    "bitlayer",
                    "bsc",
                    "callisto",
                    "canton_network",
                    "canton_network_testnet",
                    "canton_network_devnet",
                    "cardano",
                    "cardano_testnet",
                    "celo",
                    "clubcoin",
                    "concordium",
                    "concordium_testnet",
                    "coreum",
                    "cosmos",
                    "cosmos_testnet",
                    "dash",
                    "decred",
                    "desmos",
                    "dexon",
                    "digibyte",
                    "dogecoin",
                    "dydx",
                    "elastos",
                    "ellaism",
                    "eos",
                    "ethereum",
                    "ethereum_classic",
                    "ether1",
                    "ethergem",
                    "ethersocial",
                    "expanse",
                    "factom",
                    "fic",
                    "flow",
                    "game_credits",
                    "gochain",
                    "groestlcoin",
                    "hcash",
                    "hedera",
                    "hedera_testnet",
                    "helium",
                    "hpb",
                    "hycon",
                    "icon",
                    "icon_berlin_testnet",
                    "iota",
                    "iov",
                    "kaspa",
                    "kin",
                    "komodo",
                    "kusama",
                    "lbry",
                    "litecoin",
                    "lisk",
                    "mix",
                    "monero",
                    "elrond",
                    "musicoin",
                    "nano",
                    "nem",
                    "neo",
                    "nervos",
                    "nimiq",
                    "nix",
                    "nos",
                    "nyx",
                    "ontology",
                    "particl",
                    "persistence",
                    "pirl",
                    "poa",
                    "polkadot",
                    "assethub_polkadot",
                    "polygon",
                    "polygon_amoy",
                    "poswallet",
                    "qrl",
                    "qtum",
                    "quicksilver",
                    "ravencoin",
                    "ripple",
                    "rise",
                    "reosc",
                    "resistance",
                    "secret_network",
                    "solana",
                    "stakenet",
                    "stargaze",
                    "stratis",
                    "stellar",
                    "osmosis",
                    "shyft",
                    "stride",
                    "tezos",
                    "thundercore",
                    "tomo",
                    "ton",
                    "tron",
                    "ubiq",
                    "umee",
                    "vechain",
                    "wanchain",
                    "waves",
                    "zcash",
                    "zclassic",
                    "zcoin",
                    "zencash",
                    "zilliqa",
                    "crypto_org",
                    "westend",
                    "assethub_westend",
                    "bittensor",
                    "bitcoin_testnet",
                    "bitcoin_regtest",
                    "ethereum_sepolia",
                    "ethereum_hoodi",
                    "stacks",
                    "crypto_org_croeseid",
                    "solana_testnet",
                    "solana_devnet",
                    "filecoin",
                    "internet_computer",
                    "mina",
                    "injective",
                    "casper",
                    "sonic",
                    "arbitrum",
                    "arbitrum_sepolia",
                    "cronos",
                    "core",
                    "fantom",
                    "flare",
                    "songbird",
                    "moonbeam",
                    "rsk",
                    "bittorrent",
                    "optimism",
                    "optimism_sepolia",
                    "energy_web",
                    "astar",
                    "metis",
                    "boba",
                    "moonriver",
                    "velas_evm",
                    "syscoin",
                    "telos_evm",
                    "berachain",
                    "sei_evm",
                    "hyperevm",
                    "arc",
                    "arc_testnet",
                    "polygon_zk_evm",
                    "polygon_zk_evm_testnet",
                    "base",
                    "base_sepolia",
                    "mantle",
                    "mantle_sepolia",
                    "klaytn",
                    "klaytn_baobab",
                    "neon_evm",
                    "lukso",
                    "linea",
                    "linea_sepolia",
                    "blast",
                    "blast_sepolia",
                    "scroll",
                    "scroll_sepolia",
                    "shape",
                    "story",
                    "etherlink",
                    "zksync",
                    "zksync_sepolia",
                    "binance_beacon_chain",
                    "mantra",
                    "xion",
                    "zenrock",
                    "sui",
                    "sui_testnet",
                    "babylon",
                    "monad",
                    "monad_testnet",
                    "somnia",
                    "zero_gravity",
                    "aleo",
                    "aleo_testnet",
                    "unichain",
                    "unichain_sepolia",
                    "robinhood",
                    "robinhood_testnet",
                    "groestcoin",
                    "LBRY",
                    "osmo"
                  ]
                },
                "chainID": {
                  "type": "number"
                },
                "nodeURL": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "required": [
                "currency",
                "chainID",
                "nodeURL"
              ],
              "additionalProperties": {
                "not": true,
                "errorMessage": "extra property are not allowed, please remove the property ${0#}"
              }
            }
          }
        },
        "required": [
          "dappUrl",
          "nanoApp",
          "dappName",
          "networks"
        ],
        "additionalProperties": {
          "not": true,
          "errorMessage": "extra property are not allowed, please remove the property ${0#}"
        }
      }
    },
    "required": [
      "params"
    ]
  },
  "required": [
    "id",
    "name",
    "url",
    "platforms",
    "apiVersion",
    "manifestVersion",
    "categories",
    "currencies",
    "content",
    "permissions",
    "homepageUrl",
    "branch",
    "domains",
    "visibility"
  ],
  "additionalProperties": {
    "not": true,
    "errorMessage": "extra property are not allowed, please remove the property ${0#}"
  }
}