domain
SDK

Errors and validation

Handle transport, protocol, API, and local input failures explicitly.

Every public input is parsed before fetch. Every JSON response is parsed before it reaches your code.

import {
  Domain0Error,
  Domain0ProtocolError,
  Domain0TransportError,
  createDomain0PlatformClient,
} from 'domain0'
import { z } from 'zod'

try {
  await platform.getConnection(connectionId)
} catch (error) {
  if (error instanceof Domain0Error) {
    console.error(error.status, error.response.error.code)
  } else if (error instanceof Domain0TransportError) {
    console.error('Network failed', error.cause)
  } else if (error instanceof Domain0ProtocolError) {
    console.error('Response contract failed', error.cause)
  } else if (error instanceof z.ZodError) {
    console.error('Local input failed', error.issues)
  }
}

Exported schemas

import {
  ConnectionSchema,
  DnsRecordSchema,
  Domain0ConnectEventSchema,
  PlatformCreateConnectionInputSchema,
} from 'domain0/contracts'

const record = DnsRecordSchema.parse(untrustedRecord)

Types are inferred from these schemas. There is no parallel handwritten model to drift away from runtime behavior.

On this page