Skip to content
⚠️ この翻訳は機械翻訳です。ネイティブによるレビューは保留中のため、訳文に誤りが含まれる場合があります。

エラーリファレンス

このページは、サーバーが 今日 返すエラーを正確な形状とともに列挙します — これらは互換性契約の一部です(リファレンスファームウェアの一部はこれらに依存します)。

HTTPステータスコード

ステータスいつ
200リクエストが完全に成功 — すべてのブロックが受理されたテレメトリバッチを含む(重複は受理としてカウント)
201デバイス登録済み
207少なくとも1ブロックが失敗したテレメトリバッチ — errors[] を確認
400リクエストボディがスキーマ検証に失敗
404未知のデバイスに対する GET /v1/devices/:id
409既登録のpubkeyに対する POST /v1/devices
500予期しないサーバーエラー

統合者がよく間違える2つの挙動

  • 未知のデバイス のテレメトリは、ブロックごとのエラー付きで 207 を返します — 決して 404 ではありません。
  • 重複ブロック(同じ deviceId + seq)は 200 を返し、受理としてカウントされます。重複は成功であり、エラーではありません。

トップレベルのエラー形状

検証失敗400)— details には生のZod issuesが入ります。

json
{
  "error": "validation_error",
  "details": [
    { "code": "too_small", "path": ["name"], "message": "String must contain at least 1 character(s)" }
  ]
}

デバイスは既に存在409):

json
{ "error": "device_already_exists" }

デバイスが見つからない404GET /v1/devices/:id):

json
{ "error": "Device not found" }

ブロックごとのテレメトリエラー(207

失敗した各ブロックは、元の seq(文字列)と人間が読めるメッセージとともに errors[] に現れます。

json
{
  "accepted": 0,
  "errors": [
    { "seq": "42", "error": "Invalid signature for device c5785e…a2c66a" }
  ]
}
メッセージのテンプレート意味
Device not found: <device_id_hex>デバイスのpubkeyがこのエンドポイントのデータベースに登録されていない
Invalid signature for device <device_id_hex>raw バイトに対する signature のEd25519検証が登録済みpubkeyに対して失敗

サーバーコード内の型付きエラー

ドメインエラーは apps/server/src/domain/errors.ts の型付きクラスです。HTTP層はそれらをブロックごとのエントリにマップします; それ以外は 500 になります。

ts
export class InvalidSignatureError extends Error {
  readonly code = 'INVALID_SIGNATURE'
  constructor(deviceId: string) {
    super(`Invalid signature for device ${deviceId}`)
  }
}

export class DeviceNotFoundError extends Error {
  readonly code = 'DEVICE_NOT_FOUND'
  constructor(deviceId: string) {
    super(`Device not found: ${deviceId}`)
  }
}

code プロパティは内部用です; ワイヤは message を運びます。すべてのエラーに対する安定した機械可読コードの語彙はロードマップにありますが、上の文字列が現在の契約です。