POST

Mise à jour de statut en masse

Mettre à jour le statut personnalisé pour plusieurs commandes en une seule requête.

Point de terminaison

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

Authentification

Ce point de terminaison nécessite une clé API valide avec la permission canChangeOrderStatus . 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').
status_idstringOui-L'UUID du statut personnalisé
sub_status_option_idstringConditionnel-L'UUID de l'option de sous-statut. Requis si le statut a des options de sous-statut.
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 une confirmation avec le nombre de commandes mises à jour:
200 OK - Réponse de succès
{
  "message": "Statuses updated successfully",
  "updated": 2,
  "failed": 1,
  "results": [
    {
      "order_id": "uuid1",
      "success": true,
      "status_id": "status-uuid",
      "status_name": "Processing"
    },
    {
      "order_id": "uuid2",
      "success": true,
      "status_id": "status-uuid",
      "status_name": "Processing"
    },
    {
      "order_id": "invalid-uuid",
      "success": false,
      "error": "Order not found"
    }
  ],
  "notifications": {
    "total_sent": 4,
    "total_failed": 0,
    "by_channel": {
      "email": {
        "sent": 2,
        "failed": 0
      },
      "sms": {
        "sent": 2,
        "failed": 0
      }
    }
  }
}

Champs de réponse

Objet de réponse racine

ChampTypeDescription
messagestringMessage de confirmation
updatednumberultimateCustomOrderStatus.statusBulk.response.fields.updated
failednumberNombre de notifications ayant échoué pour ce canal
resultsarrayultimateCustomOrderStatus.statusBulk.response.fields.results
notificationsobjectObjet contenant les statistiques de notification

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

ChampTypeDescription
order_idstringultimateCustomOrderStatus.statusBulk.response.fields.orderId
successbooleanultimateCustomOrderStatus.statusBulk.response.fields.success
status_idstringultimateCustomOrderStatus.statusBulk.response.fields.statusId
status_namestringultimateCustomOrderStatus.statusBulk.response.fields.statusName
errorstringultimateCustomOrderStatus.statusBulk.response.fields.error

Champs d'objet de notifications

ChampTypeDescription
total_sentnumberNombre total de notifications envoyées avec succès pour toutes les commandes
total_failednumberNombre total de notifications ayant échoué pour toutes les commandes
by_channelobjectObjet avec les statistiques par canal (par ex., email, sms)

Champs d'objet de statistiques par canal

ChampTypeDescription
sentnumberNombre de notifications envoyées avec succès pour ce canal
failednumberultimateCustomOrderStatus.statusBulk.response.fields.channelFailed

Exemples

Requête de base (UUID)

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

Utilisation d'ID de commande Shopify

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

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, échec de validation ou le statut nécessite un sous-statut

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, ou statut/sous-statut non trouvé

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"
  }
}