Для автентифікації, формату помилок і заголовків дивіться Загальну інформацію API.
Замовлення
Отримати конфігурацію каталогу проксі
GET /orders/config
Отримати повну конфігурацію каталогу проксі. Публічний — автентифікація не потрібна.
Відповідь
{
"proxyTypes": [
{
"id": "residential-giga",
"name": "Residential Giga",
"slug": "residential-giga",
"shortDescription": "Реальні житлові IP, оплата за Гіга — максимальна довіра.",
"paymentModel": "prepaid",
"unit": "giga",
"pricePerUnit": 1.5,
"hasTraffic": true,
"trafficDiscounts": [
{ "min": 10, "discount": 0.05, "label": "5% знижка" }
],
"countDiscounts": [],
"tags": ["Змінювані IP", "Реальний ISP"],
"countryMode": "будь-коли",
"requiresCountry": false,
"supportsCountry": true,
"supportsCity": true,
"supportsState": true,
"supportsChangeCountry": true,
"billingPeriods": [],
"presets": [
{ "label": "Trial", "trafficGb": 1 }
]
},
...
],
"billingPeriods": [
{ "id": "week", "label": "Щотижня", "multiplier": 0.4167 },
{ "id": "month", "label": "Щомісяця", "multiplier": 1 },
{ "id": "year", "label": "Щорічно", "multiplier": 10.5 }
],
"minOrderAmount": 0.5,
"trafficPricePerGb": 0.10,
"trafficVolumeDiscounts": [
{ "min": 50, "discount": 0.05, "label": "5% знижка на трафік" },
{ "min": 100, "discount": 0.10, "label": "10% знижка на трафік" },
{ "min": 500, "discount": 0.15, "label": "15% знижка на трафік" }
]
}Попередній перегляд ціни замовлення Auth required
POST /orders/preview
Перегляньте ціну замовлення перед покупкою.
Тіло запиту
Передплачений гіга:
{
"proxyTypeId": "residential-giga",
"trafficGb": 50
}Післяплачений IP:
{
"proxyTypeId": "private-proxy",
"count": 25,
"trafficGb": 50,
"billingPeriod": "month",
"countries": { "US": 10, "DE": 10, "GB": 5 }
}| Ім'я | Тип | Опис | Обов’язково |
|---|---|---|---|
proxyTypeId | string | Ідентифікатор типу проксі з конфігурації | Так |
trafficGb | number | Гігабайти трафіку | Гіга типи: Так |
count | number | Кількість IP-адрес | IP типи: Так |
billingPeriod | string | week / month / year | Ні |
countries | object | Карта країна → кількість | Ні |
Відповідь
{
"proxyType": {
"id": "residential-giga",
"name": "Residential Giga",
"paymentModel": "prepaid",
"unit": "giga"
},
"breakdown": {
"proxyTypeId": "residential-giga",
"count": 0,
"trafficGb": 50,
"subtotal": 63.75,
"discountAmount": 11.25,
"total": 63.75
},
"display": {
"totalDisplay": 2637.19,
"currency": "UAH",
"exchangeRate": 41.37
}
}Тип із
"hidden": true(безкоштовний тест, idfree) ніколи не продається:previewіcreateвідмовляються зorder.invalid_proxy_type, і його не можна поновити чи поповнити. Він перелічений, щоб клієнти могли показати замовлення, яке його використовує; не пропонуйте його для покупки.
Отримати статус безкоштовного тесту Auth required
GET /orders/free-test
Чи може акаунт все ще отримати своє єдине безкоштовне тестування, і що воно дає.
Відповідь
{ "available": true, "claimed": false, "orderId": null, "ips": 3, "trafficGb": 1, "hours": 24 }claimed— акаунт вже мав його (видалений або термін якого закінчився враховується; той, що був скасований адміном, не враховується)orderId— hash id замовлення для безкоштовного тесту, поки це замовлення все ще існуєavailable—true, коли його можна зараз отримати (не стверджено, і акаунт не позначено як бот)
Претендувати на безкоштовний тест Auth required 5 req / 24h
POST /orders/free-test
Надає 3 серверні IP-адреси з 3 випадкових країн та 1 ГБ трафіку на 24 години безкоштовно. Один на акаунт. Обмеження швидкості: 5 на день на IP.
Відповідь
Повний об'єкт замовлення (такий же, як GET /orders/:id) з proxyType.id: "free", billingPeriod: null, dates.expiresAt на 24 години вперед і pricing.totalUsd: 0. Автооновлення вимкнено та не може бути оплачено.
Помилки
{ "message": "free_test.already_claimed" }
{ "message": "free_test.unavailable" }
{ "message": "free_test.out_of_stock" }
{ "message": "free_test.rate_limit" }На out_of_stock нічого не створюється, і акаунт може спробувати знову пізніше. Фанел записує подію free_test_claimed (не order_placed).
Створити замовлення Auth required
POST /orders/create
Створіть реальне замовлення. Як передплачені, так і післяплачені замовлення негайно знімають баланс.
Тіло запиту
Післяплачено з обраними країнами:
{
"proxyTypeId": "private-proxy",
"count": 25,
"trafficGb": 50,
"billingPeriod": "month",
"countries": { "US": 10, "DE": 10, "GB": 5 }
}Післяплачено з випадковими країнами:
{
"proxyTypeId": "private-proxy",
"count": 25,
"trafficGb": 50,
"billingPeriod": "month"
}Коли
countriesопущено абоnull, IP призначаються із випадкових доступних країн. Вибір країни не впливає на ціну.
Відповідь
Повний об'єкт замовлення (такий же, як GET /orders/:id).
Помилки
{ "message": "order.invalid_proxy_type" }
{ "message": "order.invalid_billing_period" }
{ "message": "order.invalid_count" }
{ "message": "order.invalid_traffic_gb" }
{ "message": "order.countries_required" }
{ "message": "order.insufficient_balance" }Отримати підсумок замовлень Auth required
GET /orders/summary
Легкий підсумок — один агрегований запит, без пагінації. Повертає кількість замовлень, загальну кількість IP, куплений трафік і витрачену суму — згруповані за статусом і типом проксі. Ідеально підходить для значків інформаційної панелі, оглядів витрат і лічильників по секціях.
Відповідь
{
"total": {
"orders": 7,
"ips": 35,
"trafficGb": 120.5,
"spentUsd": 89.40
},
"byStatus": {
"pending": { "orders": 1, "ips": 5, "trafficGb": 10.0, "spentUsd": 9.00 },
"paid": { "orders": 0, "ips": 0, "trafficGb": 0, "spentUsd": 0 },
"active": { "orders": 4, "ips": 20, "trafficGb": 100.5, "spentUsd": 68.40 },
"expired": { "orders": 1, "ips": 5, "trafficGb": 10.0, "spentUsd": 9.00 },
"cancelled": { "orders": 1, "ips": 5, "trafficGb": 0, "spentUsd": 3.00 },
"refunded": { "orders": 0, "ips": 0, "trafficGb": 0, "spentUsd": 0 }
},
"byType": {
"private-proxy": {
"orders": 3, "ips": 15, "trafficGb": 0, "spentUsd": 27.00,
"byStatus": {
"active": { "orders": 2, "ips": 10, "trafficGb": 0, "spentUsd": 18.00 },
"expired": { "orders": 1, "ips": 5, "trafficGb": 0, "spentUsd": 9.00 }
}
},
"server-static": {
"orders": 2, "ips": 20, "trafficGb": 20.5, "spentUsd": 36.40,
"byStatus": {
"active": { "orders": 2, "ips": 20, "trafficGb": 20.5, "spentUsd": 36.40 }
}
},
"residential-giga": {
"orders": 2, "ips": 0, "trafficGb": 100.0, "spentUsd": 26.00,
"byStatus": {
"active": { "orders": 1, "ips": 0, "trafficGb": 50.0, "spentUsd": 13.00 },
"pending": { "orders": 1, "ips": 0, "trafficGb": 50.0, "spentUsd": 13.00 }
}
}
}
}Поля об'єкта агрегату
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
orders | number | Кількість замовлень | — |
ips | number | Загальна кількість куплених IP (sum стовпчика count) | — |
trafficGb | number | Загальний куплений трафік у ГБ | — |
spentUsd | number | Загальна сума, витрачена у USD | — |
byStatusзавжди включає всі 6 статусів (нули для статусів без замовлень).byType.*.byStatusвключає тільки статуси, які мають хоча б одне замовлення для цього типу.
Список замовлень Auth required
GET /orders
Перелік замовлень користувача (з пагінацією).
Параметри запиту
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
page | number | Номер сторінки (за замовчуванням: 1) | Ні |
limit | number | Кількість елементів на сторінку (за замовчуванням: 20) | Ні |
type | string | Фільтрувати за ID типу проксі | Ні |
Відповідь
{
"orders": [ ... ],
"total": 42,
"page": 1,
"pages": 3
}Отримати замовлення за ID Auth required
GET /orders/:id
Отримати одне замовлення за ID.
Параметри
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
:id | string | ID замовлення | Так |
Відповідь
{
"id": "80-472109",
"name": "My US Proxies",
"status": "active",
"proxyType": {
"id": "server-static",
"name": "Server Static",
"paymentModel": "postpaid",
"unit": "ip"
},
"count": 5,
"trafficGb": 10,
"billingPeriod": "month",
"proxyUsername": "u_a1b2c3",
"proxyPassword": "xYz9q2Wp4rT8mN1k",
"peer": {
"host": "us1.fonproxy.com",
"portMin": 10000,
"portMax": 19999
},
"countries": { "US": 3, "DE": 2 },
"usage": { "totalGb": 1.2, "maxGb": 10, "usedPercent": 12.0, "remainingGb": 8.8 },
"provisioning": {
"state": "ok",
"assignedCountries": null,
"missingCountries": null,
"assignedCount": 5,
"missingCount": 0
},
"pricing": { "totalUsd": 4.50 },
"dates": { "createdAt": "2026-04-01T10:00:00.000Z", "activatedAt": "2026-04-01T10:00:05.000Z" }
}Статуси замовлень: pending, paid, active, expired, cancelled, refunded
Поле Provisioning
Кожна відповідь замовлення включає об'єкт provisioning, який показує стан призначення IP — фронтенд ніколи не потребує розбору сирих meta.
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
state | "ok" | "pending" | "partial" | Поточний стан призначення | — |
assignedCountries | Record<string,number> | null | Призначені країни з кількістю по країні | — |
missingCountries | Record<string,number> | null | Країни з недостатньою кількістю IP, з потрібною кількістю | — |
assignedCount | number | Загальна кількість успішно призначених IP | — |
missingCount | number | Загальна кількість IP, які все ще відсутні | — |
Значення станів:
| Стан | Коли | Що показати |
|---|---|---|
"ok" | Повністю призначено (або не застосовується) | Нічого — замовлення в гарному стані |
"pending" | Післяплачене замовлення сплачено, але чекає на IP. Ще не запущено. | Банер: "Ваше замовлення налаштовується…" з деталізацією missingCountries |
"partial" | Активне передплачене замовлення, але для деяких країн не вистачало IP. Працює з частковими IP. | Попередження: "Замовлення активне з частковими IP" + missingCountries |
Приклад — очікування (післяплачене, чекає на запас DE):
{
"state": "pending",
"assignedCountries": { "US": 3, "CA": 2 },
"missingCountries": { "DE": 1 },
"assignedCount": 5,
"missingCount": 1
}Приклад — частковий (передплачений, активний, але недостає деяких):
{
"state": "partial",
"assignedCountries": { "US": 10 },
"missingCountries": { "FR": 3, "IT": 2 },
"assignedCount": 10,
"missingCount": 5
}Поле
stateдостатньо для того, щоб фронтенд вирішив, що відображати.
Поля використання
| Ім’я | Тип | Опис | Обов’язково |
|---|---|---|---|
uploadBytes | number | Загальна кількість завантажених байтів | — |
downloadBytes | number | Загальна кількість завантажених байтів | — |
totalBytes | number | Завантаження + завантаження | — |
requestCount | number | Загальна кількість оброблених запитів проксі | — |
uploadGb | number | Завантаження в ГБ (3 десятинних знаки) | — |
downloadGb | number | Завантаження в ГБ (3 десятинних знаки) | — |
totalGb | number | Загальний трафік у ГБ | — |
maxBytes | number | null | Максимально дозволена кількість байтів (лише для замовлень за giga, null для замовлень за IP) | — |
maxGb | number | null | Максимально дозволена кількість ГБ (order.trafficGb для giga, null для IP) | — |
remainingBytes | number | null | Залишилося байтів, перш ніж буде вичерпана квота | — |
remainingGb | number | null | Залишилося ГБ | — |
usedPercent | number | null | Відсоток використаної квоти (0–100, 2 десятинних знаки) | — |
lastReportedAt | string | null | ISO-мітка часу останнього звіту про використання пірингу | — |
Для замовлень за гіга (
unit: 'giga'):maxGb= купленийtrafficGb. Фронтенд може показати шкалу прогресу, використовуючиusedPercent. Для замовлень за IP (unit: 'ip'):maxBytes,maxGb,remainingBytes,remainingGb,usedPercentєnull— трафік лише для інформаційного використання.
Автоматичне призначення IP
Після створення та сплати замовлення, призначення IP відбувається автоматично через фоновий процес на основі подій:
| Модель платежу | Поведінка |
|---|---|
| проплачений | Балансова сума знімається негайно. IP автоматично присвоюються по країні. Замовлення активується завжди — навіть якщо в деяких країнах недостатньо IP (частково). provisioning.state = "partial" з деталізацією missingCountries. |
| післяплачений | Залишається замовлення pending до моменту поки всі IP не будуть присвоєні. Якщо всі країни заповнені → активується негайно (state: "ok"). Якщо будь-яка країна має недостатньо → залишається pending (state: "pending"). Адміністратор заповнює відсутні слоти; замовлення автоматично активується. |
Обробка фронтендом за provisioning.state:
| Стан | Статус | Що показати |
|---|---|---|
"ok" | active | Звичайний вигляд замовлення |
"pending" | pending | Повноекранний банер "Налаштовуємо ваше замовлення…" з таблицею missingCountries. Замовлення не запущено. |
"partial" | active | Попереджувальний банер "Працює з частковими IP — деякі місця очікують" + таблиця missingCountries. IP працюють. |
Адміністратори можуть використовувати
POST /admin/orders/:id/ips/assign-by-countryабоPOST /admin/orders/:id/ips/add-by-countryдля заповнення відсутніх слотів. Як тільки всі відсутні слоти заповнено, післяплачене замовлення автоматично активується.
Отримати IP замовлення Auth required
GET /orders/:id/ips
Отримати IP, призначені для замовлення.
- Повертаються тільки активні (призначені) і видимі IP — IP, приховані адміністратором (
visible=false), виключені. - Поле
index– це абсолютна позиція (починаючи з 0). Можуть бути пробіли, де сидять приховані IP — це навмисно. - Інформація про з'єднання обчислюється від активного пірингу:
host : portMin + index. - Облікові дані – це власне
proxyUsername/proxyPasswordзамовлення — НЕ оригінальні облікові дані проксі.
Параметри
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
:id | string | ID замовлення | Так |
Відповідь
{
"orderId": "K4Xb9r",
"credentials": {
"username": "user_a1b2c3d4e5f6",
"password": "xYz9q2Wp4rT8mN1k"
},
"ips": [
{
"index": 0,
"host": "us1.fonproxy.com",
"port": 10000,
"originalIp": "185.123.45.67",
"countryCode": { "geoip": "US" },
"city": { "geoip": "New York" },
"state": { "geoip": "NY" },
"status": "active",
"lastVerifiedAt": "2026-03-23T08:14:00.000Z",
"assignedAt": "2026-03-20T10:01:00.000Z"
},
...
],
"total": 2,
"provisioning": {
"state": "ok",
"assignedCountries": null,
"missingCountries": null,
"assignedCount": 2,
"missingCount": 0
}
}Індекс
1відсутній — цей IP був прихований адміністратором. Користувач бачить 0, 2 з портами 10000, 10002.Використовуйте
credentials.username/credentials.passwordдля автентифікації зhost:port.Якщо жоден піринг не активний,
hostтаportбудутьnull.Для очікуваних замовлень (
provisioning.state === "pending"),ipsбуде порожнім або частковим таprovisioning.missingCountriesпоказує, що ще розподіляється. Показати банер "очікування на IP".Для часткових замовлень (
provisioning.state === "partial"),ipsмістить призначені IP таprovisioning.missingCountriesпоказує, що ще відсутнє. Замовлення працює — показати попередження.
Скинути публічний ключ завантаження Auth required
POST /orders/:id/reset-hash
Скидання хеш-ключа публічного завантаження для замовлення.
Параметри
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
:id | string | ID замовлення | Так |
Відповідь
{ "publicHash": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" }Оновити налаштування замовлення Auth required
PATCH /orders/:id/settings
Оновлення налаштувань замовлення, які можуть редагувати користувачі. Всі поля необов'язкові.
Параметри
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
:id | string | ID замовлення | Так |
Тіло запиту
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
name | string | null | Користувацька мітка. Передайте null, щоб очистити. Повертається до ID замовлення у відповідях. | Ні |
proxyUsername | string | Нове ім’я користувача проксі. Літери та цифри. Зберігається як u_<value>. | Ні |
proxyPassword | string | Новий пароль проксі. Не може бути порожнім. | Ні |
{
"name": "My US Proxies",
"proxyUsername": "myuser",
"proxyPassword": "mySecurePass123"
}Відповідь
Повний об'єкт замовлення (такий же, як GET /orders/:id).
Помилки
{ "message": "order.username_empty" }
{ "message": "order.password_empty" }Видалити замовлення Auth required
DELETE /orders/:id
М'яке видалення замовлення. Дозволено для усіх статусів замовлень — очікуваних, оплачуваних, активних, завершених, скасованих, відшкодованих.
Каскадно м'яко видаляє пов'язані order_ips, order_usage, та order_renewal_configs. М’яко видалений заказ зберігається 30 днів перед остаточним видаленням.
Параметри
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
:id | string | ID замовлення | Так |
Відповідь
{ "deleted": true }Помилки
{ "message": "order.not_found" }Управління замовленнями та трафіком
Отримати цінові опції замовлення Auth required
GET /orders/:id/pricing
Отримати всі цінові опції для поновлення та поповнення трафіку на існуючому замовленні.
Повертає:
- Поновлення (лише післяплачене): повна розбивка ціни для поновлення поточного платіжного періоду.
- Поповнення трафіку (усі типи): вибірні пресети з повною розбивкою.
Параметри
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
:id | string | ID замовлення | Так |
Відповідь (післяплачене замовлення)
{
"orderId": "80-472109",
"proxyTypeId": "private-proxy",
"proxyTypeName": "Private Proxy",
"paymentModel": "postpaid",
"unit": "ip",
"renewal": {
"billingPeriod": "month",
"breakdown": {
"proxyTypeId": "private-proxy",
"count": 25,
"trafficGb": 50,
"period": "month",
"periodLabel": "Щомісячно",
"subtotal": 21.38,
"trafficCost": 2.50,
"discount": { "min": 25, "discount": 0.05, "label": "5% знижка" },
"discountAmount": 1.13,
"total": 23.88
},
"discountPercent": 0,
"discountAmount": 0,
"total": 23.88,
"canRenew": true
},
"trafficTopup": {
"options": [
{
"trafficGb": 5,
"pricePerGb": 0.05,
"subtotal": 0.25,
"discount": null,
"discountAmount": 0,
"total": 0.50
},
...
],
"canTopup": true
}
}Відповідь (передоплачене замовлення за гіга)
{
"orderId": "80-123456",
"proxyTypeId": "residential-giga",
"proxyTypeName": "Residential Giga",
"paymentModel": "prepaid",
"unit": "giga",
"renewal": null,
"trafficTopup": {
"options": [
{
"trafficGb": 1,
"pricePerGb": 1.5,
"subtotal": 1.50,
"discount": null,
"discountAmount": 0,
"total": 1.50
},
...
],
"canTopup": true
}
}
renewalдорівнюєnullдля передоплачених типів (без поновлення — натомість купити додатковий трафік). Опції поповнення трафіку використовують ту саму ціну, що й початкова покупка для цього типу. Фронтенд може використовувати пресетиoptionsабо викликати налаштування попереднього перегляду нижче.
Попередній перегляд поповнення трафіку Auth required
GET /orders/:id/traffic-preview
Попередній перегляд поповнення трафіку за індивідуальну кількість ГБ.
Параметри
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
:id | string | ID замовлення | Так |
Параметри запиту
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
trafficGb | number | Кількість ГБ для попереднього перегляду | Так |
Відповідь
{
"trafficGb": 25,
"pricePerGb": 0.05,
"subtotal": 1.25,
"discount": null,
"discountAmount": 0,
"total": 1.25
}Помилки
{ "message": "order.invalid_traffic_gb" }
{ "message": "order.not_found" }Поновити замовлення Auth required
POST /orders/:id/renew
Ручне поновлення післяплаченого замовлення на той самий платіжний період. Знімає з балансу.
Параметри
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
:id | string | ID замовлення | Так |
Тіло запиту
Тіло не потребується — надсилає поновлення за поточною ціною.
Відповідь
Повний об'єкт замовлення.
Помилки
{ "message": "order.not_postpaid" }
{ "message": "order.not_renewable" }
{ "message": "order.insufficient_balance" }
{ "message": "order.charge_locked" }Поповнити трафік Auth required
POST /orders/:id/topup-traffic
Додайте ГБ трафіку до будь-якого замовлення (передоплаченного або післяплаченого). Знімає з балансу.
Ціноутворення використовує модель таку ж як при покупці:
- **Передплачений гіга: **
pricePerUnit× ГБ з урахуваннямtrafficDiscounts. - **Післяплачений IP: **
trafficPricePerGb× ГБ з урахуваннямTRAFFIC_VOLUME_DISCOUNTS.
Використовуйте GET /orders/:id/pricing або GET /orders/:id/traffic-preview, щоб побачити точні ціни до покупки.
Параметри
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
:id | string | ID замовлення | Так |
Тіло запиту
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
trafficGb | number | ГБ для додавання (повинен бути > 0) | Так |
{ "trafficGb": 10 }Відповідь
Повний об'єкт замовлення.
Помилки
{ "message": "order.not_active" }
{ "message": "order.insufficient_balance" }
{ "message": "order.charge_locked" }Отримати конфігурацію поновлення Auth required
GET /orders/:id/renewal-config
Отримайте налаштування автоматичного управління для замовлення. Повертає значення за замовчуванням, якщо ніколи не було сконфігуровано.
Параметри
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
:id | string | ID замовлення | Так |
Відповідь
{
"autoRenew": true,
"autoTopupGb": true,
"autoTopupAmount": 10,
"autoTopupThresholdPercent": 80
}| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
autoRenew | boolean | Тільки післяплачене — автоматичне поновлення за 24 години до закінчення терміну дії (за замовчуванням: true) | — |
autoTopupGb | boolean | Автопокупка трафіку при досягненні порогу використання (за замовчуванням: true) | — |
autoTopupAmount | number | ГБ для покупки при автопоповненні (за замовчуванням: 10) | — |
autoTopupThresholdPercent | number | Відсоток використання, який викликає автопоповнення, 1–99 (за замовчуванням: 80) | — |
Оновити конфігурацію поновлення Auth required
PATCH /orders/:id/renewal-config
Оновлення можливостей автоматичного керування. Всі поля необов’язкові — відправте тільки те, що хочете змінити. Створює рядок конфігурації зі значеннями за замовчуванням при першому виклику.
Параметри
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
:id | string | ID замовлення | Так |
Тіло запиту
{
"autoRenew": true,
"autoTopupGb": true,
"autoTopupAmount": 20,
"autoTopupThresholdPercent": 75
}Відповідь
Така ж форма, як GET /orders/:id/renewal-config.
Помилки
{ "message": "order.not_postpaid" }
{ "message": "order.invalid_topup_amount" }
{ "message": "order.invalid_topup_threshold" }Конфігурація поновлення у відповідях замовлення
Кожен об'єкт замовлення (з GET /orders, GET /orders/:id тощо) включає поле renewalConfig:
{
"id": "80-472109",
"status": "active",
"renewalConfig": {
"autoRenew": true,
"autoTopupGb": true,
"autoTopupAmount": 10,
"autoTopupThresholdPercent": 80
}
}Підсумок автоматичного керування
| Функція | Спрацьовування | Ендпоінт для налаштування |
|---|---|---|
| Автоматичне поновлення | ~24 години до закінчення терміну (cron) | PATCH /orders/:id/auto-renew |
| Автоматичне поповнення трафіку | використання ≥ поріг (cron кожні 10 хвилин) | PATCH /orders/:id/auto-topup |
| Активоване пірингом поповнення | піринг повідомляє про вичерпування | внутрішнє — POST /internal/peer/traffic/exhausted |
Завантаження проксі (публічний)
Перелік форматів експорту
GET /proxy/formats
Перелік доступних форматів експорту. Публічний — автентифікація не потрібна.
Відповідь
{
"formats": [
{ "id": "txt", "name": "Прості текст — host:port:user:pass", "extension": "txt" },
{ "id": "user-pass-at", "name": "user:pass@host:port", "extension": "txt" },
{ "id": "proto-url", "name": "proto://user:pass@host:port", "extension": "txt" },
{ "id": "curl", "name": "cURL команди", "extension": "sh" },
{ "id": "json", "name": "Масив JSON", "extension": "json" },
{ "id": "csv", "name": "CSV — host,port,user,pass,proto", "extension": "csv" }
]
}Завантажити список проксі
GET /proxy/dl/:hash
Завантажити список проксі за публічним хешем. Публічний — автентифікація не потрібна.
Параметри
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
:hash | string | publicHash замовлення | Так |
Параметри запиту
| Ім'я | Тип | Опис | Обов'язково |
|---|---|---|---|
format | string | Ідентифікатор формату експорту з /proxy/formats (за замовчуванням: txt) | Ні |
proto | string | Протокол: http або socks5 (за замовчуванням: http) | Ні |
Повертає завантаження файлу з відповідним типом вмісту.
Приклад відповіді txt:
us1.fonproxy.com:10000:u_a1b2c3:xYz9q2Wp4rT8mN1k
us1.fonproxy.com:10002:u_a1b2c3:xYz9q2Wp4rT8mN1kПриклад відповіді curl:
curl --proxy u_a1b2c3:xYz9q2Wp4rT8mN1k@us1.fonproxy.com:10000 https://httpbin.org/ip
curl --proxy u_a1b2c3:xYz9q2Wp4rT8mN1k@us1.fonproxy.com:10002 https://httpbin.org/ipПриклад curl з socks5 (?proto=socks5):
curl --socks5 u_a1b2c3:xYz9q2Wp4rT8mN1k@us1.fonproxy.com:10000 https://httpbin.org/ipХеш видно у відповіді замовлення як
publicHash. Скиньте його, якщо скомпрометовано, за допомогоюPOST /orders/:id/reset-hash.