Documentation J+SERVICES Guides Référence API

Contrat API — Prêt à vendre TiketMOMO

Routes concernées :

Sens de ready_to_sell

alignment.ready_to_sell signifie : le premier achat de test sur ce point de vente doit pouvoir réussir maintenant.

La valeur vient du feu vert strict TiketmomoStoreReadyService.evaluateGreenLight(managerId), par routeur. Elle vaut true uniquement quand le routeur du point (allocation_id) a green: true.

Le backend met ce verdict en cache mémoire 60 secondes par vendeur. Le cache est invalidé après une déclaration NAS, une synchronisation de forfaits depuis l’app et un remplissage de stock.

Si la vérification stricte est indisponible, la route répond quand même 200 et renvoie :

{
  "alignment": {
    "ready_to_sell": false,
    "readiness": {
      "green": false,
      "blocking": [
        { "code": "READINESS_UNAVAILABLE", "detail": "Vérification prêt à vendre indisponible." }
      ],
      "warnings": []
    }
  }
}

Champ readiness

Chaque point expose :

{
  "alignment": {
    "status": "NEEDS_ATTENTION",
    "ready_to_sell": false,
    "readiness": {
      "green": false,
      "blocking": [
        {
          "code": "DELIVERY_PATH_AVAILABLE",
          "detail": "Aucune voie de livraison : routeur non joignable et aucun ticket en stock."
        }
      ],
      "warnings": [{ "code": "OFFER_WITHOUT_STOCK", "detail": "300F-2d : stock 0, minimum 5." }]
    }
  }
}

Statut de gestion du routeur

Chaque routeur store-ready expose statut_gestion. Chaque point de vente expose le même objet à sa racine :

{
  "code": "GERE",
  "gere": true,
  "action_vendeur": null,
  "action_plateforme": [],
  "nas_tm_pose": true,
  "radius_nas_manquant": false
}

Codes possibles : VPN_JAMAIS_MONTE, HORS_LIGNE, IDENTIFIANTS_REFUSES, VPN_SANS_IDENTIFIANTS, GERE, GERE_PAR_APP. Les quatre premiers portent une action_vendeur (code, message_fr). GERE peut porter action_plateforme: [{ code: "RADIUS_NAS_A_DECLARER", message_fr: "NAS RADIUS à déclarer." }]; cette action est destinée à la plateforme. nas_tm_pose et radius_nas_manquant sont des indicateurs de GERE. Le statut GERE_PAR_APP signifie que le stock est distribué depuis l’application.

Si tunnel_status vaut AUTH_FAILED, le statut est IDENTIFIANTS_REFUSES, même lorsque les identifiants chiffrés sont absents : l’échec d’authentification donne l’action la plus précise.

La synthèse admin GET /api/v1/admin/tiketmomo/store-ready/summary renvoie les compteurs de toutes les allocations ACTIVE dans data.total et data.par_statut. La lecture parcourt les allocations par pages et groupe les lectures RADIUS.

Statuts alignment.status

Codes de blocage

Code Signification Action conseillée
LICENSE_ACTIVE_3D Licence TiketMOMO active depuis au moins 3 jours. Activer ou attendre la maturité de la licence.
STORE_PROFILE_PRESENT Boutique TiketMOMO trouvée. Créer ou restaurer le profil boutique.
STORE_SLUG_PRESENT Slug public de boutique présent. Renseigner le slug boutique.
ROUTER_ACTIVE_PRESENT Au moins un routeur actif existe. Associer ou réactiver un routeur.
PAYMENT_MERCHANT_CONFIGURED Encaissement vendeur configuré. Configurer l’agrégateur marchand du vendeur.
PAYMENT_PLATFORM_OK Encaissement plateforme disponible en repli. Corriger la configuration plateforme si elle est absente.
NAS_ID_PRESENT NAS du routeur présent. Déclarer ou corriger le NAS depuis l’app.
NAS_APPLIED NAS appliqué dans le registre. Finaliser la déclaration NAS.
DELIVERY_PATH_AVAILABLE Livraison directe possible ou au moins un ticket en stock sur ce routeur. Remettre le routeur joignable ou pousser des tickets.
READINESS_UNAVAILABLE Vérification stricte indisponible. Réessayer ; signaler si le blocage persiste.
BATCH_TOO_LARGE POST /api/v1/clients/vouchers/sync reçoit plus de 2 000 tickets. Découper le stock en plusieurs appels.

Warnings

Code Signification Action conseillée
PAYMENT_WEBHOOK_UNPROVEN Le webhook d’encaissement n’est pas encore prouvé. Vérifier le webhook marchand, sans bloquer l’affichage.
PROFILE_NAME_RECOMMENDATION Nom de profil vendable mais non conventionnel. Renommer au format prix-durée ou prix-data pour fiabiliser les liens.
OFFER_WITHOUT_STOCK Un forfait commercial existe mais n’a pas les 5 tickets requis. Ne pas proposer ce forfait dans le portail tant que son stock n’est pas rechargé.
ROUTER_REACHABLE La livraison directe n’est pas disponible (APP_BRIDGE, tunnel/cible ou identifiants manquants). Rétablir la liaison ou garder au moins un ticket en stock.
ROUTER_SEEN_RECENTLY La dernière activité tunnel est ancienne ou absente. Vérifier le routeur ; ce signal ne bloque pas si une voie de livraison existe.
ROUTER_CREDENTIALS_PRESENT Identifiants routeur absents. Les ajouter pour activer la livraison directe ; le stock peut assurer la vente.
MIN_3_OFFERS_STOCKED Moins de 3 forfaits distincts ont chacun 5 tickets disponibles. Augmenter le stock pour accélérer les ventes ; avertissement seulement.