Бизнес-сигналы · EndPoint

EndPoint бизнес-сигналов

Ваш сайт уже знает, сколько у него пользователей, кто зарегистрировался сегодня, сколько статей или анкет, сколько прошло оплат и что ждёт модерации. Шлите эти цифры на один EndPoint и следите за всеми своими сайтами в едином дашборде — с тревогами по аномалиям, целями и бенчмарком по портфелю. Это EndPoint, а не виджет: сервер-к-серверу, без персональных данных, только счётчики.

01

Что можно отправлять

Любой счётчик, который вы назовёте. Отнесите его к категории — а мы построим график, разложим по разрезам и будем следить за ним.

Пользователи

всего пользователей, регистрации по дням, подписчики, удаления

Контент

материалы любого типа — статьи, видео, анкеты, объявления

Выручка

попытки оплаты, успешные оплаты, возвраты — плюс производная конверсия

Модерация

анкеты на удаление, жалобы, очереди на проверку

Обратная связь

сообщения через форму, тикеты поддержки, NPS

Что угодно ещё

назовите метрику — и она появится, без настройки с нашей стороны

02

EndPoint

POSThttps://astrina.io/endpoint/ingestОтправить пакет сигналов. Авторизация: ключ сайта в заголовке X-Astrina-Key.
GEThttps://astrina.io/endpoint/pingПинг — возвращает ожидающие команды без отправки данных.
GEThttps://astrina.io/endpoint/insightsЗабрать вычисленное здоровье этого сайта: текущие значения, дельты, цели, тревоги и медиану по остальным вашим сайтам.
POSThttps://astrina.io/endpoint/ackПодтвердить доставленную команду по её id.
03

Примеры

curl -X POST https://astrina.io/endpoint/ingest \
  -H "X-Astrina-Key: YOUR_SITE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "signals": [
      { "metric": "users",              "kind": "gauge", "value": 15230, "category": "users" },
      { "metric": "registrations",      "value": 42,     "category": "users" },
      { "metric": "materials", "kind": "gauge", "value": 842, "dim": "article", "category": "content" },
      { "metric": "materials", "kind": "gauge", "value": 301, "dim": "video",   "category": "content" },
      { "metric": "payment_requests",   "value": 18,     "category": "revenue" },
      { "metric": "payment_success",    "value": 11,     "category": "revenue", "unit": "EUR" },
      { "metric": "feedback",           "value": 3,      "category": "feedback" },
      { "metric": "profiles_to_delete", "kind": "gauge", "value": 5, "category": "moderation",
        "good_dir": "down", "attention": true }
    ]
  }'
<?php
// Run this daily (cron) on your own site. Sends only counts — never personal data.
$key = 'YOUR_SITE_KEY';
$payload = ['signals' => [
    ['metric' => 'users',         'kind' => 'gauge', 'value' => usersTotal(),          'category' => 'users'],
    ['metric' => 'registrations', 'value' => registrationsToday(),                     'category' => 'users'],
    ['metric' => 'payment_requests', 'value' => paymentAttemptsToday(),               'category' => 'revenue'],
    ['metric' => 'payment_success',  'value' => paymentsPaidToday(), 'unit' => 'EUR',  'category' => 'revenue'],
    ['metric' => 'feedback',      'value' => feedbackToday(),                          'category' => 'feedback'],
    ['metric' => 'profiles_to_delete', 'kind' => 'gauge', 'value' => deletionQueue(),
        'category' => 'moderation', 'good_dir' => 'down', 'attention' => true],
]];
$ch = curl_init('https://astrina.io/endpoint/ingest');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['X-Astrina-Key: YOUR_SITE_KEY', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_RETURNTRANSFER => true,
]);
$resp = json_decode(curl_exec($ch), true);
// Two-way: act on anything Astrina asks for (e.g. a fresh full snapshot).
foreach ($resp['requests'] ?? [] as $cmd) {
    if ($cmd['cmd'] === 'full_snapshot') { /* push your whole history, then: */ }
    // acknowledge so it is not re-sent:
    // curl https://astrina.io/endpoint/ack  -d '{"id": ' . $cmd['id'] . '}'
}
<?php
// One-off: backfill a year of daily registrations so the charts start full.
$signals = [];
foreach (registrationsByDay('-365 days') as $day => $n) {   // 'YYYY-MM-DD' => int
    $signals[] = ['metric' => 'registrations', 'value' => $n, 'day' => $day, 'category' => 'users'];
}
// up to 2000 points per request
foreach (array_chunk($signals, 2000) as $chunk) {
    postJson('https://astrina.io/endpoint/ingest', ['signals' => $chunk], 'YOUR_SITE_KEY');
}
# Pull this site's computed health BACK (current values, 30-day deltas, target
# progress, open alerts, and the median across YOUR OTHER sites) to show it in-app:
curl "https://astrina.io/endpoint/insights" -H "X-Astrina-Key: YOUR_SITE_KEY"

Замените YOUR_SITE_KEY на ключ из вашего дашборда. У каждого сайта свой ключ; он разрешает отправку цифр только этого сайта.

04

Поля сигнала

ПолеЗначение
metricобязательноAny key you choose — users, registrations, materials, payment_success… Stored under this key forever.
valueобязательноThe number. For a gauge it is the current total; for a count it is that period's amount.
kindнеобязательно"gauge" (a snapshot total, e.g. total users now) or "count" (per-day amount, the default).
dayнеобязательноYYYY-MM-DD. Defaults to today. Send past days to backfill; re-sending a day overwrites it.
dimнеобязательноA breakdown value, e.g. the material type "article"/"video". One series per dimension.
categoryнеобязательноusers · content · revenue · moderation · feedback · engagement · custom — groups the metric.
unitнеобязательноA short unit shown next to the number, e.g. "EUR", "GB".
good_dirнеобязательно"up" (default), "down" (lower is better, e.g. a deletion queue) or "none".
attentionнеобязательноtrue pins the metric to the cross-site cockpit as a "needs clearing" number.
eventнеобязательноtrue + a count with no day increments today instead of overwriting it.
05

Двусторонний по замыслу

Команды обратно

Каждая отправка возвращает команды, поставленные вами в очередь в дашборде — например, «отправить полный снимок». Сайт выполняет их и подтверждает.

Инсайты обратно

Вызовите /endpoint/insights, чтобы показать свои живые цифры, цели и тревоги внутри своей админки.

Бенчмарк по портфелю

Мы возвращаем медиану каждой метрики по остальным вашим сайтам, чтобы сайт мог показать, как он смотрится на их фоне.

Слежение за аномалиями

Мы следим за резкими падениями, всплесками, замолчавшей интеграцией и платёжной воронкой, переставшей конвертировать — и отмечаем это.

EndPoint бизнес-сигналов

На какие запросы отвечает эта страница

  • endPoint бизнес-сигналов
  • endPoint бизнес-сигналов — руководство
  • endPoint бизнес-сигналов — разбор
  • endPoint бизнес-сигналов — пошаговый разбор
  • с чего начать: EndPoint бизнес-сигналов
  • endPoint бизнес-сигналов — как делают правильно
  • endPoint бизнес-сигналов по шагам
  • что такое EndPoint бизнес-сигналов
  • endPoint бизнес-сигналов для новичков
  • endPoint бизнес-сигналов — чек-лист
  • endPoint бизнес-сигналов — примеры
  • зачем нужно EndPoint бизнес-сигналов