139 lines
4.9 KiB
Markdown
139 lines
4.9 KiB
Markdown
---
|
|
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 |