Skip to content

Integração A2A — Para Parceiros

O que é o protocolo A2A?

O Agent-to-Agent (A2A) é um protocolo que permite que seu sistema de IA se comunique com o agente iFriend através de JSON-RPC 2.0 sobre HTTP.

Quando usar?

  • Seu agente de IA precisa de informações de turismo que a iFriend possui
  • Você quer que seus usuários façam reservas de experiências
  • Você quer oferecer serviços da iFriend como parte do seu ecossistema

Quick Start

1. Obtenha as credenciais

Entre em contato com a equipe iFriend para receber: - A2A_BASE_URL — URL do endpoint - Credenciais JWT com role ROLE_A2A_USER

2. Discover o Agent Card

curl https://agents.theifriend.com/trip/a2a/.well-known/agent-card.json

Você receberá algo como:

{
  "name": "ifriend_agent",
  "version": "3.3.6",
  "protocolVersion": "0.2.6",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false
  },
  "skills": [
    {"id": "discovery", "name": "Busca de experiências"},
    {"id": "quote", "name": "Cotação de preços"},
    {"id": "booking", "name": "Reservas"},
    ...
  ]
}

3. Envie uma mensagem

curl -X POST https://agents.theifriend.com/trip/a2a/ \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer SEU_JWT_TOKEN" \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "message/send",
    "params": {
      "message": {
        "role": "user",
        "parts": [{"type": "text", "text": "Quero experiências em São Paulo"}]
      }
    }
  }'

4. Receba a resposta

{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "taskId": "task-abc123",
    "messages": [
      {
        "role": "agent",
        "parts": [{"type": "text", "text": "Encontrei várias experiências..."}]
      }
    ]
  }
}

Autenticação

Todas as requisições devem incluir um JWT válido no header:

Authorization: Bearer <jwt_token>

O token deve ter a claim roles contendo ROLE_A2A_USER.

Métodos Disponíveis

Método Descrição
message/send Envia mensagem e recebe resposta
message/stream Streaming de resposta (se habilitado)
tasks/get Consulta task existente
tasks/cancel Cancela task em andamento

Exemplos de Código

Consulte Exemplos para código em Python e outras linguagens.

Limites

  • Timeout: 60 segundos por requisição
  • Tasks expiram após 24 horas (TTL configurável)
  • Rate limit: Entre em contato para limites específicos

Suporte

Em caso de dúvidas: suporte@ifriend.com