Skip to main content

Example: Global Search

This example demonstrates using global search to find entities across the Intuition protocol.

SDK reads use the mainnet GraphQL API by default. The example selects API_URL_DEV for testnet data; use API_URL_PROD instead for Mainnet.

Complete Code​

import { configureSdk, globalSearch, getAtomDetails } from '@0xintuition/sdk'
import { API_URL_DEV } from '@0xintuition/graphql'

async function main() {
// Reads default to mainnet. Select API_URL_DEV for testnet data.
configureSdk({ apiUrl: API_URL_DEV })

const searchQuery = 'ethereum'

console.log(`Searching for: "${searchQuery}"\n`)

// Perform global search
const results = await globalSearch(searchQuery, {
atomsLimit: 10,
accountsLimit: 5,
triplesLimit: 5,
collectionsLimit: 3,
})

if (!results) {
console.log('Search returned no results')
return
}

// Display atoms
console.log('=== Atoms ===')
console.log(`Found ${results.atoms.length} atoms:\n`)
results.atoms.forEach((atom, i) => {
console.log(`${i + 1}. ${atom.label}`)
console.log(` ID: ${atom.term_id}`)
})

// Display accounts
console.log('\n=== Accounts ===')
console.log(`Found ${results.accounts.length} accounts:\n`)
results.accounts.forEach((account, i) => {
console.log(`${i + 1}. ${account.label}`)
console.log(` ID: ${account.id}`)
})

// Display triples
console.log('\n=== Triples ===')
console.log(`Found ${results.triples.length} triples:\n`)
results.triples.forEach((triple, i) => {
console.log(`${i + 1}. ${triple.subject?.label} ${triple.predicate?.label} ${triple.object?.label}`)
console.log(` ID: ${triple.term_id}`)
})

// Get details for first atom
if (results.atoms.length > 0) {
console.log('\n=== First Atom Details ===')
const details = await getAtomDetails(results.atoms[0].term_id)
if (!details) throw new Error('Selected atom was not found on the testnet API')

const vault = details.term?.vaults[0]

console.log('Label:', details.label)
console.log('Creator:', details.creator?.label ?? details.creator_id)
console.log('Total Shares:', vault?.total_shares)
console.log('Positions:', vault?.position_count)
}

console.log('\nSuccess!')
}

main()
.then(() => process.exit(0))
.catch((error) => {
console.error('Error:', error)
process.exit(1)
})

See Also​