4.9 KiB
name, description, layer
| name | description | layer |
|---|---|---|
| easypanel-api | Referência completa da API tRPC oficial do EasyPanel — todos os endpoints para projectos, serviços, deploy e configurações. | wiki |
/easypanel-api - API Oficial EasyPanel
Referência da API tRPC do EasyPanel. Baseado em engenharia reversa do SDK oficial.
Autenticação
TOKEN=$(cat /etc/easypanel/.api-token)
# Header obrigatório em todos os pedidos:
-H "Authorization: Bearer $TOKEN"
Base URL: http://localhost:3000/api/trpc/
Usar sempre via SSH localhost. Nunca expor externamente.
Formato de Pedidos
| Método | Quando usar | Formato |
|---|---|---|
| GET | Leitura (list, inspect, get) | ?input=URL_ENCODED_JSON |
| POST | Escrita (create, update, deploy, destroy) | -d '{"json":{...}}' com Content-Type: application/json |
# GET
curl -s "http://localhost:3000/api/trpc/ENDPOINT?input=URL_ENCODED_JSON" \
-H "Authorization: Bearer $TOKEN"
# POST
curl -s -X POST "http://localhost:3000/api/trpc/ENDPOINT" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"json":{...}}'
Projects API
| Endpoint | Tipo | Descrição |
|---|---|---|
projects.listProjects |
GET | Listar todos os projectos |
projects.listProjectsAndServices |
GET | Projectos + todos os serviços |
projects.createProject |
POST | Criar projecto (name) |
projects.destroyProject |
POST | Destruir projecto (projectName) |
projects.inspectProject |
GET | Inspecionar projecto (projectName) |
# Listar projectos (teste rápido de autenticação)
curl -s "http://localhost:3000/api/trpc/projects.listProjects" \
-H "Authorization: Bearer $TOKEN"
# Criar projecto
curl -s -X POST "http://localhost:3000/api/trpc/projects.createProject" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"json":{"name":"novo-projecto"}}'
Services API
Endpoints completos com exemplos curl: ver references/services-api.md
Verificados 12-03-2026 (engenharia reversa do backend.js minificado):
| Endpoint | Tipo | Descrição |
|---|---|---|
services.app.createService |
POST | Criar serviço app |
services.postgres.createService |
POST | Criar PostgreSQL |
services.mysql.createService |
POST | Criar MySQL |
services.redis.createService |
POST | Criar Redis |
services.app.inspectService |
GET | Inspecionar serviço |
services.app.deployService |
POST | Fazer deploy |
services.app.stopService |
POST | Parar serviço |
services.app.startService |
POST | Iniciar serviço |
services.app.restartService |
POST | Reiniciar serviço |
services.app.destroyService |
POST | Destruir serviço |
Endpoints que NAO existem (removidos da versao anterior):
enableService, disableService — usar startService/stopService em vez disso.
Parâmetros obrigatórios: projectName + serviceName em todos os endpoints de serviços.
Regra Descomplicar: projectName:"descomplicar" para serviços próprios.
Service Configuration API
Endpoints completos com exemplos curl: ver references/service-config-api.md
Verificados 12-03-2026:
| Endpoint | Descrição | Verificado |
|---|---|---|
services.app.updateSourceGithub |
Source GitHub (owner, repo, ref, path) |
Sim |
services.app.updateSourceGit |
Source Git custom (repo, ref, path) — params no nivel raiz, NAO dentro de source |
Sim |
services.app.updateSourceImage |
Source Docker image (image) |
Sim |
services.app.updateEnv |
Variáveis de ambiente (env como string multi-linha) |
Sim |
services.app.updateBuild |
Build config (type, buildCommand, startCommand) |
Sim |
services.app.updateResources |
CPU/RAM (memoryLimit, cpuLimit, etc.) |
Sim |
services.app.updateAdvanced |
Deploy avançado (replicas, command, zeroDowntime) |
Sim |
services.app.updateRedirects |
Redireccionamentos HTTP | Sim |
services.app.updateBasicAuth |
Autenticacao basica | Sim |
services.app.updateMaintenance |
Modo manutencao | Sim |
Endpoints que NAO existem na versao instalada:
— dominios so via UI do EasyPanelservices.app.updateDomains— nao encontradoservices.app.updateMounts— nao encontradoservices.app.updatePorts
Domains API (Verificado 12-03-2026)
Os dominios NAO sao geridos por services.app.* mas sim pelo namespace domains.*.
| Endpoint | Tipo | Descricao |
|---|---|---|
domains.listDomains |
GET | Listar dominios do projecto (projectName) |
domains.createDomain |
POST | Criar dominio |
domains.updateDomain |
POST | Actualizar dominio |
domains.deleteDomain |
POST | Remover dominio |
# Listar dominios
INPUT='{"json":{"projectName":"descomplicar"}}'
ENCODED=$(python3 -c "import urllib.parse; print(urllib.par