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: 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').
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.
fulfillment_selectionsobjetNon-Réponse facultative (v1.5) à un bloc fulfillment_readiness : { [shopOrderId]: { [fulfillmentOrderId]: locationId } }.

Réponse

Retourne une confirmation avec le nombre de commandes mises à jour:
200 OK - Réponse de succès
{
  "success": true,
  "data": {
    "message": "string",
    "updated_count": 0,
    "notifications": {
      "total_sent": 0,
      "total_failed": 0,
      "by_channel": {}
    },
    "orders_fulfilled": 0,
    "fulfillment_errors": [
      {
        "channel": "string",
        "code": "string",
        "message": "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
updated_countnumberNombre de commandes mises à jour avec succès
notificationsobjectObjet contenant les statistiques de notification
orders_fulfillednumberNombre de commandes dont l'exécution a été appliquée.
fulfillment_errorsarrayErreurs d'exécution ; une exécution bloquée ne s'applique jamais à moitié.
fulfillment_readinessobject | nullPrésent lorsque l'exécution est refusée ; bloc de choix pour la résoudre (v1.5 uniquement).
fulfillment_move_resultsarrayRésultat d'un déplacement demandé (v1.5 uniquement).

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
failednumberNombre de notifications ayant échoué pour ce canal

Champs d'un objet d'erreur d'exécution

ChampTypeDescription
channelstringCanal d'exécution en échec.
codestringCode d'erreur lisible par la machine.
messagestringMessage d'erreur lisible par l'humain.

Champs de l'objet de préparation d'exécution

ChampTypeDescription
requiredbooleanIndique si un choix d'emplacement est nécessaire.
codestringCode de refus lisible par la machine.
causestringCause sous-jacente.
messagestringMessage à montrer à l'opérateur.
orders_to_fulfillment_orders_mapobjectMap identifiant de commande → identifiants d'ordres d'exécution.
moveable_fulfillment_order_idsarrayOrdres d'exécution pouvant être déplacés.
location_choicesarrayEmplacements de destination candidats.
submit_withstringChamp de requête dans lequel envoyer la réponse — fulfillment_selections.

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: 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,"status_id":"8c1d4e2f-0a53-49b7-b6e4-7f2d9c3a5e10","sub_status_option_id":"8c1d4e2f-0a53-49b7-b6e4-7f2d9c3a5e10","fulfillment_selections":{}}'

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: 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,
    "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
{
  "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: canChangeOrderStatus"
}

404 Non trouvé

Aucune commande valide trouvée, ou statut/sous-statut non trouvé

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