novapost

Nova Poshta API integration for n8n with license system. Track packages, manage waybills, and access Nova Poshta services directly from your workflows.

Package Information

Downloads: 2 weekly / 20 monthly
Latest Version: 0.1.6
Author: Woolfi

Documentation

Nova Poshta Node для n8n

Custom node для интеграции n8n с API Новой Почты

�� Структура проекта

NovaPost/
├── credentials/                    # Credentials для n8n
│   └── NovaPoshtaApi.credentials.ts ✅
├── noda/                          # Основной код ноды
│   ├── constants.ts               ✅ Константы (URLs, timeout, cache config)
│   ├── types.ts                   ✅ TypeScript типы
│   ├── NovaPoshta.node.ts         ⏳ TODO
│   ├── execute.ts                 ⏳ TODO
│   ├── config/                    # Конфигурация
│   ├── helpers/                   # Вспомогательные модули
│   │   ├── api/                   ⏳ TODO (GenericFunctions, operationMeta)
│   │   ├── cache/                 ⏳ TODO (licenseCache, backgroundService)
│   │   ├── license/               ⏳ TODO (api, instanceId, validation)
│   │   ├── validation/            ⏳ TODO (validators)
│   │   └── docs/                  # Документация helpers
│   ├── operations/                # Операции по ресурсам
│   │   ├── tracking/              ⏳ TODO
│   │   ├── delivery/              ⏳ TODO
│   │   ├── counterparty/          ⏳ TODO
│   │   ├── address/               ⏳ TODO
│   │   └── license/               ⏳ TODO
│   ├── trigger/                   # Webhook триггеры
│   └── UI/                        # UI параметры
├── dist/                          # Собранные файлы
├── project_info/                  # Документация проекта
├── ARCHITECTURE.md                ✅ Архитектура
├── LICENSE_SYSTEM.md              ✅ Система лицензирования
└── README.md                      ✅ Этот файл

✅ Что сделано

1. Credentials (NovaPoshtaApi.credentials.ts)

  • API Key для Nova Poshta
  • Environment (production/sandbox)
  • License Key для доступа к ноде
  • Автоматическая аутентификация
  • Тест credentials через API Nova Poshta

2. Константы (constants.ts)

  • NOVAPOSHTA_BASE_URL
  • DEFAULT_TIMEOUT_MS
  • RETRY_CONFIG
  • CACHE_CONFIG (TTL, grace period, check time)

3. Типы (types.ts)

  • NovaPoshtaApiResponse - базовый ответ API
  • NovaPoshtaApiCredentialData - данные credentials
  • NodeParameters - параметры ноды

4. Документация

  • ARCHITECTURE.md - полная архитектура n8n custom node
  • LICENSE_SYSTEM.md - детальная система лицензирования
  • README.md - этот файл

⏳ Следующие шаги

Фаза 1: Лицензирование (в процессе)

  1. ✅ Создать credentials
  2. ✅ Создать constants и types
  3. ⏳ Перенести helpers/license/ из Monobank
    • api.ts - API запросы к серверу лицензий
    • instanceId.ts - получение instanceId
    • validation.ts - валидация лицензий
    • index.ts - экспорт
  4. ⏳ Перенести helpers/cache/ из Monobank
    • licenseCache.ts - кеширование лицензий
    • backgroundService.ts - фоновое обновление
  5. ⏳ Перенести helpers/validation/
    • validators.ts - валидация входных данных

Фаза 2: Основная нода

  1. Создать NovaPoshta.node.ts
  2. Создать execute.ts
  3. Создать UI/utils.ts
  4. Создать helpers/api/GenericFunctions.ts

Фаза 3: Операции

  1. Реализовать operations/license/license.ping.ts
  2. Реализовать базовые операции Nova Poshta
  3. Добавить webhook триггер

Фаза 4: Сборка и деплой

  1. Создать package.json
  2. Создать tsconfig.json
  3. Создать gulpfile.js
  4. Создать deploy.sh

🎯 Архитектура

Проект следует архитектуре Monobank node:

  • Модульная структура с разделением по ресурсам
  • Система кеширования лицензий (TTL 10 минут)
  • Фоновое обновление лицензий
  • Централизованная обработка ошибок
  • Логирование всех операций

Подробнее см. ARCHITECTURE.md и LICENSE_SYSTEM.md

📝 Примечания

  • Все файлы адаптированы под Nova Poshta API
  • Сохранена совместимость с системой лицензирования nodiq.dev
  • Используется та же архитектура что и в Monobank node

🔧 Переменные окружения

LICENSE_ENV

Определяет какой домен использовать для API лицензий:

Пример использования:

# Для тестирования
export LICENSE_ENV=TEST

# Для продакшн
export LICENSE_ENV=PRODUCTION
# или просто не устанавливать (по умолчанию PRODUCTION)

В Docker:

environment:
  - LICENSE_ENV=TEST

В n8n:
Добавить в переменные окружения контейнера n8n.

Discussion