Documentação

API pública

Consultar as contas 2FA de uma equipa e obter os seus códigos TOTP a partir das suas ferramentas, com um token próprio.

A API permite a um cliente autorizado consultar as contas 2FA de uma equipa e obter os respetivos códigos TOTP.

export API_URL="https://app.shareauth.net"
export API_TOKEN="1|o-seu-token-sanctum"

Use exclusivamente HTTPS em produção. Os pedidos e as respostas estão em formato JSON.

Autenticação

Crie um token Sanctum:

curl -X POST "$API_URL/api/tokens/create" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "email":"[email protected]",
    "password":"palavra-passe",
    "device_name":"o-meu-conector",
    "code":"123456"
  }'

O campo code só é obrigatório se a conta proteger o seu início de sessão com 2FA. recovery_code pode substituí-lo.

Resposta:

{
  "token": "1|abcdefghijklmnopqrstuvwxyz",
  "user": {
    "id": 12,
    "name": "Alice",
    "email": "[email protected]"
  }
}

Guarde este token como um segredo e transmita-o depois no cabeçalho:

Authorization: Bearer 1|abcdefghijklmnopqrstuvwxyz
Accept: application/json

Equipa ativa

Os códigos devolvidos pertencem sempre à equipa ativa do utilizador.

Listar as equipas acessíveis:

curl "$API_URL/api/v1/teams" \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Accept: application/json"

Mudar de equipa ativa:

curl -X POST "$API_URL/api/v1/teams/42/switch" \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Accept: application/json"

Listar as contas 2FA

curl "$API_URL/api/v1/secrets" \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Accept: application/json"

Resposta abreviada:

{
  "data": [
    {
      "id": 7,
      "name": "GitHub production",
      "issuer": "GitHub",
      "digits": 6,
      "period": 30
    }
  ],
  "meta": {
    "total": 1,
    "limit": 10,
    "remaining": 9
  }
}

A semente TOTP nunca é incluída nas respostas.

Obter um código

Use o identificador devolvido pela lista:

curl -X POST "$API_URL/api/v1/secrets/7/generate" \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Accept: application/json"

Resposta:

{
  "data": {
    "secret_name": "GitHub production",
    "code": "123456",
    "next_code": "654321",
    "time_remaining": 18,
    "period": 30,
    "expires_at": "2026-08-13T12:00:30.000000Z"
  }
}

Cada geração fica registada no registo de acessos da equipa. Não registe o código do lado do cliente.

Erros

Estado Significado
401 token ausente ou inválido
403 acesso recusado ou segredo fora da equipa ativa
404 recurso não encontrado
422 dados inválidos, equipa ausente ou código impossível de gerar
429 limite de 60 pedidos por minuto ultrapassado

Um erro de validação segue geralmente este formato:

{
  "message": "The given data was invalid.",
  "errors": {
    "email": ["The email field is required."]
  }
}

Conector MCP

O conector pronto a usar para o ChatGPT, o Codex, o Claude e outros clientes MCP está documentado em mcp-server/README.md, no repositório do projeto.