# Статический сайт

Что понадобится: сайт по адресу `http://` или `https://` (страница, открытая из файла, не подойдёт) и полная сессия в кабинете Донатти. Публичный ключ читает профиль, цели и статистику. Список донатов он не открывает.

## 1. Выпустите публичный ключ

[Открыть раздел «Разработчикам»](https://streamer.staging.donatty.com/developers)

Откройте раздел «Разработчикам», в блоке «Публичный ключ» нажмите «Выпустить публичный ключ». Укажите адрес, с которого сайт будет обращаться к API: протокол, домен и, если нужно, порт, без пути. Например, `https://mysite.example`. Нажмите «Выпустить ключ» и скопируйте ключ. Значение остаётся в разделе: его можно скопировать снова.

Ключ можно вставить в код сайта, но видят его все посетители. Проверка адреса защищает только от чужих сайтов в браузере, поэтому ничего секретного за этим ключом нет.

## 2. Запросите данные из браузера

Браузер сам подставляет заголовок `Origin` с адресом вашего сайта. Если адреса нет в списке разрешённых, API ответит отказом.

```js
const response = await fetch("https://api.staging.donatty.com/v1/goals?status=ACTIVE&limit=1", {
    headers: {Authorization: "Bearer dnt_pk_..."},
});
const {items} = await response.json();
console.log(items);
```

Те же запросы в curl: `Origin` в них указан вручную, потому что curl сам его не ставит.

Публичный ключ работает только с разрешённого адреса сайта: в примерах ниже `Origin` указан вручную, из
браузера заголовок ставится сам.

```bash
curl -s "https://api.staging.donatty.com/v1/goals?status=ACTIVE&limit=1" -H "Authorization: Bearer $KEY" \
  -H 'Origin: https://mysite.example'
curl -s "https://api.staging.donatty.com/v1/stats/top?period=WEEK&limit=3" -H "Authorization: Bearer $KEY" \
  -H 'Origin: https://mysite.example'
curl -s "https://api.staging.donatty.com/v1/stats/total?period=DAY&timeZone=Asia/Novosibirsk" -H "Authorization: Bearer $KEY" \
  -H 'Origin: https://mysite.example'
```

- `raised` цели — собранное целью Донатти по всем донатам, включая отклонённые модерацией; цели Donation
  Alerts и настройки виджета не учитываются, поэтому прогресс на сцене может отличаться.
- Топ и сумма — все подключённые источники стримера в рублях. Период `DAY | WEEK | MONTH | YEAR |
  ALL_TIME` (по умолчанию `ALL_TIME`) — календарный в зоне `timeZone` (IANA, по умолчанию
  `Europe/Moscow`); граница `[from, to)`: `to` — начало следующего периода и в сумму не входит.

В `raised` входит и ручной старт цели — начальная сумма, которую стример задал вручную. Учитывайте её, когда сравниваете `raised` с суммой донатов.

## 3. Если пришла ошибка

Браузер скрывает тело ответа, когда адрес сайта не разрешён: вместо `origin_not_allowed` вы увидите только сетевую ошибку в консоли. Откройте «Настроить ключ» у публичного ключа: в списке адресов должен быть точный адрес вашего сайта с тем же протоколом и портом. После правки нажмите «Сохранить адреса».

Проверять ключ лучше со своего сайта. Если пробуете его в справочнике на этой странице, придётся добавить адрес `https://developers.staging.donatty.com` в адреса ключа, а для работы вашего сайта это не нужно.

Остальные ошибки собраны в разделе [«Ошибки»](https://developers.staging.donatty.com/errors.md).
