Docs & API

Публичный API HL Lava RNG предназначен для получения случайных байтов и “производных” представлений (цвета/строки/блоки). Данные выдаются криптографическим DRBG, который регулярно пересеивается физической энтропией (лавовые лампы).

Быстрые ссылки:
Public API Examples Errors Limits
Пробуем запросить /api/status…
Try API
Нажмите кнопку выше, чтобы выполнить запрос.

Public API

GET /api/status

Проверка состояния генератора и основных подсистем. Используется страницами UI для индикаторов “OK/Warn/Error”.

Query: нет
Success (пример):
{
  "ok": true,
  "status": {
    "camera_ok": true,
    "has_latest_colors": true,
    "drbg_ok": true,
    "bytes_served": 123456
  }
}

GET /api/random/bytes

Получение массива байтов (0..255). Это базовый эндпоинт — на нём построены hex/binary/blocks и большинство визуализаций.

Query: length — число байт (1..N)
Request: /api/random/bytes?length=32
Success (пример):
{
  "ok": true,
  "bytes": [12, 255, 83, 0, 19, 44, 7, 231,  ... ],
  "length": 32
}

GET /api/random/colors

Получение списка цветов в формате #RRGGBB. Удобно для витрин/демо и “live colours”.

Query: count — количество цветов (1..N)
Request: /api/random/colors?count=16
Success (пример):
{
  "ok": true,
  "colors": ["#2bb3ff", "#0b0f19", "#ff6b8b", ...],
  "count": 16
}

GET /generate (legacy)

Старый совместимый эндпоинт. Рекомендуется переходить на /api/random/bytes и /api/random/colors.

Query: зависит от текущей реализации
Статус: сохраняется временно для обратной совместимости

Examples

curl

Linux/macOS:
curl "http://127.0.0.1:8000/api/status"
curl "http://127.0.0.1:8000/api/random/bytes?length=64"
curl "http://127.0.0.1:8000/api/random/colors?count=16"

PowerShell

Windows:
(Invoke-RestMethod "http://127.0.0.1:8000/api/status")
(Invoke-RestMethod "http://127.0.0.1:8000/api/random/bytes?length=64")
(Invoke-RestMethod "http://127.0.0.1:8000/api/random/colors?count=16")

JavaScript fetch()

const r = await fetch("/api/random/bytes?length=32");
const j = await r.json();
if (j.ok) {
  const bytes = j.bytes; // [0..255]
  console.log(bytes);
}

Примечание про кодировки

Публичный эндпоинт выдаёт байты как JSON-массив чисел. Это удобно для демо/обучения. Для высокой пропускной способности позже добавим бинарный режим (например, application/octet-stream) отдельным endpoint’ом или через параметр.

Errors

Общая форма ошибок (рекомендуемая):
{
  "ok": false,
  "error": "bad_request",
  "message": "length must be 1..1048576"
}
Типовые причины:
  • Некорректный параметр (length, count).
  • Превышение лимитов (размер/частота).
  • Внутренняя ошибка ядра генератора (в этом случае error=internal).

Limits & recommendations

Ограничения размера

Рекомендуемый лимит для /api/random/bytes — до 1 MiB за запрос. Для UI обычно достаточно 32–8192 байт.

Ограничение частоты

Для публичного доступа разумно включать rate-limit. Если сервер начнёт тормозить, UI можно перевести на более редкие обновления (1–2 кадра/сек).

Стабильность

В случае проблем с камерой система может временно работать только на DRBG-пуле (без свежих кадров). Это отражается в /api/status.

Безопасность

Админ-управление и конфиг будут вынесены в отдельные /api/admin/* эндпоинты и закрыты токеном/сетевыми ACL. Публичный API не должен позволять управлять генератором.