- ホーム
- データ構造
データ構造
Hexbonはデータを暗号化するだけでなく、構造化も行います。必要なJSON形式について学び、データを検証して、完全なインタラクティブ体験をアンロックしましょう。
データ構造が重要な理由
Hexbonは単なる暗号化ツールではありません。それは構造化されたデータストレージシステムです。データは階層形式で整理されており、ドラッグ&ドロップによる並べ替え、インタラクティブなカード、展開可能なレコード、整理されたセクションなどの強力な機能を可能にします。
構造 vs 暗号化
正しい暗号化キーを提供すれば、いつでもデータを復号できます。ただし、データが構造ガイドラインに従っていない場合、生モード (raw mode) で表示されます。データ自体は見ることができますが、カード、レコード、セクション、ドラッグ&ドロップなどのインタラクティブなUI機能は利用できません。
このドキュメントでは、Hexbonが期待する正確なJSON構造の概要を説明します。この構造に従うことで、データがダッシュボードのインタラクティブ機能と完全に互換性を持つようになります。
構造の概要
Hexbonのデータは厳格な階層に従います。この階層を理解することが、データを正しく整理するための鍵となります。
データ階層
{ "cards": [...] }
{
"title": "Personal",
"records": [...],
"updated_at": 1763938832
}
{
"title": "Gmail",
"data": [...]
}
{
"name": "Login",
"values": [...]
}
{
"value": "secret123",
"type": "secret"
}
| プロパティ | 必須 | 適用対象 |
|---|---|---|
| cards | はい | ルートオブジェクト |
| title | はい | カード, レコード |
| records | はい | カード |
| data | はい | レコード (セクションの配列) |
| name | はい | セクション |
| values | はい | セクション |
| value | はい | 値 |
| type | はい | 値 (secret, note, totp, link, email) |
| id | いいえ | 値 (ソート用) |
| updated_at | いいえ | カード (タイムスタンプ) |
カード
カードはダッシュボードの最上位コンテナです。各カードはクリック可能なボックスとして表示され、展開してレコードを表示できます。カードはドラッグ&ドロップで並べ替えることができます。
{
"title": "string", // Required: Card name displayed on tile
"records": [], // Required: Array of Record objects
"updated_at": 1763938832 // Optional: Unix timestamp of last update
}
| プロパティ | タイプ | 必須 | 説明 |
|---|---|---|---|
| title | string | はい | カードボックスに表示される名前 |
| records | array | はい | レコードオブジェクトの配列(空でも可) |
| updated_at | integer | いいえ | 「最終更新」を表示するためのUnixタイムスタンプ |
{
"title": "Work Credentials",
"records": [
// Record objects go here...
],
"updated_at": 1763938832
}
レコード
レコードはカード内のエントリです。カードを開くと左側のサイドバーに表示され、選択してセクションを表示できます。レコードは個々のアイテムやエントリ(例:「Gmailアカウント」、「社内VPN」、「データベース認証情報」)と考えてください。
{
"title": "string", // Required: Record name displayed in sidebar
"data": [] // Required: Array of Section objects
}
| プロパティ | タイプ | 必須 | 説明 |
|---|---|---|---|
| title | string | はい | レコードリストに表示される名前 |
| data | array | はい | セクションオブジェクトの配列(空でも可) |
注意:
data プロパティには「セクション」が含まれます。生データではありません。この命名は歴史的な理由によるものです。data 配列の各アイテムはセクションオブジェクトです。
{
"title": "Gmail Account",
"data": [
{
"name": "Login Details",
"values": [
// Value objects go here...
]
}
]
}
セクション
セクションはレコード内の関連する値をグループ化します。これらは、さまざまな種類の情報(例:「ログイン詳細」、「リカバリ・オプション」、「APIキー」)を分類するのに役立つ組織レベルを提供します。各セクションには名前があり、複数の値が含まれます。
{
"name": "string", // Required: Section heading/label
"values": [] // Required: Array of Value objects
}
| プロパティ | タイプ | 必須 | 説明 |
|---|---|---|---|
| name | string | はい | 値の上に表示されるセクションタイトル |
| values | array | はい | データを含む値オブジェクトの配列 |
{
"name": "Login Details",
"values": [
{
"value": "user@example.com",
"type": "note",
"id": "value_1763938238781_3jh5i3r20"
},
{
"value": "supersecretpassword123",
"type": "secret",
"id": "value_1763938251026_fvjeq1vg9"
}
]
}
値
値は実際のデータエントリ(保存するパスワード、メモ、TOTPコード)です。各値には、UIでの表示方法と操作方法を決定するタイプがあります。
{
"value": "string", // Required: The actual content
"type": "secret" | "note" | "totp" | "link" | "email" | "username", // Required
"id": "string" // Optional: Unique identifier for sorting
}
| プロパティ | タイプ | 必須 | 説明 |
|---|---|---|---|
| value | string | はい | 実際のコンテンツ(パスワード、メモテキスト、TOTPシークレット) |
| type | string | はい | "secret"、"note"、"totp"、"link"、"email"、"username" のいずれか |
| id | string | いいえ | ソートと参照に使用される一意のID |
値のタイプ
| タイプ | 表示 | ユースケース |
|---|---|---|
| "secret" | デフォルトで非表示(•••••)、クリックで表示 | パスワード、APIキー、機密データ |
| "note" | 常に表示されるプレーンテキスト | ユーザー名、メール、URL、非機密情報 |
| "totp" | リアルタイムで6桁のコードを生成 | 2FAシークレット(Base32エンコード) |
| "link" | クリック可能なハイパーリンク | URL、ウェブサイトのアドレス |
| "email" | mailtoリンク付きのメールアドレス | メールアドレス |
| "username" | ユーザーアイコン付きで常に表示されるプレーンテキスト | ユーザー名、アカウントID |
// Secret value (hidden by default)
{
"value": "MySecurePassword123!",
"type": "secret",
"id": "value_1763938251026_fvjeq1vg9"
}
// Note value (always visible)
{
"value": "user@example.com",
"type": "note",
"id": "value_1763938238781_3jh5i3r20"
}
// TOTP value (generates 2FA codes)
{
"value": "JBSWY3DPEHPK3PXP",
"type": "totp",
"id": "value_1763938267595_kaecs9y31"
}
// Username value (visible text with user icon)
{
"value": "john_doe_123",
"type": "username",
"id": "value_1763938289412_xm2kp7v91"
}
完全な例
以下は、複数のカード、レコード、セクション、およびさまざまな値のタイプを含む階層全体を示す、完全で有効なデータ構造です。
{
"cards": [
{
"title": "Personal Accounts",
"records": [
{
"title": "Gmail",
"data": [
{
"name": "Login Details",
"values": [
{
"value": "myemail@gmail.com",
"type": "note"
},
{
"value": "SuperSecretPassword123",
"type": "secret"
}
]
},
{
"name": "2FA",
"values": [
{
"value": "JBSWY3DPEHPK3PXP",
"type": "totp"
}
]
}
]
},
{
"title": "GitHub",
"data": [
{
"name": "Account",
"values": [
{
"value": "myusername",
"type": "note"
},
{
"value": "gh_token_abc123xyz",
"type": "secret"
}
]
}
]
}
],
"updated_at": 1763938832
},
{
"title": "Work",
"records": [
{
"title": "VPN Access",
"data": [
{
"name": "Credentials",
"values": [
{
"value": "vpn.company.com",
"type": "note"
},
{
"value": "john.doe",
"type": "note"
},
{
"value": "VpnP@ssw0rd!",
"type": "secret"
}
]
}
]
}
],
"updated_at": 1763856530
}
]
}
生モード (Raw Mode)
復号されたデータが期待される構造に従っていない場合、Hexbonはそれを表示しますが、生モードになります。これは、構造化データが提供するインタラクティブな機能なしで、データを単純なJSONとして表示することを意味します。
| 機能 | 構造化モード | 生モード |
|---|---|---|
| インタラクティブなカードボックス | ||
| ドラッグ&ドロップによる並べ替え | ||
| 表示切り替え付きのシークレットマスキング | ||
| リアルタイムTOTPコード生成 | ||
| インプレース編集と自動保存 | ||
| クリップボードへのコピーボタン |
データは常に安全です
生モードは表示にのみ影響し、セキュリティには影響しません。データは構造に関係なく、常にAES-256-GCMで暗号化されています。構造が一致しない場合、インタラクティブなUI機能が利用できないだけです。