Documentatie

Openbare API

De 2FA-accounts van een team opvragen en hun TOTP-codes ophalen vanuit je eigen tools, met een eigen token.

Met de API kan een bevoegde client de 2FA-accounts van een team opvragen en hun TOTP-codes ophalen.

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

Gebruik in productie uitsluitend HTTPS. Verzoeken en antwoorden zijn in JSON-formaat.

Authenticatie

Maak een Sanctum-token aan:

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

Het veld code is alleen vereist als het account zijn aanmelding met 2FA beschermt. recovery_code kan die vervangen.

Antwoord:

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

Bewaar dit token als een geheim en stuur het daarna mee in de header:

Authorization: Bearer 1|abcdefghijklmnopqrstuvwxyz
Accept: application/json

Actief team

De teruggegeven codes horen altijd bij het actieve team van de gebruiker.

De bereikbare teams opvragen:

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

Van actief team wisselen:

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

De 2FA-accounts opvragen

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

Ingekort antwoord:

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

De TOTP-seed zit nooit in de antwoorden.

Een code ophalen

Gebruik de identificatie die de lijst teruggeeft:

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

Antwoord:

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

Elke generatie wordt vastgelegd in het toegangslogboek van het team. Log de code niet aan de clientzijde.

Fouten

Status Betekenis
401 token ontbreekt of is ongeldig
403 toegang geweigerd of geheim buiten het actieve team
404 bron niet gevonden
422 ongeldige gegevens, ontbrekend team of code niet te genereren
429 limiet van 60 verzoeken per minuut overschreden

Een validatiefout heeft doorgaans deze vorm:

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

MCP-connector

De kant-en-klare connector voor ChatGPT, Codex, Claude en andere MCP-clients is beschreven in mcp-server/README.md, in de repository van het project.