VPS.org API

Documentatio API REST

API Imaginum Temporalium

Imagines momentaneas servitoris ad celerem restitutionem in tempore definito administra. Imagines momentanee statum integrum servitoris tui capiunt.

Extrema 4 endpoints
Via Basis /api/v1/snapshots
ACQUIRE /api/v1/snapshots/

Omnes Imagines Enumera

Indicem omnium imaginum momentanearum per servitores tuos recupera.

Parametri Quaestionis

Parametrum Typus Requisitum Descriptio
server_id integer Non Imagines momentaneas secundum identificationem servi filtra

Exemplum Petitionis

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

Exemplum Responsionis

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

Codices Status Responsorum

200 Index imaginum feliciter recuperatus
401 Non auctorizatus - Tessera authenticationis invalida vel absens
POST /api/v1/snapshots/

Crea Imaginem

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

Parametri Corporis Petitionis

Parametrum Typus Requisitum Descriptio
server_id integer Ita Identificatio servi ad imaginem capiendam
name string Ita Nomen imaginis (alphanumericum, hyphena, sublineata)
description string Non Descriptio facultativa pro imagine (vel "capita")

Exemplum Petitionis

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

Exemplum Responsionis

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

Codices Status Responsorum

201 Creatio imaginis momentanee feliciter incepta est
400 Bad Request - Invalid parameters or snapshot limit reached
401 Non auctorizatus - Tessera authenticationis invalida vel absens
404 Not Found - Server does not exist
Nota: 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/

Restituere ex Imagine Instantanea

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

Parametri Semitae

Parametrum Typus Requisitum Descriptio
snapshot_id integer Ita Identificatio singularis imaginis

Exemplum Petitionis

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

Exemplum Responsionis

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

Codices Status Responsorum

200 Restauratio feliciter incepta est
400 Bad Request - Server is not in a valid state for restoration
401 Non auctorizatus - Tessera authenticationis invalida vel absens
404 Non Inventa - Imago non existit.
Monitio: 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.
DELE /api/v1/snapshots/{snapshot_id}/

Dele Imaginem

Imaginem momentaneam perpetuo dele. Haec actio non potest irrita fieri.

Parametri Semitae

Parametrum Typus Requisitum Descriptio
snapshot_id integer Ita Identificatio singularis imaginis

Exemplum Petitionis

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)

Codices Status Responsorum

204 Imago feliciter deleta est
401 Non auctorizatus - Tessera authenticationis invalida vel absens
404 Non Inventa - Imago non existit.

Snapshots vs Backups

Understanding when to use snapshots versus backups:

API Imaginum Temporalium

  • Propositum: Quick point-in-time recovery
  • Celeritas: Faster to create and restore (3-15 min)
  • Usus Casus: Before risky operations (updates, config changes)
  • Repositorium: Stored on same infrastructure
  • Limites: 5 snapshots per server
  • Optimum pro: Short-term rollback capability

API Copiarum Subsidiariarum

  • Propositum: Long-term data protection
  • Celeritas: Slower to create and restore (varies)
  • Usus Casus: Regular automated data protection
  • Repositorium: Separate backup storage
  • Limites: 10 manual + automatic backups
  • Optimum pro: Disaster recovery and compliance

Best Practices