Skip to content
AtlasDocs
Sign inGet started
Updated Oct 03, 2026

Data Namespace

What the library knows about the signed-in session: who it is, until when, its status and the last error. Read-only. Empty until a sign-in succeeds.

One-screen dump

Every accessor for the current session, in all three bindings. Switch the language in the top bar to flip the entire page; the dump and the master reference below re-key to the active language.

#include <iostream>
#include "Atlas.h"
int main() {
Atlas::API_KEY = "YOUR_API_KEY";
Atlas::Startup();
if (!Atlas::License::Login("ATLAS-A9F2K-4RMXM")) {
std::cerr << Atlas::Data::GetErrorMessage();
return 1;
}
std::cout << "License " << Atlas::Data::GetLicense() << '\n';
std::cout << "Username " << Atlas::Data::GetUsername() << '\n';
std::cout << "Email " << Atlas::Data::GetEmail() << '\n';
std::cout << "Password " << Atlas::Data::GetPassword() << '\n';
std::cout << "IP " << Atlas::Data::GetIP() << '\n';
std::cout << "HWID " << Atlas::Data::GetHWID() << '\n';
std::cout << "Device " << Atlas::Data::GetDevice() << '\n';
std::cout << "Note " << Atlas::Data::GetNote() << '\n';
std::cout << "FirstSeen " << Atlas::Data::GetFirstSeenDate() << '\n';
std::cout << "LastSeen " << Atlas::Data::GetLastSeenDate() << '\n';
std::cout << "UserId " << Atlas::Data::GetUserId() << '\n';
std::cout << "Level " << Atlas::Data::GetLevel() << '\n';
std::cout << "Expiry " << Atlas::Data::GetExpiry() << '\n';
std::cout << "DaysLeft " << Atlas::Data::GetDaysRemaining() << '\n';
std::cout << "Lifetime " << Atlas::Data::IsLifetime() << '\n';
std::cout << "Expiring " << Atlas::Data::IsExpiringSoon() << '\n';
std::cout << "Authed " << Atlas::Data::IsAuthenticated() << '\n';
std::cout << "Banned " << Atlas::Data::IsBanned() << '\n';
std::cout << "Active " << Atlas::Data::GetActiveUserCount()<< '\n';
std::cout << "Total " << Atlas::Data::GetUserCount() << '\n';
return 0;
}

Guarding a sensitive action

IsAuthenticated and IsBanned are the library's last known state. They answer instantly and can be a few seconds old. For an answer straight from the server, call Network::CheckAuthentication.

// Canonical pattern: gate a sensitive action on a live, valid session.
if (!Atlas::Data::IsAuthenticated()) {
return UI::ShowError("Session expired. Please sign in again.");
}
if (Atlas::Data::IsBanned()) {
return UI::LockAccount("This account has been suspended.");
}
if (Atlas::Data::IsExpiringSoon(3)) {
UI::ShowBanner("Subscription expires in " +
std::to_string(Atlas::Data::GetDaysRemaining()) + " days.");
}
ExecuteOrder();

Identity

Who the current session is. Username, email, password return "" on license-only sessions. GetNote() returns "None" when no note is set.

AccessorReturnsPopulated when
GetLicensestd::stringalways
GetUsernamestd::stringaccount only
GetEmailstd::stringaccount only
GetPasswordstd::stringaccount only
GetIPstd::stringalways
GetHWIDstd::stringalways
GetDevicestd::stringalways
GetNotestd::stringwhen set
GetFirstSeenDatestd::stringalways
GetLastSeenDatestd::stringalways
GetUserIdintaccount only
GetLevelintalways
C++Type column re-keys to the active language.

Expiry

When the license ends. GetExpiry() is a "DD-MM-YYYY" date - valid through the end of that day - or "Never" when there is no expiry, in every binding. The C++ LoginResult.expiry uses the same date but is "" when there is none; in JS and Python it holds the same string as GetExpiry().

AccessorReturnsPopulated when
GetExpirystd::stringalways
GetDaysRemainingintalways
IsLifetimeboolalways
IsExpiringSoonboolalways
C++Type column re-keys to the active language.

Status

Synchronous verdicts. The SDK heartbeat refreshes these in the background; the accessors return the latest cached value.

AccessorReturnsPopulated when
IsAuthenticatedboolalways
IsBannedboolalways
C++Type column re-keys to the active language.

Errors

The last failing call sets the error string. Subsequent successful calls overwrite it — read GetErrorMessage immediately after the call that might have set one.

AccessorReturnsPopulated when
GetErrorMessagestd::stringwhen last call set one
HasErrorboolalways
ClearErrorvoidalways
C++Type column re-keys to the active language.

App-wide stats

Counts that mirror your dashboard. Both fields return string across all three bindings for ABI parity — parse with std::stoi, Number(), or int() if you need to compare.

AccessorReturnsPopulated when
GetActiveUserCountstd::stringalways
GetUserCountstd::stringalways
C++Type column re-keys to the active language.