DWService API
Para usuários avançados
Este guia fornece instruções avançadas para desenvolvedores que desejam integrar as APIs do DWService em suas aplicações, com foco em autenticação, endpoints principais, integração com WebSockets, exemplos de uso, tratamento de erros e considerações de segurança. O DWService oferece uma API RESTful para gerenciar agentes, canais, sessões remotas e integrações personalizadas. Baseado na documentação oficial (versão de outubro de 2025), disponível em https://docs.dwservice.net/docs/api/getting-started/.
As APIs permitem:
Gerenciar agentes remotamente (instalação, monitoramento, controle).
Integrar controle remoto (tela, arquivos, processos) em apps web ou desktop.
Suportar streaming de tela/áudio via WebSockets.
Realizar operações CRUD em recursos.
Integrar com SSO, chat, chamadas de vídeo e armazenamento em nuvem.
Pré-requisitos:
Conta DWService com plano que suporte APIs (verifique em https://api.dwservice.net/).
Chave de API gerada no painel de desenvolvedor.
Conhecimento de HTTP/REST, JSON, WebSockets e autenticação OAuth2.
Limites: Até 200 agentes e 5 canais por conta padrão; expanda via upgrade.
Autenticação
A API usa autenticação baseada em tokens OAuth2. Não use credenciais de login diretamente.
Passos para Obter Token
Gere uma chave de API no painel: Configurações > API Keys (formato:
sk_xxxxxxxx).Faça login OAuth2 para obter um token de acesso:
Endpoint:
POST https://www.apiremoteaccess.com/en/api/v1/auth/tokenHeaders:
Content-Type: application/x-www-form-urlencodedBody (form-data):
grant_type=client_credentials
client_id=SEU_CLIENT_ID
client_secret=SEU_CLIENT_SECRETResposta de Sucesso (200 OK):
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600
}Use o
access_tokenem requisições:Authorization: Bearer <token>.
Exemplo em Python (usando requests):
Endpoints Principais
A base URL é https://www.apiremoteaccess.com/en/api/v1/. Todos os endpoints usam JSON. Métodos suportados: GET, POST, PUT, DELETE.
Gerenciamento de Agentes (CRUD)
URL:
/json/agentsDescrição: Lista, cria, atualiza ou deleta agentes.
GET
/json/agents
Lista todos os agentes.
Query: status=online, group_id=123
POST
/json/agents
Cria um novo agente (gera código de instalação).
Body: { "name": "Meu Agente", "os": "windows" }
PUT
/json/agents/{id}
Atualiza configurações (ex: idioma, apps).
Body: { "enabled_apps": ["screen", "files"] }
DELETE
/json/agents/{id}
Remove agente.
-
Resposta Exemplo (GET):
Gerenciamento de Canais/Sessões
URL:
/json/channelsDescrição: Controla acessos simultâneos (ex: múltiplos admins).
POST
/json/channels
Cria canal para sessão remota.
Body: { "agent_id": 12345, "user_ids": [1,2] }
GET
/json/channels/{id}
Obtém status da sessão.
-
DELETE
/json/channels/{id}
Encerra canal.
-
Integração WebSocket: Após criar um canal, conecte-se via wss://www.apiremoteaccess.com/en/ws/session/{channel_id}.
Aplicações Remotas
URL:
/json/apps/{agent_id}/{app_name}Descrição: Executa apps específicas (ex: screen, files, processes).
POST
/json/apps/{agent_id}/screen
Inicia stream de tela.
Body: { "quality": "high", "resolution": "1920x1080" }
GET
/json/apps/{agent_id}/files
Lista arquivos remotos.
Query: path=/home/user
POST
/json/apps/{agent_id}/execute
Executa comando no agente.
Body: { "command": "ls -la" }
Eventos e Logs
URL:
/json/eventsDescrição: Analisa eventos (conexões, erros).
GET
/json/events
Lista eventos recentes.
Query: agent_id=12345&from=2025-10-01
POST
/json/events/analyze
Analisa padrões de uso.
Body: { "filter": "failed_connections" }
Integração com WebSockets
O DWService suporta streaming de tela, áudio e entrada de usuário via WebSockets para sessões remotas em tempo real. O endpoint WebSocket é: wss://www.apiremoteaccess.com/en/ws/session/{channel_id}
Exemplo 1: Streaming de Tela em JavaScript
Este exemplo cria um canal e exibe a tela remota em um <canvas>.
HTML associado:
Exemplo 2: Controle de Teclado em Python
Este exemplo envia comandos de teclado para um agente remoto.
Exemplo 3: Transferência de Arquivos com WebSocket
Este exemplo faz upload de um arquivo pequeno para o agente.
HTML associado:
Outros Exemplos de Uso Avançado
Deploy Automatizado (Python)
Integração SSO (Zimbra)
Crie um plugin que mapeia usuários Zimbra para DWService.
Use
/auth/tokencom credenciais mapeadas para login automático.
Tratamento de Erros e Limites
Códigos de Erro Comuns:
401
Token inválido
Renove token.
403
Sem permissão
Verifique escopo da chave API.
429
Rate limit excedido
Aguarde (padrão: 100 req/min).
500
Erro interno
Consulte logs do agente.
Rate Limits: 100 requisições/minuto por IP; expanda via suporte.
Paginação: Use
?page=1&limit=50em listas.Logs: Acesse via
/json/logs/{agent_id}.WebSocket Erros: Trate
onerrore reconecte com espera exponencial (ex: 1s, 2s, 4s).
Considerações de Segurança
HTTPS e WSS Obrigatórios: Use TLS 1.3+ para todas as conexões.
Tokens Seguros: Armazene em variáveis de ambiente; nunca em código.
Escopos: Defina permissões mínimas (ex:
read:agents,write:sessions).WebSocket Segurança: Valide
channel_ide use tokens em query strings.Auditoria: Monitore
/json/eventspara acessos suspeitos.Integração Privada: Hospede apps em domínio próprio para evitar redirecionamentos.
Vulnerabilidades: Relate via mailto:api@dwservice.net; evite expor chaves em repositórios.
Para mais detalhes, consulte a documentação oficial: https://docs.dwservice.net/docs/api/getting-started/ ou o anúncio de lançamento: https://news.dwservice.net/introducing-the-dwservice-apis/. Este guia reflete a versão de outubro de 2025. Contate mailto:api@dwservice.net para suporte.