VPS.org API

Ìwé Ìdásílẹ̀ API REST

Àwọn fọ́tò ìfàsẹ́yìn API

Ṣàkóso àwọn àwòrán olupin fún àtúnṣe àkókò kíákíá. Àwọn àwòrán afọ́mọ́ máa ń gba gbogbo ipò olupin rẹ.

Àwọn ìparí 4 endpoints
Ipa-ọna Ipilẹ /api/v1/snapshots
GBÀ /api/v1/snapshots/

Ṣe àkójọ gbogbo àwọn fọ́tò ìkọ̀wé

Gba atokọ gbogbo awọn aworan afọwọya kọja awọn olupin rẹ.

Àwọn Ìbéèrè Pàtàkì

Pílámẹ́rà Irú Ti a nilo Àpèjúwe
server_id integer Rárá Àlẹ̀mọ́ àwòrán nípa lílo ID olupin

Àpẹẹrẹ Ìbéèrè

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

Àpẹẹrẹ Ìdáhùn

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

Àwọn Kóòdù Ipò Ìdáhùn

200 Àkójọ àwòrán tí a rí gbà láṣeyọrí
401 Àìní àṣẹ - Àmì ìdánilójú tí kò tọ́ tàbí tí kò sí mọ́
Ifiranṣẹ /api/v1/snapshots/

Ṣẹ̀dá Àwòrán Ìfọ́tò

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

Ìbéèrè fún Àwọn Ìwọ̀n Ara

Pílámẹ́rà Irú Ti a nilo Àpèjúwe
server_id integer Bẹ́ẹ̀ni ID ti olupin si aworan
name string Bẹ́ẹ̀ni Orúkọ fún àwòrán náà (àwọn lẹ́tà, àmì ìsàlẹ̀, àmì ìsàlẹ̀)
description string Rárá Àpèjúwe àṣàyàn fún àwòrán náà

Àpẹẹrẹ Ìbéèrè

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

Àpẹẹrẹ Ìdáhùn

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

Àwọn Kóòdù Ipò Ìdáhùn

201 Ṣíṣẹ̀dá fọ́tò ìkọ̀wé bẹ̀rẹ̀ ní àṣeyọrí
400 Bad Request - Invalid parameters or snapshot limit reached
401 Àìní àṣẹ - Àmì ìdánilójú tí kò tọ́ tàbí tí kò sí mọ́
404 Not Found - Server does not exist
Àkíyèsí: 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.
Ifiranṣẹ /api/v1/snapshots/{snapshot_id}/restore/

Mu pada lati Fọto fọto

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

Àwọn Pílámítà Ọ̀nà

Pílámẹ́rà Irú Ti a nilo Àpèjúwe
snapshot_id integer Bẹ́ẹ̀ni Àwòrán ID àrà ọ̀tọ̀

Àpẹẹrẹ Ìbéèrè

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

Àpẹẹrẹ Ìdáhùn

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

Àwọn Kóòdù Ipò Ìdáhùn

200 Àtúnṣe bẹ̀rẹ̀ ní àṣeyọrí
400 Bad Request - Server is not in a valid state for restoration
401 Àìní àṣẹ - Àmì ìdánilójú tí kò tọ́ tàbí tí kò sí mọ́
404 A ko ri - Fọto aworan ko si
Ìkìlọ̀: 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.
PARÍPÁRÁ /api/v1/snapshots/{snapshot_id}/

Pa àwòrán rẹ rẹ́

Pa àwòrán ìfọ́tò kan rẹ́ pátápátá. A kò le ṣe àtúnṣe ìgbésẹ̀ yìí.

Àwọn Pílámítà Ọ̀nà

Pílámẹ́rà Irú Ti a nilo Àpèjúwe
snapshot_id integer Bẹ́ẹ̀ni Àwòrán ID àrà ọ̀tọ̀

Àpẹẹrẹ Ìbéèrè

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)

Àwọn Kóòdù Ipò Ìdáhùn

204 Àṣeyọrí ni a ti pa àwòrán náà rẹ́
401 Àìní àṣẹ - Àmì ìdánilójú tí kò tọ́ tàbí tí kò sí mọ́
404 A ko ri - Fọto aworan ko si

Snapshots vs Backups

Understanding when to use snapshots versus backups:

Àwọn fọ́tò ìfàsẹ́yìn API

  • Ète: Quick point-in-time recovery
  • Iyara: Faster to create and restore (3-15 min)
  • Ọran Lilo: Before risky operations (updates, config changes)
  • Ibi ipamọ: Stored on same infrastructure
  • Ààlà: 5 snapshots per server
  • Ti o dara julọ fun: Short-term rollback capability

API Àfikún

  • Ète: Long-term data protection
  • Iyara: Slower to create and restore (varies)
  • Ọran Lilo: Regular automated data protection
  • Ibi ipamọ: Separate backup storage
  • Ààlà: 10 manual + automatic backups
  • Ti o dara julọ fun: Disaster recovery and compliance

Best Practices