Skip to content

Gateway Configuration

Настройка Gateway API для всех окружений.

Обзор

Integ API работает как прослойка между админкой и Gateway API. Для каждого окружения нужно настроить свой Gateway URL.

Архитектура

Админка → Integ API → Gateway API

Формат аутентификации

⚠️ Важно: Gateway использует кастомный заголовок x-access-token, а не стандартный Authorization: Bearer.

✅ Правильно:

bash
curl http://localhost:3001/admin/integrations \
  -H "x-access-token: 4a3cfd7cc7d449c8f7e4a2e13b5e12ffd3d45d38a9aac5ccb8d5e44fb5f5af67"

Ожидаемый ответ:

json
{"success": true, "data": [...]}

❌ Неправильно:

bash
curl http://localhost:3001/admin/integrations \
  -H "Authorization: Bearer YOUR_TOKEN"

Ответ с ошибкой:

json
{ "error": "Missing x-access-token header" }

Проверка подключения

bash
# Быстрый тест
curl http://localhost:3001/admin/integrations \
  -H "x-access-token: $(doppler secrets get GATEWAY_ACCESS_TOKEN --config local --plain)"

Конфигурация по окружениям

Local (localhost)

✅ Текущая конфигурация:

  • URL: http://localhost:3001
  • Token: Настроен (64 символа)
  • Header: x-access-token

Если нужно изменить:

bash
# Использовать локальный Gateway (рекомендуется)
doppler secrets set GATEWAY_URL "http://localhost:3001" --config local
doppler secrets set GATEWAY_ACCESS_TOKEN "ваш-токен-доступа" --config local

# Перегенерировать environment
npm run generate:env:local

Development (dev)

✅ Текущая конфигурация:

  • URL: https://api.integ.dev.happ.tools
  • Token: Настроен (64 символа)

Если нужно изменить:

bash
# URL dev Gateway API
doppler secrets set GATEWAY_URL "https://api.integ.dev.happ.tools" --config dev
doppler secrets set GATEWAY_ACCESS_TOKEN "your-dev-gateway-token" --config dev

# Также не забудьте другие переменные для dev
doppler secrets set POSTGRES_HOST "your-dev-db-host" --config dev
doppler secrets set POSTGRES_PASSWORD "dev-password" --config dev

# Перегенерировать environment
npm run generate:env:dev

Production (prod)

✅ Текущая конфигурация:

  • URL: https://api.integ.happ.tools
  • Token: Настроен (64 символа)

Если нужно изменить:

bash
# URL prod Gateway API
doppler secrets set GATEWAY_URL "https://api.integ.happ.tools" --config prod
doppler secrets set GATEWAY_ACCESS_TOKEN "your-prod-gateway-token" --config prod

# Также не забудьте другие переменные для prod
doppler secrets set POSTGRES_HOST "your-prod-db-host" --config prod
doppler secrets set POSTGRES_PASSWORD "strong-prod-password" --config prod

# Перегенерировать environment
npm run generate:env:prod

Получение Access Token

Access Token для Gateway API нужно получить из админ-панели Gateway или у команды, которая управляет Gateway.

Где найти токены:

  1. Local/Dev - обычно тестовые токены или можно сгенерировать в Gateway админке
  2. Prod - только production токены с ограниченными правами

Проверка подключения

После настройки проверьте подключение:

bash
# Запустить приложение
npm start

# В другом терминале
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  http://localhost:3000/api/integrations

Если Gateway недоступен, вы увидите ошибку:

Failed to list integrations: getaddrinfo ENOTFOUND <gateway-url>

Troubleshooting

ENOTFOUND ошибка

Проблема: getaddrinfo ENOTFOUND api.integ.happ.tools

Решение:

  1. Проверьте, что Gateway URL правильный
  2. Проверьте, что Gateway доступен (ping, curl)
  3. Проверьте DNS резолюцию
bash
# Проверить Gateway URL в environment
cat src/environments/environment.ts | grep -A 3 "gateway:"

# Проверить доступность Gateway
curl https://your-gateway-url/health

Неправильный токен

Проблема: 401 Unauthorized при запросах к Gateway

Решение:

  1. Проверьте токен в Doppler
  2. Проверьте срок действия токена
  3. Сгенерируйте новый токен
bash
# Проверить токен
doppler secrets get GATEWAY_ACCESS_TOKEN --config local

# Обновить токен
doppler secrets set GATEWAY_ACCESS_TOKEN "new-token" --config local
npm run generate:env:local

Gateway не запущен локально

Проблема: ECONNREFUSED при запросах к localhost:3001

Решение:

  1. Запустите Gateway локально
  2. Или используйте dev Gateway URL
bash
# Переключиться на dev Gateway
doppler secrets set GATEWAY_URL "https://api.integ.dev.happ.tools" --config local
npm run generate:env:local

Текущие настройки

Проверить текущие настройки для всех окружений:

bash
# Local
doppler secrets get GATEWAY_URL --config local
doppler secrets get GATEWAY_ACCESS_TOKEN --config local

# Dev
doppler secrets get GATEWAY_URL --config dev
doppler secrets get GATEWAY_ACCESS_TOKEN --config dev

# Prod
doppler secrets get GATEWAY_URL --config prod
doppler secrets get GATEWAY_ACCESS_TOKEN --config prod

Best Practices

DO:

  • Используйте разные токены для каждого окружения
  • Проверяйте доступность Gateway перед деплоем
  • Логируйте все запросы к Gateway (уже настроено)
  • Используйте HTTPS в dev и prod

DON'T:

  • Не используйте prod токены в dev/local
  • Не коммитьте токены в Git
  • Не используйте HTTP в production

Мониторинг

Проверить логи Gateway запросов:

bash
# В логах приложения ищите
[GatewayService] Failed to list integrations
[GatewayService] Failed to get integration: <name>

Документация Gateway API

Ссылки на документацию Gateway API:

  • Local/Dev: http://localhost:3001/api/docs или https://api.integ.dev.happ.tools/api/docs
  • Prod: https://api.integ.happ.tools/api/docs