⚠️
Facturation & quotas·Intermédiaire·8 min

Configurer des alertes de dépassement de quota

Créez des règles d'alerte automatiques pour être notifié dès qu'un quota de stockage, de bande passante ou de transferts actifs approche ou dépasse la limite de votre plan.

Télécharger en PDF

L'API Coffrify expose deux familles d'endpoints pour surveiller vos consommations : /v1/quotas/check pour lire l'état actuel du plan (stockage, bande passante, transferts actifs) et /v1/alerts pour gérer des règles d'alerte qui déclenchent une notification par e-mail, Slack, Discord ou Webhook lorsqu'une condition se réalise. Ce guide vous montre comment combiner ces deux surfaces pour mettre en place une surveillance proactive de vos quotas.

GET/v1/quotas/checkRenvoie les plafonds du plan actif, la consommation courante et trois booléens `over_quota_*` indiquant si un dépassement est en cours.GET/v1/alertsListe toutes les règles d'alerte du workspace, triées par date de création décroissante.POST/v1/alertsCrée une nouvelle règle d'alerte. Retourne HTTP 201 avec l'objet créé.PATCH/v1/alerts/{id}Met à jour le nom, l'état actif, les valeurs de condition ou les valeurs d'action d'une règle existante.DELETE/v1/alerts/{id}Supprime définitivement une règle d'alerte. Retourne `{ deleted: true }`.

Authentification

Toutes les requêtes doivent porter un en-tête Authorization: Bearer <clé> avec une clé au format cof_live_… (production) ou cof_test_… (sandbox). Le scope requis varie selon l'opération : quotas:read pour GET /v1/quotas/check et GET /v1/alerts, et alerts:manage pour les opérations d'écriture POST, PATCH et DELETE sur /v1/alerts.

Corps de la requête (POST /v1/alerts)

Une règle d'alerte associe une condition (un seuil de quota) à une action (la notification déclenchée). Le tableau ci-dessous détaille les champs à fournir pour la créer.

ChampTypeRequisDescription
namestringOuiLibellé humain de la règle.
condition_typestringOuiType de condition : download_count, download_rate, failed_password, geo_unexpected ou expiration_soon.
condition_valueobjectNonParamètres de la condition (ex. seuil, fenêtre de temps). Structure libre, dépend du condition_type.
action_typestringNonCanal de notification : email (défaut), slack, discord ou webhook.
action_valueobjectNonConfiguration du canal (ex. URL de webhook, adresse e-mail de destination).
transfer_idstring (UUID)NonRestreint la règle à un seul transfert. Omettez ce champ pour surveiller tout le workspace.
is_activebooleanNonActive ou désactive la règle à la création. Valeur par défaut : true.

Exemples d'appel

Les exemples ci-dessous lisent d'abord l'état des quotas, puis créent une règle d'alerte sur le dépassement de stockage. Choisissez votre langage.

# 1. Vérifier l'état des quotas
curl -s https://api.coffrify.com/v1/quotas/check \
-H "Authorization: Bearer cof_live_xxxxxxxxxxxx"
 
# 2. Créer une alerte quand le taux de téléchargements explose
curl -s -X POST https://api.coffrify.com/v1/alerts \
-H "Authorization: Bearer cof_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Pic de téléchargements",
"condition_type": "download_rate",
"condition_value": { "threshold_per_hour": 200 },
"action_type": "webhook",
"action_value": { "url": "https://hooks.example.com/quota" }
}'

Réponses

Voici les formes de réponse renvoyées par chaque endpoint.

// GET /v1/quotas/check
{
"plan": "pro",
"caps": {
"storage_bytes": 1099511627776,
"bandwidth_bytes_per_month": 536870912000,
"active_transfers": 25,
"max_transfer_size_bytes": 107374182400
},
"consumption": {
"storage_bytes": 312456789012,
"storage_pct": 28,
"bandwidth_bytes_last_30d": 48318382080,
"bandwidth_pct": 9,
"active_transfers": 7,
"active_transfers_pct": 28
},
"over_quota": {
"storage": false,
"bandwidth": false,
"active_transfers": false
}
}
// POST /v1/alerts (HTTP 201)
{
"id": "f3a1b2c4-d5e6-7890-abcd-ef1234567890",
"name": "Quota stockage 90%",
"transfer_id": null,
"condition_type": "download_count",
"condition_value": { "threshold": 500 },
"action_type": "email",
"action_value": { "to": "ops@example.com" },
"is_active": true,
"created_at": "2026-06-06T14:23:00.000Z"
}
// GET /v1/alerts
{
"object": "list",
"data": [
{
"id": "f3a1b2c4-d5e6-7890-abcd-ef1234567890",
"name": "Quota stockage 90%",
"transfer_id": null,
"condition_type": "download_count",
"condition_value": { "threshold": 500 },
"action_type": "email",
"action_value": { "to": "ops@example.com" },
"is_active": true,
"last_triggered_at": null,
"created_at": "2026-06-06T14:23:00.000Z"
}
]
}
// DELETE /v1/alerts/{id}
{
"id": "f3a1b2c4-d5e6-7890-abcd-ef1234567890",
"object": "alert_rule",
"deleted": true
}

Erreurs

Les erreurs portent sur la validation de la règle (condition ou action invalide) et sur le scope manquant. Le tableau ci-dessous indique la correction à apporter.

Code HTTPCode d'erreurQuandRésolution
400validation_errorname absent ou condition_type / action_type hors des valeurs autorisées.Vérifiez que condition_type est l'une des valeurs : download_count, download_rate, failed_password, geo_unexpected, expiration_soon; et action_type l'une de : email, slack, discord, webhook.
400validation_errorCorps du PATCH sans aucun champ reconnu.Envoyez au moins un champ parmi : name, is_active, condition_value, action_value.
401unauthorizedClé API absente ou révoquée.Vérifiez l'en-tête Authorization: Bearer cof_live_… et l'état de la clé dans le tableau de bord.
403forbiddenLe scope de la clé ne contient pas alerts:manage ou quotas:read.Regénérez la clé avec les bons scopes ou créez une nouvelle clé dédiée.
404not_foundL'id passé dans l'URL n'existe pas dans ce workspace.Listez d'abord les alertes avec GET /v1/alerts pour récupérer les identifiants valides.
500internal_errorErreur inattendue côté base de données.Réessayez avec un backoff exponentiel. Ouvrez un ticket si l'erreur persiste.

Voir aussi

Continuer

Autres tutoriels à suivre