Djust 3.85.0 - Semaine du 29 Sept 2025

Périmètre

API

📘

NEW

Operations

  • Modification d’une Opération (métadonnées)

Contexte :

Les opérateurs et les customer users habilités peuvent désormais modifier les métadonnées d’une opération existante, tant qu’elle est en statut DRAFT.

Cette évolution permet de corriger ou d’ajuster les informations planifiées avant la publication d’une opération — par exemple mettre à jour le nom, la description, les dates ou les champs personnalisés.

⚙️ La fonctionnalité est protégée par le Feature Flag global OPERATIONS. 🔒 Elle ne permet pas de modifier les produits, variants ou comptes associés à l’opération.

Fonctionnement métier :

  • Opérateur (dj-client: OPERATOR) : peut modifier toute opération en DRAFT, sans contrainte de store.
  • Customer User (dj-client: ACCOUNT) :
    • doit avoir le droit OPERATIONS_UPDATE = true,
    • doit être owner de l’opération (ownerId = customerUserId),
    • doit être rattaché au store effectif (dj-store si fourni, sinon store par défaut du tenant).
  • Les trois conditions sont cumulatives.
  • Les opérations en statut ACTIVE ou INACTIVE ne peuvent pas être modifiées.
  • Si une endDate est fournie, elle doit être postérieure ou égale à startDate.

API correspondante :

✏️ Mise à jour d’une opération existante

ADM-OPERATION-200 - PUT /operations/{operationId}

{
  "names": {
    "en-GB": "Black Friday - Updated",
    "fr-FR": "Black Friday - Mis à jour"
  },
  "descriptions": {
    "en-GB": "New details added for this campaign",
    "fr-FR": "Nouveaux détails ajoutés pour cette campagne"
  },
  "startDate": "2025-11-22T00:00:00Z",
  "endDate": "2025-11-29T23:59:59Z",
  "customFieldValues": [
    {
      "customFieldId": "cf_1234",
      "customFieldValue": "10%"
    }
  ]
}

  • Suppression d’une Opération

Contexte :

Les opérateurs et les customer users habilités peuvent désormais supprimer une opération, y compris ses métadonnées (nom, type, code), lorsque celle-ci n’est plus utilisée.

Cette action permet de nettoyer les opérations obsolètes ou erronées, tout en garantissant la sécurité des données grâce à des contrôles stricts d’usage et d’accès.

La suppression :

  • est définitive et irréversible,
  • est protégée par le Feature Flag OPERATIONS,
  • n’est autorisée que si l’opération n’est liée à aucun panier ni commande.

Fonctionnement métier :

  • Opérateur (dj-client: OPERATOR)
    • Peut supprimer toute opération, quel que soit son statut (DRAFT, ACTIVE, INACTIVE).
    • Pas de contrainte liée au store.
    • Suppression bloquée si l’opération est liée à un panier ou une commande.
  • Customer User (dj-client: ACCOUNT)
    • Doit cumuler les trois conditions suivantes :
      • Droit OPERATIONS_DELETE = true,
      • Être owner de l’opération (ownerId = customerUserId),
      • Être rattaché au store effectif (dj-store si fourni, sinon store par défaut du tenant).
    • Si l’une des conditions n’est pas remplie → accès refusé (403).
  • Effets en cascade :
    • Si la suppression est autorisée, les associations aux produits et aux comptes sont également supprimées automatiquement.

API correspondante :

🗑️ Suppression d’une opération

ADM-OPERATION-300 - DELETE /operations/{operationId}


  • Activation / Désactivation d’une Opération

Contexte :

Les opérateurs et les customer users habilités peuvent désormais activer ou désactiver une opération afin de la rendre visible ou non pour les acheteurs concernés.

Cette fonctionnalité offre plus de flexibilité dans la gestion du cycle de vie d’une campagne commerciale, tout en garantissant la cohérence avec les droits d’accès et le Feature Flag OPERATIONS.

  • Une opération ACTIVE devient immédiatement visible pour les comptes associés.
  • Une opération INACTIVE reste enregistrée, mais n’est plus affichée ni accessible côté acheteur.
  • Il est impossible de repasser en DRAFT une fois l’opération publiée.
  • Le changement de statut est indépendant des dates (startDate / endDate).
  • L’action est soumise au Feature Flag global OPERATIONS.

Fonctionnement métier :

  • Opérateur (dj-client: OPERATOR) :
    • Peut toujours activer ou désactiver une opération, sans restriction de store.
  • Customer User (dj-client: ACCOUNT) :
    • Doit disposer du droit OPERATIONS_UPDATE_STATUS = true,
    • Être owner de l’opération (ownerId = customerUserId),
    • Être rattaché au store effectif (dj-store si fourni, sinon store par défaut du tenant).
    • Les trois conditions sont cumulatives et obligatoires.
  • Transitions autorisées :
    • DRAFT → ACTIVE
    • DRAFT → INACTIVE
    • ACTIVE → INACTIVE
    • INACTIVE → ACTIVE

❌Aucune opération ne peut redevenir DRAFT après publication. 🔄 Ces transitions sont indépendantes des dates de début et de fin de l’opération.


API correspondante :

✏️ Mise à jour du statut d’une opération

ADM-OPERATION-201 - PATCH /operations/{operationId}

{ 
  "status": "ACTIVE"
}

  • Suppression de variants d’une Opération

Contexte :

Les opérateurs et les customer users habilités peuvent désormais supprimer un ou plusieurs variants d’une opération, afin de maintenir un assortiment à jour ou corriger des erreurs avant publication.

Cette évolution permet de gérer plus facilement le contenu d’une opération en préparation, sans avoir à recréer l’ensemble de la configuration.

⚙️ L’action est protégée par le Feature Flag OPERATIONS et limitée aux opérations au statut DRAFT. 🔒 La suppression est possible uniquement pour :

  • les opérateurs (accès complet, sans contrainte de store),
  • les customer users qui cumulent les trois conditions suivantes :
    • être owner de l’opération (ownerId = customerUserId),
    • disposer du droit OPERATIONS_UPDATE,
    • être rattachés au store effectif (dj-store si fourni, sinon store par défaut du tenant).

Fonctionnement métier :

  • Les variants sont identifiés par leurs identifiants externes (variantIds).
  • Les IDs non valides ou non liés à l’opération sont ignorés ; si aucun variant n’est valide, la suppression échoue.
  • La suppression ne prend effet que sur les opérations en DRAFT ; une opération active ou inactive ne peut pas être modifiée.
  • Cette action n’affecte pas les locales, car elle agit uniquement sur des identifiants techniques.

API correspondante :

🗑️ Suppression d’un ou plusieurs variants d’une opération

ADM-OPERATION-350 - DELETE /operations/{operationId}/lines

[
  "VAR-001",
  "VAR-002",
  "VAR-XYZ"
]