diff --git a/json/l2-token-list-schema.json b/json/l2-token-list-schema.json index c1a3041..d81d99c 100644 --- a/json/l2-token-list-schema.json +++ b/json/l2-token-list-schema.json @@ -1,82 +1,380 @@ { - "name": " ww w", - "timestamp": "08/05/2006", - "version": { - "major": 1, - "minor": 0, - "patch": 0 - }, - "tokens": [ - { - "chainId": 1, - "address": "0xB48eb7bebafB8AaDa05cb067B5f5f2Dedf8CDDcc", - "decimals": 168, - "name": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "symbol": "ABCDEFGHIJKLMNOP", - "logoURI": "ABCDEFGH", - "tags": [ - "w", - "www", - "wwwwwww", - "w", - "w" + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://uniswap.org/tokenlist.schema.json", + "title": "Uniswap Token List", + "description": "Schema for lists of tokens compatible with the Uniswap Interface", + "definitions": { + "Version": { + "type": "object", + "description": "The version of the list, used in change detection", + "examples": [ + { + "major": 1, + "minor": 0, + "patch": 0 + } ], - "extensions": {} + "additionalProperties": false, + "properties": { + "major": { + "type": "integer", + "description": "The major version of the list. Must be incremented when tokens are removed from the list or token addresses are changed.", + "minimum": 0, + "examples": [ + 1, + 2 + ] + }, + "minor": { + "type": "integer", + "description": "The minor version of the list. Must be incremented when tokens are added to the list.", + "minimum": 0, + "examples": [ + 0, + 1 + ] + }, + "patch": { + "type": "integer", + "description": "The patch version of the list. Must be incremented for any changes to the list.", + "minimum": 0, + "examples": [ + 0, + 1 + ] + } + }, + "required": [ + "major", + "minor", + "patch" + ] }, - { - "chainId": 2, - "address": "0xB82FB37a16849A4cbE6Bf02549bddaBf6E94fab8", - "decimals": 24, - "name": "ABCDEFGHIJKLMNOPQRSTUVWXYZAB", - "symbol": "ABCDEFGHIJK", - "logoURI": "ABCDEFGHIJKLM", - "tags": [ - "www", - "w" - ], - "extensions": {} + "TagIdentifier": { + "type": "string", + "description": "The unique identifier of a tag", + "minLength": 1, + "maxLength": 10, + "pattern": "^[\\w]+$", + "examples": [ + "compound", + "stablecoin" + ] }, - { - "chainId": 3, - "address": "0x4Ac1dCACA73dba8e2eDa9AcdBeE9E7A8d1709Afc", - "decimals": 203, - "name": "ABCDEF", - "symbol": "ABCDE", - "logoURI": "ABCDEFGHIJKLMNOPQRST", - "tags": [ - "w" - ], - "extensions": {} + "ExtensionIdentifier": { + "type": "string", + "description": "The name of a token extension property", + "minLength": 1, + "maxLength": 40, + "pattern": "^[\\w]+$", + "examples": [ + "color", + "is_fee_on_transfer", + "aliases" + ] }, - { - "chainId": 4, - "address": "0x2fd27CaEE3BdBA75bd6DFFfDfA2eBD25AD9E5cfe", - "decimals": 58, - "name": "ABCDEF", - "symbol": "ABCDEFGHI", - "logoURI": "ABCD", - "tags": [ - "w" - ], - "extensions": {} + "ExtensionMap": { + "type": "object", + "description": "An object containing any arbitrary or vendor-specific token metadata", + "maxProperties": 10, + "propertyNames": { + "$ref": "#/definitions/ExtensionIdentifier" + }, + "additionalProperties": { + "$ref": "#/definitions/ExtensionValue" + }, + "examples": [ + { + "color": "#000000", + "is_verified_by_me": true + }, + { + "x-bridged-addresses-by-chain": { + "1": { + "bridgeAddress": "0x4200000000000000000000000000000000000010", + "tokenAddress": "0x4200000000000000000000000000000000000010" + } + } + } + ] + }, + "ExtensionPrimitiveValue": { + "anyOf": [ + { + "type": "string", + "minLength": 1, + "maxLength": 42, + "examples": [ + "#00000" + ] + }, + { + "type": "boolean", + "examples": [ + true + ] + }, + { + "type": "number", + "examples": [ + 15 + ] + }, + { + "type": "null" + } + ] }, - { - "chainId": 5, - "address": "0xACf9cE1fD0Cc4BF0BadA2678F36aF2FF3F889c0C", - "decimals": 186, - "name": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", - "symbol": "ABCDEFGHIJKL", - "logoURI": "ABCDEFGHIJKLMNOPQRSTUV", - "tags": [ - "w", - "www" + "ExtensionValue": { + "anyOf": [ + { + "$ref": "#/definitions/ExtensionPrimitiveValue" + }, + { + "type": "object", + "maxProperties": 10, + "propertyNames": { + "$ref": "#/definitions/ExtensionIdentifier" + }, + "additionalProperties": { + "$ref": "#/definitions/ExtensionValueInner0" + } + } + ] + }, + "ExtensionValueInner0": { + "anyOf": [ + { + "$ref": "#/definitions/ExtensionPrimitiveValue" + }, + { + "type": "object", + "maxProperties": 10, + "propertyNames": { + "$ref": "#/definitions/ExtensionIdentifier" + }, + "additionalProperties": { + "$ref": "#/definitions/ExtensionValueInner1" + } + } + ] + }, + "ExtensionValueInner1": { + "anyOf": [ + { + "$ref": "#/definitions/ExtensionPrimitiveValue" + } + ] + }, + "TagDefinition": { + "type": "object", + "description": "Definition of a tag that can be associated with a token via its identifier", + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "The name of the tag", + "pattern": "^[ \\w]+$", + "minLength": 1, + "maxLength": 20 + }, + "description": { + "type": "string", + "description": "A user-friendly description of the tag", + "pattern": "^[ \\w\\.,:]+$", + "minLength": 1, + "maxLength": 200 + } + }, + "required": [ + "name", + "description" ], - "extensions": {} + "examples": [ + { + "name": "Stablecoin", + "description": "A token with value pegged to another asset" + } + ] + }, + "TokenInfo": { + "type": "object", + "description": "Metadata for a single token in a token list", + "additionalProperties": false, + "properties": { + "chainId": { + "type": "integer", + "description": "The chain ID of the Ethereum network where this token is deployed", + "minimum": 1, + "examples": [ + 1, + 42 + ] + }, + "address": { + "type": "string", + "description": "The checksummed address of the token on the specified chain ID", + "pattern": "^0x[a-fA-F0-9]{40}$", + "examples": [ + "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + ] + }, + "decimals": { + "type": "integer", + "description": "The number of decimals for the token balance", + "minimum": 0, + "maximum": 255, + "examples": [ + 18 + ] + }, + "name": { + "type": "string", + "description": "The name of the token", + "minLength": 0, + "maxLength": 40, + "anyOf": [ + { + "const": "" + }, + { + "pattern": "^[ \\S+]+$" + } + ], + "examples": [ + "USD Coin" + ] + }, + "symbol": { + "type": "string", + "description": "The symbol for the token", + "minLength": 0, + "maxLength": 20, + "anyOf": [ + { + "const": "" + }, + { + "pattern": "^\\S+$" + } + ], + "examples": [ + "USDC" + ] + }, + "logoURI": { + "type": "string", + "description": "A URI to the token logo asset; if not set, interface will attempt to find a logo based on the token address; suggest SVG or PNG of size 64x64", + "format": "uri", + "examples": [ + "ipfs://QmXfzKRvjZz3u5JRgC4v5mGVbm9ahrUiB4DgzHBsnWbTMM" + ] + }, + "tags": { + "type": "array", + "description": "An array of tag identifiers associated with the token; tags are defined at the list level", + "items": { + "$ref": "#/definitions/TagIdentifier" + }, + "maxItems": 10, + "examples": [ + "stablecoin", + "compound" + ] + }, + "extensions": { + "$ref": "#/definitions/ExtensionMap" + } + }, + "required": [ + "chainId", + "address", + "decimals", + "name", + "symbol" + ] } - ], - "keywords": [ - " w " - ], - "tags": {}, - "logoURI": "ABCDEFGHIJKLMNOPQR" + }, + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "The name of the token list", + "minLength": 1, + "maxLength": 30, + "pattern": "^[\\w ]+$", + "examples": [ + "My Token List" + ] + }, + "timestamp": { + "type": "string", + "format": "date-time", + "description": "The timestamp of this list version; i.e. when this immutable version of the list was created" + }, + "version": { + "$ref": "#/definitions/Version" + }, + "tokens": { + "type": "array", + "description": "The list of tokens included in the list", + "items": { + "$ref": "#/definitions/TokenInfo" + }, + "minItems": 1, + "maxItems": 10000 + }, + "keywords": { + "type": "array", + "description": "Keywords associated with the contents of the list; may be used in list discoverability", + "items": { + "type": "string", + "description": "A keyword to describe the contents of the list", + "minLength": 1, + "maxLength": 20, + "pattern": "^[\\w ]+$", + "examples": [ + "compound", + "lending", + "personal tokens" + ] + }, + "maxItems": 20, + "uniqueItems": true + }, + "tags": { + "type": "object", + "description": "A mapping of tag identifiers to their name and description", + "propertyNames": { + "$ref": "#/definitions/TagIdentifier" + }, + "additionalProperties": { + "$ref": "#/definitions/TagDefinition" + }, + "maxProperties": 20, + "examples": [ + { + "stablecoin": { + "name": "Stablecoin", + "description": "A token with value pegged to another asset" + } + } + ] + }, + "logoURI": { + "type": "string", + "description": "A URI for the logo of the token list; prefer SVG or PNG of size 256x256", + "format": "uri", + "examples": [ + "ipfs://QmXfzKRvjZz3u5JRgC4v5mGVbm9ahrUiB4DgzHBsnWbTMM" + ] + } + }, + "required": [ + "name", + "timestamp", + "version", + "tokens" + ] } \ No newline at end of file diff --git a/json/l2-token-list.json b/json/l2-token-list.json index d81d99c..c1a3041 100644 --- a/json/l2-token-list.json +++ b/json/l2-token-list.json @@ -1,380 +1,82 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://uniswap.org/tokenlist.schema.json", - "title": "Uniswap Token List", - "description": "Schema for lists of tokens compatible with the Uniswap Interface", - "definitions": { - "Version": { - "type": "object", - "description": "The version of the list, used in change detection", - "examples": [ - { - "major": 1, - "minor": 0, - "patch": 0 - } + "name": " ww w", + "timestamp": "08/05/2006", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "tokens": [ + { + "chainId": 1, + "address": "0xB48eb7bebafB8AaDa05cb067B5f5f2Dedf8CDDcc", + "decimals": 168, + "name": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", + "symbol": "ABCDEFGHIJKLMNOP", + "logoURI": "ABCDEFGH", + "tags": [ + "w", + "www", + "wwwwwww", + "w", + "w" ], - "additionalProperties": false, - "properties": { - "major": { - "type": "integer", - "description": "The major version of the list. Must be incremented when tokens are removed from the list or token addresses are changed.", - "minimum": 0, - "examples": [ - 1, - 2 - ] - }, - "minor": { - "type": "integer", - "description": "The minor version of the list. Must be incremented when tokens are added to the list.", - "minimum": 0, - "examples": [ - 0, - 1 - ] - }, - "patch": { - "type": "integer", - "description": "The patch version of the list. Must be incremented for any changes to the list.", - "minimum": 0, - "examples": [ - 0, - 1 - ] - } - }, - "required": [ - "major", - "minor", - "patch" - ] - }, - "TagIdentifier": { - "type": "string", - "description": "The unique identifier of a tag", - "minLength": 1, - "maxLength": 10, - "pattern": "^[\\w]+$", - "examples": [ - "compound", - "stablecoin" - ] - }, - "ExtensionIdentifier": { - "type": "string", - "description": "The name of a token extension property", - "minLength": 1, - "maxLength": 40, - "pattern": "^[\\w]+$", - "examples": [ - "color", - "is_fee_on_transfer", - "aliases" - ] - }, - "ExtensionMap": { - "type": "object", - "description": "An object containing any arbitrary or vendor-specific token metadata", - "maxProperties": 10, - "propertyNames": { - "$ref": "#/definitions/ExtensionIdentifier" - }, - "additionalProperties": { - "$ref": "#/definitions/ExtensionValue" - }, - "examples": [ - { - "color": "#000000", - "is_verified_by_me": true - }, - { - "x-bridged-addresses-by-chain": { - "1": { - "bridgeAddress": "0x4200000000000000000000000000000000000010", - "tokenAddress": "0x4200000000000000000000000000000000000010" - } - } - } - ] - }, - "ExtensionPrimitiveValue": { - "anyOf": [ - { - "type": "string", - "minLength": 1, - "maxLength": 42, - "examples": [ - "#00000" - ] - }, - { - "type": "boolean", - "examples": [ - true - ] - }, - { - "type": "number", - "examples": [ - 15 - ] - }, - { - "type": "null" - } - ] + "extensions": {} }, - "ExtensionValue": { - "anyOf": [ - { - "$ref": "#/definitions/ExtensionPrimitiveValue" - }, - { - "type": "object", - "maxProperties": 10, - "propertyNames": { - "$ref": "#/definitions/ExtensionIdentifier" - }, - "additionalProperties": { - "$ref": "#/definitions/ExtensionValueInner0" - } - } - ] - }, - "ExtensionValueInner0": { - "anyOf": [ - { - "$ref": "#/definitions/ExtensionPrimitiveValue" - }, - { - "type": "object", - "maxProperties": 10, - "propertyNames": { - "$ref": "#/definitions/ExtensionIdentifier" - }, - "additionalProperties": { - "$ref": "#/definitions/ExtensionValueInner1" - } - } - ] - }, - "ExtensionValueInner1": { - "anyOf": [ - { - "$ref": "#/definitions/ExtensionPrimitiveValue" - } - ] - }, - "TagDefinition": { - "type": "object", - "description": "Definition of a tag that can be associated with a token via its identifier", - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "description": "The name of the tag", - "pattern": "^[ \\w]+$", - "minLength": 1, - "maxLength": 20 - }, - "description": { - "type": "string", - "description": "A user-friendly description of the tag", - "pattern": "^[ \\w\\.,:]+$", - "minLength": 1, - "maxLength": 200 - } - }, - "required": [ - "name", - "description" + { + "chainId": 2, + "address": "0xB82FB37a16849A4cbE6Bf02549bddaBf6E94fab8", + "decimals": 24, + "name": "ABCDEFGHIJKLMNOPQRSTUVWXYZAB", + "symbol": "ABCDEFGHIJK", + "logoURI": "ABCDEFGHIJKLM", + "tags": [ + "www", + "w" ], - "examples": [ - { - "name": "Stablecoin", - "description": "A token with value pegged to another asset" - } - ] - }, - "TokenInfo": { - "type": "object", - "description": "Metadata for a single token in a token list", - "additionalProperties": false, - "properties": { - "chainId": { - "type": "integer", - "description": "The chain ID of the Ethereum network where this token is deployed", - "minimum": 1, - "examples": [ - 1, - 42 - ] - }, - "address": { - "type": "string", - "description": "The checksummed address of the token on the specified chain ID", - "pattern": "^0x[a-fA-F0-9]{40}$", - "examples": [ - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" - ] - }, - "decimals": { - "type": "integer", - "description": "The number of decimals for the token balance", - "minimum": 0, - "maximum": 255, - "examples": [ - 18 - ] - }, - "name": { - "type": "string", - "description": "The name of the token", - "minLength": 0, - "maxLength": 40, - "anyOf": [ - { - "const": "" - }, - { - "pattern": "^[ \\S+]+$" - } - ], - "examples": [ - "USD Coin" - ] - }, - "symbol": { - "type": "string", - "description": "The symbol for the token", - "minLength": 0, - "maxLength": 20, - "anyOf": [ - { - "const": "" - }, - { - "pattern": "^\\S+$" - } - ], - "examples": [ - "USDC" - ] - }, - "logoURI": { - "type": "string", - "description": "A URI to the token logo asset; if not set, interface will attempt to find a logo based on the token address; suggest SVG or PNG of size 64x64", - "format": "uri", - "examples": [ - "ipfs://QmXfzKRvjZz3u5JRgC4v5mGVbm9ahrUiB4DgzHBsnWbTMM" - ] - }, - "tags": { - "type": "array", - "description": "An array of tag identifiers associated with the token; tags are defined at the list level", - "items": { - "$ref": "#/definitions/TagIdentifier" - }, - "maxItems": 10, - "examples": [ - "stablecoin", - "compound" - ] - }, - "extensions": { - "$ref": "#/definitions/ExtensionMap" - } - }, - "required": [ - "chainId", - "address", - "decimals", - "name", - "symbol" - ] - } - }, - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "description": "The name of the token list", - "minLength": 1, - "maxLength": 30, - "pattern": "^[\\w ]+$", - "examples": [ - "My Token List" - ] - }, - "timestamp": { - "type": "string", - "format": "date-time", - "description": "The timestamp of this list version; i.e. when this immutable version of the list was created" - }, - "version": { - "$ref": "#/definitions/Version" - }, - "tokens": { - "type": "array", - "description": "The list of tokens included in the list", - "items": { - "$ref": "#/definitions/TokenInfo" - }, - "minItems": 1, - "maxItems": 10000 + "extensions": {} }, - "keywords": { - "type": "array", - "description": "Keywords associated with the contents of the list; may be used in list discoverability", - "items": { - "type": "string", - "description": "A keyword to describe the contents of the list", - "minLength": 1, - "maxLength": 20, - "pattern": "^[\\w ]+$", - "examples": [ - "compound", - "lending", - "personal tokens" - ] - }, - "maxItems": 20, - "uniqueItems": true + { + "chainId": 3, + "address": "0x4Ac1dCACA73dba8e2eDa9AcdBeE9E7A8d1709Afc", + "decimals": 203, + "name": "ABCDEF", + "symbol": "ABCDE", + "logoURI": "ABCDEFGHIJKLMNOPQRST", + "tags": [ + "w" + ], + "extensions": {} }, - "tags": { - "type": "object", - "description": "A mapping of tag identifiers to their name and description", - "propertyNames": { - "$ref": "#/definitions/TagIdentifier" - }, - "additionalProperties": { - "$ref": "#/definitions/TagDefinition" - }, - "maxProperties": 20, - "examples": [ - { - "stablecoin": { - "name": "Stablecoin", - "description": "A token with value pegged to another asset" - } - } - ] + { + "chainId": 4, + "address": "0x2fd27CaEE3BdBA75bd6DFFfDfA2eBD25AD9E5cfe", + "decimals": 58, + "name": "ABCDEF", + "symbol": "ABCDEFGHI", + "logoURI": "ABCD", + "tags": [ + "w" + ], + "extensions": {} }, - "logoURI": { - "type": "string", - "description": "A URI for the logo of the token list; prefer SVG or PNG of size 256x256", - "format": "uri", - "examples": [ - "ipfs://QmXfzKRvjZz3u5JRgC4v5mGVbm9ahrUiB4DgzHBsnWbTMM" - ] + { + "chainId": 5, + "address": "0xACf9cE1fD0Cc4BF0BadA2678F36aF2FF3F889c0C", + "decimals": 186, + "name": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", + "symbol": "ABCDEFGHIJKL", + "logoURI": "ABCDEFGHIJKLMNOPQRSTUV", + "tags": [ + "w", + "www" + ], + "extensions": {} } - }, - "required": [ - "name", - "timestamp", - "version", - "tokens" - ] + ], + "keywords": [ + " w " + ], + "tags": {}, + "logoURI": "ABCDEFGHIJKLMNOPQR" } \ No newline at end of file