VPS.org API

REST API Documentation

Zithunzi Zazing'ono API

Konzani zithunzi za seva kuti mukonzenso mwachangu nthawi yomweyo. Zithunzi zikuwonetsa momwe seva yanu ilili.

Mapeto 4 endpoints
Njira Yoyambira /api/v1/snapshots
Pezani /api/v1/snapshots/

Lembani Zithunzi Zonse

Pezani mndandanda wa zithunzi zonse zomwe zili pa seva yanu.

Ma Parameter a Mafunso

Parameter Mtundu Zofunika Description
server_id integer No Sefa zithunzi ndi ID ya seva

Chitsanzo cha Pempho

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);

Chitsanzo cha Yankho

{
  "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"
    }
  ]
}

Makhodi a Mkhalidwe Woyankha

200 Ndapeza bwino mndandanda wazithunzi
401 Wosaloledwa - Chizindikiro chovomerezeka chosayenera kapena chomwe chikusowa
POST /api/v1/snapshots/

Pangani Chithunzi Chaching'ono

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

Pemphani Ma Parameter a Thupi

Parameter Mtundu Zofunika Description
server_id integer Inde ID ya seva yoti mujambule chithunzi
name string Inde Dzina la chithunzithunzi (zilembo, ma hyphens, ma underscores)
description string No Kufotokozera kosankha kwa chithunzicho

Chitsanzo cha Pempho

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);

Chitsanzo cha Yankho

{
  "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."
}

Makhodi a Mkhalidwe Woyankha

201 Kupanga chithunzithunzi kwayambitsidwa bwino
400 Bad Request - Invalid parameters or snapshot limit reached
401 Wosaloledwa - Chizindikiro chovomerezeka chosayenera kapena chomwe chikusowa
404 Not Found - Server does not exist
Note: 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.
POST /api/v1/snapshots/{snapshot_id}/restore/

Bwezeretsani kuchokera ku Chithunzi Chojambula

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

Magawo a Njira

Parameter Mtundu Zofunika Description
snapshot_id integer Inde ID yapadera ya chithunzi

Chitsanzo cha Pempho

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);

Chitsanzo cha Yankho

{
  "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"
  }
}

Makhodi a Mkhalidwe Woyankha

200 Kubwezeretsa kwayambitsidwa bwino
400 Bad Request - Server is not in a valid state for restoration
401 Wosaloledwa - Chizindikiro chovomerezeka chosayenera kapena chomwe chikusowa
404 Sizipezeka - Chithunzithunzi sichikupezeka
Chenjezo: 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.
CHOTSANI /api/v1/snapshots/{snapshot_id}/

Chotsani Chithunzi Chaching'ono

Chotsani chithunzithunzi kwamuyaya. Chochitachi sichingasinthidwe.

Magawo a Njira

Parameter Mtundu Zofunika Description
snapshot_id integer Inde ID yapadera ya chithunzi

Chitsanzo cha Pempho

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)

Makhodi a Mkhalidwe Woyankha

204 Chithunzithunzi chachotsedwa bwino
401 Wosaloledwa - Chizindikiro chovomerezeka chosayenera kapena chomwe chikusowa
404 Sizipezeka - Chithunzithunzi sichikupezeka

Snapshots vs Backups

Understanding when to use snapshots versus backups:

Zithunzi Zazing'ono API

  • Cholinga: Quick point-in-time recovery
  • Liwiro: Faster to create and restore (3-15 min)
  • Nkhani Yogwiritsira Ntchito: Before risky operations (updates, config changes)
  • Malo Osungira: Stored on same infrastructure
  • Limit: 5 snapshots per server
  • Zabwino Kwambiri: Short-term rollback capability

API Yosungira Zinthu Zosungidwa

  • Cholinga: Long-term data protection
  • Liwiro: Slower to create and restore (varies)
  • Nkhani Yogwiritsira Ntchito: Regular automated data protection
  • Malo Osungira: Separate backup storage
  • Limit: 10 manual + automatic backups
  • Zabwino Kwambiri: Disaster recovery and compliance

Best Practices