POST

Changer le statut d'article

Changer le statut d'un article individuel. Déclenche les notifications lorsqu'elles sont configurées sur le statut cible.

Point de terminaison

Requête HTTP
POST /v1/line-items/:lineItemId/status

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

Paramètres d'URL

ParamètreTypeRequisDéfautDescription
lineItemIdstring (UUID)Oui-ID interne de l'article (SyncedLineItem.id)

Corps de la requête

ParamètreTypeRequisDéfautDescription
status_idstring (UUID)Oui-ID du statut cible
sub_status_option_idstring (UUID)Conditionnel-Requis lorsque le statut cible a un groupe de sous-statuts avec des options

Réponse

Retourne la confirmation avec le statut d'article mis à jour:
200 OK - Réponse de succès
{
  "success": true,
  "data": {
    "message": "string",
    "line_item": {
      "id": "string",
      "shopify_line_item_id": "string",
      "name": "string",
      "quantity": 0,
      "title": null,
      "variant_title": null,
      "sku": null,
      "custom_status": {
        "id": "string",
        "name": "string",
        "color": "string"
      },
      "custom_sub_status": null
    },
    "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
line_itemobjectObjet d'article mis à jour
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'objet d'article de ligne

ChampTypeDescription
idstringID interne de l'article
shopify_line_item_idstringGID de la ligne de commande Shopify.
namestringNom de la ligne de commande.
quantitynumberQuantité.
titlestring | nullTitre du produit.
variant_titlestring | nullTitre de la variante, ou null.
skustring | nullUGS, ou null.
custom_statusobjectObjet du statut actuel, ou null.
custom_sub_statusobject | nullObjet du sous-statut actuel, ou null.

Champs d'objet de statut

ChampTypeDescription
idstringIdentifiant du statut
namestringNom d'affichage du statut
colorstringCode couleur hexadécimal du statut

Objet de sous-statut

ChampTypeDescription
idstringIdentifiant du sous-statut
namestringNom d'affichage du sous-statut

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.

Exemples

Requête de base

Requête cURL
curl -X POST "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/line-items/8c1d4e2f-0a53-49b7-b6e4-7f2d9c3a5e10/status" \
  -H "X-API-Key: ucos_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "X-API-Version: 1.5" \
  -H "Content-Type: application/json" \
  -d '{"line_item_id":"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 violation de la chaîne de produits

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é

Article, statut ou sous-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"
  }
}