Files
claude-plugins/infraestrutura/skills/easypanel-api/SKILL.md
T

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:

  • services.app.updateDomains — dominios so via UI do EasyPanel
  • services.app.updateMounts — nao encontrado
  • services.app.updatePorts — nao encontrado

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