Data Structure

Hexbon doesn't just encrypt your data - it structures it. Learn the required JSON format and validate your data to unlock the full interactive experience.

Why Data Structure Matters

Hexbon is more than an encryption tool - it's a structured data storage system. Your data is organized into a hierarchical format that enables powerful features like drag-and-drop reordering, interactive cards, expandable records, and organized sections.

Structure vs. Encryption

We can always decrypt your data if you provide the correct encryption key. However, if your data doesn't follow our structure guidelines, we'll display it in raw mode - you'll see the data, but without the interactive UI features like cards, records, sections, drag-and-drop, etc.

This documentation explains the exact JSON structure expected by Hexbon. Following this structure ensures your data is fully compatible with our interactive dashboard features.

Structure Overview

Hexbon data follows a strict hierarchical structure. Understanding this hierarchy is key to properly organizing your data.

Data Hierarchy

{ "cards": [...] }
{
  "title": "Personal",
  "records": [...],
  "updated_at": 1763938832
}
{
  "title": "Gmail",
  "data": [...]
}
{
  "name": "Login",
  "values": [...]
}
{
  "value": "secret123",
  "type": "secret"
}
Property Required Applies To
cards Yes Root object
title Yes Card, Record
records Yes Card
data Yes Record (sections array)
name Yes Section
values Yes Section
value Yes Value
type Yes Value (secret, note, totp, link, email, username)
id No Value (for sorting)
updated_at No Card (timestamp)

Cards

Cards are the top-level containers in your dashboard. Each card appears as a clickable tile that can be expanded to reveal its records. Cards can be reordered via drag-and-drop.

Card Schema
{
  "title": "string",           // Required: Card name displayed on tile
  "records": [],              // Required: Array of Record objects
  "updated_at": 1763938832    // Optional: Unix timestamp of last update
}
Property Type Required Description
title string Yes The display name shown on the card tile
records array Yes Array of Record objects (can be empty)
updated_at integer No Unix timestamp for "last updated" display
Example Card
{
  "title": "Work Credentials",
  "records": [
    // Record objects go here...
  ],
  "updated_at": 1763938832
}

Records

Records are entries within a card. They appear in the left sidebar when a card is opened and can be selected to view their sections. Think of records as individual items or entries (e.g., "Gmail Account", "Work VPN", "Database Credentials").

Record Schema
{
  "title": "string",     // Required: Record name displayed in sidebar
  "data": []               // Required: Array of Section objects
}
Property Type Required Description
title string Yes The display name shown in the record list
data array Yes Array of Section objects (can be empty)

Note: The data property contains "sections", not raw data. This naming is for historical reasons. Each item in the data array is a Section object.

Example Record
{
  "title": "Gmail Account",
  "data": [
    {
      "name": "Login Details",
      "values": [
        // Value objects go here...
      ]
    }
  ]
}

Sections

Sections group related values within a record. They provide an organizational layer that helps categorize different types of information (e.g., "Login Details", "Recovery Options", "API Keys"). Each section has a name and contains multiple values.

Section Schema
{
  "name": "string",     // Required: Section heading/label
  "values": []             // Required: Array of Value objects
}
Property Type Required Description
name string Yes The section heading displayed above values
values array Yes Array of Value objects containing your data
Example Section
{
  "name": "Login Details",
  "values": [
    {
      "value": "user@example.com",
      "type": "note",
      "id": "value_1763938238781_3jh5i3r20"
    },
    {
      "value": "supersecretpassword123",
      "type": "secret",
      "id": "value_1763938251026_fvjeq1vg9"
    }
  ]
}

Values

Values are the actual data entries - the secrets, notes, and TOTP codes you store. Each value has a type that determines how it's displayed and interacted with in the UI.

Value Schema
{
  "value": "string",   // Required: The actual content
  "type": "secret" | "note" | "totp" | "link" | "email" | "username",  // Required
  "id": "string"      // Optional: Unique identifier for sorting
}
Property Type Required Description
value string Yes The actual content (password, note text, TOTP secret)
type string Yes One of: "secret", "note", "totp", "link", "email", or "username"
id string No Unique identifier used for sorting and referencing

Value Types

Type Display Use Case
"secret" Hidden by default (•••••), click to reveal Passwords, API keys, sensitive data
"note" Always visible plain text Usernames, emails, URLs, non-sensitive info
"totp" Generates live 6-digit codes 2FA secrets (Base32 encoded)
"link" Clickable hyperlink URLs, website addresses
"email" Email address with mailto link Email addresses
"username" Always visible plain text with user icon Usernames, account identifiers
Example Values
// 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"
}

Complete Example

Here's a complete, valid data structure showing the full hierarchy with multiple cards, records, sections, and different value types.

Complete Valid Structure
{
  "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 Data Mode

If your decrypted data doesn't follow the expected structure, Hexbon will still display it - but in raw mode. This means you'll see your data as plain JSON without the interactive features that structured data provides.

Feature Structured Mode Raw Mode
Interactive card tiles
Drag-and-drop reordering
Secret masking with reveal toggle
Live TOTP code generation
In-place editing & auto-save
Copy to clipboard buttons

Your Data Is Always Secure

Raw mode affects only the display, not security. Your data is always encrypted with AES-256-GCM encryption regardless of structure. You just won't get the interactive UI features if the structure doesn't match.

Validate Your Data Structure

Use our interactive validation tool to check your data structure in real-time.

Try Validation Tool

We barely use cookies

We only use strictly necessary cookies, that enhance website security and improve user experience. We don't track your actions or activity.