HonkIO Auth

Utilisateurs

Les utilisateurs, leurs sessions et leur historique de connexion, le blocage et la suppression, et les exportations.

Lister les utilisateurs

GET/v1/auth-apps/:id/users

Permission: auth_users: r

Les utilisateurs de l’application.

Paramètres de requête

NomTypeDescription
emailstringSeulement l’utilisateur avec cette adresse courriel.
phonestringSeulement l’utilisateur avec ce numéro de téléphone.
querystringChercher dans les noms, adresses courriel et numéros de téléphone.
blocked"true" | "false"Seulement les utilisateurs bloqués, ou seulement les autres.
likely_bot"true" | "false"Seulement les utilisateurs signalés comme robots probables, ou seulement les autres.
created_afterdate-timeSeulement les utilisateurs créés après ce moment (ISO 8601).
created_beforedate-timeSeulement les utilisateurs créés avant ce moment (ISO 8601).
limitintegerCombien en renvoyer par page.
cursorstringLe next_cursor de la page précédente.
Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/users \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "data": [
    {
      "id": "usr_clxxxuserxxxxxxxxxxxxxx",
      "email": "ada@example.com",
      "email_verified": true,
      "phone": null,
      "phone_verified": false,
      "name": "Ada Lovelace",
      "blocked": false,
      "created_at": "2026-11-02T15:04:05.000Z",
      "last_sign_in_at": "2026-11-20T09:12:44.000Z",
      "metadata": {},
      "blocked_at": null,
      "blocked_reason": null,
      "likely_bot": false,
      "reverify_required": false
    }
  ],
  "next_cursor": null
}

Obtenir un utilisateur

GET/v1/auth-apps/:id/users/:userId

Permission: auth_users: r

Un utilisateur.

Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/users/USER_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "id": "usr_clxxxuserxxxxxxxxxxxxxx",
  "email": "ada@example.com",
  "email_verified": true,
  "phone": null,
  "phone_verified": false,
  "name": "Ada Lovelace",
  "blocked": false,
  "created_at": "2026-11-02T15:04:05.000Z",
  "last_sign_in_at": "2026-11-20T09:12:44.000Z",
  "metadata": {},
  "blocked_at": null,
  "blocked_reason": null,
  "likely_bot": false,
  "reverify_required": false
}

Modifier un utilisateur

PATCH/v1/auth-apps/:id/users/:userId

Permission: auth_users: m

Modifie les champs envoyés. Un nouveau courriel ou téléphone est signalé à l’ancien et inscrit dans votre journal d’audit. Envoie user.updated.

Corps

NomTypeDescription
namestring | nullLe nom de l’utilisateur, dans la portée profile.
emailstring | nullUne nouvelle adresse courriel. L’ancienne est avisée.
email_verifiedbooleanMarquer l’adresse courriel comme vérifiée ou non.
phonestring | nullUn nouveau numéro de mobile canadien, en E.164. L’ancien est avisé.
phone_verifiedbooleanMarquer le numéro de téléphone comme vérifié ou non.
metadataobjectVotre propre objet JSON sur l’utilisateur. Jamais montré à celui-ci.
locale"en" | "fr"La langue de l’avis envoyé à l’ancienne adresse ou à l’ancien numéro. Par défaut, Accept-Language.
Requête
curl -X PATCH https://api.honkio.ca/v1/auth-apps/APP_ID/users/USER_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Ada King"
  }'
Réponse · 200
{
  "id": "usr_clxxxuserxxxxxxxxxxxxxx",
  "email": "ada@example.com",
  "email_verified": true,
  "phone": null,
  "phone_verified": false,
  "name": "Ada King",
  "blocked": false,
  "created_at": "2026-11-02T15:04:05.000Z",
  "last_sign_in_at": "2026-11-20T09:12:44.000Z",
  "metadata": {},
  "blocked_at": null,
  "blocked_reason": null,
  "likely_bot": false,
  "reverify_required": false
}

Bloquer un utilisateur

POST/v1/auth-apps/:id/users/:userId/block

Permission: auth_users: w

Met fin à toutes ses sessions et l’empêche de se connecter. Envoie user.blocked.

Corps

NomTypeDescription
reasonstring | nullPourquoi, pour vos dossiers et l’événement user.blocked.
Requête
curl -X POST https://api.honkio.ca/v1/auth-apps/APP_ID/users/USER_ID/block \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Chargeback fraud"
  }'
Réponse · 200
{
  "id": "usr_clxxxuserxxxxxxxxxxxxxx",
  "email": "ada@example.com",
  "email_verified": true,
  "phone": null,
  "phone_verified": false,
  "name": "Ada Lovelace",
  "blocked": true,
  "created_at": "2026-11-02T15:04:05.000Z",
  "last_sign_in_at": "2026-11-20T09:12:44.000Z",
  "metadata": {},
  "blocked_at": "2026-11-21T10:00:00.000Z",
  "blocked_reason": "Chargeback fraud",
  "likely_bot": false,
  "reverify_required": false
}

Débloquer un utilisateur

POST/v1/auth-apps/:id/users/:userId/unblock

Permission: auth_users: w

Lui permet de se connecter de nouveau.

Requête
curl -X POST https://api.honkio.ca/v1/auth-apps/APP_ID/users/USER_ID/unblock \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "id": "usr_clxxxuserxxxxxxxxxxxxxx",
  "email": "ada@example.com",
  "email_verified": true,
  "phone": null,
  "phone_verified": false,
  "name": "Ada Lovelace",
  "blocked": false,
  "created_at": "2026-11-02T15:04:05.000Z",
  "last_sign_in_at": "2026-11-20T09:12:44.000Z",
  "metadata": {},
  "blocked_at": null,
  "blocked_reason": null,
  "likely_bot": false,
  "reverify_required": false
}

Supprimer un utilisateur

DELETE/v1/auth-apps/:id/users/:userId

Permission: auth_users: d

Retire l’utilisateur, ses sessions et ses clés d’accès. Envoie user.deleted.

Requête
curl -X DELETE https://api.honkio.ca/v1/auth-apps/APP_ID/users/USER_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY"

204 · Aucun contenu.

Supprimer les robots probables

POST/v1/auth-apps/:id/users/bulk-delete

Permission: auth_users: w

Supprime par lots les utilisateurs signalés comme robots probables et indique combien. Si more vaut true, appelez-la de nouveau.

Corps

NomTypeDescription
likely_botobligatoiretrueDoit valoir true : seuls les robots probables sont supprimés.
created_beforedate-timeSeulement les robots probables créés avant ce moment (ISO 8601).

Demande aussi un jeton de vérification renforcée pour auth_users:bulk_delete dans l’en-tête X-Step-Up-Token.

Requête
curl -X POST https://api.honkio.ca/v1/auth-apps/APP_ID/users/bulk-delete \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "X-Step-Up-Token: STEP_UP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "likely_bot": true
  }'
Réponse · 200
{
  "deleted": 214,
  "more": false
}

Lister les clés d’accès d’un utilisateur

GET/v1/auth-apps/:id/users/:userId/passkeys

Permission: auth_users: r

Les métadonnées publiques de ses clés d’accès, les plus récentes d’abord. usable vaut false pour une clé créée avant un changement de passkey_scope.

Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/users/USER_ID/passkeys \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "data": [
    {
      "id": "pk_xxxxxxxxxxxxxxxxxxxxxx",
      "user_id": "usr_clxxxuserxxxxxxxxxxxxxx",
      "name": "MacBook",
      "aaguid": null,
      "device_type": "multiDevice",
      "backed_up": true,
      "transports": [
        "internal",
        "hybrid"
      ],
      "rp_id": "acme.ca",
      "usable": true,
      "created_at": "2026-11-02T15:04:05.000Z",
      "last_used_at": "2026-11-02T15:04:05.000Z"
    }
  ]
}

Retirer une clé d’accès d’un utilisateur

DELETE/v1/auth-apps/:id/users/:userId/passkeys/:passkeyId

Permission: auth_users: d

Supprime une clé d’accès. L’utilisateur en est avisé à son adresse courriel, ses sessions prennent fin et user.updated est envoyé avec changes: ["passkeys"].

Requête
curl -X DELETE https://api.honkio.ca/v1/auth-apps/APP_ID/users/USER_ID/passkeys/PASSKEY_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY"

204 · Aucun contenu.

Lister les sessions d’un utilisateur

GET/v1/auth-apps/:id/users/:userId/sessions

Permission: auth_users: r

Ses sessions actives. Jamais de jeton.

Paramètres de requête

NomTypeDescription
active"true" | "false"Seulement les sessions actives, ou seulement celles terminées.
limitintegerCombien en renvoyer par page.
cursorstringLe next_cursor de la page précédente.
Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/users/USER_ID/sessions \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "data": [
    {
      "id": "ses_xxxxxxxxxxxxxxxxxxxxxx",
      "user_id": "usr_clxxxuserxxxxxxxxxxxxxx",
      "amr": [
        "otp"
      ],
      "organization_id": null,
      "created_at": "2026-11-02T15:04:05.000Z",
      "expires_at": "2026-12-02T15:04:05.000Z",
      "last_seen_at": "2026-11-20T09:12:44.000Z",
      "revoked_at": null,
      "revoke_reason": null,
      "active": true
    }
  ],
  "next_cursor": null
}

Lister les connexions d’un utilisateur

GET/v1/auth-apps/:id/users/:userId/sign-ins

Permission: auth_users: r

Les tentatives de connexion d’un utilisateur, les plus récentes d’abord.

Paramètres de requête

NomTypeDescription
limitintegerCombien en renvoyer par page.
cursorstringLe next_cursor de la page précédente.
Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/users/USER_ID/sign-ins \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "data": [
    {
      "id": "clxxxsigninxxxxxxxxxxxxxx",
      "user_id": "usr_clxxxuserxxxxxxxxxxxxxx",
      "method": "email",
      "outcome": "succeeded",
      "reason": null,
      "ip": "203.0.113.24",
      "network": "Example Telecom",
      "asn": 64500,
      "city": "Toronto",
      "region": "ON",
      "country": "CA",
      "device": "Firefox on macOS",
      "risk": "low",
      "flagged": false,
      "created_at": "2026-11-02T15:04:05.000Z"
    }
  ],
  "next_cursor": null
}

Révoquer une session

DELETE/v1/auth-apps/:id/sessions/:sessionId

Permission: auth_users: d

Met fin à une session; son prochain renouvellement échoue. Envoie session.revoked avec le motif api.

Requête
curl -X DELETE https://api.honkio.ca/v1/auth-apps/APP_ID/sessions/SESSION_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY"

204 · Aucun contenu.

Lister l’historique de connexion

GET/v1/auth-apps/:id/sign-ins

Permission: auth_users: r

Les tentatives de connexion des 90 derniers jours, les plus récentes d’abord.

Paramètres de requête

NomTypeDescription
user_idstringSeulement les connexions de cet utilisateur.
limitintegerCombien en renvoyer par page.
cursorstringLe next_cursor de la page précédente.
Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/sign-ins \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "data": [
    {
      "id": "clxxxsigninxxxxxxxxxxxxxx",
      "user_id": "usr_clxxxuserxxxxxxxxxxxxxx",
      "method": "email",
      "outcome": "succeeded",
      "reason": null,
      "ip": "203.0.113.24",
      "network": "Example Telecom",
      "asn": 64500,
      "city": "Toronto",
      "region": "ON",
      "country": "CA",
      "device": "Firefox on macOS",
      "risk": "low",
      "flagged": false,
      "created_at": "2026-11-02T15:04:05.000Z"
    }
  ],
  "next_cursor": null
}

Lancer une exportation

POST/v1/auth-apps/:id/exports

Permission: auth_users: w

Commence à préparer un fichier des utilisateurs, organisations, rôles et métadonnées publiques des clés d’accès de l’application. Le lien de téléchargement de cette réponse n’est montré qu’une fois; interrogez l’exportation jusqu’à ready.

Demande aussi un jeton de vérification renforcée pour auth_users:export dans l’en-tête X-Step-Up-Token.

Requête
curl -X POST https://api.honkio.ca/v1/auth-apps/APP_ID/exports \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "X-Step-Up-Token: STEP_UP_TOKEN"
Réponse · 202
{
  "id": "clxxxexportxxxxxxxxxxxxxx",
  "status": "pending",
  "counts": null,
  "byte_size": null,
  "created_at": "2026-11-02T15:04:05.000Z",
  "ready_at": null,
  "expires_at": null,
  "downloaded_at": null,
  "download_url": "https://api.honkio.ca/v1/auth-exports/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

Obtenir une exportation

GET/v1/auth-apps/:id/exports/:exportId

Permission: auth_users: r

Son statut et ses comptes. Le fichier se télécharge une seule fois, pendant 15 minutes, depuis le lien renvoyé à la création de l’exportation.

Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/exports/EXPORT_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "id": "clxxxexportxxxxxxxxxxxxxx",
  "status": "ready",
  "counts": {
    "users": 1240,
    "passkeys": 402,
    "organizations": 12,
    "roles": 30,
    "memberships": 310
  },
  "byte_size": 482113,
  "created_at": "2026-11-02T15:04:05.000Z",
  "ready_at": "2026-11-02T15:04:35.000Z",
  "expires_at": "2026-11-02T15:19:35.000Z",
  "downloaded_at": null
}

Obtenir la dernière exportation

GET/v1/auth-apps/:id/exports/latest

Permission: auth_users: r

L’exportation la plus récente de l’application, quel que soit son statut. Tant qu’elle est ready, la clé qui l’a lancée, si elle envoie un jeton de vérification renforcée pour auth_users:export dans l’en-tête X-Step-Up-Token (la même vérification que pour lancer une exportation), reçoit aussi un nouveau download_url à usage unique; le lien précédent cesse de fonctionner, et le nouveau expire avec l’exportation. Sans cette vérification, et pour les autres clés, download_url vaut null et le lien précédent continue de fonctionner.

Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/exports/latest \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "id": "clxxxexportxxxxxxxxxxxxxx",
  "status": "ready",
  "counts": {
    "users": 1240,
    "passkeys": 402,
    "organizations": 12,
    "roles": 30,
    "memberships": 310
  },
  "byte_size": 482113,
  "created_at": "2026-11-02T15:04:05.000Z",
  "ready_at": "2026-11-02T15:04:35.000Z",
  "expires_at": "2026-11-02T15:19:35.000Z",
  "downloaded_at": null,
  "download_url": "https://api.honkio.ca/v1/auth-exports/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

Télécharger une exportation

GET/v1/auth-exports/:token

Permission: Aucune : le lien à usage unique sert d’identifiant.

Le fichier, en JSON. Le lien ne fonctionne qu’une fois et expire 15 minutes après que l’exportation est prête. Il ne contient jamais de sessions, de jetons, de codes ni de clés.

Requête
curl https://api.honkio.ca/v1/auth-exports/DOWNLOAD_TOKEN
Réponse · 200
{
  "app_id": "clxxxappxxxxxxxxxxxxxxxxx",
  "exported_at": "2026-11-02T15:04:05.000Z",
  "users": [
    {
      "id": "usr_clxxxuserxxxxxxxxxxxxxx",
      "email": "ada@example.com",
      "email_verified": true,
      "phone": null,
      "phone_verified": false,
      "name": "Ada Lovelace",
      "blocked": false,
      "created_at": "2026-11-02T15:04:05.000Z",
      "last_sign_in_at": "2026-11-20T09:12:44.000Z",
      "metadata": {},
      "blocked_at": null,
      "blocked_reason": null,
      "likely_bot": false,
      "reverify_required": false
    }
  ],
  "organizations": [
    {
      "id": "org_clxxxorgxxxxxxxxxxxxxxx",
      "name": "Northwind",
      "slug": "northwind",
      "two_step_required": false,
      "created_at": "2026-11-02T15:04:05.000Z"
    }
  ],
  "memberships": [
    {
      "organization_id": "org_clxxxorgxxxxxxxxxxxxxxx",
      "user_id": "usr_clxxxuserxxxxxxxxxxxxxx",
      "role": "admin",
      "last_used_at": null,
      "created_at": "2026-11-02T15:04:05.000Z",
      "updated_at": "2026-11-02T15:04:05.000Z"
    }
  ],
  "passkeys": [
    {
      "user_id": "usr_clxxxuserxxxxxxxxxxxxxx",
      "name": "MacBook",
      "created_at": "2026-11-02T15:04:05.000Z",
      "last_used_at": "2026-11-02T15:04:05.000Z"
    }
  ]
}