VPS.org API

Documentación de la API REST

API de instantáneas

Administre instantáneas del servidor para una restauración rápida en un momento dado. Las instantáneas capturan el estado completo de su servidor.

Puntos finales 4 endpoints
Ruta base /api/v1/snapshots
CONSEGUIR /api/v1/snapshots/

Listar todas las instantáneas

Recupere una lista de todas las instantáneas en sus servidores.

Parámetros de consulta

Parámetro Tipo Requerido Descripción
server_id integer No Filtrar instantáneas por ID de servidor

Ejemplo de solicitud

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

Ejemplo de respuesta

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

Códigos de estado de respuesta

200 Lista de instantáneas recuperada correctamente
401 No autorizado: token de autenticación no válido o faltante
CORREO /api/v1/snapshots/

Crear instantánea

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

Parámetros del cuerpo de la solicitud

Parámetro Tipo Requerido Descripción
server_id integer ID del servidor del que se tomará la instantánea
name string Nombre de la instantánea (alfanumérico, guiones, guiones bajos)
description string No Descripción opcional de la instantánea

Ejemplo de solicitud

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

Ejemplo de respuesta

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

Códigos de estado de respuesta

201 La creación de la instantánea se inició correctamente
400 Bad Request - Invalid parameters or snapshot limit reached
401 No autorizado: token de autenticación no válido o faltante
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.
CORREO /api/v1/snapshots/{snapshot_id}/restore/

Restaurar desde una instantánea

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

Parámetros de ruta

Parámetro Tipo Requerido Descripción
snapshot_id integer Identificación única de instantánea

Ejemplo de solicitud

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

Ejemplo de respuesta

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

Códigos de estado de respuesta

200 Restauración iniciada exitosamente
400 Bad Request - Server is not in a valid state for restoration
401 No autorizado: token de autenticación no válido o faltante
404 No encontrado - La instantánea no existe
Advertencia: 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.
BORRAR /api/v1/snapshots/{snapshot_id}/

Eliminar instantánea

Eliminar una instantánea de forma permanente. Esta acción no se puede deshacer.

Parámetros de ruta

Parámetro Tipo Requerido Descripción
snapshot_id integer Identificación única de instantánea

Ejemplo de solicitud

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)

Códigos de estado de respuesta

204 La instantánea se eliminó correctamente
401 No autorizado: token de autenticación no válido o faltante
404 No encontrado - La instantánea no existe

Snapshots vs Backups

Understanding when to use snapshots versus backups:

API de instantáneas

  • Objetivo: Quick point-in-time recovery
  • Velocidad: Faster to create and restore (3-15 min)
  • Caso de uso: Before risky operations (updates, config changes)
  • Almacenamiento: Stored on same infrastructure
  • Límite: 5 snapshots per server
  • Ideal para: Short-term rollback capability

API de copias de seguridad

  • Objetivo: Long-term data protection
  • Velocidad: Slower to create and restore (varies)
  • Caso de uso: Regular automated data protection
  • Almacenamiento: Separate backup storage
  • Límite: 10 manual + automatic backups
  • Ideal para: Disaster recovery and compliance

Best Practices