- 홈
- 데이터 구조
데이터 구조
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 기능을 사용할 수 없을 뿐입니다.