Managed accounts (minors, without Telegram) β€” MOJ docs

Managed accounts (minors, without Telegram)

Translation note. This manual is a translation of the Portuguese original. The command-line tools (moj, moj-contest, moj-comp) print their messages in Portuguese, and the command examples below are identical to the original.

A normal Free Training sign-up is confirmed through Telegram. This excludes people who cannot have an account on the messenger, typically minors. The managed account solves this. A responsible .admin creates it. It has no link to Telegram. It has privacy locks that are removed automatically at age 18.

The model in 30 seconds

Normal account MANAGED account (minor)
Created via web sign-up + Telegram the πŸ§’ Managed accounts tab of /treino/admin/
Password by bot DM generated and shown ONCE to the admin
Forgot the password /trocarsenha in the bot only the admin (πŸ”‘ in the tab)
Public profile optional (default public) always private (the server refuses to make it public)
Telegram optional blocked
At 18 β€” the locks are removed automatically: the user can link Telegram and open the profile

The mark is in the user's account.json:

"managed": { "by": "prof.admin", "note": "turma A, Escola X",
             "birthdate": "2011-03-14", "expires_at": null, "created_at": 1785000000 }

The system calculates minor from the birthdate on each access. Nothing is "switched" at 18; the gates simply stop applying. The managed mark stays (for history and listing, with the 18+ badge). The profile stays private until the user opens it.

What the minor can and cannot do

Operation (πŸ§’ Managed accounts tab of /treino/admin/)

Through the API (same effect; .admin Bearer)

Route Use
GET /treino/admin/managed-users lists {login,fullname,by,note,birthdate,minor,expires_at,disabled}
POST /treino/admin/managed-create {users:[{fullname,birthdate,login?,note?,expires_at?}]} (1..500) β†’ {created:[{login,password,…}], skipped}
POST /treino/admin/managed-reset {login} β†’ new password (once)
POST /treino/admin/managed-update {login, note?, birthdate?, expires_at?|null, disabled?}
POST /treino/admin/managed-remove {login}

Privacy and data (LGPD note)

For code maintainers

See also