HonkIO Auth

Organisations

La politique de connexion, les organisations, les adhésions, les rôles et les invitations.

Obtenir la politique de connexion

GET/v1/auth-apps/:id/sign-in-policy

Permission: auth_apps: r

Qui peut s’inscrire, et si l’application exige la vérification en deux étapes.

Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/sign-in-policy \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "sign_up_mode": "open",
  "sign_up_domains": [],
  "two_step_required": false
}

Modifier la politique de connexion

PATCH/v1/auth-apps/:id/sign-in-policy

Permission: auth_apps: m

Modifie les champs envoyés. Exiger deux étapes demande Pro ou Affaires.

Corps

NomTypeDescription
sign_up_mode"open" | "invite_only" | "domains"Qui peut s’inscrire. open par défaut.
sign_up_domainsstring[]Les domaines de courriel permis à l’inscription quand le mode est domains.
two_step_requiredbooleanExiger la vérification en deux étapes de chaque utilisateur. Pro et Affaires.
Requête
curl -X PATCH https://api.honkio.ca/v1/auth-apps/APP_ID/sign-in-policy \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sign_up_mode": "domains",
    "sign_up_domains": [
      "acme.ca"
    ]
  }'
Réponse · 200
{
  "sign_up_mode": "domains",
  "sign_up_domains": [
    "acme.ca"
  ],
  "two_step_required": false
}

Lister les organisations

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

Permission: auth_organizations: r

Les organisations de l’application.

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/organizations \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "data": [
    {
      "id": "org_clxxxorgxxxxxxxxxxxxxxx",
      "name": "Northwind",
      "slug": "northwind",
      "two_step_required": false,
      "created_at": "2026-11-02T15:04:05.000Z",
      "member_count": 12
    }
  ],
  "next_cursor": null
}

Créer une organisation

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

Permission: auth_organizations: w

Forfait Affaires. Envoie organization.created.

Corps

NomTypeDescription
nameobligatoirestringLe nom de l’organisation, affiché au moment du choix.
slugstringUnique dans l’application; les jetons le portent comme org_slug.
two_step_requiredbooleanExiger la vérification en deux étapes pour se connecter à cette organisation.
Requête
curl -X POST https://api.honkio.ca/v1/auth-apps/APP_ID/organizations \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Northwind",
    "slug": "northwind"
  }'
Réponse · 201
{
  "id": "org_clxxxorgxxxxxxxxxxxxxxx",
  "name": "Northwind",
  "slug": "northwind",
  "two_step_required": false,
  "created_at": "2026-11-02T15:04:05.000Z"
}

Obtenir une organisation

GET/v1/auth-apps/:id/organizations/:orgId

Permission: auth_organizations: r

Une organisation.

Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/organizations/ORG_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "id": "org_clxxxorgxxxxxxxxxxxxxxx",
  "name": "Northwind",
  "slug": "northwind",
  "two_step_required": false,
  "created_at": "2026-11-02T15:04:05.000Z"
}

Modifier une organisation

PATCH/v1/auth-apps/:id/organizations/:orgId

Permission: auth_organizations: m

Modifie les champs envoyés. Envoie organization.updated.

Corps

NomTypeDescription
namestringLe nom de l’organisation, affiché au moment du choix.
slugstringUnique dans l’application; les jetons le portent comme org_slug.
two_step_requiredbooleanExiger la vérification en deux étapes pour se connecter à cette organisation.
Requête
curl -X PATCH https://api.honkio.ca/v1/auth-apps/APP_ID/organizations/ORG_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "two_step_required": true
  }'
Réponse · 200
{
  "id": "org_clxxxorgxxxxxxxxxxxxxxx",
  "name": "Northwind",
  "slug": "northwind",
  "two_step_required": true,
  "created_at": "2026-11-02T15:04:05.000Z"
}

Supprimer une organisation

DELETE/v1/auth-apps/:id/organizations/:orgId

Permission: auth_organizations: d

Supprime l’organisation. Le prochain renouvellement des membres dans celle-ci échoue. Envoie organization.deleted.

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

204 · Aucun contenu.

Lister les membres

GET/v1/auth-apps/:id/organizations/:orgId/memberships

Permission: auth_organizations: r

Les membres de l’organisation et leurs rôles. Le nom, le courriel et le téléphone de chaque membre (user) ne sont inclus que si votre clé peut aussi lire les utilisateurs (lecture de auth_users).

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/organizations/ORG_ID/memberships \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "data": [
    {
      "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",
      "user": {
        "name": "Olivia Tremblay",
        "email": "olivia@northwind.ca",
        "phone": null
      }
    }
  ],
  "next_cursor": null
}

Ajouter un membre

POST/v1/auth-apps/:id/organizations/:orgId/memberships

Permission: auth_organizations: w

Ajoute un utilisateur existant avec un rôle. Envoie membership.created.

Corps

NomTypeDescription
user_idobligatoirestringL’identifiant de l’utilisateur (usr_…).
rolestringadmin, member ou l’un de vos rôles.
Requête
curl -X POST https://api.honkio.ca/v1/auth-apps/APP_ID/organizations/ORG_ID/memberships \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": "usr_clxxxuserxxxxxxxxxxxxxx",
    "role": "admin"
  }'
Réponse · 201
{
  "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"
}

Obtenir une adhésion

GET/v1/auth-apps/:id/organizations/:orgId/memberships/:userId

Permission: auth_organizations: r

Le rôle d’un utilisateur dans l’organisation.

Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/organizations/ORG_ID/memberships/USER_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "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"
}

Changer le rôle d’un membre

PATCH/v1/auth-apps/:id/organizations/:orgId/memberships/:userId

Permission: auth_organizations: m

Les jetons portent le nouveau rôle dès le prochain renouvellement. Envoie membership.updated.

Corps

NomTypeDescription
roleobligatoirestringadmin, member ou l’un de vos rôles.
Requête
curl -X PATCH https://api.honkio.ca/v1/auth-apps/APP_ID/organizations/ORG_ID/memberships/USER_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "role": "member"
  }'
Réponse · 200
{
  "organization_id": "org_clxxxorgxxxxxxxxxxxxxxx",
  "user_id": "usr_clxxxuserxxxxxxxxxxxxxx",
  "role": "member",
  "last_used_at": null,
  "created_at": "2026-11-02T15:04:05.000Z",
  "updated_at": "2026-11-02T15:04:05.000Z"
}

Retirer un membre

DELETE/v1/auth-apps/:id/organizations/:orgId/memberships/:userId

Permission: auth_organizations: d

Son prochain renouvellement dans l’organisation échoue avec invalid_grant, d’ici 10 minutes. Envoie membership.deleted immédiatement.

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

204 · Aucun contenu.

Lister les rôles

GET/v1/auth-apps/:id/organizations/:orgId/roles

Permission: auth_organizations: r

admin, member et vos propres rôles.

Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/organizations/ORG_ID/roles \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "data": [
    {
      "name": "admin",
      "two_step_required": false
    },
    {
      "name": "member",
      "two_step_required": false
    },
    {
      "name": "billing",
      "two_step_required": true
    }
  ]
}

Créer ou modifier un rôle

PUT/v1/auth-apps/:id/organizations/:orgId/roles/:name

Permission: auth_organizations: m

Ajoute le rôle à l’organisation, ou change son exigence de deux étapes s’il existe. Le nom est dans le chemin.

Corps

NomTypeDescription
two_step_requiredbooleanExiger la vérification en deux étapes des membres ayant ce rôle.
Requête
curl -X PUT https://api.honkio.ca/v1/auth-apps/APP_ID/organizations/ORG_ID/roles/ROLE_NAME \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "two_step_required": true
  }'
Réponse · 200
{
  "name": "billing",
  "two_step_required": true
}

Supprimer un rôle

DELETE/v1/auth-apps/:id/organizations/:orgId/roles/:name

Permission: auth_organizations: d

Retire un rôle que vous avez créé.

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

204 · Aucun contenu.

Lister les invitations

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

Permission: auth_organizations: r

Les invitations en attente, acceptées et révoquées.

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/invitations \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "data": [
    {
      "id": "inv_clxxxinvitexxxxxxxxxxxxx",
      "email": "grace@example.com",
      "phone": null,
      "organization_id": "org_clxxxorgxxxxxxxxxxxxxxx",
      "role": "member",
      "status": "pending",
      "redirect_url": null,
      "expires_at": "2026-11-09T15:04:05.000Z",
      "accepted_at": null,
      "accepted_user_id": null,
      "revoked_at": null,
      "created_at": "2026-11-02T15:04:05.000Z"
    }
  ],
  "next_cursor": null
}

Créer une invitation

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

Permission: auth_organizations: w

Envoie une invitation par courriel ou par texto. Elle ne sert qu’une fois, pendant 7 jours, et seulement pour l’identifiant invité.

Corps

NomTypeDescription
emailstringLe courriel à inviter. Envoyez ce champ ou phone.
phonestringLe numéro de mobile canadien à inviter, en E.164. Envoyez ce champ ou email.
organization_idstringL’organisation à rejoindre à l’acceptation.
rolestringLe rôle dans cette organisation.
redirect_urlstringOù envoyer la personne après qu’elle accepte. L’une des URI de redirection de l’application.
locale"en" | "fr"La langue du courriel d’invitation.
send_emailbooleanEnvoyer l’invitation par courriel. Mettez false pour partager vous-même le lien renvoyé.
Requête
curl -X POST https://api.honkio.ca/v1/auth-apps/APP_ID/invitations \
  -H "Authorization: Bearer mk_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "grace@example.com",
    "organization_id": "org_clxxxorgxxxxxxxxxxxxxxx",
    "role": "member"
  }'
Réponse · 201
{
  "id": "inv_clxxxinvitexxxxxxxxxxxxx",
  "email": "grace@example.com",
  "phone": null,
  "organization_id": "org_clxxxorgxxxxxxxxxxxxxxx",
  "role": "member",
  "status": "pending",
  "redirect_url": null,
  "expires_at": "2026-11-09T15:04:05.000Z",
  "accepted_at": null,
  "accepted_user_id": null,
  "revoked_at": null,
  "created_at": "2026-11-02T15:04:05.000Z",
  "url": "https://login-dev.acme.ca/invitations/xxxxxxxxxxxxxxxxxxxxxxxx"
}

Obtenir une invitation

GET/v1/auth-apps/:id/invitations/:invitationId

Permission: auth_organizations: r

Son statut : pending, accepted, revoked ou expired.

Requête
curl https://api.honkio.ca/v1/auth-apps/APP_ID/invitations/INVITATION_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "id": "inv_clxxxinvitexxxxxxxxxxxxx",
  "email": "grace@example.com",
  "phone": null,
  "organization_id": "org_clxxxorgxxxxxxxxxxxxxxx",
  "role": "member",
  "status": "pending",
  "redirect_url": null,
  "expires_at": "2026-11-09T15:04:05.000Z",
  "accepted_at": null,
  "accepted_user_id": null,
  "revoked_at": null,
  "created_at": "2026-11-02T15:04:05.000Z"
}

Révoquer une invitation

DELETE/v1/auth-apps/:id/invitations/:invitationId

Permission: auth_organizations: d

Le lien cesse de fonctionner. Renvoie l’invitation révoquée.

Requête
curl -X DELETE https://api.honkio.ca/v1/auth-apps/APP_ID/invitations/INVITATION_ID \
  -H "Authorization: Bearer mk_test_YOUR_KEY"
Réponse · 200
{
  "id": "inv_clxxxinvitexxxxxxxxxxxxx",
  "email": "grace@example.com",
  "phone": null,
  "organization_id": "org_clxxxorgxxxxxxxxxxxxxxx",
  "role": "member",
  "status": "revoked",
  "redirect_url": null,
  "expires_at": "2026-11-09T15:04:05.000Z",
  "accepted_at": null,
  "accepted_user_id": null,
  "revoked_at": "2026-11-03T10:00:00.000Z",
  "created_at": "2026-11-02T15:04:05.000Z"
}