Publisher CLI - Guia Completo para Administradores
🚀 Visão Geral
O Publisher CLI é uma ferramenta de linha de comando para gerenciar o sistema Publisher de imóveis multi-tenant. Este guia documenta funcionalidades avançadas para usuários administradores.
📋 Hierarquia de Usuários
- Admin (Sistema): Único usuário que pode gerenciar TODOS os tenants
- Master (Tenant): Dono de um tenant específico, acessa apenas seus dados
- User (Tenant): Usuário regular dentro de um tenant
🔐 Autenticação e Gerenciamento de Sessão
Login Básico
pnpm dev auth login --email <admin-email> --password <admin-password> --tenant <tenant-id>
pnpm dev auth login --email <user-email> --password <user-password>
Verificar Status da Autenticação
pnpm dev auth status
✅ Autenticado
────────────────────────────────────────
Email: <email-do-usuario>
API URL: https://publisher-api.vercel.app/api/v1
Tenant ativo: <tenant-id>
👤 Usuário:
Nome: <nome-do-usuario>
Email: <email-do-usuario>
Tenant: <tenant-id>
Admin: Sim/Não
Master: Sim/Não
Informações Detalhadas do Token JWT
pnpm dev auth info
- Header (algoritmo, tipo)
- Payload (usuário, tenant, permissões)
- Validade (emissão, expiração, dias restantes)
- Token parcial
- Configuração local vs token
🏢 Gerenciamento de Tenants (Admin Only)
Listar Todos os Tenants
pnpm dev tenant list
pnpm dev tenant list --json
pnpm dev tenant list --limit 10
Buscar Tenant Específico
pnpm dev tenant list --json | grep -i "XYZ" -B 1 -A 3
"key": "XYZ-1234",
"name": "Imobiliária XYZ",
"email": "contato@imobiliariaxyz.com.br"
Trocar de Tenant (Admin Only)
pnpm dev auth tenant MLC-8217
1. Faz PUT /auth/tenant com o novo tenant
2. Recebe novo token JWT com tenant codificado
3. Salva automaticamente o novo token
4. Agora todas as operações são no contexto desse tenant
💾 Backup de Dados
Backup do Tenant Atual
pnpm dev backup
pnpm dev backup -o meu-backup
pnpm dev backup -f yaml
Backup de Qualquer Tenant (Admin Only)
pnpm dev auth tenant XYZ-1234
pnpm dev backup -o casa-top-backup
O que é Incluído no Backup
- ✅ Properties (imóveis)
- ✅ Users (usuários)
- ✅ Tenant (informações do tenant)
- ✅ Roles (papéis/permissões)
- ✅ Cities (cidades)
- ✅ Districts (bairros)
- ✅ Integrations (integrações)
- ❌ Events (excluído propositalmente)
- ❌ Items (endpoint não disponível)
Estrutura do Backup
backup-directory/
├── properties.json # Todos os imóveis
├── users.json # Usuários do tenant
├── tenant.json # Dados do tenant
├── roles.json # Papéis/permissões
├── cities.json # Cidades cadastradas
├── districts.json # Bairros
├── integrations.json # Integrações
└── metadata.json # Informações do backup
🔄 Paginação e Performance
Como Funciona a Paginação
- API usa DynamoDB com paginação por
startKey
- Backup baixa automaticamente 100 items por vez
- Continua até não haver mais
startKey
na resposta
Exemplo de Resposta com Paginação
{
"properties": [...],
"startKey": "xyz123"
}
🎯 Casos de Uso Práticos
1. Admin Fazendo Backup de Vários Tenants
pnpm dev auth login --email <admin-email> --password <admin-password> --tenant <tenant-id>
pnpm dev auth tenant MLC-8217
pnpm dev backup -o backups/marcio-$(date +%Y%m%d)
pnpm dev auth tenant XYZ-1234
pnpm dev backup -o backups/casa-top-$(date +%Y%m%d)
pnpm dev auth tenant DEV-001
2. Verificar Quantos Dados um Tenant Tem
pnpm dev auth tenant BTS-6104
pnpm dev backup -o temp-backup
3. Script para Backup de Múltiplos Tenants
#!/bin/bash
TENANTS=("XYZ-1234" "ABC-1234" "DEF-6104")
ADMIN_EMAIL="<seu-email-admin>"
ADMIN_PASSWORD="<sua-senha-admin>"
ADMIN_TENANT="<seu-tenant-admin>"
pnpm dev auth login --email $ADMIN_EMAIL --password $ADMIN_PASSWORD --tenant $ADMIN_TENANT
for TENANT in "${TENANTS[@]}"; do
echo "Backing up $TENANT..."
pnpm dev auth tenant $TENANT
pnpm dev backup -o "backups/$TENANT-$(date +%Y%m%d-%H%M%S)"
done
⚠️ Limitações e Observações
Tokens e Sessões
- Token JWT contém o tenant codificado
- Mudar apenas config local NÃO muda o token
- Sempre use
auth tenant
para trocar corretamente
- Tokens expiram em 31 dias por padrão
Endpoints Importantes
GET /auth
- Verifica autenticação
PUT /auth/tenant
- Troca tenant (admin only)
GET /tenants
- Lista tenants (admin only)
GET /properties?startKey=X&limit=100
- Lista com paginação
🛠️ Troubleshooting
"Tenant must be provided on request"
- Certifique-se de incluir
--tenant
no login
- Para admin: use qualquer tenant válido (ex: DEV-001)
Backup retorna poucos dados
- Verifique com
auth info
se o token tem o tenant correto
- Use
auth tenant <id>
em vez de apenas mudar a config
Estrutura de Tenant
{
"id": "ten_Fze9UXfl8au84VH0NdYH8ix3MzFd",
"key": "XYZ-1234",
"name": "Imobiliária XYZ",
"email": "contato@imobiliariaxyz.com.br",
"created_at": "2023-12-18T..."
}
🚦 Fluxo Completo de Trabalho
-
Login como Admin
pnpm dev auth login --email <admin-email> --password <admin-password> --tenant <tenant-id>
-
Verificar Status
pnpm dev auth status
pnpm dev auth info
-
Listar Tenants Disponíveis
pnpm dev tenant list
-
Trocar para Tenant Desejado
pnpm dev auth tenant XYZ-1234
-
Fazer Backup
pnpm dev backup -o backup-XYZ-1234
-
Verificar Resultado
ls -la backup-XYZ-1234/
Nota: Este guia foi criado com base na implementação atual do Publisher CLI. Sempre verifique a versão e atualizações do sistema.