Référence de l’API

Groupes de contacts

Regrouper des contacts et envoyer des diffusions de groupe.

get/v1/contact-groups

Lister les groupes de contacts

Permissioncontact_groups:r

Les groupes sont tenus séparément pour chaque mode de clé : une clé de test ne liste, ne crée, ne modifie et ne diffuse qu’aux groupes de test, une clé de production à ceux de production, et un groupe de l’autre mode répond CONTACT_GROUP_NOT_FOUND. Un groupe ne contient que des contacts de son propre mode.

Nécessite contact_groups:r.

Paramètres

ParamètreTypeDescription
limitrequêteinteger
  • Minimum : 1
  • Maximum : 100
  • Par défaut : 50
offsetrequêteinteger
  • Minimum : 0
  • Par défaut : 0
searchrequêtestring

Filtrer par nom de groupe (insensible à la casse, correspondance partielle)

Réponses

  • 200Une page de groupes, du plus récent au plus ancien, chacun avec ses membres.
    ChampTypeDescription
    totalobligatoireinteger

    Nombre total d’enregistrements correspondants.

    limitobligatoireinteger
    offsetobligatoireinteger
    data[]obligatoireobject[]
    idobligatoirestring
    nameobligatoirestring
    descriptionobligatoirestring
    • Peut être null
    member_countobligatoireinteger
    members[]obligatoireobject[]
    idobligatoirestring

    L’identifiant du contact.

    phone_numberobligatoirestring
    • Peut être null
    nameobligatoirestring
    • Peut être null
    created_atobligatoirestring
    • Format : date-time
    updated_atobligatoirestring
    • Format : date-time
    livemodeobligatoireboolean

    false pour un enregistrement fait ou lu avec une clé de test (un enregistrement en mode test), true pour un enregistrement de production.

  • 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
  • 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
  • 403La clé API ne dispose pas de la permission requise pour cette opération, ou le compte est suspendu ou fermé.Le corps d’erreur standard.
  • 422VALIDATION_ERROR : la requête n’a pas passé la validation ; details indique les champs en cause.Le corps d’erreur standard.
  • 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
  • 500Erreur de serveur inattendue.Le corps d’erreur standard.

Exemple

cURL
curl https://api.honkio.ca/v1/contact-groups \
  -H "Authorization: Bearer mk_live_YOUR_KEY"
post/v1/contact-groups

Créer un groupe de contacts

Permissioncontact_groups:w

Les groupes sont tenus séparément pour chaque mode de clé : une clé de test ne liste, ne crée, ne modifie et ne diffuse qu’aux groupes de test, une clé de production à ceux de production, et un groupe de l’autre mode répond CONTACT_GROUP_NOT_FOUND. Un groupe ne contient que des contacts de son propre mode.

Nécessite contact_groups:w.

Corps de la requête

ChampTypeDescription
nameobligatoirestring
  • Au plus 100 caractères
descriptionstring
  • Au plus 500 caractères

Réponses

  • 201Le groupe.
    ChampTypeDescription
    idobligatoirestring
    nameobligatoirestring
    descriptionobligatoirestring
    • Peut être null
    member_countobligatoireinteger
    members[]obligatoireobject[]
    idobligatoirestring

    L’identifiant du contact.

    phone_numberobligatoirestring
    • Peut être null
    nameobligatoirestring
    • Peut être null
    created_atobligatoirestring
    • Format : date-time
    updated_atobligatoirestring
    • Format : date-time
    livemodeobligatoireboolean

    false pour un enregistrement fait ou lu avec une clé de test (un enregistrement en mode test), true pour un enregistrement de production.

  • 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
  • 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
  • 403La clé API ne dispose pas de la permission requise pour cette opération, ou le compte est suspendu ou fermé.Le corps d’erreur standard.
  • 409CONTACT_GROUP_ALREADY_EXISTS : ce nom est déjà utilisé.Le corps d’erreur standard.
  • 422VALIDATION_ERROR : la requête n’a pas passé la validation ; details indique les champs en cause.Le corps d’erreur standard.
  • 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
  • 500Erreur de serveur inattendue.Le corps d’erreur standard.

Exemple

cURL
curl -X POST https://api.honkio.ca/v1/contact-groups \
  -H "Authorization: Bearer mk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "..."
  }'
get/v1/contact-groups/{id}

Obtenir un groupe de contacts avec ses membres

Permissioncontact_groups:r

Nécessite contact_groups:r.

Paramètres

ParamètreTypeDescription
idobligatoirecheminstring

Réponses

  • 200Le groupe, avec ses membres.
    ChampTypeDescription
    idobligatoirestring
    nameobligatoirestring
    descriptionobligatoirestring
    • Peut être null
    member_countobligatoireinteger
    members[]obligatoireobject[]
    idobligatoirestring

    L’identifiant du contact.

    phone_numberobligatoirestring
    • Peut être null
    nameobligatoirestring
    • Peut être null
    created_atobligatoirestring
    • Format : date-time
    updated_atobligatoirestring
    • Format : date-time
    livemodeobligatoireboolean

    false pour un enregistrement fait ou lu avec une clé de test (un enregistrement en mode test), true pour un enregistrement de production.

  • 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
  • 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
  • 403La clé API ne dispose pas de la permission requise pour cette opération, ou le compte est suspendu ou fermé.Le corps d’erreur standard.
  • 404CONTACT_GROUP_NOT_FOUND.Le corps d’erreur standard.
  • 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
  • 500Erreur de serveur inattendue.Le corps d’erreur standard.

Exemple

cURL
curl https://api.honkio.ca/v1/contact-groups/ID \
  -H "Authorization: Bearer mk_live_YOUR_KEY"
patch/v1/contact-groups/{id}

Mettre à jour un groupe de contacts

Permissioncontact_groups:m

Nécessite contact_groups:m.

Paramètres

ParamètreTypeDescription
idobligatoirecheminstring

Corps de la requête

ChampTypeDescription
namestring
  • Au plus 100 caractères
descriptionstring
  • Au plus 500 caractères

Réponses

  • 200Le groupe mis à jour.
    ChampTypeDescription
    idobligatoirestring
    nameobligatoirestring
    descriptionobligatoirestring
    • Peut être null
    member_countobligatoireinteger
    members[]obligatoireobject[]
    idobligatoirestring

    L’identifiant du contact.

    phone_numberobligatoirestring
    • Peut être null
    nameobligatoirestring
    • Peut être null
    created_atobligatoirestring
    • Format : date-time
    updated_atobligatoirestring
    • Format : date-time
    livemodeobligatoireboolean

    false pour un enregistrement fait ou lu avec une clé de test (un enregistrement en mode test), true pour un enregistrement de production.

  • 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
  • 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
  • 403LIVE_KEY_REQUIRED lorsqu’une clé de test tente de modifier un élément référencé par la liste d’autorisation ou de blocage d’une clé de production (les contacts, groupes et listes sont tenus séparément pour chaque mode de clé : une clé de test n’atteint donc que ceux de test, qu’aucune clé de production n’utilise). Aussi FORBIDDEN lorsque la clé ne dispose pas de la permission requise.Le corps d’erreur standard.
  • 404CONTACT_GROUP_NOT_FOUND.Le corps d’erreur standard.
  • 409CONTACT_GROUP_ALREADY_EXISTS : ce nom est déjà utilisé.Le corps d’erreur standard.
  • 422VALIDATION_ERROR : la requête n’a pas passé la validation ; details indique les champs en cause.Le corps d’erreur standard.
  • 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
  • 500Erreur de serveur inattendue.Le corps d’erreur standard.

Exemple

cURL
curl -X PATCH https://api.honkio.ca/v1/contact-groups/ID \
  -H "Authorization: Bearer mk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Patients due for a recall visit"
  }'
delete/v1/contact-groups/{id}

Supprimer un groupe de contacts

Permissioncontact_groups:d

Nécessite contact_groups:d.

Paramètres

ParamètreTypeDescription
idobligatoirecheminstring

Réponses

  • 204Supprimé. Ses contacts sont conservés.
  • 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
  • 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
  • 403LIVE_KEY_REQUIRED lorsqu’une clé de test tente de modifier un élément référencé par la liste d’autorisation ou de blocage d’une clé de production (les contacts, groupes et listes sont tenus séparément pour chaque mode de clé : une clé de test n’atteint donc que ceux de test, qu’aucune clé de production n’utilise) ; KEY_FENCED lorsque la modification assouplirait les restrictions d’autorisation et de blocage de la clé appelante elle-même. Aussi FORBIDDEN lorsque la clé ne dispose pas de la permission requise.Le corps d’erreur standard.
  • 404CONTACT_GROUP_NOT_FOUND.Le corps d’erreur standard.
  • 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
  • 500Erreur de serveur inattendue.Le corps d’erreur standard.

Exemple

cURL
curl -X DELETE https://api.honkio.ca/v1/contact-groups/ID \
  -H "Authorization: Bearer mk_live_YOUR_KEY"
post/v1/contact-groups/{id}/members

Ajouter un membre à un groupe de contacts

Permissioncontact_groups:m

Fournissez soit contact_id (fiche Contact existante), soit phone_number (créé automatiquement s’il n’existe pas). Le contact est du mode du groupe : un contact_id de l’autre mode répond CONTACT_NOT_FOUND, et un phone_number trouve ou crée un contact du mode du groupe.

Nécessite contact_groups:m.

Paramètres

ParamètreTypeDescription
idobligatoirecheminstring

Corps de la requête

ChampTypeDescription
contact_idstring
phone_numberstring

Réponses

  • 201Le membre ajouté.
    ChampTypeDescription
    idobligatoirestring

    L’identifiant du contact.

    phone_numberobligatoirestring
    nameobligatoirestring
    • Peut être null
    added_atobligatoirestring
    • Format : date-time
  • 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
  • 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
  • 403LIVE_KEY_REQUIRED lorsqu’une clé de test tente de modifier un élément référencé par la liste d’autorisation ou de blocage d’une clé de production (les contacts, groupes et listes sont tenus séparément pour chaque mode de clé : une clé de test n’atteint donc que ceux de test, qu’aucune clé de production n’utilise) ; KEY_FENCED lorsque la modification assouplirait les restrictions d’autorisation et de blocage de la clé appelante elle-même. Aussi FORBIDDEN lorsque la clé ne dispose pas de la permission requise.Le corps d’erreur standard.
  • 404CONTACT_GROUP_NOT_FOUND ou CONTACT_NOT_FOUND.Le corps d’erreur standard.
  • 409CONTACT_GROUP_MEMBER_EXISTS.Le corps d’erreur standard.
  • 422VALIDATION_ERROR (ni contact_id ni phone_number), INVALID_PHONE_NUMBER ou CONTACT_HAS_NO_PHONE (le contact n’a pas de numéro de téléphone).Le corps d’erreur standard.
  • 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
  • 500Erreur de serveur inattendue.Le corps d’erreur standard.

Exemple

cURL
curl -X POST https://api.honkio.ca/v1/contact-groups/ID/members \
  -H "Authorization: Bearer mk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contact_id": "CONTACT_ID"
  }'
delete/v1/contact-groups/{id}/members/{contactId}

Retirer un membre d’un groupe de contacts

Permissioncontact_groups:m

Nécessite contact_groups:m.

Paramètres

ParamètreTypeDescription
idobligatoirecheminstring
contactIdobligatoirecheminstring

Réponses

  • 204Retiré du groupe. Le contact est conservé.
  • 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
  • 402Le compte n’a aucun solde, ou une clé LIVE a été utilisée avant la première recharge.Le corps d’erreur standard.
  • 403LIVE_KEY_REQUIRED lorsqu’une clé de test tente de modifier un élément référencé par la liste d’autorisation ou de blocage d’une clé de production (les contacts, groupes et listes sont tenus séparément pour chaque mode de clé : une clé de test n’atteint donc que ceux de test, qu’aucune clé de production n’utilise) ; KEY_FENCED lorsque la modification assouplirait les restrictions d’autorisation et de blocage de la clé appelante elle-même. Aussi FORBIDDEN lorsque la clé ne dispose pas de la permission requise.Le corps d’erreur standard.
  • 404CONTACT_GROUP_NOT_FOUND ou CONTACT_GROUP_MEMBER_NOT_FOUND.Le corps d’erreur standard.
  • 429Limite de débit atteinte : 100 requêtes par seconde et par compte, ou une limite propre à la route (Retry-After est défini le cas échéant).Le corps d’erreur standard.
  • 500Erreur de serveur inattendue.Le corps d’erreur standard.

Exemple

cURL
curl -X DELETE https://api.honkio.ca/v1/contact-groups/ID/members/CONTACT_ID \
  -H "Authorization: Bearer mk_live_YOUR_KEY"
post/v1/contact-groups/{id}/messages

Envoyer un SMS à tous les membres d’un groupe de contacts

Permissionmessages:w

Une clé de test diffuse à ses propres groupes (de test) et une clé de production à ceux de production ; un groupe de l’autre mode répond CONTACT_GROUP_NOT_FOUND. Répond toujours 207, que le message ait été envoyé à tous les membres ou que tous aient échoué : vérifiez chaque entrée de results plutôt que le statut HTTP. Chaque résultat indique le numéro to du membre. Une diffusion en production répétée avec la même Idempotency-Key dans les 24 heures renvoie le 207 enregistré de la première tentative, sans refaire les vérifications portant sur l’ensemble du groupe ni utiliser un autre créneau de diffusion quotidien. Une nouvelle tentative ultérieure avec cette clé refait les vérifications (et peut utiliser un créneau), mais n’envoie jamais de nouveau message à un membre déjà joint par la première tentative. Avec scheduled_at (de 1 minute à 30 jours à l’avance), chaque membre reçoit un message programmé, comme POST /v1/messages avec scheduled_at en crée un : statut scheduled dans results, facturé tout de suite, toutes les vérifications refaites à l’heure prévue, et chacun peut être déplacé ou annulé séparément (PATCH ou DELETE /v1/messages/{id}). La diffusion utilise son créneau quotidien maintenant ; les limites d’envoi sont évaluées par membre à l’heure prévue. À la place de body, template (l’identifiant ou l’alias d’un modèle), variables et language (en ou fr) envoient la partie SMS de ce modèle, rendue une seule fois avec les mêmes valeurs pour chaque membre, comme le fait POST /v1/messages.

Nécessite messages:w.

Paramètres

ParamètreTypeDescription
idobligatoirecheminstring
Idempotency-Keyen-têtestring
  • Au plus 128 caractères

Corps de la requête

ChampTypeDescription
fromobligatoirestring

Numéro d’envoi (E.164, doit appartenir au compte)

bodystring

Jusqu’à 1 600 caractères et 10 segments SMS. Un corps plus long est refusé avec 422 MESSAGE_TOO_LONG avant qu’un seul membre ne reçoive de message. Obligatoire sauf si vous envoyez un modèle ; interdit avec un modèle.

  • Au plus 1600 caractères
templatestring

L’identifiant ou l’alias d’un modèle (/v1/templates). Sa partie pour ce canal est rendue et envoyée à la place de votre propre texte. Une clé de production envoie la version publiée, une clé de test le brouillon. Avec un Idempotency-Key, une nouvelle tentative est comparée à la requête telle qu’elle a été envoyée : l’identifiant du modèle et son alias, 1 et « 1 » comme valeur de variable, et une langue omise et la langue par défaut indiquée comptent comme des requêtes différentes (409 IDEMPOTENCY_KEY_REUSED).

  • Au moins 1 caractères
  • Au plus 200 caractères
variablesobject

Les valeurs des variables du modèle. Une variable sans valeur ni valeur de repli fait refuser l’envoi (422 EMAIL_TEMPLATE_VARIABLE_MISSING, details.keys). Seulement avec template.

languagestring

en ou fr : la version linguistique à rendre. Une partie qui manque à cette langue vient de la langue par défaut du modèle. Omettez-le pour la langue par défaut. Seulement avec template.

  • Une valeur parmi : en | fr
skip_consent_checkboolean
scheduled_atstring

Envoi différé : une date et heure ISO 8601 avec décalage horaire, de 1 minute à 30 jours à l’avance.

  • Peut être null
expires_atstring

L’heure limite de départ de l’envoi programmé : de 1 minute à 24 heures après scheduled_at, et seulement avec lui. Sans elle, scheduled_at plus 24 heures. Un envoi qui ne peut pas partir d’ici là échoue avec SCHEDULED_SEND_EXPIRED et est remboursé. La même pour chaque membre.

  • Peut être null

Réponses

  • 207Toujours 207 : vérifiez chaque résultat, pas le statut. Une diffusion réelle répétée avec la même Idempotency-Key dans les 24 heures renvoie le résultat enregistré de la première tentative.
    ChampTypeDescription
    group_idobligatoirestring
    sent_toobligatoireinteger

    Membres qui n’ont pas échoué.

    failedobligatoireinteger
    results[]obligatoireobject[]
    toobligatoirestring

    Le numéro du membre.

    statusobligatoirestring

    En minuscules : le statut du message (queued, sent, delivered, etc.), ou failed.

    message_idstring

    Absent lorsque l’envoi au membre a échoué avant qu’un message soit créé.

    errorstring

    Un code d’erreur : la raison de l’échec pour ce membre, ou le error_code du message lui-même.

    estimated_completion_atstring

    Une estimation du moment où l’opérateur aura envoyé au dernier membre, d’après la file du numéro d’envoi. Null en mode test. Absent d’une réponse rejouée pour une diffusion envoyée avant son ajout.

    • Format : date-time
    • Peut être null
  • 401Clé API manquante, invalide, révoquée ou expirée.Le corps d’erreur standard.
  • 402INSUFFICIENT_BALANCE : le solde ne couvre pas l’envoi. RENT_OWED : un loyer est dû pour un numéro libéré pendant sa suspension; rechargez d’abord pour le payer. Aussi PAYMENT_REQUIRED lorsqu’une clé de production est utilisée avant la première recharge.Le corps d’erreur standard.
  • 403FORBIDDEN (skip_consent_check avec une clé de production, ou la clé n’a pas l’autorisation messages:w), ACCOUNT_NOT_VERIFIED, SENDING_PAUSED, ou TOLL_FREE_NOT_VERIFIED (un numéro from sans frais dont la vérification sans frais n’est pas approuvée ; clés de test comprises). Un membre en production sans double consentement confirmé échoue seul dans les résultats avec DOUBLE_OPT_IN_REQUIRED.Le corps d’erreur standard.
  • 404CONTACT_GROUP_NOT_FOUND.Le corps d’erreur standard.
  • 422VALIDATION_ERROR, BROADCAST_TOO_LARGE, MESSAGE_TOO_LONG ou LINK_SHORTENER_BLOCKED.Le corps d’erreur standard.
  • 429BROADCAST_LIMIT_REACHED, DAILY_LIMIT_REACHED, FANOUT_LIMIT_REACHED, NUMBER_QUEUE_FULL (les segments de message de la diffusion dépasseraient la file d’attente de l’opérateur pour le numéro d’envoi; Retry-After est fourni quand attendre libérerait de la place) ou RECIPIENT_RATE_LIMITED, ou RATE_LIMITED au-delà de 100 requêtes par seconde. SCHEDULED_LIMIT_REACHED (avec scheduled_at) : un message programmé par membre ferait dépasser au compte 10 000 messages réels programmés, ou 1 000 messages de test programmés ; la diffusion est refusée en entier, avant que tout membre soit programmé ou facturé (details contient mode, limit, scheduled et requested).Le corps d’erreur standard.
  • 500Erreur de serveur inattendue.Le corps d’erreur standard.

Exemple

cURL
curl -X POST https://api.honkio.ca/v1/contact-groups/ID/messages \
  -H "Authorization: Bearer mk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "+1416XXXXXXX"
  }'