Перейти к содержанию

Для разработчиков

Registry HTTP API

REST API реестра — за nginx-прокси на том же домене (same-origin):

Метод Путь Что делает
GET /registry/health живость сервиса
GET /registry/tracks каталог треков
GET /registry/tracks/{isrc} карточка трека: сплиты, жанр, BPM
POST /registry/tracks регистрация (Bearer JWT; draft_id — закрытие DDEX-черновика)
GET /registry/subjects/{ndp_id} публичный статус паспорта
POST /registry/subjects/mint минт паспорта (commitment + device key)
POST /registry/receipts/batch батч подписанных квитанций §7.1
GET /registry/stats, /registry/stats/journal статистика и журнал
GET /payouts/me мои выплаты (Bearer)

Аутентификация: Telegram-JWT (/auth/telegram, Login Widget) — пишущие эндпоинты; публичные — без токена. CORS закрыт сознательно: клиенты ходят same-origin или через собственный прокси.

MCP-сервер для ИИ-агентов

21 инструмент по протоколу Model Context Protocol: verify_artist, register_track, identify_track, get_track_manifest, snapshot_epoch, аудит-контур (журнал, статистика) и др. Транспорты: SSE и Streamable HTTP; аутентификация — Bearer. Облачная версия — Cloudflare Workers.

Оракул ADNA

  • POST /oracle/register — регистрация эталона (приватная сеть);
  • identify по отпечатку v1 (base64, 256 байт) или v2 — оконные сигнатуры: локализация фрагмента в миксе (~0,03 с), питч/темп ±8%, карта атрибуции источников для мультисэмпловых треков.

CLI

ndp-cli (Python, открытый): тегирование MP3/FLAC манифестом NDT, расчёт ADNA, сравнение, журнал квитанций, офлайн-проверка сеттлмента; меню-мастер и TUI; --json для скриптов; локали RU/EN (NDP_LANG).

main.py tag TRACK.mp3 --artist … --title … --isrc … --splits 'main:wallet:60,parent:isrc:…:40'
main.py compare a.mp3 b.mp3     # вердикт: same | derivative | different

Валидации, которые надо знать

  • сплиты: сумма ровно 100, роли — main/parent/…;
  • производный трек: ровно один сплит role='parent' с wallet='isrc:<ISRC>';
  • ADNA: base64, 256 байт;
  • ISRC: CC-XXX-YY-NNNNN.