Перейти к основному содержимому

Аутентификация ShopStory Public API

По состоянию на 24 февраля 2026 для production-интеграций используется applicationId в query-параметрах.

request-streams.sh
curl -s "https://app.shopstory.live/v3/streams?applicationId=<your-app-id>&limit=10"

Что обязательно

  1. Держать applicationId на серверной стороне (proxy/backend).
  2. Не публиковать applicationId в клиентском JS-коде.
  3. Проверять в ответе и HTTP-код, и status внутри envelope.

Минимальный proxy-шаблон (Node.js)

shopstory-auth-proxy-express.js
import express from 'express';

const app = express();
const APP_ID = process.env.SHOPSTORY_APPLICATION_ID;

app.get('/api/shopstory/streams', async (req, res) => {
const search = new URLSearchParams({
applicationId: APP_ID,
limit: String(req.query.limit ?? 12),
offset: String(req.query.offset ?? 0),
});

const upstream = await fetch(`https://app.shopstory.live/v3/streams?${search}`);
const payload = await upstream.json();
res.status(200).json(payload);
});

Реальное поведение ошибок

Для /v3/streams ошибки валидации часто приходят как:

  • HTTP 200;
  • status: 400 внутри JSON;
  • body.error как строка ("invalid"), а не только объект.

Пример:

auth-error-envelope.json
{
"status": 400,
"body": {
"error": "invalid",
"message": "invalid applicationId"
},
"serverTime": "2026-02-24T14:20:01.108672592Z"
}

Bearer токены

Bearer-модель запланирована на лето 2026. До официального релиза для production-интеграций используется applicationId.

Практика эксплуатации

  1. Логируйте долю ответов с status != 200.
  2. Включите rate limiting и кэш на своей стороне.
  3. При утечке или подозрительной активности запрашивайте ротацию applicationId через поддержку.