Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@
"dotenv": "^16.6.1",
"ethers": "^6.16.0",
"focus-trap-react": "^11.0.6",
"fuse.js": "^7.1.0",
"github-slugger": "^2.0.0",
"lodash": "^4.17.23",
"marked": "^15.0.12",
Expand Down
184 changes: 155 additions & 29 deletions public/api/ccip/v1/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"info": {
"title": "CCIP Docs config API",
"description": "API for retrieving CCIP chain, token, and lane information.\n\nTo get started quickly, you can download our [Postman Collection](/api/ccip/v1/postman-collection.json) which includes all endpoints and example requests.",
"version": "1.5.0",
"version": "1.6.0",
"contact": {
"name": "File issues",
"url": "https://github.com/smartcontractkit/documentation/issues/new/choose"
Expand Down Expand Up @@ -101,6 +101,25 @@
"default": "false"
},
"description": "When set to 'true', returns detailed fee token information including addresses, names, and decimals instead of just symbol strings"
},
{
"name": "search",
"in": "query",
"schema": {
"type": "string",
"maxLength": 100
},
"description": "Unified search query. Automatically detects query type: selector (>17 digits), chainId (≤17 digits or Solana base58 hash), internalId (kebab-case), or displayName (fuzzy text search). Cannot be combined with chainId, selector, or internalId filters.",
"example": "ethereum"
},
{
"name": "family",
"in": "query",
"schema": {
"type": "string",
"enum": ["evm", "solana", "aptos", "sui", "tron", "canton", "ton", "stellar", "starknet"]
},
"description": "Filter results by chain family. Only effective when using the search parameter."
}
],
"responses": {
Expand Down Expand Up @@ -136,10 +155,11 @@
"tokenAdminRegistry": "0xb22764f98dD05c789929716D677382Df22C05Cb6",
"tokenPoolFactory": "0x17D8a409fE2ceF2d3808bcB61F14aBEFfc28876e",
"chainType": "evm",
"chainFamily": "evm"
"chainFamily": "evm",
"supported": true
}
},
"svm": {
"solana": {
"solana-devnet": {
"chainId": "solana-devnet",
"displayName": "Solana Devnet",
Expand All @@ -150,7 +170,52 @@
"rmn": "CRmNVnB7S6SqEPFG6m9dVp9fJJCjr3TC2TiAWB3RqNod",
"feeQuoter": "FqbCVbS7a4ndxs9xZ8UmfL6LQsUhAJNkWxW3duJRrCWD",
"chainType": "solana",
"chainFamily": "svm"
"chainFamily": "solana",
"supported": true
}
}
},
"ignored": []
}
},
"search": {
"summary": "Search response (includes both supported and unsupported chains)",
"value": {
"metadata": {
"environment": "testnet",
"timestamp": "2024-03-14T12:00:00Z",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"ignoredChainCount": 0,
"validChainCount": 2,
"searchQuery": "solana",
"searchType": "displayName"
},
"data": {
"solana": {
"solana-devnet": {
"chainId": "EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG",
"displayName": "Solana Devnet",
"selector": "16015286601757825753",
"internalId": "solana-devnet",
"feeTokens": ["LINK", "SOL"],
"router": "CCiPv7hcmEqNdMdJgmHDJmEJyCkBgLqxmcf87R1Gho6H",
"rmn": "CRmNVnB7S6SqEPFG6m9dVp9fJJCjr3TC2TiAWB3RqNod",
"feeQuoter": "FqbCVbS7a4ndxs9xZ8UmfL6LQsUhAJNkWxW3duJRrCWD",
"chainType": "solana",
"chainFamily": "solana",
"supported": true
},
"solana-testnet": {
"chainId": "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",
"displayName": "Solana Testnet",
"selector": "6302590918974934319",
"internalId": "solana-testnet",
"feeTokens": [],
"router": "",
"rmn": "",
"chainType": "solana",
"chainFamily": "solana",
"supported": false
}
}
},
Expand Down Expand Up @@ -200,7 +265,8 @@
"tokenAdminRegistry": "0xb22764f98dD05c789929716D677382Df22C05Cb6",
"tokenPoolFactory": "0x17D8a409fE2ceF2d3808bcB61F14aBEFfc28876e",
"chainType": "evm",
"chainFamily": "evm"
"chainFamily": "evm",
"supported": true
}
}
},
Expand Down Expand Up @@ -576,9 +642,22 @@
"type": "integer",
"minimum": 0,
"description": "Number of valid chains in the response"
},
"searchQuery": {
"type": "string",
"description": "The search query that was used (only present when search parameter was provided)"
},
"searchType": {
"$ref": "#/components/schemas/SearchType",
"description": "The detected type of search query (only present when search parameter was provided)"
}
}
},
"SearchType": {
"type": "string",
"enum": ["selector", "chainId", "internalId", "displayName"],
"description": "The detected type of search query. 'selector' for CCIP selectors (>17 digits), 'chainId' for chain IDs (≤17 digits or Solana base58), 'internalId' for kebab-case identifiers, 'displayName' for fuzzy text search."
},
"FeeTokenEnriched": {
"type": "object",
"required": ["symbol", "name", "address", "decimals"],
Expand Down Expand Up @@ -614,7 +693,8 @@
"router",
"rmn",
"chainType",
"chainFamily"
"chainFamily",
"supported"
],
"properties": {
"chainId": {
Expand All @@ -623,7 +703,7 @@
},
"displayName": {
"type": "string",
"description": "Human-readable name of the chain"
"description": "Human-readable name of the chain. For supported chains, this comes from configuration. For unsupported chains, it is derived from the internalId."
},
"selector": {
"type": "string",
Expand All @@ -650,33 +730,37 @@
"description": "Detailed fee token information (when enrichFeeTokens=true)"
}
],
"description": "Fee tokens - either as string symbols or enriched objects with addresses"
"description": "Fee tokens - either as string symbols or enriched objects with addresses. Empty array for unsupported chains."
},
"router": {
"type": "string",
"description": "CCIP Router contract address"
"description": "CCIP Router contract address. Empty string for unsupported chains."
},
"rmn": {
"type": "string",
"description": "Risk Management Network contract address"
"description": "Risk Management Network contract address. Empty string for unsupported chains."
},
"chainType": {
"type": "string",
"enum": ["evm", "solana", "aptos"],
"enum": ["evm", "solana", "aptos", "sui", "canton", "ton", "tron", "stellar", "starknet"],
"description": "Type of blockchain"
},
"chainFamily": {
"type": "string",
"enum": ["evm", "svm", "mvm"],
"description": "Blockchain family (EVM, Solana VM, Move VM)"
"enum": ["evm", "solana", "aptos", "sui", "tron", "canton", "ton", "stellar", "starknet"],
"description": "Blockchain family grouping"
},
"supported": {
"type": "boolean",
"description": "Whether this chain is fully supported with complete configuration. Unsupported chains have minimal details (empty router, rmn, feeTokens)."
},
"registryModule": {
"type": "string",
"description": "Registry Module contract address (EVM chains only)"
},
"tokenAdminRegistry": {
"type": "string",
"description": "Token Admin Registry contract address (EVM chains only)"
"description": "Token Admin Registry contract address (EVM and Aptos chains)"
},
"tokenPoolFactory": {
"type": "string",
Expand All @@ -685,6 +769,10 @@
"feeQuoter": {
"type": "string",
"description": "Fee Quoter address (Solana chains only)"
},
"mcms": {
"type": "string",
"description": "MCMS (Multi-Chain Management Service) address (Aptos chains only)"
}
}
},
Expand Down Expand Up @@ -730,19 +818,61 @@
},
"description": "EVM chain details keyed by the specified output key"
},
"svm": {
"solana": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ChainDetails"
},
"description": "Solana chain details keyed by the specified output key"
},
"aptos": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ChainDetails"
},
"description": "Aptos chain details keyed by the specified output key"
},
"sui": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ChainDetails"
},
"description": "Sui chain details keyed by the specified output key"
},
"tron": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ChainDetails"
},
"description": "Tron chain details keyed by the specified output key"
},
"canton": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ChainDetails"
},
"description": "Solana VM chain details keyed by the specified output key"
"description": "Canton chain details keyed by the specified output key"
},
"mvm": {
"ton": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ChainDetails"
},
"description": "Move VM (Aptos) chain details keyed by the specified output key"
"description": "TON chain details keyed by the specified output key"
},
"stellar": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ChainDetails"
},
"description": "Stellar chain details keyed by the specified output key"
},
"starknet": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ChainDetails"
},
"description": "Starknet chain details keyed by the specified output key"
}
},
"description": "Chain details grouped by chain family"
Expand Down Expand Up @@ -789,7 +919,8 @@
},
"ChainInfo": {
"type": "object",
"required": ["chainId", "displayName", "selector", "internalId", "chainType", "chainFamily"],
"description": "Chain information used in lane endpoints. Note: chainType and chainFamily are intentionally excluded from this schema for API responses.",
"required": ["chainId", "displayName", "selector", "internalId"],
"properties": {
"chainId": {
"oneOf": [{ "type": "integer" }, { "type": "string" }],
Expand All @@ -806,16 +937,6 @@
"internalId": {
"type": "string",
"description": "Internal identifier used in configuration"
},
"chainType": {
"type": "string",
"enum": ["evm", "solana", "aptos", "sui"],
"description": "Type of blockchain"
},
"chainFamily": {
"type": "string",
"enum": ["evm", "mvm", "svm"],
"description": "Family of blockchain virtual machine"
}
}
},
Expand Down Expand Up @@ -931,6 +1052,11 @@
"message": {
"type": "string",
"description": "Human-readable error message"
},
"requestId": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for the request, useful for debugging and support"
}
}
},
Expand Down
42 changes: 42 additions & 0 deletions src/config/chainTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,48 @@ export const CHAIN_TYPE_CONFIGS: Record<ChainType, ChainTypeConfig> = {
color: "#00D4AA", // Aptos teal
description: "Aptos Move blockchain",
},
sui: {
id: "sui",
displayName: "Sui",
icon: "/assets/chains/sui.svg",
color: "#6FBCF0", // Sui blue
description: "Sui Move blockchain",
},
canton: {
id: "canton",
displayName: "Canton",
icon: "/assets/chains/canton.svg",
color: "#1E1E1E", // Canton dark
description: "Canton Network blockchain",
},
ton: {
id: "ton",
displayName: "TON",
icon: "/assets/chains/ton.svg",
color: "#0088CC", // TON blue
description: "The Open Network blockchain",
},
tron: {
id: "tron",
displayName: "TRON",
icon: "/assets/chains/tron.svg",
color: "#FF0013", // TRON red
description: "TRON blockchain",
},
stellar: {
id: "stellar",
displayName: "Stellar",
icon: "/assets/chains/stellar.svg",
color: "#000000", // Stellar black
description: "Stellar blockchain",
},
starknet: {
id: "starknet",
displayName: "Starknet",
icon: "/assets/chains/starknet.svg",
color: "#EC796B", // Starknet coral
description: "Starknet blockchain",
},
}

/**
Expand Down
Loading
Loading