POST

Envoi de notifications en masse

Envoyer des notifications aux clients pour plusieurs commandes en une seule requête.

Point de terminaison

Requête HTTP
POST /v1/orders/notify-bulk

Authentification

Ce point de terminaison nécessite une clé API valide avec la permission canSendNotifications . La clé API doit être passée dans l'en-tête X-API-Key .
En-tête requis
X-API-Key: your_api_key_here

Corps de la requête

ParamètreTypeRequisDéfautDescription
order_idsstring[]Oui-Tableau d'identifiants de commande (UUID par défaut, ou ID de commande Shopify si use_shopify_order_id est true). Pour les ID de commande Shopify, fournir la partie numérique du GID de commande Shopify (par ex., pour 'gid://shopify/Order/450789469', utiliser '450789469').
channelsstring[]Oui-Canaux de notification à utiliser: "email", "sms", "whatsapp". Au moins un canal est requis pour éviter les notifications en masse accidentelles.
use_shopify_order_idbooleanNonfalseDéfinir à 'true' pour rechercher les commandes en utilisant des ID Shopify au lieu d'UUID. Extraire le numéro du format GID Shopify (gid://shopify/Order/450789469 → 450789469) et l'utiliser dans le tableau order_ids.

Réponse

Retourne les résultats détaillés des notifications pour chaque commande:
200 OK - Réponse de succès
{
  "message": "Bulk notification request processed",
  "sent": 2,
  "failed": 1,
  "results": [
    {
      "order_id": "uuid1",
      "success": true,
      "notifications_sent": {
        "email": "sent",
        "sms": "sent",
        "whatsapp": "skipped"
      }
    },
    {
      "order_id": "uuid2",
      "success": true,
      "notifications_sent": {
        "email": "sent",
        "sms": "failed",
        "whatsapp": "skipped"
      }
    },
    {
      "order_id": "invalid-uuid",
      "success": false,
      "error": "Order not found"
    }
  ]
}

Champs de réponse

Objet de réponse racine

ChampTypeDescription
messagestringMessage de confirmation
sentnumberNombre total de notifications envoyées avec succès
failednumberNombre total de notifications ayant échoué
resultsarrayTableau des résultats de notification par commande

Champs d'objet de résultat (par commande)

ChampTypeDescription
order_idstringUUID de la commande
successbooleanIndique si toutes les notifications ont réussi pour cette commande
notifications_sentobjectObjet contenant le statut de notification pour chaque canal
errorstringMessage d'erreur si la notification a échoué pour cette commande

Champs d'objet de notifications envoyées

ChampTypeDescription
emailstringStatut de notification email: "sent", "skipped", ou "failed"
smsstringStatut de notification SMS: "sent", "skipped", ou "failed"
whatsappstringStatut de notification WhatsApp: "sent", "skipped", ou "failed"

Exemples

Requête de base

Requête cURL
curl -X POST "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders/notify-bulk" \
  -H "X-API-Key: your_api_key_here" \
  -H "X-API-Version: 1.3" \
  -H "Content-Type: application/json" \
  -d '{
    "order_ids": ["uuid1", "uuid2", "uuid3"],
    "channels": ["email", "sms"]
  }'

Utilisation d'ID de commande Shopify

Requête cURL
curl -X POST "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders/notify-bulk" \
  -H "X-API-Key: your_api_key_here" \
  -H "X-API-Version: 1.3" \
  -H "Content-Type: application/json" \
  -d '{
    "order_ids": ["5460132438316", "5460132438317", "5460132438318"],
    "use_shopify_order_id": true,
    "channels": ["email", "sms"]
  }'

Limitation de débit

Ce point de terminaison est soumis à des limites de débit par minute et par jour en fonction de votre clé API. Les informations de limite de débit sont renvoyées dans les en-têtes de réponse:
  • X-RateLimit-Limit-Minute: Nombre maximum de requêtes par minute
  • X-RateLimit-Remaining-Minute: Requêtes restantes dans la minute en cours
  • X-RateLimit-Reset-Minute: Horodatage Unix de réinitialisation de la fenêtre minute
  • X-RateLimit-Limit-Day: Nombre maximum de requêtes par jour
  • X-RateLimit-Remaining-Day: Requêtes restantes dans le jour en cours
  • X-RateLimit-Reset-Day: Horodatage Unix de réinitialisation de la fenêtre jour
  • Retry-After: Secondes à attendre avant de réessayer (en cas de limitation)

Réponses d'erreur

400 Mauvaise requête

Corps de requête invalide ou échec de validation

400 Mauvaise requête
{
  "error": "Validation failed",
  "details": {
    "errors": [...]
  }
}

401 Non autorisé

Clé API manquante ou invalide

401 Non autorisé
{
  "error": "Unauthorized"
}

403 Interdit

La clé API manque de permissions requises

403 Interdit
{
  "error": "Insufficient permissions"
}

404 Non trouvé

Aucune commande valide trouvée pour les ID fournis

404 Non trouvé
{
  "error": "No valid orders found"
}

500 Erreur interne du serveur

Une erreur du serveur s'est produite

500 Erreur interne du serveur
{
  "error": "Internal server error",
  "details": {
    "message": "Error description"
  }
}