Магазин прокси
Просмотр и покупка доступных прокси.
Просмотр доступных прокси
Получите пагинированный список прокси, доступных для заказа, с опциональными фильтрами.
Endpoint
GET /proxies/shop/
Параметры запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
access_type | string | Нет | Тип доступа к прокси. Значения: shared, private |
connection_port_http | boolean | Нет | Если true, возвращаются только продукты с поддержкой HTTP. Если false — только без поддержки HTTP. Комбинируется с connection_port_socks5 по AND-семантике |
connection_port_socks5 | boolean | Нет | Если true, возвращаются только продукты с поддержкой SOCKS5. Если false — только без поддержки SOCKS5. Комбинируется с connection_port_http по AND-семантике |
country | string | Нет | Фильтр по коду страны (ISO 3166-1 alpha-2, например, us, au) |
proxy_category | string | Нет | Фильтр по категории. Значения: datacenter, lte, residential_rotating, residential_static |
stock_status | string | Нет | Фильтр по наличию. Значения: in_stock, out_of_stock |
page | integer | Нет | Номер страницы для пагинации |
page_size | integer | Нет | Количество результатов на странице |
Запрос
curl -X 'GET' \
'https://app.cyberyozh.com/api/v1/proxies/shop/?country=pk&proxy_category=datacenter' \
-H 'accept: application/json' \
-H 'X-Api-Key: ваш_api_ключ'
Ответ
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"proxy_products": [
{
"id": "f3e3ec3b-e6eb-40a7-b2d2-9125acb3093c",
"title": "IPv4 PK",
"location_country_code": "PK",
"price_usd": "2.18",
"discounted_price": null,
"days": 30,
"proxy_category": "datacenter",
"stock_status": "in_stock",
"traffic_limitation": -1,
"is_auto_renewal_possible": true,
"is_manual_renewal_possible": false,
"protocols": ["http"],
"max_quantity": 10,
"available_periods": [
{"months": 1, "price": "2.18", "discount_percent": "0"},
{"months": 2, "price": "4.36", "discount_percent": "0"},
{"months": 3, "price": "6.54", "discount_percent": "0"},
{"months": 6, "price": "13.08", "discount_percent": "0"},
{"months": 12, "price": "23.54", "discount_percent": "10"}
]
}
],
"title": "IPv4 PK",
"proxy_category": "datacenter",
"access_type": "private",
"location_country_code": "PK"
},
{
"proxy_products": [
{
"id": "45cbff57-7dca-4b12-b9fa-4f8b81d9bc0c",
"title": "IPv4 PK",
"location_country_code": "PK",
"price_usd": "1.77",
"discounted_price": null,
"days": 30,
"proxy_category": "datacenter",
"stock_status": "in_stock",
"traffic_limitation": -1,
"is_auto_renewal_possible": false,
"is_manual_renewal_possible": false,
"protocols": ["http"],
"max_quantity": 10,
"available_periods": []
}
],
"title": "IPv4 PK",
"proxy_category": "datacenter",
"access_type": "shared",
"location_country_code": "PK"
}
]
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
count | integer | Общее количество результатов |
next | string | URL следующей страницы (null если последняя) |
previous | string | URL предыдущей страницы (null если первая) |
results | array | Массив групп прокси-продуктов |
results[].title | string | Название группы |
results[].proxy_category | string | Категория: datacenter, lte, residential_rotating, residential_static |
results[].access_type | string | Тип доступа: shared или private |
results[].location_country_code | string | Код страны |
results[].proxy_products | array | Продукты в группе |
proxy_products[].id | string (UUID) | Идентификатор продукта |
proxy_products[].title | string | Название продукта |
proxy_products[].location_country_code | string | Код страны |
proxy_products[].price_usd | string | Цена в USD за один прокси на базовый срок |
proxy_products[].discounted_price | string | null | Цена с вашей персональной скидкой; null, если скидки на этот продукт нет |
proxy_products[].days | integer | Длительность в днях |
proxy_products[].proxy_category | string | Категория |
proxy_products[].stock_status | string | Наличие: in_stock или out_of_stock |
proxy_products[].traffic_limitation | integer | Размер включенного в тариф трафика в МБ (-1 — безлимит) |
proxy_products[].is_auto_renewal_possible | boolean | Доступно ли автопродление |
proxy_products[].is_manual_renewal_possible | boolean | Доступно ли ручное продление |
proxy_products[].protocols | array[string] | Поддерживаемые протоколы подключения (например, http, socks5) |
proxy_products[].max_quantity | integer | null | Максимальное quantity в одной позиции покупки; null — у продукта нет своего лимита, действует общий лимит 10 |
proxy_products[].available_periods | array | Сроки аренды, которые можно передать в period_months. Пустой массив — срок фиксирован, принимается только period_months: 1 |
available_periods[].months | integer | Срок аренды в месяцах |
available_periods[].price | string | Цена в USD за один прокси на весь срок с учётом вашей персональной скидки |
available_periods[].discount_percent | string | Скидка за длительный срок в процентах |
Количество и срок аренды
max_quantity и available_periods показывают, что можно передать в buy_proxies для каждого продукта:
| Продукт | quantity | period_months | Что отдаёт витрина |
|---|---|---|---|
Общий датацентр (datacenter, shared) | 1–10 | только 1 | max_quantity: 10, available_periods: [] |
Выделенный датацентр (datacenter, private) | 1–10 | 1, 2, 3, 6, 12 | max_quantity: 10, пять сроков |
Статический резидентный (residential_static) | 1–10 | 1, 2, 3, 6, 12 | max_quantity: 10, пять сроков |
| Остальные продукты | 1–10 | только 1 | max_quantity: null, available_periods: [] |
Покупка прокси
Заказать один или несколько прокси с выбором количества и срока аренды.
Endpoint
POST /proxies/shop/buy_proxies/
Тело запроса — массив позиций покупки. Каждая позиция обрабатывается независимо: если одна отклонена, остальные всё равно покупаются.
Запрос
Купить 3 общих датацентровых прокси, 2 выделенных на 3 месяца и попробовать купить 11 общих за раз:
curl -X 'POST' \
'https://app.cyberyozh.com/api/v1/proxies/shop/buy_proxies/' \
-H 'accept: application/json' \
-H 'X-Api-Key: ваш_api_ключ' \
-H 'Content-Type: application/json' \
-d '[
{
"id": "45cbff57-7dca-4b12-b9fa-4f8b81d9bc0c",
"auto_renew": false,
"quantity": 3
},
{
"id": "f3e3ec3b-e6eb-40a7-b2d2-9125acb3093c",
"auto_renew": false,
"quantity": 2,
"period_months": 3
},
{
"id": "45cbff57-7dca-4b12-b9fa-4f8b81d9bc0c",
"auto_renew": false,
"quantity": 11
}
]'
Поля запроса
| Поле | Тип | Обязательно | По умолчанию | Описание |
|---|---|---|---|---|
id | string (UUID) | Да | — | ID продукта из списка магазина |
auto_renew | boolean | Да | — | Включить автопродление. Работает, только если продукт его поддерживает и period_months равен 1 |
quantity | integer | Нет | 1 | Сколько прокси купить: от 1 до max_quantity продукта (не больше 10) |
period_months | integer | Нет | 1 | Срок аренды в месяцах: 1, 2, 3, 6 или 12. Должен быть в available_periods продукта |
promo_code | string | Нет | — | Промокод, применяется к каждому прокси в позиции |
Ограничения на запрос:
- не больше 50 позиций;
- суммарное
quantityпо всем позициям — не больше 50.
Цену считает сервер: цена за выбранный срок (см. available_periods), умноженная на quantity. В примере выше первая позиция стоит 3 × $1.77 = $5.31, вторая — 2 × $6.54 = $13.08. Позиция оплачивается целиком — если баланса не хватает на все прокси позиции, ничего не покупается.
Ответ
201 Created и массив той же длины и в том же порядке, что и запрос:
[
{
"id": "45cbff57-7dca-4b12-b9fa-4f8b81d9bc0c",
"auto_renew": false,
"status": "in_progress",
"message": "0f1c4a2e-6f0b-4a51-9a53-2b1f9d6c8e11",
"code": null,
"order_ids": [
"0f1c4a2e-6f0b-4a51-9a53-2b1f9d6c8e11",
"5b7d9e10-3c2a-4e8f-b1d4-7a9c0e2f6b35",
"a3c1f0b2-8d4e-4b6a-9f17-c2e5d8b0a741"
]
},
{
"id": "f3e3ec3b-e6eb-40a7-b2d2-9125acb3093c",
"auto_renew": false,
"status": "in_progress",
"message": "c7e2a9d4-1b3f-4c8e-a6d2-9f0b4e7c1a58",
"code": null,
"order_ids": [
"c7e2a9d4-1b3f-4c8e-a6d2-9f0b4e7c1a58",
"e4b8f1a3-7d2c-4e9b-8a1f-3c6d0b9e2f74"
]
},
{
"id": "45cbff57-7dca-4b12-b9fa-4f8b81d9bc0c",
"auto_renew": false,
"status": "canceled",
"message": "You can order up to 10 proxies at once.",
"code": "quantity_limit_exceeded",
"order_ids": []
}
]
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | string (UUID) | ID продукта из запроса |
auto_renew | boolean | Включено ли автопродление у созданных заказов на самом деле |
status | string | in_progress или canceled |
message | string | Для in_progress — ID первого созданного заказа; для canceled — причина текстом, на языке из Accept-Language |
code | string | null | Машиночитаемая причина отказа; null, если позиция принята |
order_ids | array[string] | ID всех заказов, созданных по позиции; пустой для canceled |
Статусы ответа
| Статус | Описание |
|---|---|
in_progress | Все прокси позиции заказаны и обрабатываются |
canceled | Позиция не куплена: заказы не созданы, баланс не списан |
Коды отказа
В интеграции опирайтесь на code, а не на message — текст сообщения зависит от языка.
| Код | Сообщение | Значение |
|---|---|---|
invalid_product | Selected Proxy no more exists. | Продукт не существует или снят с продажи |
out_of_stock | Private proxy is out of stock now. Try again later. | Продукта нет в наличии |
insufficient_funds | Not enough money. | Баланса не хватает на всю позицию |
promocode_invalidated | Promo code is not applicable anymore. Please re-enter it. | Промокод недействителен или истёк |
quantity_limit_exceeded | You can order up to 10 proxies at once. | quantity больше лимита продукта |
period_not_supported | This product is sold for a fixed period only. | period_months нет в available_periods продукта |
something_went_wrong | Something went wrong. Contact Support | Непредвиденная ошибка, обратитесь в поддержку |
Ошибки валидации
400 Bad Request возвращается на весь запрос, и ничего не покупается, если неверно само тело:
- тело не массив или в нём больше 50 позиций;
- суммарное
quantityбольше 50; quantityменьше 1;period_monthsне из1,2,3,6,12.
[{"period_months": ["\"5\" is not a valid choice."]}]
{"non_field_errors": ["Ensure the total quantity is no more than 50 proxies per request."]}
Запрос не идемпотентен. Повтор после таймаута купит прокси ещё раз. Перед повтором проверьте историю заказов.