--- name: easypanel-api description: Referência completa da API tRPC oficial do EasyPanel — todos os endpoints para projectos, serviços, deploy e configurações. layer: wiki --- # /easypanel-api - API Oficial EasyPanel Referência da API tRPC do EasyPanel. Baseado em engenharia reversa do SDK oficial. --- ## Autenticação ```bash 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` | ```bash # 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`) | ```bash # 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](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](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 | ```bash # Listar dominios INPUT='{"json":{"projectName":"descomplicar"}}' ENCODED=$(python3 -c "import urllib.parse; print(urllib.par