# Загрузка портфеля Экран `/accounts/:accountId` читает последний полный snapshot из SQLite после проверки сессии, подключения и локального membership. Если список счетов ещё неизвестен, сервер сообщает о загрузке доступа без выдачи личных данных неизвестного ID. Известный недоступный счёт возвращает `404`. ## Основной обмен Обычный GET и retry возвращают read-only локальный `{ data, meta }` envelope: они не ждут и не вызывают T-Bank и не предлагают ручную синхронизацию. Часовой обход текущего подключения обновляет Portfolio независимо от экрана. Для нового полного snapshot ему нужны оба финансовых ответа `GetPortfolio` и `GetPositions`; суммы и позиции публикуются вместе. Metadata инструмента дополняет представление независимо, с доступным UID/FIGI вместо имени до её онлайн-загрузки. Открытый экран выполняет локальное перечитывание не чаще одного раза в 30 минут; retry также повторяет только HTTP GET. `data: null` означает, что полного snapshot ещё нет, а не нулевой портфель. Пустой подтверждённый portfolio остаётся available complete result. Секции могут быть готовы независимо. Подробнее — [свежесть](../../../architecture/cross-cutting/data-freshness.md). ## Границы доступа Публикация проверяет connection revision и attempt в той же транзакции. Замена или удаление подключения не допускает позднюю запись прежней работы. Frontend очищает недоступный personal view и отклоняет запоздалые ответы. В режиме [«Все счета»](../all-accounts.md#полнота-свежесть-и-доступ) состав accounts и snapshots читается согласованно, но их source times могут различаться. ## Ошибки и результат для пользователя Нет подключения — `409 TBANK_NOT_CONNECTED`, известный отказ токена — `400 INVALID_TBANK_TOKEN`, недоступный счёт — `404`. Они не маскируются запасным snapshot. Временная ошибка часового обхода оставляет прежний полный portfolio и его исходное `lastSuccessfulAt`; `meta.lastAttempt` сообщает о failed или partial попытке отдельно. `Portfolio.isStale` сообщает возраст snapshot, а Client Cached Snapshot и ошибка браузерного HTTP-перечитывания имеют независимый смысл. При отсутствии полного snapshot `data: null` и metadata обозначает initial loading либо временную недоступность, без нулевых итогов. `503` означает ошибку обслуживания самого HTTP-запроса, а не завершившуюся фоновую работу. Денежные правила находятся в [справочнике](../data-reference.md), проверка расхождения — в [диагностике](../how-to/investigate-discrepancy.md), RPC/лимиты — в [интеграции T-Bank](../../../integrations/tbank.md).