Перейти до вмісту

Баланс і події

Право billing:read. Поповнення робиться в особистому кабінеті.

{
"balance": "124.30",
"currency": "USD"
}

Право billing:read. Параметри: offset, limit, type.

Порядок фіксований і не налаштовується: нові зверху, за created_at, у разі збігу - за id. Параметра сортування немає.

type: deposit, purchase, refund, commission, bonus - що стоїть за кожним із них, див. Поповнення та бонуси.

external_reference - зовнішня подія, що породила рух, а не ідентифікатор транзакції (ним є id).

promo_code заповнено в рядках типу bonus - це код, за яким нараховано бонус. В інших типів null.

GET /api/v1/events, право events:read. Читається вперед від ?after=<id>, старі зверху. Параметри: after, limit, type.

{
"events": [
{
"id": 881,
"type": "order.completed",
"occurred_at": "2026-08-28T12:00:04+00:00",
"order_id": 128,
"package_id": 42,
"data": {
"family": "traffic_gateway",
"client_reference": "deal-8891"
}
},
{
"id": 882,
"type": "package.traffic_low",
"occurred_at": "2026-08-28T18:31:00+00:00",
"order_id": 128,
"package_id": 42,
"data": {
"purchased_gb": "35.000",
"left_gb": "3.410"
}
}
],
"next_after": 882
}
ТипКолиdata
order.provisioningзамовлення пішло у видачуfamily, client_reference
order.completedвидача відбулася; надходить і на продовження адресfamily, client_reference
order.failedзамовлення не відбулося+ refunded
order.refundedгроші повернулися+ refunded
package.traffic_lowзалишок опустився нижче 10%purchased_gb, left_gb
package.traffic_exhaustedобсяг витраченоpurchased_gb, left_gb
package.expiredтермін пакета фіксованих адрес сплив, адреси не відповідаютьexpired_at, cut_off (true - пароль вимкнено, продовження видасть новий)
topup.creditedпоповнення зарахованоamount, external_reference
api_key.revokedключ відкликаноapi_key_id, name

У подій package.* поле order_id - замовлення, яким пакет було куплено.

  • Доставка at-least-once: дедуплікація за id.
  • next_after - позиція для наступного запиту; null означає, що нових подій немає.
  • Порожній events означає, що ви наздогнали журнал.
  • Події зберігаються 30 діб.
after = load_position()
while True:
params = {"limit": 200} | ({"after": after} if after else {})
body = session.get(f"{BASE}/api/v1/events", params=params, headers=AUTH).json()
for event in body["events"]:
if not already_handled(event["id"]):
handle(event)
mark_handled(event["id"])
if body["next_after"] is not None:
after = body["next_after"]
save_position(after)
if not body["events"]:
sleep(15)

Доставка - тільки опитуванням журналу.