Skip to main content
The IXO Spatial Web stack provides multiple integration points for connecting external services, devices, and systems through standardized APIs and SDKs. This guide explains the key integration patterns and provides examples.

Integration Architecture

MultiClient SDK

Core SDK for blockchain interactions and digital twin management

Matrix SDK

Data storage and messaging integration layer

Oracle SDK

AI-powered verification and automation services

JAMBO SDK

Authentication and key management

Core Integration Patterns

Device Integration

Connect IoT devices and sensors to the Spatial Web:
import { MatrixClient } from '@ixo/matrixclient-sdk'
import { DeviceRegistry } from '@ixo/impactxclient-sdk'

// Initialize Matrix client for device data
const matrix = new MatrixClient({
  baseUrl: 'https://matrix.ixo.world',
  accessToken: 'YOUR_ACCESS_TOKEN'
})

// Register device on blockchain
const registry = new DeviceRegistry({
  chainId: 'ixo-5',
  rpcEndpoint: 'https://rpc.ixo.world'
})

// Create device digital twin
const deviceDid = await registry.registerDevice({
  type: 'IoTDevice',
  manufacturer: 'DeviceCo',
  model: 'Sensor-2000',
  controller: ownerDid
})

// Create secure data room
const room = await matrix.createRoom({
  name: `Device ${deviceDid}`,
  encryption: true,
  topic: 'Device telemetry'
})

// Stream device data
device.on('data', async (telemetry) => {
  await matrix.sendEvent(room.id, 'device.telemetry', telemetry)
})
Validate device data using Oracle services:
import { OracleClient } from '@ixo/assistant-sdk'

// Initialize Oracle client
const oracle = new OracleClient({
  endpoint: 'https://oracle.ixo.world',
  apiKey: 'YOUR_API_KEY'
})

// Validate device data
matrix.on('room.event', async (event) => {
  if (event.type === 'device.telemetry') {
    const validation = await oracle.validate({
      deviceId: deviceDid,
      data: event.content,
      schema: 'telemetry-schema'
    })

    if (validation.isValid) {
      // Create verified claim
      await registry.createClaim({
        type: 'TelemetryClaim',
        deviceId: deviceDid,
        data: event.content,
        proof: validation.proof
      })
    }
  }
})

External System Integration

Connect to external registries and databases:
import { RegistryClient } from '@ixo/impactxclient-sdk'

// Initialize registry client
const registry = new RegistryClient({
  endpoint: 'https://registry.example.com',
  credentials: {
    apiKey: 'REGISTRY_API_KEY'
  }
})

// Sync asset data
async function syncAssets() {
  const assets = await registry.getAssets()
  
  for (const asset of assets) {
    await createDigitalTwin({
      type: 'ExternalAsset',
      externalId: asset.id,
      metadata: asset.metadata,
      proof: asset.proof
    })
  }
}
Integrate with payment and financial systems:
import { PaymentClient } from '@ixo/impactxclient-sdk'

// Initialize payment client
const payments = new PaymentClient({
  chainId: 'ixo-5',
  wallet: 'YOUR_WALLET_ADDRESS'
})

// Process payment for verified claim
async function processPayment(claim) {
  const payment = await payments.createPayment({
    recipient: claim.beneficiary,
    amount: calculateAmount(claim),
    currency: 'IXO',
    memo: `Payment for claim ${claim.id}`
  })

  await payments.executePayment(payment.id)
}

Data Exchange Integration

Create encrypted data sharing channels:
import { MatrixClient } from '@ixo/matrixclient-sdk'

// Create data room for partners
const room = await matrix.createRoom({
  name: 'Project Data Room',
  encryption: true,
  preset: 'private_chat',
  initialState: [{
    type: 'm.room.encryption',
    state_key: '',
    content: { algorithm: 'm.megolm.v1.aes-sha2' }
  }]
})

// Invite participants
await matrix.inviteToRoom(room.id, [
  'did:ixo:partner1',
  'did:ixo:partner2'
])

// Share data securely
await matrix.sendEvent(room.id, 'data.share', {
  type: 'ProjectMetrics',
  data: encryptedData,
  access: {
    roles: ['auditor', 'verifier'],
    expires: '2024-12-31'
  }
})
Set up real-time data streams:
import { StreamClient } from '@ixo/matrixclient-sdk'

// Create data stream
const stream = new StreamClient({
  room: dataRoom,
  type: 'metrics.stream'
})

// Stream processor
stream.on('data', async (data) => {
  // Process incoming data
  const processed = await processMetrics(data)
  
  // Forward to verification oracle
  await oracle.verify({
    streamId: stream.id,
    data: processed,
    schema: 'metrics-schema'
  })
})

Integration Types

Supported Integrations

IoT Platforms

  • Device management systems
  • Sensor networks
  • Smart meters
  • Environmental monitors

External Registries

  • Carbon registries
  • Asset databases
  • National registries
  • Trading platforms

Financial Systems

  • Payment processors
  • Banking systems
  • Trading platforms
  • Token networks

Data Providers

  • Weather services
  • Market data feeds
  • Geographic data
  • Social impact data

Best Practices

  • Use secure communication channels
  • Implement proper authentication
  • Encrypt sensitive data
  • Follow key management best practices
  • Regular security audits
  • Validate data integrity
  • Implement error handling
  • Use appropriate data formats
  • Monitor data quality
  • Regular backups
  • Optimize data transfers
  • Implement caching
  • Use batch processing
  • Monitor system health
  • Scale resources as needed

Next Steps

I