Начинайте с публичного контракта, а не payload провайдеров
Интеграция должна зависеть от версионированной схемы ChainsFlow API, а не от форматов Binance, Bybit, Kraken или OKX. Провайдерские DTO остаются внутри адаптеров, наружу выходят стабильные ресурсы пользователей, аккаунтов, балансов и портфеля. Генерируйте типизированный клиент из OpenAPI, но сохраняйте небольшой собственный wrapper для осознанного обновления версий и обработки ошибок.
Храните владение конечного пользователя в BFF
Создайте портфель через POST /api/v1/portfolios и сохраните возвращённый непрозрачный portfolioId рядом со своим локальным пользователем. ChainsFlow API видит только API-аккаунт и его portfolio resources.
Считайте подключение биржи долгоживущим ресурсом
Подключение содержит зашифрованные read-only credentials, статус синхронизации и нормализованные позиции. Создавайте его с сервера, сохраняйте возвращённый account ID и явно показывайте состояния syncing, active и error. Не пропускайте секреты биржи через аналитику, поддержку или клиентские логи и предоставьте понятное удаление подключения.
Аккаунты и агрегированный портфель решают разные задачи
Account endpoints подходят для статуса провайдера, точных балансов и управления подключениями. Portfolio endpoint объединяет поддержанные аккаунты в USD, allocation и рыночную оценку изменения за 24 часа. Performance отделён, потому что зависит от снимков и денежных потоков. Выбор самого узкого endpoint экономит кредиты и упрощает loading states.
Добавьте бюджеты, наблюдаемость и graceful degradation
Записывайте X-Credit-Cost, X-Credits-Remaining и correlation ID, но никогда credentials. Настройте ограниченные timeout, уважайте Retry-After и отличайте сбой провайдера от ошибки аутентификации или кредитов. Кэшируйте только данные с объяснимой свежестью. Временная недоступность одной биржи не должна делать весь пользовательский портфель бесполезным.