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: ucos_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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
{
  "success": true,
  "data": {
    "message": "string",
    "total_orders": 0,
    "results": [
      {
        "order_id": "string",
        "notifications_sent": {
          "email": "string",
          "sms": "string",
          "whatsapp": "string"
        }
      }
    ]
  }
}

Champs de réponse

Objet de réponse racine

ChampTypeDescription
successbooleanToujours true pour une réponse réussie.
dataobjectCharge utile de le point de terminaison. Ses champs sont détaillés dans les tableaux ci-dessous.
messagestringMessage de confirmation
total_ordersnumberNombre de commandes traitées
resultsarrayTableau des résultats de notification par commande

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

ChampTypeDescription
order_idstringUUID de la commande
notifications_sentobjectObjet contenant le statut de notification pour chaque canal

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: ucos_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "X-API-Version: 1.5" \
  -H "Content-Type: application/json" \
  -d '{"order_ids":["8c1d4e2f-0a53-49b7-b6e4-7f2d9c3a5e10"],"use_shopify_order_id":false,"channels":["email"]}'

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: ucos_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "X-API-Version: 1.5" \
  -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
{
  "success": false,
  "error": "Validation failed",
  "details": {
    "errors": [
      {
        "code": "invalid_type",
        "expected": "string",
        "received": "undefined",
        "path": [
          "status_id"
        ],
        "message": "Required"
      }
    ]
  }
}

401 Non autorisé

Clé API manquante ou invalide

401 Non autorisé
{
  "success": false,
  "error": "Missing API key. Include it in the X-API-Key header"
}

403 Interdit

La clé API manque de permissions requises

403 Interdit
{
  "success": false,
  "error": "Insufficient permissions. Required: canSendNotifications"
}

404 Non trouvé

Aucune commande valide trouvée pour les ID fournis

404 Non trouvé
{
  "success": false,
  "error": "Order not found"
}

500 Erreur interne du serveur

Une erreur du serveur s'est produite

500 Erreur interne du serveur
{
  "success": false,
  "error": "Internal server error",
  "details": {
    "message": "An unexpected error occurred"
  }
}