VPS.org API

REST API ҳужжатлаштириш

Serverlar APIsi

VPS серверингизни яратиш, текшириш, қувватлаш, ўлчамларини ўзгартириш ва ўчиришни бажаринг. Серверлар уларнинг uuid'лари билан аниқланади.

Tugash nuqtalari 15
Asosiy yo'l /api/v1/servers
OLING /api/v1/servers/

Barcha serverlarni ro'yxatlash

Ҳисобингиздаги серверларни қайтаради, энг янгиси биринчи бўлиб, ҳар бир саҳифада 25. Охирги марта ўчирилган серверлар киритилмайди.

Ҳужжат талаб этилади: servers:list

So'rov parametrlari

Парамeтрлар Turi Majburiy Тасвирлаш
page integer Йўқ 1 дан бошланган саҳифа рақами
page_size integer Йўқ Ҳар бир саҳифа учун натижалар (одатдаги 25, максимум 100)

Namunaviy so'rov

cURL
Python
JavaScript
PHP
curl -X GET "https://admin.vps.org/api/v1/servers/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
import requests

url = "https://admin.vps.org/api/v1/servers/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

response = requests.get(url, headers=headers)
for server in response.json()["results"]:
    print(server["uuid"], server["hostname"], server["status"])
const response = await fetch('https://admin.vps.org/api/v1/servers/', {
  headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' }
});

const data = await response.json();
console.log(data.results);
$ch = curl_init('https://admin.vps.org/api/v1/servers/');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_API_TOKEN']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$data = json_decode(curl_exec($ch), true);
curl_close($ch);

foreach ($data['results'] as $server) {
    echo $server['hostname'] . ' ' . $server['status'] . "\n";
}

Javob namunasi

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b",
      "hostname": "web-01",
      "status": "on",
      "error_description": null,
      "location_name": "New Jersey",
      "plan_name": "1 vCPU / 2 GB RAM / 10 GB",
      "os_name": "Ubuntu",
      "ipv4_addresses": ["203.0.113.10"],
      "ipv6_addresses": ["2001:db8:2:dd::f9:6b"],
      "created_at": "2026-07-30T03:54:14.914364Z",
      "deployed": true
    },
    {
      "uuid": "2d7e9b40-6c1a-4f3e-8b5d-9a0c1e2f3b4d",
      "hostname": "db-01",
      "status": "queue",
      "error_description": null,
      "location_name": "New Jersey",
      "os_name": "Debian",
      "ipv4_addresses": [],
      "ipv6_addresses": [],
      "created_at": "2026-09-14T19:33:49.426508Z",
      "deployed": false
    }
  ]
}

Javob maydonlari

Асосий Turi Тасвирлаш
uuid string Сервер идентификатори ҳар бир бошқа сервер охирги нуқтасида фойдаланилади
hostname string Сервер яратилганда танлаган хост номи
status string Ҳозирги ҳолат. Қуйида Сервернинг Ҳолати Қимматларини кўринг.
error_description string | null Ҳолат хато бўлса, охирги хато ҳақидаги маълумотлар, акс ҳолда нуқсонли
location_name string Сервер ишлаётган жой номи
os_name string Операция тизими номи, версиясиз
plan_name string Ўқиш учун мўлжалланган жадвал қисқача тавсифи, масалан 1 vCPU / 2 GB RAM / 10 GB
ipv4_addresses array IPv4 манзиллари сатрлар сифатида. Сервер ўрнатилгунича ва IPv4 бўлмаган планларда бўш қолади.
ipv6_addresses array IPv6 манзиллари сатрлар сифатида. Сервер ўрнатилгунича бўш қолади.
created_at datetime Юклаш вақти (ISO 8601, UTC)
deployed boolean Провизорлик тугаганидан кейин тўғри

Javob holati kodlari

200 Serverlar ro'yxati muvaffaqiyatli olindi
403 API токен йўқ ёки нодуруст, ёки токенда талаб қилинган рухсат йўқ
ПОСТ /api/v1/servers/

Yangi server yaratish

Янги серверни жойлаш учун навбатга қўяди ва уни тезда ҳолат навбати билан қайтаради. Таъминлаш фонда давом этади: жойлаш ҳақиқатга айлангунча ҳолат охирини сўров. Сервер тайёр бўлганда, унинг кириш маълумотлари ҳисоб эгасига электрон почта орқали юборилади.

Ҳисобингизга сақланган тўлов усули керак. Ҳисобингиз тарихига қараб, сервер яратилишидан олдин картангизда бир ҳафта давомида режа нархининг (камида 1 USD) вақтинчалик олдиндан рухсат бериш тўхтатилиши мумкин.

Ҳужжат талаб этилади: servers:create

Tana parametrlarini so'rash

Парамeтрлар Turi Majburiy Тасвирлаш
hostname string Ha Камида 3 та белги. Фақат ҳарфлар, рақамлар, тире ва нуқталар.
location_id integer Ha Locations API'дан фаол жойнинг ID'си
plan_uuid string Ha Планлар API'дан фаол режанинг uuid'и
operating_system_version_uuid string Ha Операцион тизим версиялари рўйхатидаги фаол киритманинг uuid
ssh_key_uuids array Йўқ Серверга ўрнатиш учун SSH қулфлар API дан SSH қулфлар UUIDлари
ssh_key_ids array Йўқ Ssh_key_uuidsга алмаштириладиган SSH қулфларининг тўлиқ рақамли IDлари. Агар иккаласи ҳам юборилган бўлса, ssh_key_ids фойдаланилади.
ssh_key_uuid, ssh_key_id string, integer Йўқ Бир хил SSH калит учун қисқартма
auth_method string Йўқ махфий сўз, ssh_key ёки иккаласи. SSH қулфлари тақдим этилганда махфий сўз ёки иккаласи учун олдиндан белгиланган.

Namunaviy so'rov

cURL
Python
JavaScript
PHP
curl -X POST "https://admin.vps.org/api/v1/servers/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "hostname": "web-01",
    "location_id": 1,
    "plan_uuid": "3bc2faf6-8f8b-4978-b62d-b52ed3f858e9",
    "operating_system_version_uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
    "ssh_key_uuids": ["YOUR_SSH_KEY_UUID"]
  }'
import requests

url = "https://admin.vps.org/api/v1/servers/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
data = {
    "hostname": "web-01",
    "location_id": 1,
    "plan_uuid": "3bc2faf6-8f8b-4978-b62d-b52ed3f858e9",
    "operating_system_version_uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
    "ssh_key_uuids": ["YOUR_SSH_KEY_UUID"],
}

response = requests.post(url, headers=headers, json=data)
server = response.json()
print(response.status_code, server["uuid"], server["status"])
const response = await fetch('https://admin.vps.org/api/v1/servers/', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    hostname: 'web-01',
    location_id: 1,
    plan_uuid: '3bc2faf6-8f8b-4978-b62d-b52ed3f858e9',
    operating_system_version_uuid: 'c3418f90-80a0-4e00-a7e1-d0ab1822b941',
    ssh_key_uuids: ['YOUR_SSH_KEY_UUID']
  })
});

const server = await response.json();
console.log(server.uuid, server.status);
$data = [
    'hostname' => 'web-01',
    'location_id' => 1,
    'plan_uuid' => '3bc2faf6-8f8b-4978-b62d-b52ed3f858e9',
    'operating_system_version_uuid' => 'c3418f90-80a0-4e00-a7e1-d0ab1822b941',
    'ssh_key_uuids' => ['YOUR_SSH_KEY_UUID']
];

$ch = curl_init('https://admin.vps.org/api/v1/servers/');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_TOKEN',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server = json_decode(curl_exec($ch), true);
curl_close($ch);

Javob namunasi

201 Сервер тафсилотларини олишда кўрсатилган тўлиқ сервер объекти билан яратилган. Адреслар ва vmidлар ўрнатиш тугаганидан кейин тўлдирилади.

{
  "uuid": "5f0c8e2a-6b1d-4c3e-9a7f-2d4b6c8e0a1f",
  "hostname": "web-01",
  "vmid": null,
  "status": "queue",
  "error_description": null,
  "location": {
    "id": 1,
    "name": "New Jersey",
    "country_name": "United States",
    "is_active": true
  },
  "plan": {
    "uuid": "3bc2faf6-8f8b-4978-b62d-b52ed3f858e9",
    "cpu": 1,
    "ram": 2,
    "ram_unit": "GB",
    "disk_space": 10,
    "disk_space_total": 10240,
    "transfer": 500,
    "price": "3.50",
    "cpu_type_name": "Shared",
    "is_active": true,
    "hourly_price": "0.005",
    "monthly_price": "3.50",
    "is_gpu": false,
    "gpu_count": 0,
    "gpu_model": ""
  },
  "operating_system": {
    "id": 1,
    "name": "Ubuntu",
    "svg_icon": "<svg ...>",
    "versions": [ ... ]
  },
  "operating_system_version": {
    "uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
    "name": "24.04 LTS x64",
    "os_name": "Ubuntu",
    "os_svg_icon": "<svg ...>",
    "is_active": true
  },
  "ipv4_addresses": [],
  "ipv6_addresses": [],
  "deployed": false,
  "created_at": "2026-09-14T21:02:11.402113Z",
  "recent_actions": []
}

Javob holati kodlari

201 Сервер яратилди ва ўрнатиш учун навбатга қўйилди
400 Тасдиқлаш хатоси, масалан, фаол бўлмаган жой, режа ёки операцион тизим версияси
402 Файлда тўлов усули йўқ, тўловсиз ҳисобварақлар ёки картанинг олдиндан рухсат бериши рад этилди
403 API токен йўқ ёки нодуруст, ёки токенда талаб қилинган рухсат йўқ
429 Ҳисобингиз сервер яратиш чегарасига етган
OLING /api/v1/servers/{uuid}/

Server tafsilotlarini oling

Бир серверни унинг жойлашуви, режаси, операцион тизими, IP манзили ва бешта сўнгги ишлари билан қайтаради.

Ҳужжат талаб этилади: servers:list

curl -X GET "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Javob namunasi

{
  "uuid": "8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b",
  "hostname": "web-01",
  "vmid": 1042,
  "status": "on",
  "error_description": null,
  "location": {
    "id": 1,
    "name": "New Jersey",
    "country_name": "United States",
    "is_active": true
  },
  "plan": {
    "uuid": "14186969-fbaf-43e1-9ab2-b1f1aeb66674",
    "cpu": 1,
    "ram": 2,
    "ram_unit": "GB",
    "disk_space": 25,
    "disk_space_total": 25600,
    "transfer": 1,
    "price": "5.00",
    "cpu_type_name": "Shared",
    "is_active": true,
    "hourly_price": "0.007",
    "monthly_price": "5.00",
    "is_gpu": false,
    "gpu_count": 0,
    "gpu_model": ""
  },
  "operating_system": {
    "id": 1,
    "name": "Ubuntu",
    "svg_icon": "<svg ...>",
    "versions": [ ... ]
  },
  "operating_system_version": {
    "uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
    "name": "24.04 LTS x64",
    "os_name": "Ubuntu",
    "os_svg_icon": "<svg ...>",
    "is_active": true
  },
  "ipv4_addresses": [
    {
      "ip": "203.0.113.10",
      "gateway": "203.0.113.1",
      "subnet": "203.0.113.0",
      "rdns": "web-01.example.com"
    }
  ],
  "ipv6_addresses": [
    {
      "ip": "2001:db8:2:dd::f9:6b",
      "gateway": "2001:db8:2:dd::f9:1",
      "subnet": "2001:db8:2:dd::f9:0",
      "rdns": "web-01.example.com"
    }
  ],
  "deployed": true,
  "created_at": "2026-07-30T03:54:14.914364Z",
  "recent_actions": [
    {
      "id": 17028,
      "action": "create",
      "action_display": "Create",
      "description": "Server deployed with VMID 1042",
      "user_email": "you@example.com",
      "created_at": "2026-07-30T03:54:32.860854Z"
    }
  ]
}

SVG тасвирчаси маркировкаси ва версиялар рўйхати бу ерда қисқартирилган.

Javob maydonlari

Асосий Turi Тасвирлаш
vmid integer | null Виртуал машина рақами, ўрнатиш вақтида ўрнатилган
location object Locations API томонидан қайтарилган манзил объекти
plan object План объект, Plans API томонидан қайтарилган
operating_system, operating_system_version object Операцион тизим ва ўрнатилган версия, Operating Systems API томонидан қайтарилган
ipv4_addresses, ipv6_addresses array IP, шлюз, тармоқ ва rdns (тортиш DNS хост номи) билан ҳар бир манзил учун бир объект
recent_actions array Олтитагача сўнгги ҳаракатлар: id, action, action_display, description, user_email, created_at

Javob holati kodlari

200 Server tafsilotlari muvaffaqiyatli olindi
404 Топилмади ёки бошқа ҳисобга тегишли
OLING /api/v1/servers/{uuid}/status/

Сервер ҳолатини олиш

Серверни яратганингиздан, қувватлаганингиздан ёки ўлчамини ўзгартирганингиздан кейин сўров учун енгил чақирув.

curl -X GET "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/status/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "status": "on",
  "deployed": true,
  "resizing": false
}

Сервер ҳолати қийматлари

Қиммат Тасвирлаш
queue Бир амал (ташкил этиш, қувватлаш, катталигини ўзгартириш, тиклаш) навбатда ёки амалга оширилмоқда
deploying Таъминланмоқда. Идора панелидан яратилган серверлар бу ҳолатни қўллашади; API орқали яратилган серверлар тайёр бўлгунча навбатда қолади.
on Юкланмоқда
off Огоҳлантириш
error Сўнгги ишга муваффақиятсиз якун ясалди. error_description ни кўринг.
suspended_payment Ҳисоб-китоблар тўланмаганлиги сабабли тўхтатилди
ПОСТ /api/v1/servers/{uuid}/power/

Сервер қувватини бошқариш

Қувват ишини навбатда қолдиради. Сервер ҳолати ишга тугагунча навбатда қолишга ўзгаради.

Ҳужжат талаб этилади: servers:power

Tana parametrlarini so'rash

Парамeтрлар Turi Majburiy Тасвирлаш
action string Ha start: қувват
shutdown: грайфли тўхтатиш, меҳмон тўхтамаса, мажбурий тўхтатиш
restart: қаттиқ қувватланиш цикли (тўхтатиш, кейин бошлаш)
stop: Ҳозирда қайта ишга тушириш билан бир хил қувватланиш циклини бажаради. Серверни ўчириб қўйиш учун shutdown ни ишлатинг.

Namunaviy so'rov

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/power/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"action": "restart"}'
import requests

server_uuid = "8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b"
url = f"https://admin.vps.org/api/v1/servers/{server_uuid}/power/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

response = requests.post(url, headers=headers, json={"action": "restart"})
print(response.json())

Javob namunasi

{
  "message": "Server restart queued"
}

Javob holati kodlari

200 Фаолият навбатда турибди
400 Ёки йўқ ёки қўллаб-қувватланмайдиган ишга
402 ҳисобда тўланмаган ҳисобварақ-фактуралар борлиги учун бошлаш рад этилди
404 Топилмади ёки бошқа ҳисобга тегишли
ПОСТ /api/v1/servers/{uuid}/resize/

Серверни қайта катталаштириш

Серверни бошқа фаол режага кўчиради. Янги режа ҳозирги режадан камроқ диск жойига эга бўлмаслиги керак ва илтимоснинг ўзида ўлчамларни ўзгартириш учун амалга оширилиши керак бўлган ишга оид талаб бўлиши керак. Янги режа учун гипервизор қуввати навбатга қўйилишидан олдин текширилади, шунинг учун рад этилган илтимос серверни ўзгартирмасдан қолдиради.

Сервер ўлчамларини ўзгартираётганда тўхтаб қолади ва кейин қайта ишга тушади. Агар ўлчамларни ўзгартириш муваффақиятсиз бўлса, сервер аввалги режасига қайтарилади ва ишга туширилган бўлса, қайта ишга туширилади. Диск ўсиши бекор қилинмайди.

Ҳужжат талаб этилади: servers:resize

Tana parametrlarini so'rash

Парамeтрлар Turi Majburiy Тасвирлаш
action string Ha Ўлчамини ўзгартириш керак
new_plan_uuid string Ha The uuid of the plan to move to
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/resize/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"action": "resize", "new_plan_uuid": "5e26a4a6-bd0c-467c-abca-da036c811c3f"}'
{
  "message": "Resize queued successfully"
}

Қайта ўлчашни рад этиш мисоли (409):

{
  "error": "Not enough hypervisor capacity for the selected plan; the server was not changed"
}

Javob holati kodlari

200 Фаолият навбатда турибди
400 Иш йўқ ёки new_plan_uuid, нодуруст ёки фаол бўлмаган режа, диск жойи камроқ режа ёки GPU режаси (GPU режалари API орқали ўзгартирилмайди)
404 Топилмади ёки бошқа ҳисобга тегишли
409 Ўлчамни ўзгартириш ёки сақлаш ўзгариши аллақачон амалга оширилмоқда ёки янги режа учун гипервизор қуввати етарли эмас
503 Ҳозирча қувватни текшириш имкони йўқ. Сервер ўзгартирилмаган; кейинроқ яна урининг.
ПОСТ /api/v1/servers/{uuid}/reset-password/

Root махфий сўзини қайта ўрнатиш

Янги root махфий сўзини яратади, жавобда қайтаради ва серверда ўзгаришларни навбатга қўяди. Янги махфий сўз сизга электрон почта орқали ҳам юборилади. Сервер ўрнатилиши керак. Талабнинг ўзига эҳтиёж йўқ.

curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/reset-password/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "message": "Password reset queued. New password will also be emailed to you.",
  "password": "generated-password",
  "job_id": "b6f1c7e2-3a4d-4f5e-8b9c-0d1e2f3a4b5c"
}

Javob holati kodlari

200 Фаолият навбатда турибди
400 Сервер ҳали ўрнатилмаган
404 Топилмади ёки бошқа ҳисобга тегишли
OLING ПОСТ /api/v1/servers/{uuid}/rdns/

Орқа DNS (PTR)

GET сервердаги ҳар бир IPv4 ва IPv6 манзилининг акси DNS хост номларини рўйхатга олади. POST уни бир манзил учун ўрнатади. Пулсиз хост номларини юбориш манзилни унинг акси DNS номларига қайта тиклайди.

Ҳужжат талаб этилади: servers:update

Tana parametrlarini so'rash (POST)

Парамeтрлар Turi Majburiy Тасвирлаш
ip string Ha Бу серверга бириктирилган IPv4 ёки IPv6 манзили
hostname string Йўқ PTR хост номи. Ўрни бўш қолдирилган бўлса, стандартга қайтади.
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/rdns/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ip": "203.0.113.10", "hostname": "mail.example.com"}'
{
  "message": "Reverse DNS for 203.0.113.10 set to mail.example.com",
  "ip": "203.0.113.10",
  "hostname": "mail.example.com"
}

GET жавоби:

{
  "rdns": [
    {"ip": "203.0.113.10", "hostname": "mail.example.com"},
    {"ip": "2001:db8:2:dd::f9:6b", "hostname": "mail.example.com"}
  ]
}

Javob holati kodlari

400 ip йўқ ёки хост номи ўрнатилмади
404 IP манзили бу серверга ажратилмаган
ПОСТ /api/v1/servers/{uuid}/exec/

Серверда буйруқни бажариш

Сервер ичида QEMU меҳмон агенти орқали shell буйруғини бажаради ва унинг тугашига интилади. Сервер ўрнатилган ва ишлаётган бўлиши, qemu-guest-agent эса ўрнатилган ва меҳмонда ишлаётган бўлиши керак.

Ҳужжат талаб этилади: servers:exec

Tana parametrlarini so'rash

Парамeтрлар Turi Majburiy Тасвирлаш
command string Ha Буйруқ сатри /bin/sh -c билан 2000 гача белги билан ишга туширилади
timeout integer Йўқ Буйруқ кутиш учун секундлар, 1 дан 300 гача (одатдаги 30)
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/exec/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"command": "uptime", "timeout": 30}'
{
  "stdout": " 21:14:03 up 46 days,  2:10,  0 users,  load average: 0.08, 0.03, 0.01\n",
  "stderr": "",
  "exit_code": 0,
  "timed_out": false
}

Агар вақт ўтиб кетганда буйруқ ҳали ҳам ишлаётган бўлса, жавоб timed_out true га ва exit_code null га қўйилган бўлади.

Javob holati kodlari

200 Буйруқ тугади ёки вақт ўтиб кетди
400 Сервер ўрнатилмаган ёки ишламаяпти ёки хато параметрлар
409 QEMU меҳмон агенти серверда ишламаяпти
503 Вақтинчалик алоқа муаммоси. Retry-After бошлигидан кейин яна урининг.
O'CHIRISH /api/v1/servers/{uuid}/

Serverni o'chirish

Серверни доимий йўқ қилиш учун навбатга қўяди. Сервер рўйхатдан дарҳол йўқолади ва қайта тикланмайди.

Ҳужжат талаб этилади: servers:delete

curl -X DELETE "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "message": "Server deletion queued"
}

Javob holati kodlari

202 Қўлланган: сўров навбатда турибди
404 Топилмади ёки бошқа ҳисобга тегишли
OLING ПОСТ /api/v1/ssh-keys/

SSH калитлари

Ахборот SSH қулфларини ҳисобингизда сақланг, сўнгра сервер яратилганда уларнинг uuidsларини ssh_key_uuids сифатида ўтказинг. GET сизнинг қулфларингизни рўйхатга олади (ҳар саҳифада 25); POST биртасини қўшиб қўяди.

Ҳужжат талаб этилади: ssh-keys:list (GET), ssh-keys:create (POST)

Tana parametrlarini so'rash (POST)

Парамeтрлар Turi Majburiy Тасвирлаш
name string Ha Калитни таниб олиш учун ном, 100 тагача белгидан иборат
public_key string Ha OpenSSH форматидаги очиқ қулф, масалан id_ed25519.pubнинг мазмуни

Namunaviy so'rov

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/ssh-keys/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "laptop", "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... you@laptop"}'
import requests

url = "https://admin.vps.org/api/v1/ssh-keys/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

with open("/home/you/.ssh/id_ed25519.pub") as f:
    data = {"name": "laptop", "public_key": f.read().strip()}

response = requests.post(url, headers=headers, json=data)
print(response.status_code, response.json()["uuid"])

Javob namunasi

{
  "id": 19,
  "uuid": "6e1b9c52-3f8a-4d7e-a2c4-5b9d0e1f2a3c",
  "name": "laptop",
  "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... you@laptop",
  "fingerprint": "0b:4c:9b:48:76:e7:1d:07:b9:ac:71:90:70:f7:9a:69",
  "created_at": "2026-08-23T19:16:11.547183Z",
  "last_used_at": null
}

Javob maydonlari

Асосий Turi Тасвирлаш
id, uuid integer, string Алоқа идентификаторлари. ssh_key_uuids ва қуйидаги URLда uuid'ни қўлланг; id ssh_key_ids'да ишлайди.
fingerprint string Алгоритм томонидан ҳисобланган қулфнинг MD5 бармоқ излари
last_used_at datetime | null Алоқа калитнинг охирги марта янги серверга ўрнатилган вақт

Javob holati kodlari

201 Алоқа қўшилган
400 Ном йўқ, ёки очиқ қулф тўғри SSH очиқ қулфи эмас
OLING O'CHIRISH /api/v1/ssh-keys/{uuid}/

SSH калитини олиш ёки ўчириш

GET юқоридаги майдонлар билан битта калитни қайтаради. DELETE уни ҳисобингиздан олиб ташлайди ва 204 ни танасиз қайтаради. Калитни олиб ташлаш уни серверлардан олиб ташламайди. Калитлар таҳрир қилинмайди: олиб ташлаш ва яна қўшиш.

Ҳужжат талаб этилади: ssh-keys:list (GET), ssh-keys:delete (DELETE)

curl -X DELETE "https://admin.vps.org/api/v1/ssh-keys/6e1b9c52-3f8a-4d7e-a2c4-5b9d0e1f2a3c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Захира нусхалари ва суратлар

Захира нусхасини ёки суратни яратиш ҳам сервер ишларидир: