Um cliente Java enxuto para integração com a API StackSpot AI. Este projeto oferece uma camada de abstração para autenticação baseada em token, conversas com o agente de IA (chat) e gerenciamento de execuções.
- Linguagem: Java 17+
- Build: Maven
- Framework web: Spring Boot (controllers REST)
O objetivo é fornecer um exemplo reutilizável de como autenticar e consumir os endpoints da StackSpot AI em aplicações Java, com foco em:
- Gerenciamento seguro de tokens (renovação automática)
- Interações com agente de chat (request/response)
- Criação e acompanhamento de execuções
mvn spring-boot:run
- JDK 17 ou superior
- Maven 3.6+
- Credenciais da StackSpot (Realm, Client ID, Client Secret, Agent ID e Quick command name)
- Token-based authentication with automatic renewal
- AI chat interactions with streaming response support
- Execution management for AI operations
- Conversation tracking and management
- Environment configuration management
- Java 17 or higher
- Maven
- StackSpot API credentials (Realm, Client ID, and Client Secret)
- Create a
.envfile in the project root based on the provided.env.example:
Crie um arquivo .env na raiz do projeto (ou configure variáveis de ambiente no seu ambiente de execução) com os seguintes valores:
STACKSPOT_REALM=seu_realm
STACKSPOT_CLIENT_ID=seu_client_id
STACKSPOT_CLIENT_SECRET=seu_client_secret
QUICK_COMMAND_NAME=seu_quick_command_name
AGENT_ID=seu_agent_id
Observação: o projeto já faz referência ao uso de uma biblioteca para carregar variáveis de ambiente. Garanta que as credenciais não sejam comitadas no repositório.
Principais pacotes:
org.stackspotapi.controller— endpoints REST expostos pela aplicação (ex.:ChatController).org.stackspotapi.service— serviços que encapsulam lógica de autenticação, chat e execução.org.stackspotapi.dto— objetos de transferência de dados (requests/responses).
Estrutura (resumida):
src/main/java/org/stackspotapi/
├── StackSpotApiApplication.java # Ponto de entrada da aplicação
├── controller/
│ └── ChatController.java # Endpoint: /api/v1/chat
├── service/
│ ├── AiChatService.java
│ ├── EnsureTokenService.java
│ └── ExecutionService.java
└── dto/ # DTOs usados nas requests e responses
- Compilar:
mvn clean package- Executar (modo local):
java -jar target/*.jarA aplicação inicia um servidor web (Spring Boot). Por padrão, o arquivo ChatController expõe um endpoint HTTP:
- POST /api/v1/chat
Envia um prompt para o serviço de chat e retorna a resposta gerada pela IA.
Request (JSON):
{
"prompt": "Pergunte algo ao agente",
"conversationId": "opcional-id-da-conversa"
}Response:
- 200 OK — corpo com a resposta gerada pelo agente (texto)
- 400 Bad Request — prompt ausente ou inválido
- 500 Internal Server Error — falha de comunicação ou erro interno
Exemplo CURL:
curl -X POST http://localhost:8080/api/v1/chat \
-H "Content-Type: application/json" \
-d '{"prompt":"Qual é a capital da França?"}'ChatControllervalida se o prompt está presente e delega a chamada aoAiChatService.AiChatServiceé responsável por obter/renovar tokens (viaEnsureTokenService) e enviar requisições para a API StackSpot.ExecutionServicegerencia execuções e conversas (criação/consulta de execuções e identificação de conversationId).
- Faça um fork do projeto
- Crie uma branch com uma descrição curta (
feature/,fix/) - Faça alterações e escreva testes quando aplicável
- Abra um Pull Request descrevendo a mudança
- Nunca comite credenciais. Use
.gitignorepara.env. - Habilite logs para depuração, mas evite imprimir segredos.
- Considere adicionar limites de taxa e tratamento de timeouts ao cliente HTTP.
- Adicionar exemplos de uso do
AiChatServiceem um pequeno cliente CLI ou testes de integração. - Incluir GitHub Actions para build/test/scan de segurança.
- Documentar contrato JSON com OpenAPI/Swagger.
Abra uma issue no repositório para dúvidas, bugs ou sugestões.