Journal des modifications de l'API

Suivez tous les changements apportés à l'API Ultimate Custom Order Status

Convention de nommage des versions

L'API utilise un système de versionnement à deux niveaux:

Versions majeures (basées sur l'URL)

Les versions majeures avec des changements incompatibles nécessitent un changement d'URL:

  • /api/v1/* - Version 1.x
  • /api/v2/* - Version 2.x (future)

Versions mineures (basées sur l'en-tête)

Les versions mineures avec des changements rétrocompatibles utilisent l'en-tête X-API-Version:

  • X-API-Version: 1.0 - Version 1.0 (de base, sans support des statuts complémentaires)
  • X-API-Version: 1.1 - Version 1.1 (inclut le support des statuts complémentaires)
  • X-API-Version: 1.2 - Version 1.2 (filtrage des commandes brouillon, jours fériés)
  • X-API-Version: 1.3 - Version 1.3 (inclut le support des flux de travail)
  • X-API-Version: 1.4 - Version 1.4 (actuelle, suivi de statut par article)

Versions

v1.4 - Mars 2026

Date de sortie: 12 mars 2026

Méthode d'accès: Par défaut (aucun en-tête requis) ou X-API-Version: 1.4

Nouvelles fonctionnalités

Suivi de statut par article

Ajout du suivi de statut au niveau des articles à l'API externe. Les marchands qui suivent les statuts au niveau des articles individuels peuvent maintenant gérer ces statuts via trois nouveaux points de terminaison.

Nouveaux points de terminaison:

  • POST /v1/line-items/:lineItemId/status - Changer le statut d'un article individuel avec support des notifications
  • POST /v1/line-items/status-bulk - Changer les statuts de plusieurs articles en masse (jusqu'à 100)
  • POST /v1/line-items/clear-status - Effacer les statuts d'un ou plusieurs articles (jusqu'à 100)

Réponse de changement de statut d'article

Réponse de changement de statut d'article
{
  "success": true,
  "data": {
    "message": "Line item status updated successfully",
    "line_item": {
      "id": "li-uuid-123",
      "status": {
        "id": "uuid-status-1",
        "name": "In Production",
        "color": "#FFA500"
      },
      "sub_status": {
        "id": "uuid-substatus-1",
        "name": "Cutting"
      }
    }
  }
}

Mode de spécificité du statut

Le paramètre statusSpecificity de la boutique détermine quels points de terminaison sont disponibles. Les modes sont: order (uniquement les points de terminaison au niveau commande), line_item (uniquement les points de terminaison au niveau article), ou combined (les deux fonctionnent indépendamment).

Comportements clés

  • Les changements de statut d'article individuel déclenchent des notifications lorsqu'elles sont configurées sur le statut cible. Les points de terminaison en masse et d'effacement ne déclenchent pas de notifications.
  • Après tout changement de statut d'article, le champ méta de la commande parente est automatiquement reconstruit pour refléter l'état agrégé des articles.
  • L'application de la chaîne de produits s'applique indépendamment par article — chaque article doit suivre l'ordre de progression de statut configuré.

Guide de migration

  • Aucun changement incompatible — tous les points de terminaison et réponses v1.3 sont inchangés
  • Les points de terminaison d'articles sont disponibles par défaut dans v1.4
  • Vérifiez le mode de spécificité du statut de la boutique avant d'appeler les points de terminaison d'articles
  • Les ID d'articles utilisent des UUID internes (SyncedLineItem.id), pas les GID Shopify
  • Entièrement rétrocompatible — les intégrations existantes continuent de fonctionner

Exemple de requête

v1.4 Request
curl -X POST "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/line-items/li-uuid-123/status" \
  -H "X-API-Key: your_api_key_here" \
  -H "X-API-Version: 1.4" \
  -H "Content-Type: application/json" \
  -d '{
    "status_id": "uuid-status-1",
    "sub_status_option_id": "uuid-substatus-1"
  }'

Changements incompatibles

Aucun — tous les points de terminaison v1.0–v1.3 sont inchangés.

v1.3 - Mars 2026

Date de sortie: 4 mars 2026

Méthode d'accès: X-API-Version: 1.3

Nouvelles fonctionnalités

Support des flux de travail

Ajout du support des flux de travail à travers l'API. Les flux de travail permettent de définir des séquences ordonnées de statuts que les commandes suivent, permettant des pipelines de traitement structurés.

Nouveau point de terminaison:

  • GET /api/v1/workflows - Lister tous les flux de travail configurés avec leurs statuts associés

Réponse des flux de travail

Réponse des flux de travail
{
  "workflows": [
    {
      "id": "uuid-workflow-1",
      "name": "Fulfillment",
      "description": "Standard order fulfillment pipeline",
      "color": "#4A90E2",
      "order": 1,
      "statuses": [
        {
          "id": "uuid-status-1",
          "name": "Processing",
          "public_name": null,
          "use_public_name": false,
          "display_name": "Processing",
          "color": "#FFA500",
          "order": 1,
          "is_independent": false,
          "is_addon": false
        },
        {
          "id": "uuid-status-2",
          "name": "Shipped",
          "public_name": "On its way",
          "use_public_name": true,
          "display_name": "On its way",
          "color": "#00FF00",
          "order": 2,
          "is_independent": false,
          "is_addon": false
        }
      ],
      "status_count": 2
    }
  ],
  "workflows_enabled": true,
  "enforce_workflow_order": false,
  "summary": {
    "total": 1,
    "total_statuses": 2
  }
}

Champs de flux de travail sur les commandes

Les commandes incluent maintenant les champs workflow_id et workflow_name indiquant le flux de travail assigné à la commande.

Points de terminaison affectés:

  • GET /api/v1/orders - Les commandes incluent maintenant les champs workflow_id et workflow_name
  • GET /api/v1/orders/:order_id - Le détail de la commande inclut maintenant les champs workflow_id et workflow_name

Changements de réponse

Commande avec champs de flux de travail
{
  "id": "order-uuid",
  "shopify_order_id": "gid://shopify/Order/123456",
  "name": "#1001",
  "workflow_id": "uuid-workflow-1",
  "workflow_name": "Fulfillment",
  "custom_status": {
    "id": "uuid-status-1",
    "name": "Processing",
    "color": "#FFA500"
  }
}

Champs de flux de travail sur les statuts

Les statuts incluent maintenant les champs workflow_id et workflow_name indiquant le flux de travail auquel le statut appartient.

Points de terminaison affectés:

  • GET /api/v1/statuses - Les statuts incluent maintenant les champs workflow_id et workflow_name, plus le résumé inclut workflows_enabled
  • GET /api/v1/statuses/:status_id - Le détail du statut inclut maintenant les champs workflow_id et workflow_name

Changements de réponse

Statut avec champs de flux de travail
{
  "id": "uuid-status-1",
  "name": "Processing",
  "public_name": null,
  "use_public_name": false,
  "display_name": "Processing",
  "color": "#FFA500",
  "order": 1,
  "is_independent": false,
  "is_addon": false,
  "workflow_id": "uuid-workflow-1",
  "workflow_name": "Fulfillment"
}

Filtrage par flux de travail

Ajout du paramètre de requête workflow_id au point de terminaison Lister les commandes, permettant de filtrer les commandes par flux de travail assigné.

Filtrer les commandes par flux de travail
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders?workflow_id=uuid-workflow-1&page=1&limit=25" \
  -H "X-API-Key: your_api_key_here" \
  -H "X-API-Version: 1.3"

Permission requise

Le point de terminaison Lister les flux de travail nécessite la permission existante canViewStatuses.

  • canViewStatuses - Requise pour accéder au point de terminaison des flux de travail

Guide de migration

  • Ajoutez l'en-tête X-API-Version: 1.3 pour utiliser cette version explicitement
  • Les nouveaux champs workflow_id et workflow_name sont nullables - les intégrations existantes continuent de fonctionner sans modification
  • Le point de terminaison Lister les flux de travail utilise la permission existante canViewStatuses — aucune nouvelle permission nécessaire
  • Utilisez le nouveau paramètre de requête workflow_id sur Lister les commandes pour filtrer par flux de travail
  • Entièrement rétrocompatible - les intégrations existantes continuent de fonctionner

Exemple de requête

v1.3 Request
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders?workflow_id=uuid-workflow-1&page=1&limit=25" \
  -H "X-API-Key: your_api_key_here" \
  -H "X-API-Version: 1.3"

Changements incompatibles

Aucun - cette version est rétrocompatible. Les nouveaux champs sont nullables et n'affectent pas les intégrations existantes.

v1.2 - Décembre 2025

Date de sortie: 9 décembre 2025

Méthode d'accès: X-API-Version: 1.2

Nouvelles fonctionnalités

Filtrage des commandes brouillon

Ajout de la possibilité de filtrer les commandes par type (commandes régulières, commandes brouillon ou toutes). Les commandes brouillon peuvent maintenant être gérées aux côtés des commandes régulières via l'API.

Points de terminaison affectés :

  • GET /api/v1/orders - La liste des commandes prend maintenant en charge le paramètre de requête order_type (REGULAR, DRAFT, ALL)
  • GET /api/v1/orders/:order_id - La recherche de commande détecte maintenant automatiquement les commandes brouillon vs régulières lors de l'utilisation des identifiants Shopify

Changements de la liste des commandes

Le nouveau paramètre de requête order_type permet de filtrer par type de commande :

  • REGULAR - REGULAR - Retourne uniquement les commandes régulières (par défaut en v1.0/v1.1)
  • DRAFT - DRAFT - Retourne uniquement les commandes brouillon
  • ALL - ALL - Retourne les commandes régulières et brouillon (par défaut en v1.2)

Exemples

Exemples
# Get all orders (both regular and draft) - v1.2 default
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders?order_type=ALL" \
  -H "X-API-Key: your_api_key_here" \
  -H "X-API-Version: 1.2"

# Get only regular orders
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders?order_type=REGULAR" \
  -H "X-API-Key: your_api_key_here" \
  -H "X-API-Version: 1.2"

# Get only draft orders
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders?order_type=DRAFT" \
  -H "X-API-Key: your_api_key_here" \
  -H "X-API-Version: 1.2"

Changements de la commande détaillée

Lors de l'utilisation de use_shopify_order_id=true, l'API essaie maintenant automatiquement les formats d'identifiant de commande régulière et brouillon, facilitant l'intégration.

Exemple : Recherche de commandes par identifiant Shopify
# Look up a draft order by Shopify ID - v1.2 automatically tries both formats
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders/1234567890?use_shopify_order_id=true" \
  -H "X-API-Key: your_api_key_here" \
  -H "X-API-Version: 1.2"

Exclusion des jours fériés

Ajout du drapeau skip_holidays à la configuration max_duration des statuts. Lorsqu'il est activé, les jours fériés seront exclus du calcul des délais de durée des statuts, similaire à la fonctionnalité existante skip_weekends.

Points de terminaison affectés :

  • GET /api/v1/statuses - La liste des statuts inclut maintenant skip_holidays dans l'objet max_duration
  • GET /api/v1/statuses/:status_id - Le détail du statut inclut maintenant skip_holidays dans l'objet max_duration

Changements de réponse

Les réponses de statut incluent maintenant le champ skip_holidays dans l'objet max_duration :

Exemple de réponse
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Fulfillment",
  "color": "#2948ff",
  "is_independent": false,
  "is_addon": false,
  "max_duration": {
    "enabled": true,
    "seconds": 432000,
    "skip_weekends": true,
    "skip_holidays": true,
    "show_public_overdue_date": true
  }
}

Améliorations du format de réponse en masse

Mise à jour du format de réponse des opérations en masse avec un rapport succès/échec plus clair et des informations d'erreur détaillées pour les entrées échouées.

Points de terminaison affectés :

  • POST /api/v1/orders/status-bulk - Mise à jour en masse des statuts avec format de réponse amélioré
  • POST /api/v1/orders/notify-bulk - Notification en masse avec format de réponse amélioré

Changements de mise à jour en masse des statuts :

  • updated_count - Nombre total de commandes mises à jour avec succès
  • failed - Nombre de commandes dont la mise à jour a échoué
  • success - Booléen indiquant si toutes les mises à jour ont réussi
  • failed_entries - Tableau d'objets avec order_id et détails d'erreur pour chaque échec

Changements de notification en masse :

  • total_orders - Nombre total de commandes dans la demande de notification
  • failed - Nombre de commandes dont la notification a échoué
  • success - Booléen indiquant si toutes les notifications ont réussi
  • failed_entries - Tableau d'objets avec order_id et détails d'erreur pour chaque échec

Exemples de réponses en masse

Exemples de réponses en masse
# Old format (before v1.2 update)
{
  "message": "Statuses updated successfully",
  "updated_count": 2,
  "results": [
    {
      "order_id": "uuid1",
      "status_id": "status-uuid",
      "status_name": "Processing"
    }
  ]
}

# New format (v1.2 update)
{
  "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"
    }
  ]
}

Guide de migration

  • Ajoutez l'en-tête X-API-Version: 1.2 pour utiliser cette version explicitement
  • Le paramètre order_type est optionnel - par défaut ALL en v1.2
  • Les recherches par identifiant Shopify fonctionnent maintenant pour les commandes régulières et brouillon sans modification
  • Le champ skip_holidays est maintenant disponible dans les configurations max_duration des statuts
  • Mettez à jour la gestion des réponses d'opérations en masse pour utiliser les nouveaux champs success, failed et failed_entries
  • Vérifiez le booléen success pour une détermination rapide de succès/échec au lieu d'analyser les résultats individuels
  • Entièrement rétrocompatible - les intégrations existantes continuent de fonctionner

Exemple de requête

v1.2 Request
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders?order_type=DRAFT" \
  -H "X-API-Key: your_api_key_here" \
  -H "X-API-Version: 1.2"

Changements incompatibles

Aucun - cette version est rétrocompatible. Le comportement par défaut de order_type a changé de REGULAR à ALL, mais c'est additif (retourne plus de données, pas moins).

v1.1 - Novembre 2025

Date de sortie: 14 novembre 2025

Méthode d'accès: Par défaut (aucun en-tête requis) ou X-API-Version: 1.1

Nouvelles fonctionnalités

Support des statuts complémentaires

Ajout du support des statuts complémentaires sur tous les points de terminaison liés aux commandes. Les statuts complémentaires peuvent être assignés en plus des statuts principaux.

Points de terminaison affectés:

  • GET /api/v1/orders - La liste des commandes inclut maintenant un tableau addon_statuses lorsque l'en-tête X-API-Version: 1.1 est présent
  • GET /api/v1/orders/:order_id - Le détail de la commande inclut maintenant un tableau addon_statuses lorsque l'en-tête X-API-Version: 1.1 est présent
  • GET /api/v1/statuses - La liste des statuts inclut maintenant un indicateur is_addon lorsque l'en-tête X-API-Version: 1.1 est présent

Changements de réponse

Les commandes incluent maintenant un champ addon_statuses avec support optionnel des sous-statuts:

Changements de réponse
{
  "id": "uuid",
  "status": {
    "id": "status-uuid",
    "name": "Processing",
    "color": "#2948ff"
  },
  "addon_statuses": [
    {
      "id": "addon-uuid-1",
      "name": "Quality Check",
      "color": "#10b981",
      "sub_status": {
        "id": "addon-sub-uuid",
        "name": "Passed"
      }
    },
    {
      "id": "addon-uuid-2",
      "name": "Packaging",
      "color": "#f59e0b",
      "sub_status": null
    }
  ]
}

Les statuts incluent maintenant des indicateurs de classification:

Classification des statuts
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Processing",
  "is_independent": false,
  "is_addon": false
}

Guide de migration

  • Aucune modification de code requise - entièrement rétrocompatible
  • Pour accéder aux données des statuts complémentaires, ajoutez l'en-tête X-API-Version: 1.1 à vos requêtes
  • Les requêtes sans en-tête continuent de retourner le format v1.0
  • Aucune modification requise pour l'authentification ou la limitation de débit

Exemple de requête:

v1.1 Request
curl -X GET 'https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders' \
  -H 'Authorization: Bearer ucos_live_your_api_key' \
  -H 'X-API-Version: 1.1'

Changements incompatibles

Aucun - cette version est rétrocompatible.

v1.0 - Version initiale

Date de sortie: Octobre 2025

Méthode d'accès: Ajoutez l'en-tête X-API-Version: 1.0 aux requêtes

Fonctionnalités

  • Liste des commandes avec pagination, filtrage et recherche
  • Récupération des détails de commande
  • Liste des statuts avec support des sous-statuts
  • Mises à jour des statuts de commande
  • Support des opérations en masse
  • Déclenchement de notifications

Points de terminaison disponibles:

  • GET /api/v1/orders
  • GET /api/v1/orders/:order_id
  • POST /api/v1/orders/:order_id/status
  • POST /api/v1/orders/status-bulk
  • GET /api/v1/statuses
  • GET /api/v1/statuses/:status_id
  • POST /api/v1/orders/:order_id/notify
  • POST /api/v1/orders/notify-bulk

Notes:

N'inclut pas le support des statuts complémentaires

Support

Pour des questions sur le versionnement de l'API ou une assistance pour la migration: