{ "$defs": { "Connected": { "anyOf": [ { "properties": { "api-url": { "description": "The URL of the API endpoint. Should support the standard API routes (e.g. /api/v3).", "format": "uri", "type": "string" }, "http-gateway-url": { "description": "The URL of the HTTP gateway endpoint. Should support prefixing canister IDs as subdomains,\notherwise icp-cli will fall back to ?canisterId= query parameters which are frequently brittle in frontend code.\n\nIf no HTTP gateway endpoint is provided, canister URLs will not be printed in deploy operations.", "format": "uri", "type": [ "string", "null" ] } }, "required": [ "api-url" ], "type": "object" }, { "properties": { "url": { "description": "The URL this network can be reached at.\n\nAssumed to be the URL of both the HTTP gateway (canister-id.domain.com) and API (domain.com/api/v3).", "format": "uri", "type": "string" } }, "required": [ "url" ], "type": "object" } ], "properties": { "root-key": { "$ref": "#/$defs/RootKeySpec", "description": "How to obtain the root key used to verify responses from this network.\n\nOne of:\n- `mainnet`: use the canonical IC mainnet root key (e.g. to reach mainnet\n through a non-default boundary node without repeating the key literal).\n- `fetch`: fetch the root key from the network on each use. This is\n trust-on-first-use and does *not* verify the key's provenance; only use it\n for testnets that you (or someone you trust) operate.\n- a 266-character hex-encoded root key (133 bytes)." } }, "required": [ "root-key" ], "type": "object" }, "Gateway": { "properties": { "bind": { "description": "Network interface for the gateway. Defaults to 127.0.0.1", "type": [ "string", "null" ] }, "domains": { "description": "Domains the gateway should respond to. Automatically includes localhost if applicable.", "items": { "type": "string" }, "type": [ "array", "null" ] }, "port": { "description": "Port for the gateway to listen on. Defaults to 8000", "format": "uint16", "maximum": 65535, "minimum": 0, "type": [ "integer", "null" ] } }, "type": "object" }, "Managed": { "anyOf": [ { "properties": { "args": { "description": "Command line arguments to pass to the container's entrypoint", "items": { "type": "string" }, "type": [ "array", "null" ] }, "entrypoint": { "description": "Entrypoint to use for the container", "items": { "type": "string" }, "type": [ "array", "null" ] }, "environment": { "description": "Environment variables to set in the container in VAR=VALUE format (or VAR to inherit from host)", "items": { "type": "string" }, "type": [ "array", "null" ] }, "extra-hosts": { "description": "Extra hosts entries for Docker networking (e.g. \"host.docker.internal:host-gateway\")", "items": { "type": "string" }, "type": [ "array", "null" ] }, "image": { "description": "The docker image to use for the network", "type": "string" }, "mounts": { "description": "Bind mounts to add to the container in the format relative_host_path:container_path[:options]", "items": { "type": "string" }, "type": [ "array", "null" ] }, "platform": { "description": "The platform to use for the container (e.g. linux/amd64)", "type": [ "string", "null" ] }, "port-mapping": { "description": "Port mappings in the format \"host_port:container_port\"", "items": { "type": "string" }, "type": "array" }, "rm-on-exit": { "description": "Whether to delete the container when the network stops", "type": [ "boolean", "null" ] }, "shm-size": { "description": "The size of /dev/shm in bytes", "format": "int64", "type": [ "integer", "null" ] }, "status-dir": { "description": "The status directory inside the container. Defaults to /app/status", "type": [ "string", "null" ] }, "user": { "description": "The user to run the container as in the format user[:group]", "type": [ "string", "null" ] }, "volumes": { "description": "Volumes to mount into the container in the format name:container_path[:options]", "items": { "type": "string" }, "type": [ "array", "null" ] } }, "required": [ "image", "port-mapping" ], "type": "object" }, { "properties": { "artificial-delay-ms": { "description": "Artificial delay to add to every update call", "format": "uint64", "minimum": 0, "type": [ "integer", "null" ] }, "bitcoind-addr": { "description": "Bitcoin P2P node addresses to connect to (e.g. \"127.0.0.1:18444\")", "items": { "type": "string" }, "type": [ "array", "null" ] }, "dogecoind-addr": { "description": "Dogecoin P2P node addresses to connect to", "items": { "type": "string" }, "type": [ "array", "null" ] }, "gateway": { "anyOf": [ { "$ref": "#/$defs/Gateway" }, { "type": "null" } ], "description": "HTTP gateway configuration" }, "ii": { "description": "Set up the Internet Identity canister. Makes internet identity available at\nid.ai.localhost:", "type": [ "boolean", "null" ] }, "nns": { "description": "Set up the NNS", "type": [ "boolean", "null" ] }, "subnets": { "description": "Configure the list of subnets (one application subnet by default)", "items": { "$ref": "#/$defs/SubnetKind" }, "type": [ "array", "null" ] }, "version": { "description": "The version of icp-cli-network-launcher to use. Defaults to the latest released version. Launcher versions correspond to published PocketIC or IC-OS releases.", "type": [ "string", "null" ] } }, "type": "object" } ], "type": "object" }, "RootKeySpec": { "anyOf": [ { "enum": [ "mainnet", "fetch" ] }, { "pattern": "^[0-9a-f]{266}$" } ], "description": "Root key: \"mainnet\", \"fetch\", or a 266-character hex-encoded key.", "type": "string" }, "SubnetKind": { "enum": [ "application", "system", "verified-application", "bitcoin", "fiduciary", "nns", "sns" ], "type": "string" } }, "$id": "NetworkManifest", "$schema": "https://json-schema.org/draft/2020-12/schema", "description": "Schema for NetworkManifest", "oneOf": [ { "$ref": "#/$defs/Managed", "properties": { "mode": { "const": "managed", "type": "string" } }, "required": [ "mode" ], "type": "object" }, { "$ref": "#/$defs/Connected", "properties": { "mode": { "const": "connected", "type": "string" } }, "required": [ "mode" ], "type": "object" } ], "properties": { "name": { "type": "string" } }, "required": [ "name" ], "title": "NetworkManifest", "type": "object" }