VPS.org API

Документација за REST API

API за слики

Управувајте со снимки од серверот за брзо враќање во првобитната состојба. Снимките ја доловуваат целосната состојба на вашиот сервер.

Крајни точки 4 endpoints
Основна патека /api/v1/snapshots
ДОБИЈ /api/v1/snapshots/

Листај ги сите снимки

Преземете список на сите снимки на вашите сервери.

Параметри на барањето

Параметар Тип Задолжително Опис
server_id integer Не Филтрирај снимки според ID на серверот

Пример за барање

cURL
Python
JavaScript
curl -X GET "https://admin.vps.org/api/v1/snapshots/?server_id=12345" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json"
import requests

url = "https://admin.vps.org/api/v1/snapshots/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}
params = {"server_id": 12345}

response = requests.get(url, headers=headers, params=params)
print(response.json())
const response = await fetch('https://admin.vps.org/api/v1/snapshots/?server_id=12345', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  }
});

const snapshots = await response.json();
console.log(snapshots);

Пример за одговор

{
  "count": 2,
  "results": [
    {
      "id": 801,
      "server": {
        "id": 12345,
        "name": "web-server-01"
      },
      "name": "pre-migration-snapshot",
      "status": "completed",
      "size_mb": 5120,
      "created_at": "2025-01-15T18:30:00Z",
      "description": "Before major migration"
    },
    {
      "id": 798,
      "server": {
        "id": 12345,
        "name": "web-server-01"
      },
      "name": "weekly-snapshot-2025-01-08",
      "status": "completed",
      "size_mb": 4856,
      "created_at": "2025-01-08T12:00:00Z",
      "description": "Weekly snapshot"
    }
  ]
}

Кодови за статус на одговор

200 Успешно преземена листа на снимки
401 Неовластено - Неважечки или недостасува токен за автентикација
ПОСТ /api/v1/snapshots/

Креирај слика

Create a snapshot of a server's current state. Snapshots are point-in-time copies of the entire server.

Параметри на телото на барањето

Параметар Тип Задолжително Опис
server_id integer Да ИД на серверот за снимање на сликата
name string Да Име за снимката (алфанумерички, цртички, долни црти)
description string Не Опционален опис за снимката

Пример за барање

cURL
Python
JavaScript
curl -X POST "https://admin.vps.org/api/v1/snapshots/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "server_id": 12345,
    "name": "before-update-snapshot",
    "description": "Snapshot before system update"
  }'
import requests

url = "https://admin.vps.org/api/v1/snapshots/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}
data = {
    "server_id": 12345,
    "name": "before-update-snapshot",
    "description": "Snapshot before system update"
}

response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch('https://admin.vps.org/api/v1/snapshots/', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    server_id: 12345,
    name: 'before-update-snapshot',
    description: 'Snapshot before system update'
  })
});

const snapshot = await response.json();
console.log(snapshot);

Пример за одговор

{
  "id": 802,
  "server": {
    "id": 12345,
    "name": "web-server-01"
  },
  "name": "before-update-snapshot",
  "status": "in_progress",
  "size_mb": null,
  "created_at": "2025-01-16T16:15:00Z",
  "description": "Snapshot before system update",
  "message": "Snapshot is being created. This may take 3-10 minutes depending on server size."
}

Кодови за статус на одговор

201 Креирањето на снимка започна успешно
400 Bad Request - Invalid parameters or snapshot limit reached
401 Неовластено - Неважечки или недостасува токен за автентикација
404 Not Found - Server does not exist
Забелешка: You can have a maximum of 5 snapshots per server. Creating a snapshot while the server is running may result in filesystem inconsistencies. For best results, stop the server before creating a snapshot.
ПОСТ /api/v1/snapshots/{snapshot_id}/restore/

Врати од Слика

Restore a server to the state captured in a snapshot. This will overwrite all current data on the server.

Параметри на патеката

Параметар Тип Задолжително Опис
snapshot_id integer Да Уникатен ID на снимка

Пример за барање

cURL
Python
JavaScript
curl -X POST "https://admin.vps.org/api/v1/snapshots/801/restore/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json"
import requests

snapshot_id = 801
url = f"https://admin.vps.org/api/v1/snapshots/{snapshot_id}/restore/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}

response = requests.post(url, headers=headers)
print(response.json())
const snapshotId = 801;
const response = await fetch(`https://admin.vps.org/api/v1/snapshots/${snapshotId}/restore/`, {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  }
});

const result = await response.json();
console.log(result);

Пример за одговор

{
  "status": "success",
  "message": "Server is being restored from snapshot. This may take 5-15 minutes.",
  "snapshot": {
    "id": 801,
    "name": "pre-migration-snapshot",
    "created_at": "2025-01-15T18:30:00Z"
  },
  "server": {
    "id": 12345,
    "name": "web-server-01",
    "status": "restoring"
  }
}

Кодови за статус на одговор

200 Враќањето започна успешно
400 Bad Request - Server is not in a valid state for restoration
401 Неовластено - Неважечки или недостасува токен за автентикација
404 Не е пронајдено - Снимката не постои
Предупредување: Restoring from a snapshot will overwrite all current data on the server. This action cannot be undone. The server will be automatically stopped before restoration begins.
ИЗБРИШИ /api/v1/snapshots/{snapshot_id}/

Избриши слика од екранот

Трајно избриши снимка. Ова дејство не може да се врати.

Параметри на патеката

Параметар Тип Задолжително Опис
snapshot_id integer Да Уникатен ID на снимка

Пример за барање

cURL
Python
curl -X DELETE "https://admin.vps.org/api/v1/snapshots/801/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json"
import requests

snapshot_id = 801
url = f"https://admin.vps.org/api/v1/snapshots/{snapshot_id}/"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Content-Type": "application/json"
}

response = requests.delete(url, headers=headers)
print(response.status_code)

Кодови за статус на одговор

204 Снимката е успешно избришана
401 Неовластено - Неважечки или недостасува токен за автентикација
404 Не е пронајдено - Снимката не постои

Snapshots vs Backups

Understanding when to use snapshots versus backups:

API за слики

  • Намена: Quick point-in-time recovery
  • Брзина: Faster to create and restore (3-15 min)
  • Случај на употреба: Before risky operations (updates, config changes)
  • Складирање: Stored on same infrastructure
  • Ограничување: 5 snapshots per server
  • Најдобро за: Short-term rollback capability

API за резервни копии

  • Намена: Long-term data protection
  • Брзина: Slower to create and restore (varies)
  • Случај на употреба: Regular automated data protection
  • Складирање: Separate backup storage
  • Ограничување: 10 manual + automatic backups
  • Најдобро за: Disaster recovery and compliance

Best Practices