HonkIO Auth

Applications

Créez des applications de connexion, modifiez leurs réglages et leur image de marque, vérifiez leurs domaines, remplacez leurs secrets et supprimez-les.

Créer une application

POST/v1/auth-apps

Permission: auth_apps: w

Crée une application de connexion sur un nom d’hôte qui vous appartient, dans le mode de votre clé. La réponse indique les enregistrements DNS à publier et, pour une application confidentielle, le secret client : il n’est affiché qu’ici.

Corps

NomTypeDescription
hostnameobligatoirestringUn sous-domaine que vous contrôlez, comme login.acme.ca. Il devient l’émetteur. Pour déménager plus tard, faites un PATCH de l’application avec un nouveau hostname.
nameobligatoirestringLe nom d’application affiché sur la page de connexion, dans les courriels et dans les textos.
redirect_urisobligatoirestring[]Où la connexion peut revenir. Correspondance exacte, HTTPS, au plus 10; http://localhost sur les applications de test seulement. Un PATCH remplace la liste.
post_logout_redirect_urisstring[]Où la déconnexion peut revenir. Mêmes règles que redirect_uris.
confidentialbooleantrue (par défaut) émet un secret client, affiché une fois. false crée un client public sans secret.
plan"free" | "pro" | "business"Le forfait de départ : free (par défaut), pro ou business. Une application réelle sur un forfait payant paie ses premiers frais mensuels à même votre solde, tout de suite; une seule application réelle par compte peut être au forfait gratuit.
Requête
curl -X POST https://api.honkio.ca/v1/auth-apps \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "hostname": "login-dev.acme.ca",
    "name": "Acme",
    "redirect_uris": [
      "http://localhost:3000/auth/callback"
    ],
    "post_logout_redirect_uris": [
      "http://localhost:3000/"
    ]
  }'
Réponse · 201
{
  "id": "clxxxappxxxxxxxxxxxxxxxxx",
  "hostname": "login-dev.acme.ca",
  "issuer": "https://login-dev.acme.ca",
  "domain_status": "PENDING_DNS",
  "dns_records": [
    {
      "type": "TXT",
      "name": "_honkio-auth.login-dev.acme.ca",
      "value": "honkio-auth=xxxxxxxxxxxxxxxxxxxxxxxx"
    },
    {
      "type": "CNAME",
      "name": "login-dev.acme.ca",
      "value": "edge.signin.honkio.ca"
    }
  ],
  "client_id": "hka_xxxxxxxxxxxx",
  "redirect_uris": [
    "http://localhost:3000/auth/callback"
  ],
  "post_logout_redirect_uris": [
    "http://localhost:3000/"
  ],
  "mode": "test",
  "brand_color": "#2b6cb0",
  "name": "Acme",
  "plan": "free",
  "confidential": true,
  "logo_url": null,
  "name_review": "clear",
  "email_enabled": true,
  "passkeys_enabled": true,
  "texts_enabled": false,
  "passkey_scope": "hostname",
  "sms_from_number_id": null,
  "send_from_email_domain_id": null,
  "pending_hostname": null,
  "pending_txt_missing_since": null,
  "previous_hostname": null,
  "hostname_changed_at": null,
  "created_at": "2026-11-02T15:04:05.000Z",
  "client_secret": "hka_cs_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

Lister les applications

GET/v1/auth-apps

Permission: auth_apps: r

Vos applications dans le mode de la clé, 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 \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "data": [
    {
      "id": "clxxxappxxxxxxxxxxxxxxxxx",
      "hostname": "login-dev.acme.ca",
      "issuer": "https://login-dev.acme.ca",
      "domain_status": "PENDING_DNS",
      "dns_records": [
        {
          "type": "TXT",
          "name": "_honkio-auth.login-dev.acme.ca",
          "value": "honkio-auth=xxxxxxxxxxxxxxxxxxxxxxxx"
        },
        {
          "type": "CNAME",
          "name": "login-dev.acme.ca",
          "value": "edge.signin.honkio.ca"
        }
      ],
      "client_id": "hka_xxxxxxxxxxxx",
      "redirect_uris": [
        "http://localhost:3000/auth/callback"
      ],
      "post_logout_redirect_uris": [
        "http://localhost:3000/"
      ],
      "mode": "test",
      "brand_color": "#2b6cb0",
      "name": "Acme",
      "plan": "free",
      "confidential": true,
      "logo_url": null,
      "name_review": "clear",
      "email_enabled": true,
      "passkeys_enabled": true,
      "texts_enabled": false,
      "passkey_scope": "hostname",
      "sms_from_number_id": null,
      "send_from_email_domain_id": null,
      "pending_hostname": null,
      "pending_txt_missing_since": null,
      "previous_hostname": null,
      "hostname_changed_at": null,
      "created_at": "2026-11-02T15:04:05.000Z"
    }
  ],
  "next_cursor": null
}

Obtenir une application

GET/v1/auth-apps/:id

Permission: auth_apps: r

Une application, avec le statut de son domaine et ses enregistrements DNS.

Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "id": "clxxxappxxxxxxxxxxxxxxxxx",
  "hostname": "login-dev.acme.ca",
  "issuer": "https://login-dev.acme.ca",
  "domain_status": "PENDING_DNS",
  "dns_records": [
    {
      "type": "TXT",
      "name": "_honkio-auth.login-dev.acme.ca",
      "value": "honkio-auth=xxxxxxxxxxxxxxxxxxxxxxxx"
    },
    {
      "type": "CNAME",
      "name": "login-dev.acme.ca",
      "value": "edge.signin.honkio.ca"
    }
  ],
  "client_id": "hka_xxxxxxxxxxxx",
  "redirect_uris": [
    "http://localhost:3000/auth/callback"
  ],
  "post_logout_redirect_uris": [
    "http://localhost:3000/"
  ],
  "mode": "test",
  "brand_color": "#2b6cb0",
  "name": "Acme",
  "plan": "free",
  "confidential": true,
  "logo_url": null,
  "name_review": "clear",
  "email_enabled": true,
  "passkeys_enabled": true,
  "texts_enabled": false,
  "passkey_scope": "hostname",
  "sms_from_number_id": null,
  "send_from_email_domain_id": null,
  "pending_hostname": null,
  "pending_txt_missing_since": null,
  "previous_hostname": null,
  "hostname_changed_at": null,
  "created_at": "2026-11-02T15:04:05.000Z"
}

Modifier une application

PATCH/v1/auth-apps/:id

Permission: auth_apps: m

Modifie les champs envoyés. Au moins une méthode de connexion doit rester activée, et les textos exigent Pro ou Affaires et un numéro vérifié. Un nouveau hostname est envoyé seul et attend dans pending_hostname que ses enregistrements soient vérifiés; l’application bascule ensuite vers lui.

Corps

NomTypeDescription
hostnamestringDéplace l’application vers un nouveau nom d’hôte qui vous appartient. Envoyez-le seul. L’application garde ses utilisateurs, son ID client et son secret, et continue d’être servie sur son nom d’hôte actuel pendant que le nouveau attend dans pending_hostname : publiez ses enregistrements DNS, puis vérifiez. Quand son certificat est actif, l’application bascule : l’émetteur change, chaque session prend fin, et les clés d’accès créées pour un domaine que le nouveau nom d’hôte ne partage pas cessent de fonctionner. hostname_change dans la réponse indique combien. Exige une confirmation d’identité depuis une session du tableau de bord.
namestringLe nom d’application affiché sur la page de connexion, dans les courriels et dans les textos.
brand_colorstringUne couleur hexadécimale comme #2b6cb0.
redirect_urisstring[]Où la connexion peut revenir. Correspondance exacte, HTTPS, au plus 10; http://localhost sur les applications de test seulement. Un PATCH remplace la liste.
post_logout_redirect_urisstring[]Où la déconnexion peut revenir. Mêmes règles que redirect_uris.
email_enabledbooleanConnexion par code ou lien par courriel.
passkeys_enabledbooleanConnexion par clé d’accès.
texts_enabledbooleanConnexion par code texto. Pro et Affaires, avec sms_from_number_id défini. Une application de test n’envoie aucun texto et n’a pas besoin de numéro.
passkey_scope"domain" | "hostname"domain (par défaut) lie les clés d’accès à votre domaine entier; hostname, au seul nom d’hôte de connexion. Le changer retire les clés existantes jusqu’à ce que vous reveniez en arrière; la réponse en donne le nombre dans passkeys_retired.
sms_from_number_idstring | nullL’identifiant de votre numéro HonkIO vérifié qui envoie les textos de connexion.
send_from_email_domain_idstring | nullL’identifiant d’un domaine d’envoi vérifié d’où envoyer les courriels de connexion; null utilise signin.honkio.ca.
Requête
curl -X PATCH https://api.honkio.ca/v1/auth-apps/APP_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "brand_color": "#0f766e",
    "passkeys_enabled": true
  }'
Réponse · 200
{
  "id": "clxxxappxxxxxxxxxxxxxxxxx",
  "hostname": "login-dev.acme.ca",
  "issuer": "https://login-dev.acme.ca",
  "domain_status": "PENDING_DNS",
  "dns_records": [
    {
      "type": "TXT",
      "name": "_honkio-auth.login-dev.acme.ca",
      "value": "honkio-auth=xxxxxxxxxxxxxxxxxxxxxxxx"
    },
    {
      "type": "CNAME",
      "name": "login-dev.acme.ca",
      "value": "edge.signin.honkio.ca"
    }
  ],
  "client_id": "hka_xxxxxxxxxxxx",
  "redirect_uris": [
    "http://localhost:3000/auth/callback"
  ],
  "post_logout_redirect_uris": [
    "http://localhost:3000/"
  ],
  "mode": "test",
  "brand_color": "#0f766e",
  "name": "Acme",
  "plan": "free",
  "confidential": true,
  "logo_url": null,
  "name_review": "clear",
  "email_enabled": true,
  "passkeys_enabled": true,
  "texts_enabled": false,
  "passkey_scope": "hostname",
  "sms_from_number_id": null,
  "send_from_email_domain_id": null,
  "pending_hostname": null,
  "pending_txt_missing_since": null,
  "previous_hostname": null,
  "hostname_changed_at": null,
  "created_at": "2026-11-02T15:04:05.000Z"
}

Remplacer le secret client

POST/v1/auth-apps/:id/rotate-secret

Permission: auth_apps: w

Émet un nouveau secret client; l’ancien cesse de fonctionner immédiatement. Un client public renvoie AUTH_APP_PUBLIC_CLIENT.

Requête
curl -X POST https://api.honkio.ca/v1/auth-apps/APP_ID/rotate-secret \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "client_secret": "hka_cs_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

Vérifier le domaine

POST/v1/auth-apps/:id/domain/verify

Permission: auth_apps: w

Vérifie les enregistrements TXT et CNAME et fait avancer l’application : PENDING_DNS, PENDING_CERT, ACTIVE. Un changement de nom d’hôte en attente est vérifié dans le même appel (pending_hostname); l’application bascule vers lui dès que son certificat est actif. Appelez-la aussi souvent que vous voulez.

Requête
curl -X POST https://api.honkio.ca/v1/auth-apps/APP_ID/domain/verify \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "domain_status": "PENDING_CERT",
  "found": {
    "txt": true,
    "cname": true
  }
}

Annuler un changement de nom d’hôte

DELETE/v1/auth-apps/:id/hostname-change

Permission: auth_apps: d

Abandonne le nom d’hôte vers lequel l’application se déplaçait, et son certificat. L’application garde son nom d’hôte, son émetteur, ses sessions et ses clés d’accès actuels. 404 quand aucun changement n’attend, y compris un changement déjà basculé.

Requête
curl -X DELETE https://api.honkio.ca/v1/auth-apps/APP_ID/hostname-change \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "id": "clxxxappxxxxxxxxxxxxxxxxx",
  "hostname": "login-dev.acme.ca",
  "issuer": "https://login-dev.acme.ca",
  "domain_status": "PENDING_DNS",
  "dns_records": [
    {
      "type": "TXT",
      "name": "_honkio-auth.login-dev.acme.ca",
      "value": "honkio-auth=xxxxxxxxxxxxxxxxxxxxxxxx"
    },
    {
      "type": "CNAME",
      "name": "login-dev.acme.ca",
      "value": "edge.signin.honkio.ca"
    }
  ],
  "client_id": "hka_xxxxxxxxxxxx",
  "redirect_uris": [
    "http://localhost:3000/auth/callback"
  ],
  "post_logout_redirect_uris": [
    "http://localhost:3000/"
  ],
  "mode": "test",
  "brand_color": "#2b6cb0",
  "name": "Acme",
  "plan": "free",
  "confidential": true,
  "logo_url": null,
  "name_review": "clear",
  "email_enabled": true,
  "passkeys_enabled": true,
  "texts_enabled": false,
  "passkey_scope": "hostname",
  "sms_from_number_id": null,
  "send_from_email_domain_id": null,
  "pending_hostname": null,
  "pending_txt_missing_since": null,
  "previous_hostname": null,
  "hostname_changed_at": null,
  "created_at": "2026-11-02T15:04:05.000Z"
}

Supprimer une application

DELETE/v1/auth-apps/:id

Permission: auth_apps: d

Supprime l’application et libère son nom d’hôte immédiatement; sa page de connexion cesse d’être servie.

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

204 · Aucun contenu.