Reading the Exported JSON

Last updated Aug 15, 2026

Reading the Exported JSON

After you finish Export my data on the Privacy page and download the file, you get a file named swaymoon-passport-export.json. This article explains how to read the fields in it. The set of fields is whatever was actually in the file when you downloaded it. An empty array or null means there was no matching record at that time.

Open the file with a text editor or a JSON viewer. Do not send the full export file to an untrusted third party.

Top-level structure

The export file is a JSON object. Common top-level keys:

FieldMeaning
accountIdYour Swaymoon Account internal identifier (string). Third-party apps usually do not receive this value directly; they use their own user identifier (sub).
exportedAtTime the export was generated (UTC, ISO-8601, for example 2026-08-06T02:15:30.123Z).
profileProfile record (nickname, bio, region, and so on).
identifiersLinked sign-in identifiers (email, phone number, username, third-party sign-in, and so on).
hasPasswordWhether a password is set (boolean). true means password sign-in is available; the password itself is not included.
authorizedAppsThird-party apps that have been authorized through Swaymoon Account.
sessionsSummaries of sign-in sessions still on record at that time.
consentHistoryConsent-ledger records (registration terms, third-party authorization, and so on).

profile: profile record

FieldMeaning
nicknameDisplay nickname
bioBio
regionCountry or region
birthdayBirthday (date string; may be null if not filled in)
genderGender code (may be null if not filled in)
usernameUsername (if set)
avatarPathPath identifier of the avatar in storage; not a full URL you can open directly

Unfilled items may be null or an empty string.

identifiers: sign-in identifiers

An array. Each item is roughly:

{ "type": "EMAIL", "value": "you@example.com", "primary": true }
FieldMeaning
typeIdentifier type. Common values: EMAIL (email), PHONE (phone number), USERNAME (username), GOOGLE, GITHUB
valueThe concrete value of that identifier (email address, phone number, and so on)
primaryWhether it is the primary identifier. The primary identifier affects default identity display at sign-in, and whether Hide My Email and similar capabilities can be chosen during authorization

One account can link multiple identifiers; usually only one is primary.

authorizedApps: authorized apps

An array. Each item corresponds to one (or one historical) third-party authorization record:

FieldMeaning
clientIdThe app’s client ID
clientNameApp display name (the name at registration)
firstGrantedAtTime of first authorization (timestamp string)
relayAliasIf Hide My Email was chosen at authorization, this is the local part of the alias (without @privaterelay.swaymoon.com); null if unused
revokedAtIf authorization has been revoked, the revoke time; null while still active

How to manage these authorizations in the product: see Authorized Apps. A non-empty revokedAt only means Swaymoon Account has revoked on its side; it does not mean the third party has deleted data it already obtained.

sessions: sign-in sessions

An array. Each item is a session summary (does not include the full session token):

FieldMeaning
createdAtSession creation time
userAgentBrowser / client User-Agent recorded at that time
remoteAddrApproximate network address recorded at that time (for security audit; not necessarily equal to your current public IP)

You can end sessions you no longer need on the security-related pages in Swaymoon Account. An export is only a snapshot. Sessions created after you download it do not appear in the old file.

An array of consent-related actions you took for terms or third-party sharing, so you can check when, to whom, and for what purpose you agreed to processing:

FieldMeaning
purposePurpose code. Common examples: terms_of_service (accepting the Terms of Use, and so on), third_party_sign_in (signing in to a third party with Swaymoon Account)
recipientRecipient: Swaymoon itself, or a third party’s clientId
dataCategoriesSummary of data categories involved (comma-separated string, for example account or account_identifier,profile)
crossBorderWhether it is marked as cross-border related (boolean)
actionAction type. Commonly GRANTED (granted) or REVOKED (revoked)
recordedAtTime recorded in the ledger

The ledger is for transparency and compliance records. It does not mean a third party still holds a valid access token. Whether a token still works also depends on whether authorization has been revoked, whether the token has expired, and similar factors.

Reading example

Below is a fictional, de-identified structural sketch (values differ from a real export):

{
  "accountId": "acc_xxxxxxxx",
  "exportedAt": "2026-08-06T02:15:30.123Z",
  "profile": {
    "nickname": "小月",
    "bio": "你好",
    "region": "CN",
    "birthday": "1990-01-01",
    "gender": "unspecified",
    "username": "xiaoyue",
    "avatarPath": "avatars/acc_xxxxxxxx/…"
  },
  "identifiers": [
    { "type": "EMAIL", "value": "you@example.com", "primary": true },
    { "type": "USERNAME", "value": "xiaoyue", "primary": false }
  ],
  "hasPassword": true,
  "authorizedApps": [
    {
      "clientId": "app_demo",
      "clientName": "示例应用",
      "firstGrantedAt": "2026-07-01T10:00:00Z",
      "relayAlias": "abc123",
      "revokedAt": null
    }
  ],
  "sessions": [
    {
      "createdAt": "2026-08-05T12:00:00Z",
      "userAgent": "Mozilla/5.0 …",
      "remoteAddr": "203.0.113.10"
    }
  ],
  "consentHistory": [
    {
      "purpose": "terms_of_service",
      "recipient": "摇月 Swaymoon",
      "dataCategories": "account",
      "crossBorder": false,
      "action": "GRANTED",
      "recordedAt": "2026-06-01T08:00:00Z"
    }
  ]
}

Security advice

  • The export file contains information that can identify you. Store it encrypted locally or in a safe place, and delete it when you are done.
  • When you ask support for help, you usually only need to describe the issue and a time range. Do not attach the full JSON on your own.
  • An export is a snapshot of one moment. Later authorizations, revokes, or profile edits are not written back into a file you already downloaded. Export again when you need the latest contents.

For the steps to run an export, see Export Data and Delete Account.