Аккаунт и команда
Ключи и баланс принадлежат аккаунту. Участники входят в кабинет с ролями: владелец,
администратор, разработчик, наблюдатель. Роль ограничивает действия в кабинете; ключами
пользуются владелец, администратор и разработчик. Перевод участника в наблюдатели отзывает
его ключи вместе с ключом плейграунда, а запрос ключом участника ниже разработчика —
403 forbidden с insufficient_role. У участника — лимит трат на все его ключи, у ключа —
свой потолок.
Номер аккаунта
У каждого аккаунта есть номер в виде автомобильного: «К 482 МТ · 77» — буква, три цифры,
две буквы и код региона РФ из двух или трёх цифр («Р 105 ОС · 761»). Номер выдаётся при
открытии аккаунта; назовите его, когда пишете в поддержку. Буквы — только А, В, Е, К, М, Н, О, Р, С, Т, У, Х: у них одно
начертание в кириллице и латинице, поэтому номер можно набрать в любой раскладке, с
пробелами или без. В API — account.number в GET /v1/auth/me.
Регистрация
Регистрация открыта, паролей нет: первый вход на souz.ai через Яндекс,
GitHub, Google или Telegram создаёт аккаунт с приветственным бонусом. Ссылка-приглашение от команды Союза (https://souz.ai/join/<код>) даёт
свой стартовый бонус; бонусы не суммируются — стартовый бонус один на аккаунт: новый получает
больший из двух, уже получивший приветственный по ссылке — только разницу.
Команда
Участника добавляют ссылкой-приглашением: владелец или администратор в кабинете («Аккаунт» →
«Команда» → «Пригласить») выбирает роль — администратор, разработчик или наблюдатель — и срок,
от часа до недели, по умолчанию сутки. Ссылка https://souz.ai/join/team/<код> одноразовая,
показывается один раз; действующие ссылки видны списком, любую можно отозвать. Человек
открывает ссылку, нажимает «Принять» и входит любым способом — вход заводит его участником
команды. Человек состоит в одном аккаунте: если у него уже есть аккаунт, принять ссылку нельзя.
Пополнение
Пополняют владелец и администратор в кабинете. После подтверждения оплаты зачисляется вся сумма, комиссию платит Союз. Кассовый чек формируется один раз — при оплате; списания за запросы чеков не создают.
История операций
Пополнения, списания за завершённые запросы, возвраты остатка и отмены начислений — в
кабинете и GET /v1/balance/history (ключом управления). У пополнения виден источник —
оплата или бонус — и объект topup: остаток (remaining_micro), возвращено
(refunded_micro), к возврату (refund_pending_micro), отменено (reversed_micro), ссылка
на чек (receipt_url) и способ оплаты (method: card, sbp, other), когда известны.
У бонуса от службы поддержки — подпись label: topup_bonus (бонус к пополнению),
compensation (компенсация за запрос, его id — в job_id), bonus. Отмена начисления
(kind: reversal, source — что отменено) уменьшает баланс, баланс при этом не уходит в
минус. Бонус расходуется первым и не возвращается. Неизрасходованные оплаченные деньги
возвращает поддержка с учётом незавершённых запросов.
Блокировка
Служба поддержки может заблокировать аккаунт или отдельный ключ. У заблокированного
аккаунта новые запросы его ключей и плейграунда получают 403 account_blocked; уже
принятые запросы выполняются, чтение задач, результатов, баланса и истории работает, вход в
кабинет остаётся (GET /v1/auth/me → account.blocked). Запросы заблокированным ключом
получают 403 key_blocked, в списке ключей у него blocked: true, и включить его снова
нельзя. Снять блокировку — через поддержку.