Référence de l’API
Conformité / LCAP
Gestion du consentement LCAP et des désabonnements.
/v1/compliance/consentsLister les enregistrements de consentement des abonnés du compte
compliance:rSDK Node.jshonkio.consents.list()Les consentements et les désabonnements sont tenus séparément pour chaque mode de clé : une clé de test enregistre, lit et modifie ses propres enregistrements (de test), auxquels seuls les envois de test sont confrontés, et une clé de production, les enregistrements de production.
Nécessite compliance:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
phone_numberrequête | string | |
email_addressrequête | string | Limiter aux consentements par courriel de cette adresse. Le consentement par courriel sera offert au lancement du produit courriel. |
statusrequête | string |
|
consent_batch_idrequête | string | Seulement les consentements enregistrés par ce téléversement groupé.
|
pagerequête | integer |
|
limitrequête | integer |
|
Réponses
200Une page d’enregistrements de consentement, du plus récent au plus ancien. Aucun total n’est renvoyé.
Champ Type Description data[]obligatoireobject[] idobligatoirestring accountIdobligatoirestring channelobligatoirestring - Une valeur parmi : SMS | EMAIL
phoneNumberobligatoirestring - Peut être null
emailAddressobligatoirestring - Peut être null
consentTypeobligatoirestring - Une valeur parmi : EXPRESS | IMPLIED
statusobligatoirestring - Une valeur parmi : ACTIVE | EXPIRED | REVOKED
sourceDescriptionobligatoirestring - Peut être null
sourceIpobligatoirestring - Peut être null
sourceUrlobligatoirestring - Peut être null
relationshipTypeobligatoirestring - Peut être null
expiresAtobligatoirestring - Format : date-time
- Peut être null
grantedAtobligatoirestring - Format : date-time
revokedAtobligatoirestring - Format : date-time
- Peut être null
revokedReasonobligatoirestring - Peut être null
doubleOptInConfirmedAtobligatoirestring Quand l’abonné a confirmé pour la dernière fois son double consentement en répondant OUI à une confirmation envoyée depuis l’un de vos numéros sans frais. Un envoi sans frais exige une confirmation de son propre numéro d’envoi : voir GET /v1/compliance/opt-in-confirmations.
- Format : date-time
- Peut être null
doubleOptInConfirmationIdobligatoirestring La confirmation de consentement (oic_…) à laquelle il a répondu.
- Peut être null
consentBatchIdobligatoirestring Le téléversement groupé (cb_…) qui a enregistré ce consentement ; null pour un consentement enregistré individuellement.
- Peut être null
modeobligatoirestring Le mode de la clé qui l’a enregistré. Une clé de test ne voit que les enregistrements TEST, une clé de production que les enregistrements LIVE.
- Une valeur parmi : LIVE | TEST
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.
- 501EMAIL_COMING_SOON : le consentement par courriel sera offert au lancement du produit courriel (renvoyé uniquement pour une requête email_address).Le corps d’erreur standard.
Exemple
const { data, error } = await honkio.consents.list({ status: 'ACTIVE', limit: 50 })
if (error) throw new Error(error.message)
console.log(data.data.length)curl https://api.honkio.ca/v1/compliance/consents \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/compliance/consentsEnregistrer le consentement LCAP pour un numéro de téléphone ou une adresse courriel
compliance:wSDK Node.jshonkio.consents.create()Enregistre un consentement exprès ou tacite conformément aux articles 6 à 10 de la LCAP. Tout SMS exige un consentement enregistré pour son destinataire, qu’il soit transactionnel ou commercial (un code de vérification envoyé par l’API Verify n’en exige aucun) ; un courriel ne l’exige que s’il est commercial. Refusé avec 409 CONSENT_REVOKED_BY_REVIEW lorsque HonkIO a révoqué le consentement de ce destinataire après examen d’un téléversement : ce consentement ne peut plus être enregistré à moins que HonkIO ne lève le blocage. Les consentements et les désabonnements sont tenus séparément pour chaque mode de clé : une clé de test enregistre, lit et modifie ses propres enregistrements (de test), auxquels seuls les envois de test sont confrontés, et une clé de production, les enregistrements de production.
Nécessite compliance:w.
Corps de la requête
| Champ | Type | Description |
|---|---|---|
phone_number | string | Numéro de téléphone E.164 de l’abonné |
email_address | string | Adresse courriel de l’abonné (canal courriel). Le consentement par courriel sera offert au lancement du produit courriel.
|
consent_typeobligatoire | string |
|
source_description | string | Comment et où le consentement a été obtenu (obligatoire pour le consentement exprès)
|
source_ip | string | Adresse IP de l’abonné au moment du consentement
|
source_url | string | URL où le consentement a été obtenu
|
relationship_type | string | Type de relation d’affaires (requis pour le type implied, soit le consentement tacite ; p. ex. « purchase », « inquiry », « member »). Il fixe la durée du consentement tacite (LCAP, par. 10(10) et 10(13)) : 2 ans pour un achat, une location, un contrat, une occasion d’affaires, un don, du bénévolat ou une adhésion ; 6 mois pour une demande de renseignements ou une demande, et pour tout type qui ne nomme ni l’un ni l’autre.
|
last_transaction_date | string | Date de la dernière transaction (consentement tacite : l’expiration de 2 ans ou de 6 mois court à partir de cette date ; aujourd’hui si elle est absente)
|
expires_at | string | Date d’expiration explicite (date ou date-heure ISO 8601) d’un consentement tacite. Remplace l’expiration calculée à partir de last_transaction_date. Refusée pour le consentement exprès, qui n’expire jamais (LCAP, art. 10). |
Réponses
201Réponse par défaut
Champ Type Description statusstring phone_numberstring email_addressstring expires_atstring Moment où ce consentement expire (consentement tacite seulement) ; null pour un consentement exprès.
- Peut être null
livemodeboolean 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.
- 409CONSENT_REVOKED_BY_REVIEW : HonkIO a révoqué le consentement de ce destinataire après examen d’un téléversement ; il ne peut donc plus être enregistré à moins que HonkIO ne lève le blocage.Le corps d’erreur standard.
- 422INVALID_PHONE_NUMBER, EMAIL_INVALID_ADDRESS ou VALIDATION_ERROR (fournissez exactement un seul des champs phone_number ou email_address ; le consentement exprès exige source_description et n’accepte pas expires_at ; le consentement tacite exige relationship_type).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.
- 501EMAIL_COMING_SOON : le consentement par courriel sera offert au lancement du produit courriel (renvoyé uniquement pour une requête email_address).Le corps d’erreur standard.
Exemple
const { error } = await honkio.consents.create({
phoneNumber: '+1613XXXXXXX',
consentType: 'express',
sourceDescription: 'Website opt-in form',
})
if (error) throw new Error(error.message)curl -X POST https://api.honkio.ca/v1/compliance/consents \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+1613XXXXXXX",
"consent_type": "express",
"source_description": "Website opt-in form"
}'/v1/compliance/consents/batchEnregistrer le consentement LCAP pour jusqu’à 5 000 numéros de téléphone
compliance:wSDK Node.jshonkio.consents.recordBatch()Chaque ligne reprend defaults, complété par ses propres champs. Chaque ligne obtient son propre résultat : recorded, invalid, duplicate_in_file (le numéro figurait déjà sur une ligne précédente), opted_out (le numéro s’est désabonné ; un téléversement ne lui redonne jamais de consentement), revoked_by_review (HonkIO a révoqué le consentement du numéro après examen d’un téléversement précédent ; il ne peut plus être enregistré à moins que HonkIO ne lève le blocage) ou already_recorded (un consentement actif au moins aussi fort existe déjà, donc renvoyer un fichier n’enregistre rien en double). Le téléversement est conservé comme lot de consentements (GET /v1/compliance/consent-batches). SMS seulement. Le téléversement d’une clé de test enregistre des consentements de test, évalués d’après ses propres désabonnements et consentements (de test).
Nécessite compliance:w.
Corps de la requête
| Champ | Type | Description |
|---|---|---|
defaultsobligatoire | object | Les valeurs par défaut (defaults) dont part chaque ligne. |
consent_typeobligatoire | string |
|
source_description | string |
|
source_ip | string |
|
source_url | string |
|
relationship_type | string |
|
last_transaction_date | string |
|
expires_at | string |
|
rows[]obligatoire | object[] | De 1 à 5 000 lignes ; les champs propres à chaque ligne remplacent les valeurs par défaut (defaults). |
phone_numberobligatoire | string |
|
consent_type | string | express (consentement exprès) ou implied (consentement tacite) ; toute autre valeur rend la ligne invalid (invalide).
|
source_description | string |
|
source_ip | string |
|
source_url | string |
|
relationship_type | string |
|
last_transaction_date | string |
|
expires_at | string |
|
file_name | string | Le nom du fichier téléversé, conservé sur le lot.
|
attested | boolean | La personne qui téléverse confirme que ces personnes ont donné ce consentement ou entretiennent cette relation. Consigné sur le lot. |
Réponses
200Le résultat de chaque ligne, dans l’ordre d’envoi, et les totaux. Un succès partiel est normal : seule une requête erronée dans son ensemble est refusée.
Champ Type Description batch_idobligatoirestring cb_…
livemodeobligatoireboolean false pour un enregistrement fait ou lu avec une clé de test (un enregistrement en mode test), true pour un enregistrement de production.
countsobligatoireobject rowsobligatoireinteger recordedobligatoireinteger expressobligatoireinteger impliedobligatoireinteger already_recordedobligatoireinteger opted_outobligatoireinteger revoked_by_reviewobligatoireinteger duplicate_in_fileobligatoireinteger invalidobligatoireinteger results[]obligatoireobject[] rowobligatoireinteger Indice de la ligne dans rows.
phone_numberobligatoirestring Numéro E.164, ou la valeur telle qu’envoyée si elle n’a pas pu être interprétée.
statusobligatoirestring - Une valeur parmi : recorded | invalid | duplicate_in_file | opted_out | revoked_by_review | already_recorded
reasonstring Présent sur les lignes invalides (le champ en cause et ce qui ne va pas) et sur les lignes revoked_by_review.
consent_typestring Présent sur les lignes enregistrées.
- Une valeur parmi : express | implied
expires_atstring Présent sur les lignes enregistrées ; null pour le consentement exprès.
- Peut être null
- 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 : rows vide ou de plus de 5 000 lignes, ou defaults erroné en soi (consent_type inconnu, date illisible, expires_at avec le consentement exprès).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
const { data, error } = await honkio.consents.recordBatch({
defaults: { consentType: 'implied', relationshipType: 'volunteer', lastTransactionDate: '2026-05-01' },
rows: [{ phoneNumber: '+1613XXXXXXX' }],
fileName: 'volunteers.csv',
})
if (error) throw new Error(error.message)
console.log(data.counts)curl -X POST https://api.honkio.ca/v1/compliance/consents/batch \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"defaults": {
"consent_type": "express"
},
"rows": [
{
"phone_number": "+1613XXXXXXX"
}
]
}'/v1/compliance/consent-batchesLister les téléversements groupés de consentements
compliance:rSDK Node.jshonkio.consentBatches.list()Nécessite compliance:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
pagerequête | integer |
|
limitrequête | integer |
|
Réponses
200Une page de téléversements groupés, du plus récent au plus ancien. Aucun total n’est renvoyé.
Champ Type Description data[]obligatoireobject[] idobligatoirestring cb_…
livemodeobligatoireboolean false pour un enregistrement fait ou lu avec une clé de test (un enregistrement en mode test), true pour un enregistrement de production.
sourceobligatoirestring Envoyé par l’API, ou téléversé dans le tableau de bord.
- Une valeur parmi : api | dashboard
file_nameobligatoirestring Le nom de fichier indiqué par la personne qui a téléversé, le cas échéant.
- Peut être null
attestedobligatoireboolean Indique si la personne qui a téléversé a confirmé que ces personnes ont donné ce consentement ou entretiennent cette relation.
countsobligatoireobject rowsobligatoireinteger recordedobligatoireinteger expressobligatoireinteger impliedobligatoireinteger already_recordedobligatoireinteger opted_outobligatoireinteger revoked_by_reviewobligatoireinteger duplicate_in_fileobligatoireinteger invalidobligatoireinteger revoked_atobligatoirestring - Format : date-time
- Peut être null
created_atobligatoirestring - Format : date-time
defaultsobject Les valeurs par défaut (defaults) envoyées avec le téléversement, telles quelles. Seulement dans GET /v1/compliance/consent-batches/{id}.
consent_typeobligatoirestring - Une valeur parmi : express | implied
source_descriptionstring source_ipstring source_urlstring relationship_typestring last_transaction_datestring expires_atstring - Peut être null
- 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
const { data, error } = await honkio.consentBatches.list()
if (error) throw new Error(error.message)
console.log(data.data.length)curl https://api.honkio.ca/v1/compliance/consent-batches \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/compliance/consent-batches/{id}Obtenir un téléversement groupé de consentements
compliance:rSDK Node.jshonkio.consentBatches.get()Nécessite compliance:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
idobligatoirechemin | string |
|
Réponses
200Le téléversement, avec les valeurs par défaut envoyées.
Champ Type Description idobligatoirestring cb_…
livemodeobligatoireboolean false pour un enregistrement fait ou lu avec une clé de test (un enregistrement en mode test), true pour un enregistrement de production.
sourceobligatoirestring Envoyé par l’API, ou téléversé dans le tableau de bord.
- Une valeur parmi : api | dashboard
file_nameobligatoirestring Le nom de fichier indiqué par la personne qui a téléversé, le cas échéant.
- Peut être null
attestedobligatoireboolean Indique si la personne qui a téléversé a confirmé que ces personnes ont donné ce consentement ou entretiennent cette relation.
countsobligatoireobject rowsobligatoireinteger recordedobligatoireinteger expressobligatoireinteger impliedobligatoireinteger already_recordedobligatoireinteger opted_outobligatoireinteger revoked_by_reviewobligatoireinteger duplicate_in_fileobligatoireinteger invalidobligatoireinteger revoked_atobligatoirestring - Format : date-time
- Peut être null
created_atobligatoirestring - Format : date-time
defaultsobject Les valeurs par défaut (defaults) envoyées avec le téléversement, telles quelles. Seulement dans GET /v1/compliance/consent-batches/{id}.
consent_typeobligatoirestring - Une valeur parmi : express | implied
source_descriptionstring source_ipstring source_urlstring relationship_typestring last_transaction_datestring expires_atstring - Peut être null
- 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.
- 404NOT_FOUND : aucune ressource correspondante sur ce compte.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
const { data, error } = await honkio.consentBatches.get('BATCH_ID')
if (error) throw new Error(error.message)
console.log(data.counts)curl https://api.honkio.ca/v1/compliance/consent-batches/ID \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/compliance/consents/checkVérifier si un numéro de téléphone ou une adresse courriel dispose d’un consentement LCAP valide
compliance:rSDK Node.jshonkio.consents.check()Un consentement que cette vérification trouve expiré est marqué EXPIRED par la vérification elle-même, et pas seulement par une tâche en arrière-plan : cet appel peut donc écrire, et non seulement lire. Elle répond pour le mode de la clé appelante : une clé de test vérifie les enregistrements de test auxquels un envoi de test serait confronté, une clé de production, les enregistrements de production.
Nécessite compliance:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
phone_numberrequête | string | |
email_addressrequête | string | Vérifier une adresse courriel plutôt qu’un numéro de téléphone. Le consentement par courriel sera offert au lancement du produit courriel. |
Réponses
200Indique si un envoi au numéro de téléphone ou à l’adresse courriel franchirait le contrôle de la LCAP. Un seul des champs phone_number/email_address est présent, selon le sujet interrogé. consentType et reason sont en camelCase et mutuellement exclusifs.
Champ Type Description phone_numberstring email_addressstring allowedobligatoireboolean consentTypestring Présent si l’opération est autorisée.
- Une valeur parmi : EXPRESS | IMPLIED
reasonstring Présent si l’opération n’est pas autorisée.
- Une valeur parmi : OPT_OUT | NO_CONSENT | CONSENT_EXPIRED
livemodeboolean 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.
- 422INVALID_PHONE_NUMBER, EMAIL_INVALID_ADDRESS ou VALIDATION_ERROR (fournissez exactement un seul des champs phone_number ou email_address).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.
- 501EMAIL_COMING_SOON : le consentement par courriel sera offert au lancement du produit courriel (renvoyé uniquement pour une requête email_address).Le corps d’erreur standard.
Exemple
const { data, error } = await honkio.consents.check({ phoneNumber: '+1613XXXXXXX' })
if (error) throw new Error(error.message)
console.log(data.allowed, data.reason)curl https://api.honkio.ca/v1/compliance/consents/check \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/compliance/consents/{phone}Révoquer le consentement LCAP pour un numéro de téléphone
compliance:mdSDK Node.jshonkio.consents.revoke()Révoque les enregistrements de consentement pour le numéro donné. Tout SMS vers ce numéro est ensuite refusé avec NO_CONSENT jusqu’à ce qu’un consentement soit de nouveau enregistré. Les désabonnements sont distincts : un désabonnement (POST /opt-outs) bloque les envois même lorsqu’un consentement est enregistré, et seul le destinataire peut le lever. Une clé de test ne révoque que des consentements de test, et une clé de production, que des consentements de production.
Nécessite compliance:m ou compliance:d (l’une ou l’autre).
Paramètres
| Paramètre | Type | Description |
|---|---|---|
phoneobligatoirechemin | string |
Réponses
- 204Tous les consentements actifs du numéro sont révoqué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.
- 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.
- 404NOT_FOUND : aucun consentement actif pour le numéro.Le corps d’erreur standard.
- 422INVALID_PHONE_NUMBER.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
const { error } = await honkio.consents.revoke({ phoneNumber: '+1613XXXXXXX' })
if (error) throw new Error(error.message)curl -X DELETE https://api.honkio.ca/v1/compliance/consents/PHONE \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/compliance/consents/email/{address}Révoquer le consentement LCAP pour une adresse courriel
compliance:mdSDK Node.jshonkio.consents.revoke()Révoque les consentements courriel ACTIVE de l’adresse. Tout courriel commercial vers cette adresse est ensuite refusé avec EMAIL_NO_CONSENT jusqu’à ce qu’un consentement soit de nouveau enregistré ; les courriels transactionnels ne sont pas touchés. Les désabonnements et les entrées de la liste de suppression sont distincts.
Nécessite compliance:m ou compliance:d (l’une ou l’autre).
Paramètres
| Paramètre | Type | Description |
|---|---|---|
addressobligatoirechemin | string |
Réponses
- 204Tous les consentements actifs de l’adresse courriel sont révoqué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.
- 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.
- 404NOT_FOUND : aucun consentement actif pour l’adresse courriel.Le corps d’erreur standard.
- 422EMAIL_INVALID_ADDRESS.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.
- 501EMAIL_COMING_SOON : le consentement par courriel sera offert au lancement du produit courriel.Le corps d’erreur standard.
Exemple
const { error } = await honkio.consents.revoke({ emailAddress: 'sam@example.com' })
if (error) throw new Error(error.message)curl -X DELETE https://api.honkio.ca/v1/compliance/consents/email/ADDRESS \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/compliance/opt-outsLister les enregistrements de désabonnement
compliance:rLes consentements et les désabonnements sont tenus séparément pour chaque mode de clé : une clé de test enregistre, lit et modifie ses propres enregistrements (de test), auxquels seuls les envois de test sont confrontés, et une clé de production, les enregistrements de production.
Nécessite compliance:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
phone_numberrequête | string | |
from_numberrequête | string | |
pagerequête | integer |
|
limitrequête | integer |
|
Réponses
200Une page d’enregistrements de désabonnement, du plus récent au plus ancien. Aucun total n’est renvoyé.
Champ Type Description data[]obligatoireobject[] idobligatoirestring accountIdobligatoirestring channelobligatoirestring - Une valeur parmi : SMS | EMAIL
phoneNumberobligatoirestring - Peut être null
fromNumberobligatoirestring Le numéro d’envoi à partir duquel l’abonné s’est désabonné (SMS).
- Peut être null
fromAddressobligatoirestring - Peut être null
emailAddressobligatoirestring - Peut être null
keywordUsedobligatoirestring STOP, UNSUBSCRIBE, etc. ; null pour un désabonnement enregistré au moyen de l’API.
- Peut être null
optedOutAtobligatoirestring - Format : date-time
reinstatedAtobligatoirestring - Format : date-time
- Peut être null
reinstateKeywordobligatoirestring - Peut être null
modeobligatoirestring LIVE pour un STOP envoyé à l’un de vos numéros, un désabonnement d’un courriel de production ou un désabonnement enregistré par une clé de production ; TEST pour un désabonnement enregistré par une clé de test ou produit par un courriel de test. Une clé de test ne voit que les enregistrements TEST, une clé de production que les enregistrements LIVE.
- Une valeur parmi : LIVE | TEST
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 https://api.honkio.ca/v1/compliance/opt-outs \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/compliance/opt-outsEnregistrer manuellement un désabonnement pour un numéro de téléphone
compliance:wLes consentements et les désabonnements sont tenus séparément pour chaque mode de clé : une clé de test enregistre, lit et modifie ses propres enregistrements (de test), auxquels seuls les envois de test sont confrontés, et une clé de production, les enregistrements de production.
Nécessite compliance:w.
Corps de la requête
| Champ | Type | Description |
|---|---|---|
phone_numberobligatoire | string | Numéro qui se désabonne (abonné) |
from_numberobligatoire | string | Votre numéro d’envoi visé par leur désabonnement |
Réponses
201Désabonné.
Champ Type Description statusobligatoirestring - Une valeur parmi : opted_out
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.
- 403PHONE_NUMBER_NOT_OWNED : une clé de production a enregistré un désabonnement à partir d’un numéro que le compte ne détient pas.Le corps d’erreur standard.
- 422INVALID_PHONE_NUMBER ou VALIDATION_ERROR.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 -X POST https://api.honkio.ca/v1/compliance/opt-outs \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+1613XXXXXXX",
"from_number": "+1416XXXXXXX"
}'/v1/compliance/opt-in-confirmationsLister les confirmations de double consentement
compliance:rSDK Node.jshonkio.optInConfirmations.list()Les plus récentes d’abord. Une confirmation en attente au-delà de ses 7 jours est indiquée EXPIRED. Les confirmations n’existent qu’en production : une clé de test n’en liste aucune.
Nécessite compliance:r.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
torequête | string | Seulement les confirmations envoyées à ce destinataire (E.164). |
statusrequête | string |
|
pagerequête | integer |
|
limitrequête | integer |
|
Réponses
200Une page de confirmations, les plus récentes d’abord. Aucun total n’est renvoyé. Vide pour une clé de test.
Champ Type Description data[]obligatoireobject[] idobligatoirestring oic_…
statusobligatoirestring PENDING jusqu’à ce que le destinataire réponde OUI (CONFIRMED), qu’elle expire après 7 jours ou soit remplacée par une plus récente (EXPIRED), ou que le destinataire texte STOP (DECLINED).
- Une valeur parmi : PENDING | CONFIRMED | EXPIRED | DECLINED
fromobligatoirestring Le numéro sans frais depuis lequel elle a été envoyée.
- Peut être null
toobligatoirestring Le destinataire.
brand_nameobligatoirestring languageobligatoirestring - Une valeur parmi : en | fr
message_idobligatoirestring Le texte de confirmation, sous forme de message (GET /v1/messages/{id}).
- Peut être null
expires_atobligatoirestring - Format : date-time
confirmed_atobligatoirestring - Format : date-time
- Peut être null
reply_message_idobligatoirestring Le OUI du destinataire, sous forme de message reçu.
- Peut être null
created_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.
- 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.
- 422INVALID_PHONE_NUMBER (le filtre to) ou VALIDATION_ERROR.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
const { data, error } = await honkio.optInConfirmations.list({ to: '+1613XXXXXXX' })
if (error) throw new Error(error.message)
for (const c of data.data) console.log(c.id, c.status)curl https://api.honkio.ca/v1/compliance/opt-in-confirmations \
-H "Authorization: Bearer mk_live_YOUR_KEY"/v1/compliance/opt-in-confirmationsEnvoyer une confirmation de double consentement depuis un numéro sans frais
compliance:wSDK Node.jshonkio.optInConfirmations.send()Envoie au destinataire une confirmation au texte fixe depuis votre numéro sans frais vérifié : "{brand_name}: reply YES to confirm you want text messages from us. Msg & data rates may apply. Reply STOP to opt out." (avec language: "fr" : "{brand_name} : répondez OUI pour confirmer que vous voulez recevoir nos textos. Des frais de messagerie et de données peuvent s’appliquer. Répondez ARRET pour vous désabonner.").
Les messages sans frais au Canada exigent un double consentement, par numéro d’envoi : tant que le destinataire n’a pas répondu YES, Y, OUI ou O à ce numéro, les envois vers lui depuis ce numéro sont refusés avec 451 DOUBLE_OPT_IN_REQUIRED (chacun de vos numéros sans frais demande le sien). La réponse confirme la confirmation, enregistre le double consentement pour ce numéro et déclenche consent.double_opt_in_confirmed. Un STOP envoyé à ce numéro le retire. Les codes de vérification (POST /v1/verify) en sont exemptés.
Le destinataire doit déjà avoir un consentement actif (le premier consentement). La confirmation est facturée comme un message ordinaire et expire après 7 jours. En envoyer une autre depuis le même numéro remplace celle en attente ; au plus 3 peuvent être envoyées à un même destinataire en 24 heures, depuis l’ensemble de vos numéros. Clés de production seulement.
Nécessite compliance:w.
Corps de la requête
| Champ | Type | Description |
|---|---|---|
fromobligatoire | string | Votre numéro sans frais (E.164) avec une vérification sans frais approuvée. |
toobligatoire | string | Le destinataire (E.164, canadien), qui doit déjà avoir un consentement actif. |
brand_nameobligatoire | string | Le nom sous lequel le destinataire vous connaît, affiché au début du texte. Texte simple : lettres, chiffres, espaces et . , ' & ! -, pas un lien.
|
language | string | La langue du texte de confirmation.
|
Réponses
201Envoyée : la confirmation, PENDING jusqu’à ce que le destinataire réponde OUI.
Champ Type Description idobligatoirestring oic_…
statusobligatoirestring PENDING jusqu’à ce que le destinataire réponde OUI (CONFIRMED), qu’elle expire après 7 jours ou soit remplacée par une plus récente (EXPIRED), ou que le destinataire texte STOP (DECLINED).
- Une valeur parmi : PENDING | CONFIRMED | EXPIRED | DECLINED
fromobligatoirestring Le numéro sans frais depuis lequel elle a été envoyée.
- Peut être null
toobligatoirestring Le destinataire.
brand_nameobligatoirestring languageobligatoirestring - Une valeur parmi : en | fr
message_idobligatoirestring Le texte de confirmation, sous forme de message (GET /v1/messages/{id}).
- Peut être null
expires_atobligatoirestring - Format : date-time
confirmed_atobligatoirestring - Format : date-time
- Peut être null
reply_message_idobligatoirestring Le OUI du destinataire, sous forme de message reçu.
- Peut être null
created_atobligatoirestring - Format : date-time
- 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.
- 403TOLL_FREE_NOT_VERIFIED (from n’a pas de vérification sans frais approuvée), ACCOUNT_NOT_VERIFIED, LIVE_KEY_REQUIRED (une clé de test ne peut pas en envoyer), ALLOW_LIST_BLOCKED, DENY_LIST_BLOCKED ou SENDING_PAUSED. Aussi FORBIDDEN quand la clé n’a pas l’autorisation compliance:w.Le corps d’erreur standard.
- 409PHONE_NUMBER_SUSPENDED : le numéro from est suspendu pour loyer impayé.Le corps d’erreur standard.
- 422INVALID_PHONE_NUMBER, NOT_A_TOLL_FREE_NUMBER (from n’est pas un de vos numéros sans frais), VALIDATION_ERROR (brand_name doit être du texte simple, pas un lien), NON_CANADIAN_NUMBER, RESERVED_DESTINATION, UNDELIVERABLE_NUMBER ou NOT_A_MOBILE_NUMBER. Un envoi refusé ne coûte rien.Le corps d’erreur standard.
- 429OPT_IN_CONFIRMATION_LIMIT (3 vers un même destinataire en 24 heures), DAILY_LIMIT_REACHED, FANOUT_LIMIT_REACHED, NUMBER_RATE_LIMITED ou RECIPIENT_RATE_LIMITED (Retry-After est défini pour les deux limites de débit), ou RATE_LIMITED au-delà de 100 requêtes par seconde.Le corps d’erreur standard.
- 451Le destinataire n’a pas de premier consentement : NO_CONSENT, CONSENT_EXPIRED ou OPT_OUT_BLOCKED.Le corps d’erreur standard.
- 500Erreur de serveur inattendue.Le corps d’erreur standard.
- 502CARRIER_ERROR : l’opérateur a refusé l’envoi. Tout montant facturé est remboursé et aucune confirmation n’est conservée.Le corps d’erreur standard.
- 503CARRIER_UNAVAILABLE, CARRIER_THROTTLED ou CARRIER_TIMEOUT : voir POST /v1/messages. Aucune confirmation n’est conservée ; envoyez de nouveau.Le corps d’erreur standard.
Exemple
const { data: confirmation, error } = await honkio.optInConfirmations.send({
from: '+1833XXXXXXX', // your verified toll-free number
to: '+1613XXXXXXX',
brandName: 'Acme Clinics',
})
if (error) throw new Error(`${error.name}: ${error.message}`)
console.log(confirmation.id, confirmation.status) // 'PENDING' until they reply YEScurl -X POST https://api.honkio.ca/v1/compliance/opt-in-confirmations \
-H "Authorization: Bearer mk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "+1416XXXXXXX",
"to": "+1613XXXXXXX",
"brand_name": "..."
}'
HonkIO