POST

Changer les statuts d'articles en masse

Changer le statut de plusieurs articles vers le même statut cible en une seule opération. Maximum 100 articles par requête.

Point de terminaison

Requête HTTP
POST /v1/line-items/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
line_item_idsstring[]Oui-Tableau d'ID d'articles internes (1–100)
status_idstring (UUID)Oui-ID du statut cible
sub_status_option_idstring (UUID)Conditionnel-Requis lorsque le statut cible a des options de sous-statut

Réponse

Retourne la confirmation avec le nombre d'articles mis à jour:
200 OK - Réponse de succès
{
  "success": true,
  "data": {
    "message": "string",
    "affected_count": 0,
    "requested_count": 0,
    "notifications": {
      "total_sent": 0,
      "total_failed": 0,
      "errors": [
        {
          "channel": "string",
          "code": "string",
          "message": "string"
        }
      ]
    },
    "metafield_errors": []
  }
}

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
affected_countnumberNombre d'articles mis à jour avec succès
requested_countnumberNombre total d'articles demandés
invalid_line_itemsarrayTableau d'articles ayant échoué la validation (présent uniquement en cas de succès partiel)
notificationsobjectRésumé de l'envoi des notifications.
metafield_errorsarrayDéclaré comme { orderId, message }[] ; la reconstruction du métachamp ne rejette jamais, donc ce tableau est toujours vide en pratique.

Champs d'un objet de ligne invalide

ChampTypeDescription
lineItemIdstringID de l'article ayant échoué
errorstringMessage d'erreur pour cette ligne de commande.
codestringCode d'erreur lisible par la machine, lorsqu'il est disponible.

Champs d'objet de notifications

ChampTypeDescription
total_sentnumberNombre de notifications envoyées.
total_failednumberNombre de notifications en échec.
errorsarrayErreurs de notification par canal.

Champs d'un objet d'erreur de notification

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

Champs d'un objet d'erreur de métachamp

ChampTypeDescription
orderIdstringIdentifiant de la commande dont le métachamp a échoué.
messagestringMessage d'erreur lisible par l'humain.

Notes

  • •Maximum 100 articles par requête.
  • •Ne déclenche pas de notifications (contrairement au changement d'article individuel).
  • •Les champs méta sont reconstruits pour toutes les commandes parentes affectées.

Exemples

Requête de base

Requête cURL
curl -X POST "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/line-items/status-bulk" \
  -H "X-API-Key: ucos_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "X-API-Version: 1.5" \
  -H "Content-Type: application/json" \
  -d '{"line_item_ids":["8c1d4e2f-0a53-49b7-b6e4-7f2d9c3a5e10"],"status_id":"8c1d4e2f-0a53-49b7-b6e4-7f2d9c3a5e10","sub_status_option_id":"8c1d4e2f-0a53-49b7-b6e4-7f2d9c3a5e10"}'

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 Requête invalide

Statut d'article non activé, validation échouée, ou tous les articles ont échoué

400 Requête invalide
{
  "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é

Statut non trouvé

404 Non trouvé
{
  "success": false,
  "error": "Line item 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"
  }
}