Bem-vindo à API do EzServer

A API do EzServer é uma API RESTful que permite gerenciar seus servidores, implantar aplicações, executar comandos SSH, criar backups e muito mais - tudo programaticamente.

O que você pode fazer com a API

  • Criar e gerenciar servidores com acesso SSH
  • Executar comandos e transmitir saída em tempo real
  • Implantar aplicações com detecção automática de framework
  • Criar e restaurar backups
  • Monitorar métricas e recursos do servidor
  • Compartilhar acesso ao servidor com membros da equipe
  • Provisionar servidores na nuvem sob demanda

URL Base

https://ezserver.app/api/v1

Formato de Resposta

Todas as respostas são retornadas em formato JSON com uma estrutura consistente:

{
  "success": true,
  "message": "Operation completed successfully",
  "data": { ... },
  "meta": {
    "total": 10,
    "per_page": 15,
    "current_page": 1
  }
}

Início Rápido

1. Obtenha Seu Token de API

Gere um token de API no seu painel. Vá em Perfil > Tokens de API e crie um novo token.

2. Faça Sua Primeira Requisição

Use seu token para autenticar requisições. Inclua-o no cabeçalho Authorization.

3. Explore a API

Navegue pela documentação para descobrir todos os endpoints disponíveis e suas capacidades.

Tente listar seus servidores:

curl -X GET "https://ezserver.app/api/v1/servers" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Autenticação

A API do EzServer usa autenticação Bearer token via Laravel Sanctum. Inclua seu token de API no cabeçalho Authorization de cada requisição.

Formato do Cabeçalho

Authorization: Bearer YOUR_API_TOKEN
POST /api/v1/auth/register Público

Registrar

Criar uma nova conta de usuário.

curl -X POST "https://ezserver.app/api/v1/auth/register" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "name": "John Doe",
    "email": "john@example.com",
    "password": "password123",
    "password_confirmation": "password123"
  }'
POST /api/v1/auth/login Público

Login

Autenticar e receber um token de API.

curl -X POST "https://ezserver.app/api/v1/auth/login" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "email": "john@example.com",
    "password": "password123"
  }'
GET /api/v1/auth/profile Requer Autenticação

Obter Perfil

Obter perfil do usuário autenticado.

curl -X GET "https://ezserver.app/api/v1/auth/profile" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
POST /api/v1/auth/logout Requer Autenticação

Logout

Revogar o token de API atual.

curl -X POST "https://ezserver.app/api/v1/auth/logout" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Limites de Taxa

As requisições da API são limitadas para garantir uso justo e proteger o serviço. Os limites variam por endpoint e plano de assinatura.

Limites por Plano

Básico+

60

requests/min

Profissional+

300

requests/min

Empresarial

600

requests/min

Cabeçalhos de Limite de Taxa

Toda resposta inclui informações de limite de taxa nos cabeçalhos:

X-RateLimit-Limit: 60        // Máximo de requisições permitidas na janela
X-RateLimit-Remaining: 45   // Requisições restantes na janela atual
X-RateLimit-Reset: 1640000000 // Timestamp Unix de quando a janela reseta

Quando o Limite é Excedido

Quando você excede o limite, você receberá uma resposta 429 Too Many Requests:

{
  "success": false,
  "message": "Too Many Requests",
  "retry_after": 30
}

Servidores

Gerencie seus servidores com operações CRUD completas, teste de conectividade SSH, execução de comandos e monitoramento de métricas.

GET /api/v1/servers Requer Autenticação

Listar Servidores

Obter uma lista paginada de todos os seus servidores.

curl -X GET "https://ezserver.app/api/v1/servers" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
POST /api/v1/servers Requer Autenticação

Criar Servidor

Adicionar um novo servidor à sua conta.

curl -X POST "https://ezserver.app/api/v1/servers" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "name": "My Production Server",
    "host": "192.168.1.100",
    "port": 22,
    "username": "root",
    "password": "your-ssh-password",
    "type": "vps"
  }'
GET /api/v1/servers/{id} Requer Autenticação

Obter Servidor

Obter informações detalhadas sobre um servidor específico.

curl -X GET "https://ezserver.app/api/v1/servers/1" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
POST /api/v1/servers/{id}/test-connection Requer Autenticação

Testar Conexão

Testar conectividade SSH com o servidor.

curl -X POST "https://ezserver.app/api/v1/servers/1/test-connection" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
POST /api/v1/servers/{id}/execute-command Requer Autenticação

Executar Comando

Executar um comando SSH no servidor.

curl -X POST "https://ezserver.app/api/v1/servers/1/execute-command" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"command": "uptime"}'
GET /api/v1/servers/{id}/metrics Requer Autenticação

Obter Métricas

Obter métricas do servidor em tempo real (CPU, memória, disco, rede).

curl -X GET "https://ezserver.app/api/v1/servers/1/metrics" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Sessões SSH

Gerencie sessões SSH e execute comandos com streaming em tempo real via SSE (Server-Sent Events) ou WebSocket.

GET /api/v1/ssh/sessions Requer Autenticação

Listar Sessões

Obter todas as sessões SSH ativas do usuário autenticado.

curl -X GET "https://ezserver.app/api/v1/ssh/sessions" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
DELETE /api/v1/ssh/sessions/{virtualSessionId} Requer Autenticação

Encerrar Sessão

Encerrar uma sessão SSH específica pelo seu ID de sessão virtual.

curl -X DELETE "https://ezserver.app/api/v1/ssh/sessions/abc123" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Streaming em Tempo Real

O EzServer suporta dois métodos para execução de comandos em tempo real:

Server-Sent Events (SSE) Profissional+

Use SSE para streaming unidirecional da saída de comandos. Ideal para executar comandos e receber resultados.

Conectando ao Stream SSE
curl -N "https://ezserver.app/api/v1/mcp/sse" \
  -H "Authorization: Bearer YOUR_MCP_TOKEN" \
  -H "X-User-ID: YOUR_USER_ID" \
  -H "Accept: text/event-stream"

WebSocket

Use WebSocket para sessões de terminal interativas full-duplex. Ideal para shells interativos.

Conexão WebSocket
const ws = new WebSocket('wss://ezserver.app:8090/ssh-ws');

ws.onopen = () => {
  // Mensagem de autenticação para iniciar sessão
  ws.send(JSON.stringify({
    type: 'auth',
    data: {
      server_id: 1,
      token: 'YOUR_API_TOKEN'
    }
  }));
};

ws.onmessage = (event) => {
  const output = atob(event.data); // Base64 decoded
  console.log(output);
};

// Enviar entrada para o terminal
ws.send(JSON.stringify({
  type: 'input',
  data: btoa('ls -la\n') // Base64 encoded
}));

// Redimensionar janela do terminal
ws.send(JSON.stringify({
  type: 'resize',
  data: { cols: 120, rows: 40 }
}));

Backups

Básico+

Crie, gerencie e restaure backups de servidores. A frequência e recursos de backup dependem do seu plano de assinatura.

Recursos de backup requerem um plano Básico ou superior.

GET /api/v1/backups Básico+

Listar Backups

Obter todos os backups do usuário autenticado.

curl -X GET "https://ezserver.app/api/v1/backups" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
POST /api/v1/backups/quick Básico+

Backup Rápido

Criar um backup imediato de um servidor.

curl -X POST "https://ezserver.app/api/v1/backups/quick" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "server_id": 1,
    "type": "full",
    "name": "Pre-deployment backup"
  }'

Tipos de Backup

full

Backup completo do servidor incluindo todos os arquivos, bancos de dados e configurações

files

Backup apenas de arquivos e diretórios

database

Backup apenas de bancos de dados

Aplicações

Implante e gerencie aplicações com detecção automática de framework. Suporta 28+ frameworks incluindo Laravel, Node.js, Python e mais.

POST /api/v1/servers/{server}/applications Requer Autenticação

Implantar Aplicação

Implantar uma nova aplicação com detecção automática de framework.

curl -X POST "https://ezserver.app/api/v1/servers/1/applications" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "path": "/var/www/myapp",
    "domain": "myapp.example.com",
    "framework": "laravel"
  }'
POST /api/v1/servers/{server}/applications/{app}/start Requer Autenticação

Iniciar Aplicação

Iniciar uma aplicação que está atualmente parada.

curl -X POST "https://ezserver.app/api/v1/servers/1/applications/5/start" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
POST /api/v1/servers/{server}/applications/{app}/ssl Requer Autenticação

Habilitar SSL

Habilitar certificado SSL para a aplicação.

curl -X POST "https://ezserver.app/api/v1/servers/1/applications/5/ssl" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Frameworks Suportados

Laravel, Symfony, WordPress, Django, Flask, FastAPI, Express, Next.js, Nuxt.js, NestJS, Vue, React, Angular e mais.

Operações de Banco de Dados

Execute operações de banco de dados com suporte a uploads e downloads em chunks. Perfeito para arquivos de banco de dados grandes.

POST /api/v1/servers/{server}/database/upload/initialize Requer Autenticação

Inicializar Upload

Iniciar uma sessão de upload de arquivo de banco de dados em chunks.

curl -X POST "https://ezserver.app/api/v1/servers/1/database/upload/initialize" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "filename": "backup.sql",
    "size": 104857600,
    "database": "production_db"
  }'
POST /api/v1/servers/{server}/database/export Requer Autenticação

Exportar Banco de Dados

Exportar um banco de dados para um arquivo SQL.

curl -X POST "https://ezserver.app/api/v1/servers/1/database/export" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "database": "production_db",
    "format": "sql"
  }'

Operações de Arquivo

Baixe arquivos de servidores com suporte a downloads em chunks. Ideal para arquivos grandes e conexões instáveis.

POST /api/v1/servers/{server}/files/download/initialize Requer Autenticação

Inicializar Download

Iniciar uma sessão de download de arquivo em chunks.

curl -X POST "https://ezserver.app/api/v1/servers/1/files/download/initialize" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "path": "/var/www/myapp/storage/logs/laravel.log"
  }'
POST /api/v1/servers/{server}/files/download Requer Autenticação

Download em Background

Iniciar um job de download em background para arquivos grandes.

curl -X POST "https://ezserver.app/api/v1/servers/1/files/download" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "path": "/var/www/myapp/public/storage/large-file.zip",
    "background": true
  }'

Compartilhamento de Recursos

Compartilhe acesso ao servidor com membros da equipe com permissões granulares (visualizar, escrever, executar).

Níveis de Permissão

view

Visualizar detalhes e métricas do servidor

write

Modificar configurações e arquivos do servidor

execute

Executar comandos SSH no servidor

POST /api/v1/shares Requer Autenticação

Criar Compartilhamento

Criar um novo convite de compartilhamento de recurso.

curl -X POST "https://ezserver.app/api/v1/shares" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "email": "teammate@example.com",
    "server_ids": [1, 2],
    "permissions": ["view", "execute"]
  }'
POST /api/v1/shares/{token}/accept Requer Autenticação

Aceitar Compartilhamento

Aceitar um convite de compartilhamento.

curl -X POST "https://ezserver.app/api/v1/shares/abc123def456/accept" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Servidores Cloud

Empresarial

Provisione e gerencie servidores na nuvem sob demanda. Disponível em planos Empresarial.

Provisionamento de servidores na nuvem requer um plano Empresarial.

GET /api/v1/cloud/providers Público

Listar Provedores

Obter provedores de nuvem disponíveis.

curl -X GET "https://ezserver.app/api/v1/cloud/providers" \
  -H "Accept: application/json"
POST /api/v1/cloud/servers/provision Empresarial

Provisionar Servidor

Provisionar um novo servidor na nuvem.

curl -X POST "https://ezserver.app/api/v1/cloud/servers/provision" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "provider": "digitalocean",
    "size": "s-2vcpu-4gb",
    "region": "nyc1",
    "name": "my-cloud-server"
  }'

Protocolo MCP

Profissional+

Integração Model Context Protocol (MCP) para execução de comandos SSH com IA e gerenciamento de servidores.

O Protocolo MCP requer um plano Profissional ou superior.

Autenticação MCP

O MCP usa um método de autenticação separado com cabeçalhos personalizados:

Authorization: Bearer YOUR_MCP_TOKEN  // Seu token de API MCP (diferente do token de API regular)
X-User-ID: YOUR_USER_ID               // Seu ID de usuário
POST /api/v1/mcp/tool Profissional+

Executar Ferramenta

Executar uma ferramenta MCP.

curl -X POST "https://ezserver.app/api/v1/mcp/tool" \
  -H "Authorization: Bearer YOUR_MCP_TOKEN" \
  -H "X-User-ID: YOUR_USER_ID" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "tool": "executeCommand",
    "params": {
      "server_id": 1,
      "command": "uptime"
    }
  }'

Ferramentas Disponíveis

listServers Listar todos os servidores acessíveis
getServerDetails Obter informações detalhadas do servidor
executeCommand Executar comando SSH em um servidor
getServerMetrics Obter métricas do servidor em tempo real

Tratamento de Erros

A API usa códigos de status HTTP padrão e retorna mensagens de erro detalhadas em formato JSON.

Códigos de Status HTTP

200 Requisição bem-sucedida
201 Recurso criado com sucesso
204 Requisição bem-sucedida sem conteúdo
400 Requisição inválida - Parâmetros inválidos
401 Não autorizado - Token inválido ou ausente
403 Proibido - Permissões insuficientes
404 Não encontrado - Recurso não existe
422 Erro de validação - Verifique os detalhes do erro
429 Muitas requisições - Limite de taxa excedido
500 Erro do servidor - Contate o suporte

Formato de Resposta de Erro

{
  "success": false,
  "message": "The given data was invalid.",
  "errors": {
    "email": ["The email field is required."],
    "password": ["The password must be at least 8 characters."]
  }
}

SDKs e Bibliotecas

Bibliotecas oficiais e mantidas pela comunidade para integrar com a API do EzServer.

JavaScript

Em breve

Python

Em breve

PHP

Em breve

Go

Em breve

Quer contribuir com um SDK? Entre em contato!

Contate o Suporte

Precisa de Ajuda?

Quer contribuir com um SDK? Entre em contato!

Contate o Suporte