Settings: Messages
The text your customers get for each refusal, and the notices that pop up after sign-in. Atlas has a default for every one; reword any of them.
Open it now:Settings, Messages
Two kinds of message
| Kind | What it is | Where the customer sees it |
|---|---|---|
| Refusal text | The reason a sign-in or account action failed. | Your program reads it with GetErrorMessage() and shows it however it likes. The library does not open a window for a refusal. |
| Notice (tagged event) | A message the library shows in its own notice window. | After a license sign-in (startup, success), after a refused license sign-in, and after a file download. |
Leaving a refusal empty keeps the Atlas default. Leaving a notice empty shows nothing, which is how every notice starts.
Edit a message
The list on the left is split into Licenses, Accounts and Notices. It has a search box and an all, customized, default filter, and shows how many messages you changed ("N of M customized"). A dot marks each changed one. Pick a message and the editor shows:
| Part | Does |
|---|---|
| Variables | Click one to add it to the end of your text. It is replaced with the real value when the message is sent, for example {USERNAME} or {EXPIRY}. Each message accepts only the variables listed for it. |
| Presets | Six tones, on every message: Professional, Casual, Instructive, Concise, Directive and Error codes. Each loads starter text into the box, which you can still edit. |
| Text box | Opens with the text Atlas sends today already in it, so changing one word is a one-word edit. A notice has no default and opens empty. Restore default text puts the default back. |
| Save | Enabled once you change something. Text that matches the default, or an empty refusal, is not stored: the message simply goes back to the Atlas default. Refused, with the offending names, if the text uses a variable the message does not accept. |
| Reset to default | Appears on a changed message and deletes your version. |
A message tagged customized is yours; the others show Atlas default. The banned, unauthorized build and too many sessions messages are also sent when an account signs in; the editor says so. A saved or reset message applies to the next request; Atlas refreshes its copy of the application's messages when you save.
Every message you can change
| Group | Messages |
|---|---|
| License issues | Invalid license key, license expired, license paused. |
| Bans and security | Temporarily banned, permanently banned, hardware ID banned. |
| Device and network binding | Hardware mismatch, IP mismatch, unauthorized app hash. |
| Sessions | Too many sessions. |
| Network and location | VPN or proxy detected, country blocked. |
| System | Application disabled. |
| Notices | After sign-in: startup notice. After sign-in: success notice. After a refused sign-in. After a file download. |
| Account: Registration | Username taken, email already registered, invalid email, email required, license key required. |
| Account: Sign-in | Wrong username or password, account paused, account expired, bound to another machine, a PC on hold after a reset, bound to another IP, email verification required. |
| Account: Sign-in code | Wrong code, expired, locked out, started on another machine, already verified, bad format, resend cooldown. |
| Account: Email confirmation | Wrong code, expired, locked out, already confirmed, bad format. |
| Account: Key redemption | Invalid key, key already used, key paused, key has no duration, account not found, bound to another machine. |
| Account: Password reset | Locked out, code expired, wrong code, new password not allowed, already completed. |
Some replies are not customizable on purpose and stay generic: an invalid API key, a malformed request and an internal error. Which message a customer meets for which cause is in Why a sign-in was refused.
Variables
| Variables | Available in |
|---|---|
{IP}, {HWID}, {LICENSE}, {DEVICE} | Every message. |
{EXPIRY}, {LEVEL}, {NOTE}, {LOCATION}, {REGISTERED_HWID}, {LAST_IP} | License refusals past the key lookup (expired, paused, hardware, IP, sessions, country blocked, application disabled) and the startup, success and file download notices. {EXPIRY} is also in Account expired; {REGISTERED_HWID} and {LAST_IP} in the account binding messages, and {QUARANTINE_UNTIL} in the released PC message. |
{SESSIONS}, {MAX_SESSIONS} | Too many sessions, startup and success notices. |
{REASON}, {BAN_TYPE} | The ban messages (both), and {REASON} alone in License paused and Account paused. |
{COUNTRY} | VPN or proxy detected, country blocked. |
{USERNAME} | The account messages that name an account. Not in: email already registered, invalid email, email required, license key required, account not found, the two bad-format messages, wrong sign-in code, resend cooldown and wrong reset code. |
{EMAIL} | Email already registered, invalid email. |
{ATTEMPTS_LEFT}, {CODE_TTL_MIN}, {COOLDOWN} | {ATTEMPTS_LEFT}: wrong code (sign-in code, email confirmation, password reset). {CODE_TTL_MIN}: sign-in code expired. {COOLDOWN}: resend cooldown. |
The list above the text box always shows exactly what the open message accepts. Write what happened and who to contact; the customer reads nothing else.