changedInput schema / properties / ownToken / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "chainId": {
- "anyOf": [
- {
- "enum": [
- "1",
- "50",
- "56",
- "8453",
- "43114",
- "137",
- "42161",
- "10",
- "88888",
- "1868",
- "98866",
- "480",
- "146",
- "100",
- "5000",
- "534352",
- "59144",
- "324",
- "81457",
- "42220",
- "204",
- "130",
- "57073",
- "1329",
- "80094",
- "33139",
- "4663",
- "167000",
- "2020",
- "88",
- "5042"
- ],
- "type": "string"
- },
- {
- "type": "integer"
- },
- {
- "const": "solana",
- "type": "string"
- },
- {
- "const": "xrpl",
- "type": "string"
- }
- ],
- "description": "Merchant onboarding chain: one of the EVM chain IDs listed in this schema, 'solana', or 'xrpl'. Merchant token and NFT configs are not available on Bitcoin, Tron, Stellar or Sui."
- },
- "contractAddress": {
- "description": "Token contract address. For XRPL: use r-address issuer for trust line tokens, or 'native' for XRP.",
- "maxLength": 200,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9:_]+$",
- "type": "string"
- },
- "currency": {
- "description": "XRPL trust line currency code (e.g. 'RLUSD', 'USDC', or 'USD'). Required for XRPL trust line tokens. Standard codes ≤ 3 chars; longer names like 'RLUSD' are auto hex-encoded by the API.",
- "maxLength": 40,
- "pattern": "^[A-Za-z0-9]+$",
- "type": "string"
- },
- "decimals": {
- "description": "Token decimals (0-18). Required: the merchant registry stores it with each token and rejects a config without it. 6 for USDC, 18 for most ERC-20s.",
- "maximum": 18,
- "minimum": 0,
- "type": "integer"
- },
- "symbol": {
- "description": "Token symbol, e.g. 'UNI'",
- "maxLength": 10,
- "type": "string"
- },
- "tiers": {
- "description": "1-4 discount tiers",
- "items": {
- "additionalProperties": false,
- "properties": {
- "discount": {
- "description": "Discount percentage (1-50)",
- "maximum": 50,
- "minimum": 1,
- "type": "integer"
- },
- "name": {
- "description": "Tier name, e.g. 'Gold', 'Silver'",
- "maxLength": 30,
- "type": "string"
- },
- "threshold": {
- "description": "Minimum token balance for this tier",
- "exclusiveMinimum": 0,
- "type": "number"
- }
- },
- "required": [
- "name",
- "threshold",
- "discount"
- ],
- "type": "object"
- },
- "maxItems": 4,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "symbol",
- "chainId",
- "contractAddress",
- "decimals",
- "tiers"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "alsoOn": {
+ "description": "Optional: the same token on other networks, up to 9 (EVM chains and Solana; not the XRP Ledger, not a native coin). The store decides which deployments count as the same token. Each network's balance is read in that token's own decimals there, the balances are added exactly, and the tier is awarded once. A read that fails on any listed network refuses the whole check (rpc_failure), never a partial total. When re-saving, carry each token's alsoOn through, or its other networks are removed.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "chainId": {
+ "anyOf": [
+ {
+ "exclusiveMinimum": 0,
+ "type": "integer"
+ },
+ {
+ "const": "solana",
+ "type": "string"
+ }
+ ],
+ "description": "EVM chain ID, or 'solana'"
+ },
+ "contractAddress": {
+ "description": "The same token's contract (EVM) or mint (Solana) on that network; not 'native'",
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "chainId",
+ "contractAddress"
+ ],
+ "type": "object"
+ },
+ "maxItems": 9,
+ "type": "array"
+ },
+ "chainId": {
+ "anyOf": [
+ {
+ "enum": [
+ "1",
+ "50",
+ "56",
+ "8453",
+ "43114",
+ "137",
+ "42161",
+ "10",
+ "88888",
+ "1868",
+ "98866",
+ "480",
+ "146",
+ "100",
+ "5000",
+ "534352",
+ "59144",
+ "324",
+ "81457",
+ "42220",
+ "204",
+ "130",
+ "57073",
+ "1329",
+ "80094",
+ "33139",
+ "4663",
+ "167000",
+ "2020",
+ "88",
+ "5042"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "integer"
+ },
+ {
+ "const": "solana",
+ "type": "string"
+ },
+ {
+ "const": "xrpl",
+ "type": "string"
+ }
+ ],
+ "description": "Merchant onboarding chain: one of the EVM chain IDs listed in this schema, 'solana', or 'xrpl'. Merchant token and NFT configs are not available on Bitcoin, Tron, Stellar or Sui."
+ },
+ "contractAddress": {
+ "description": "Token contract address. For XRPL: use r-address issuer for trust line tokens, or 'native' for XRP.",
+ "maxLength": 200,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9:_]+$",
+ "type": "string"
+ },
+ "currency": {
+ "description": "XRPL trust line currency code: a 3-character code (e.g. 'USD'), a token name of 1 to 20 printable ASCII characters (e.g. 'RLUSD'), or a 40-character hex code. Case-sensitive: send it exactly as the issuer created it. 'XRP' is the native coin and is not accepted here: use contractAddress 'native'. Required for XRPL trust line tokens.",
+ "maxLength": 40,
+ "minLength": 1,
+ "pattern": "^[\\x20-\\x7E]+$",
+ "type": "string"
+ },
+ "decimals": {
+ "description": "Token decimals (0-18). Required: the merchant registry stores it with each token and rejects a config without it. 6 for USDC, 18 for most ERC-20s.",
+ "maximum": 18,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "enabled": {
+ "description": "true or false, never a string. false switches the own token off; leave it out or send true to keep it on.",
+ "type": "boolean"
+ },
+ "logo": {
+ "description": "Logo URL for the token, shown in the public directory (max 500 characters). Optional.",
+ "maxLength": 500,
+ "type": "string"
+ },
+ "name": {
+ "description": "Display name of the token, shown in the public directory (max 100 characters). Optional.",
+ "maxLength": 100,
+ "type": "string"
+ },
+ "symbol": {
+ "description": "Token symbol, e.g. 'UNI'",
+ "maxLength": 10,
+ "type": "string"
+ },
+ "tiers": {
+ "description": "1-4 discount tiers",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "discount": {
+ "description": "Discount percentage: a whole number from 1 to 50, no decimals",
+ "maximum": 50,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "description": "Tier name, e.g. 'Gold', 'Silver'",
+ "maxLength": 30,
+ "type": "string"
+ },
+ "threshold": {
+ "description": "Minimum token balance for this tier",
+ "exclusiveMinimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "name",
+ "threshold",
+ "discount"
+ ],
+ "type": "object"
+ },
+ "maxItems": 4,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "symbol",
+ "chainId",
+ "contractAddress",
+ "decimals",
+ "tiers"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]