{"openapi":"3.1.0","info":{"title":"API Gloria","version":"1.5.0","description":"API publique de Gloria. Le compte est déterminé par la clé. Chaque appel est journalisé et soumis à un quota. Les écritures se font en deux temps : un appel renvoie un aperçu et un numéro de validation, puis POST /v1/valider exécute exactement cet aperçu (une seule fois, sous 15 minutes). Seule exception : POST /v1/devis crée directement un brouillon, jamais envoyé. Les outils sous /v1/outils/{nom} s'appellent tous en POST avec un corps JSON ; ceux dont la réponse contient « validation » n'ont fait qu'un aperçu. Droits de clé : lecture, prospection, ventes, communication, gestion, messagerie."},"servers":[{"url":"https://gloria.glitchsolutions.fr"}],"components":{"securitySchemes":{"cle":{"type":"http","scheme":"bearer","description":"Clé créée par le propriétaire du compte dans Gloria (glo_live_…)."}}},"security":[{"cle":[]}],"paths":{"/v1/compte":{"get":{"operationId":"compte","summary":"Mon compte Gloria","description":"Compte Gloria connecté : nom, formule, personne connectée et modules actifs. À appeler en premier.","parameters":[],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/agents":{"get":{"operationId":"agents_etat","summary":"État des agents de prospection","description":"Ce qui tourne en ce moment et pourquoi : état des agents mail, appel et LinkedIn, ce qui est bloqué et la raison, plafonds du jour, quotas du mois, rythme de recherche.","parameters":[],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/recap-jour":{"get":{"operationId":"recap_jour","summary":"Récapitulatif du jour","description":"Ce que les agents ont fait sur une journée : mails envoyés, relances, réponses, invitations LinkedIn, appels, conversations, rendez-vous.","parameters":[{"name":"jour","in":"query","required":false,"description":"Jour voulu, format AAAA-MM-JJ (aujourd'hui par défaut).","schema":{"type":"string"}}],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/entonnoir":{"get":{"operationId":"entonnoir","summary":"Entonnoir de prospection","description":"Entonnoir de prospection (contactés, joints, intéressés, rendez-vous, signés) sur 30 jours ou depuis une date, plus les compteurs et les rendez-vous obtenus du mois.","parameters":[{"name":"depuis","in":"query","required":false,"description":"Date de début, format AAAA-MM-JJ.","schema":{"type":"string"}}],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/prospects":{"get":{"operationId":"prospects_lister","summary":"Liste des prospects","description":"Prospects du compte, du plus récent au plus ancien, avec statut, suivi mail et appel, prochain appel prévu et attribution.","parameters":[{"name":"q","in":"query","required":false,"description":"Recherche sur l'entreprise, le nom ou l'e-mail.","schema":{"type":"string"}},{"name":"statut","in":"query","required":false,"description":"Filtre sur le statut (ex. nouveau, rdv_pris, a_rappeler, devis).","schema":{"type":"string"}},{"name":"depuis","in":"query","required":false,"description":"Date de début, format AAAA-MM-JJ.","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Nombre de lignes (1 à 100, 25 par défaut).","schema":{"type":"integer"}},{"name":"decalage","in":"query","required":false,"description":"Nombre de lignes à sauter, pour la page suivante.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/prospects/{id}":{"get":{"operationId":"prospect_detail","summary":"Fiche d'un prospect","description":"Fiche complète d'un prospect : coordonnées, note expliquée, et historique de toutes les tentatives de contact (mail, LinkedIn, appel) avec leur résultat.","parameters":[{"name":"id","in":"path","required":true,"description":"Identifiant du prospect (champ id de prospects_lister).","schema":{"type":"string"}}],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/appels":{"get":{"operationId":"appels_lister","summary":"Appels de prospection","description":"Appels passés par l'agent vocal : issue, durée, résumé de la conversation, suite prévue (rappel).","parameters":[{"name":"statut","in":"query","required":false,"description":"Filtre sur l'issue ou le statut de l'appel.","schema":{"type":"string"}},{"name":"depuis","in":"query","required":false,"description":"Date de début, format AAAA-MM-JJ.","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Nombre de lignes (1 à 100, 25 par défaut).","schema":{"type":"integer"}},{"name":"decalage","in":"query","required":false,"description":"Nombre de lignes à sauter, pour la page suivante.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/rdv":{"get":{"operationId":"rdv_lister","summary":"Rendez-vous","description":"Rendez-vous à venir. Avec « depuis », tous les rendez-vous à partir de cette date, passés compris.","parameters":[{"name":"depuis","in":"query","required":false,"description":"Date de début, format AAAA-MM-JJ.","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Nombre de lignes (1 à 100, 25 par défaut).","schema":{"type":"integer"}}],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/devis":{"get":{"operationId":"devis_lister","summary":"Devis","description":"Devis du compte avec montants, statut, dates d'envoi, de lecture, d'acceptation et de signature, nombre de relances.","parameters":[{"name":"statut","in":"query","required":false,"description":"Filtre sur le statut du devis (brouillon, envoye, vu, accepte, refuse, facture…).","schema":{"type":"string"}},{"name":"depuis","in":"query","required":false,"description":"Date de début, format AAAA-MM-JJ.","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Nombre de lignes (1 à 100, 25 par défaut).","schema":{"type":"integer"}},{"name":"decalage","in":"query","required":false,"description":"Nombre de lignes à sauter, pour la page suivante.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}},"post":{"operationId":"devis_preparer","summary":"Préparer un devis","description":"Crée un devis en brouillon dans Gloria, jamais envoyé. Renvoie son numéro, son identifiant et ses totaux. Les montants viennent toujours de la personne ou du catalogue : Gloria ne chiffre jamais seule. L'envoi est un outil séparé (devis_envoyer).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contact_id":{"type":"string","description":"Contact de Mes contacts (préféré, voir contacts_rechercher)."},"destinataire":{"type":"object","description":"Si pas de contact_id, ou pour compléter le contact.","properties":{"societe":{"type":"string"},"prenom":{"type":"string"},"nom":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"adresse":{"type":"string"},"code_postal":{"type":"string"},"ville":{"type":"string"},"siren":{"type":"string"}}},"lignes":{"type":"array","maxItems":50,"description":"Prestations. Soit produit_id (catalogue) et quantite, soit une ligne libre avec designation et pu_ht. Les prix viennent toujours de la personne : n'en inventez jamais.","items":{"type":"object","properties":{"produit_id":{"type":"string"},"designation":{"type":"string"},"description":{"type":"string"},"pu_ht":{"type":"number","description":"Prix unitaire hors taxes, donné par la personne."},"quantite":{"type":"number"},"tva_taux":{"type":"number","description":"Taux en pourcentage : 20 pour 20 %."},"remise_pct":{"type":"number","description":"Remise sur la ligne en %, seulement si la personne l'a demandée."}}}},"remise":{"type":"object","description":"Remise sur tout le devis, seulement si la personne l'a demandée.","properties":{"type":{"type":"string","enum":["pourcentage","montant"]},"valeur":{"type":"number"}}},"message_client":{"type":"string","description":"Message d'accompagnement : 2 à 3 phrases, vouvoiement, sans montant, sans engagement de date ni de remise."},"acompte_pct":{"type":"number","description":"Acompte demandé à la signature, en %."},"validite_jours":{"type":"integer","description":"Durée de validité en jours (réglage du compte par défaut)."}},"required":["lignes"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/factures":{"get":{"operationId":"factures_lister","summary":"Factures","description":"Factures du compte : numéro, destinataire, montants, échéance, statut, déjà payé, relances. Réservé aux personnes habilitées aux finances.","parameters":[{"name":"statut","in":"query","required":false,"description":"Filtre sur le statut de la facture.","schema":{"type":"string"}},{"name":"depuis","in":"query","required":false,"description":"Date de début, format AAAA-MM-JJ.","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Nombre de lignes (1 à 100, 25 par défaut).","schema":{"type":"integer"}},{"name":"decalage","in":"query","required":false,"description":"Nombre de lignes à sauter, pour la page suivante.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}},"post":{"operationId":"facture_creer","summary":"Facturer un devis accepté","description":"Prépare la création d'une facture à partir d'un devis accepté. Ne crée RIEN tout de suite : renvoie un aperçu et un numéro de validation. Une facture est un document légal : son numéro est définitif et elle ne se supprime pas. Ne l'appelez « valider » qu'après l'accord explicite de la personne. La facture créée n'est pas envoyée (facture_envoyer).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"devis_id":{"type":"string","description":"Identifiant d'un devis accepté."},"type":{"type":"string","enum":["facture","acompte"],"description":"facture (solde, par défaut) ou acompte."},"acompte_pct":{"type":"number","description":"Pour un acompte : pourcentage du devis, entre 1 et 99."}},"required":["devis_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/relances":{"get":{"operationId":"relances_apercu","summary":"Documents à relancer","description":"Devis envoyés sans réponse et factures échues, avec pour chacun s'il peut être relancé maintenant et sinon pourquoi.","parameters":[{"name":"type","in":"query","required":false,"description":"Devis, factures, ou tous (par défaut).","schema":{"type":"string"}}],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}},"post":{"operationId":"relancer","summary":"Relancer des devis ou des factures","description":"Prépare la relance par e-mail des devis sans réponse ou des factures échues, avec le message de relance habituel du compte. Ne fait RIEN tout de suite : renvoie la liste des documents qui seraient relancés et un numéro de validation. Les relances ne partent qu'en appelant « valider » après l'accord de la personne.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["devis","factures","tous"],"description":"Par défaut : tous."},"ids":{"type":"array","items":{"type":"string"},"description":"Identifiants précis à relancer (sinon tous les documents éligibles du type)."}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/contacts":{"get":{"operationId":"contacts_rechercher","summary":"Recherche dans Mes contacts","description":"Recherche un contact par nom, entreprise, e-mail ou téléphone dans Mes contacts.","parameters":[{"name":"q","in":"query","required":true,"description":"Texte recherché (2 caractères minimum).","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Nombre de lignes (1 à 100, 25 par défaut).","schema":{"type":"integer"}}],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}},"post":{"operationId":"contacts_envoyer","summary":"Envoyer des contacts en prospection","description":"Prépare l'envoi de contacts en prospection. Ne fait RIEN tout de suite : renvoie un aperçu (nouveaux, déjà connus, bloqués, inutilisables, vers quel agent) et un numéro de validation. Montrez l'aperçu à la personne ; l'envoi ne se fait qu'en appelant « valider » après son accord. Les contacts validés entrent en prospection automatique : ils seront réellement contactés.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type_cible":{"type":"string","enum":["professionnel","particulier"],"description":"Nature des contacts. Les règles d'appel ne sont pas les mêmes pour des particuliers."},"contacts":{"type":"array","maxItems":200,"description":"200 contacts au plus. Chaque contact doit avoir au moins un e-mail ou un téléphone.","items":{"type":"object","properties":{"entreprise":{"type":"string"},"prenom":{"type":"string"},"nom":{"type":"string"},"email":{"type":"string"},"telephone":{"type":"string"},"ville":{"type":"string"},"code_postal":{"type":"string"},"site_web":{"type":"string"},"poste":{"type":"string"},"adresse":{"type":"string"},"siret":{"type":"string"},"secteur":{"type":"string"},"effectif":{"type":"string"}}}}},"required":["type_cible","contacts"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/accroches":{"get":{"operationId":"accroches_lire","summary":"Accroches en place","description":"Accroches actuelles de la prospection : messages de la séquence e-mail (avec les variables possibles), pitch et exemple de message LinkedIn, consigne complémentaire de l'agent d'appel. À lire avant de proposer une modification.","parameters":[],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}},"post":{"operationId":"accroche_proposer","summary":"Proposer une nouvelle accroche","description":"Prépare le remplacement d'une accroche de prospection (premier mail ou relance, LinkedIn, appel). Ne change RIEN tout de suite : renvoie l'avant, l'après, un exemple sur un vrai prospect, et un numéro de validation. Montrez l'avant et l'après à la personne ; l'accroche n'est activée qu'en appelant « valider » après son accord.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"canal":{"type":"string","enum":["mail","linkedin","appel"],"description":"Canal concerné."},"etape":{"type":"integer","description":"Mail seulement : numéro du message dans la séquence (1 = premier mail, par défaut)."},"objet":{"type":"string","description":"Mail seulement : nouvel objet (200 caractères au plus)."},"corps":{"type":"string","description":"Mail seulement : nouveau texte. Variables possibles : {{entreprise}}, {{ville}}, {{lieu}}, {{secteur}}, {{prenom}}, {{dirigeant}}, {{expediteur}}, {{accroche}}. Pas de question fermée en fin de message."},"pitch":{"type":"string","description":"LinkedIn seulement : ce que fait l'entreprise et pour qui (60 à 1 500 caractères)."},"exemple":{"type":"string","description":"LinkedIn seulement : un message complet qui donne le ton, avec le lien de rendez-vous du compte (80 à 1 500 caractères)."},"consigne":{"type":"string","description":"Appel seulement : consigne complémentaire donnée à l'agent d'appel, par exemple sa phrase d'ouverture (4 000 caractères au plus)."}},"required":["canal"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/publications":{"get":{"operationId":"publications_lister","summary":"Publications sur les réseaux","description":"Planning des publications sur les réseaux sociaux du compte : date prévue, réseau, sujet, texte, état (en préparation, à valider, validé, publié…).","parameters":[{"name":"depuis","in":"query","required":false,"description":"Début de la période, format AAAA-MM-JJ (il y a 7 jours par défaut).","schema":{"type":"string"}},{"name":"jusqu_a","in":"query","required":false,"description":"Fin de la période, format AAAA-MM-JJ (dans 21 jours par défaut).","schema":{"type":"string"}},{"name":"statut","in":"query","required":false,"description":"planifie = en préparation, brouillon = à valider, valide = partira à l'heure prévue, publie = en ligne, rejete = retirée.","schema":{"type":"string"}},{"name":"limite","in":"query","required":false,"description":"Nombre de lignes (1 à 100, 25 par défaut).","schema":{"type":"integer"}}],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}},"post":{"operationId":"publication_preparer","summary":"Préparer une publication","description":"Prépare une publication sur les réseaux sociaux du compte, tout de suite ou à une date choisie. Ne publie RIEN : renvoie un aperçu (réseaux retenus, moment, texte, visuels) et un numéro de validation. Montrez l'aperçu à la personne ; la publication n'est lancée ou programmée qu'en appelant « valider » après son accord. Une publication est publique et visible de tous.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"texte":{"type":"string","description":"Texte complet de la publication (10 à 3 000 caractères), sans élément à compléter entre crochets."},"reseaux":{"type":"array","items":{"type":"string","enum":["linkedin","facebook","instagram"]},"description":"Réseaux visés. Seuls ceux reliés au compte sont retenus."},"quand":{"type":"string","description":"« maintenant », ou une date et une heure de Paris au format AAAA-MM-JJTHH:MM. À demander à la personne si elle ne l'a pas dit."},"hashtags":{"type":"array","items":{"type":"string"},"description":"Mots-dièse, 10 au plus."},"media_ids":{"type":"array","items":{"type":"string"},"description":"Visuels de la médiathèque à joindre (voir medias_lister). Obligatoire pour Instagram."}},"required":["texte","reseaux","quand"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/medias":{"get":{"operationId":"medias_lister","summary":"Médiathèque","description":"Visuels disponibles dans la médiathèque du compte (identifiant, type, nom, description), à joindre à une publication.","parameters":[{"name":"limite","in":"query","required":false,"description":"Nombre de lignes (1 à 100, 25 par défaut).","schema":{"type":"integer"}}],"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/devis/envoyer":{"post":{"operationId":"devis_envoyer","summary":"Envoyer un devis","description":"Prépare l'envoi d'un devis en brouillon par e-mail, avec son PDF. Ne fait RIEN tout de suite : renvoie le destinataire, les lignes, les totaux et un numéro de validation. Montrez-les à la personne ; le devis ne part qu'en appelant « valider » après son accord. Un devis déjà envoyé ne repart pas.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"devis_id":{"type":"string","description":"Identifiant du devis en brouillon (devis_preparer ou devis_lister)."}},"required":["devis_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/factures/envoyer":{"post":{"operationId":"facture_envoyer","summary":"Envoyer une facture","description":"Prépare l'envoi d'une facture au client par e-mail, avec son PDF. Ne fait RIEN tout de suite : renvoie le destinataire, les montants et un numéro de validation. La facture ne part qu'en appelant « valider » après l'accord de la personne. Une facture déjà envoyée ne repart pas : utilisez les relances.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"facture_id":{"type":"string","description":"Identifiant de la facture (facture_creer ou factures_lister)."}},"required":["facture_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/publications/publier":{"post":{"operationId":"publication_publier","summary":"Publier maintenant une publication du planning","description":"Prépare la mise en ligne immédiate d'une publication déjà au planning. Ne publie RIEN tout de suite : renvoie le réseau, le texte et un numéro de validation. La publication ne part qu'en appelant « valider » après l'accord de la personne.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"post_id":{"type":"string","description":"Identifiant de la publication (publications_lister)."}},"required":["post_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/publications/retirer":{"post":{"operationId":"publication_retirer","summary":"Retirer une publication du planning","description":"Prépare le retrait d'une publication du planning (elle ne sera pas publiée). Ne fait RIEN tout de suite : renvoie un aperçu et un numéro de validation. Ne concerne pas une publication déjà en ligne, qui se supprime sur le réseau lui-même.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"post_id":{"type":"string","description":"Identifiant de la publication (publications_lister)."}},"required":["post_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/valider":{"post":{"operationId":"valider","summary":"Valider une action préparée","description":"Exécute une action préparée (tout outil dont la réponse contient un numéro « validation »), exactement telle qu'elle a été montrée dans l'aperçu. À n'appeler qu'après l'accord explicite de la personne sur cet aperçu. Une validation ne sert qu'une fois et expire au bout de 15 minutes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"validation":{"type":"string","description":"Numéro de validation renvoyé par l'aperçu."}},"required":["validation"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/affaires_pipeline":{"post":{"operationId":"affaires_pipeline","summary":"Vue d'ensemble des affaires","description":"Vue d'ensemble des affaires en cours : chiffres clés (en cours, chiffre d'affaires probable, à signer, renouvellements, gagné du trimestre, à statuer) et affaires par étape.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"portee":{"enum":["equipe","miennes"],"type":"string","description":"equipe (si vous y êtes habilité) ou miennes."},"recherche":{"type":"string","description":"Filtre sur le nom du client ou l'intitulé."}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/affaires_lister":{"post":{"operationId":"affaires_lister","summary":"Liste des affaires","description":"Liste d'affaires filtrée : ouvertes, à statuer (Gloria propose de les clore), à signer bientôt, renouvellements, gagnées, perdues, sans suite, archivées.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tri":{"enum":["recentes","montant","closing","echeance","avancement"],"type":"string"},"filtre":{"enum":["ouvertes","a_statuer","a_signer","renouvellements","gagnees","perdues","sans_suite","archivees"],"type":"string","description":"ouvertes par défaut."},"recherche":{"type":"string"}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/affaire_detail":{"post":{"operationId":"affaire_detail","summary":"Détail d'une affaire","description":"Détail d'une affaire : étape, montant, dates, prochaine action, devis liés et parcours (événements et notes).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"affaire_id":{"type":"string","description":"Identifiant de l'affaire (affaires_pipeline ou affaires_lister)."}},"required":["affaire_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/affaire_creer":{"post":{"operationId":"affaire_creer","summary":"Créer une affaire","description":"Crée une affaire, soit pour un contact existant (contact_id), soit avec les coordonnées d'un nouveau contact (au moins un e-mail ou un téléphone). Si un contact ressemblant existe, rien n'est créé : la réponse liste les candidats à faire confirmer.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nom":{"type":"string"},"email":{"type":"string"},"etape":{"enum":["Découverte","Étude","Proposition","Négociation","Conclusion"],"type":"string"},"prenom":{"type":"string"},"intitule":{"type":"string","description":"Objet de l'affaire."},"telephone":{"type":"string"},"contact_id":{"type":"string","description":"Contact existant (préféré, voir contacts_rechercher)."},"entreprise":{"type":"string"},"montant_estime":{"type":"number","description":"Montant hors taxes donné par la personne. N'en inventez pas."},"echeance_contrat":{"type":"string","description":"AAAA-MM-JJ."},"date_signature_prevue":{"type":"string","description":"AAAA-MM-JJ."},"nouveau_contact_confirme":{"type":"boolean","description":"true seulement si la personne a confirmé qu'il faut créer un nouveau contact malgré un contact ressemblant."}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/affaire_etape":{"post":{"operationId":"affaire_etape","summary":"Changer l'étape d'une affaire","description":"Déplace une affaire à une étape. Pour la gagner, la perdre ou la classer sans suite, utilisez affaire_cloturer.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"etape":{"enum":["Découverte","Étude","Proposition","Négociation","Conclusion"],"type":"string"},"affaire_id":{"type":"string"}},"required":["affaire_id","etape"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/affaire_modifier":{"post":{"operationId":"affaire_modifier","summary":"Modifier une affaire","description":"Modifie une affaire : intitulé, montant estimé, date de signature prévue, échéance du contrat, mise en pause.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"en_pause":{"type":"boolean"},"intitule":{"type":"string"},"affaire_id":{"type":"string"},"pause_motif":{"type":"string"},"montant_estime":{"type":"number","description":"Hors taxes, donné par la personne."},"echeance_contrat":{"type":"string","description":"AAAA-MM-JJ."},"date_signature_prevue":{"type":"string","description":"AAAA-MM-JJ."}},"required":["affaire_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/note_ajouter":{"post":{"operationId":"note_ajouter","summary":"Ajouter une note","description":"Ajoute une note interne sur une affaire (affaire_id) ou sur un contact (contact_id). La note reste dans Gloria, elle n'est envoyée à personne.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"texte":{"type":"string","description":"Compte rendu de visite ou d'appel, information client."},"affaire_id":{"type":"string"},"contact_id":{"type":"string"}},"required":["texte"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/affaire_cloturer":{"post":{"operationId":"affaire_cloturer","summary":"Clôturer une affaire","description":"Prépare la clôture d'une affaire : gagnée, perdue (motif obligatoire) ou sans suite. Ne fait RIEN tout de suite : renvoie un aperçu et un numéro de validation ; l'affaire n'est clôturée qu'en appelant « valider » après l'accord de la personne.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issue":{"enum":["gagnee","perdue","sans_suite"],"type":"string"},"motif":{"type":"string","description":"Obligatoire si l'affaire est perdue."},"affaire_id":{"type":"string"}},"required":["affaire_id","issue"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/affaire_statuer":{"post":{"operationId":"affaire_statuer","summary":"Répondre à une proposition de clôture","description":"Prépare la réponse à une proposition de Gloria sur une affaire « à statuer » (devis refusé ou expiré, par exemple). Ne fait RIEN tout de suite : aperçu et numéro de validation, puis « valider » après l'accord de la personne.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"motif":{"type":"string"},"accepter":{"type":"boolean","description":"true : clore comme Gloria le propose. false : l'affaire continue."},"affaire_id":{"type":"string"}},"required":["affaire_id","accepter"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/affaire_rouvrir":{"post":{"operationId":"affaire_rouvrir","summary":"Rouvrir une affaire","description":"Rouvre une affaire clôturée, à son étape d'avant la clôture.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"affaire_id":{"type":"string"}},"required":["affaire_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/affaire_archiver":{"post":{"operationId":"affaire_archiver","summary":"Archiver ou restaurer une affaire","description":"Prépare l'archivage d'une affaire, ou sa restauration. Ne fait RIEN tout de suite : aperçu et numéro de validation, puis « valider » après l'accord de la personne.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"motif":{"type":"string"},"archiver":{"type":"boolean","description":"true (par défaut) pour archiver, false pour restaurer."},"affaire_id":{"type":"string"}},"required":["affaire_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/affaire_epingler":{"post":{"operationId":"affaire_epingler","summary":"Épingler une affaire","description":"Épingle ou désépingle une affaire en tête de sa colonne, pour la personne connectée seulement.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"epingler":{"type":"boolean","description":"true (par défaut) pour épingler, false pour désépingler."},"affaire_id":{"type":"string"}},"required":["affaire_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/taches_lister":{"post":{"operationId":"taches_lister","summary":"Choses à faire","description":"Choses à faire : tâches posées et tâches déduites par Gloria (relances, rappels, rendez-vous à statuer), avec échéance et retard.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pour_moi":{"type":"boolean","description":"true (par défaut) : seulement mes tâches."},"contact_id":{"type":"string","description":"Tâches liées à ce contact."}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/tache_creer":{"post":{"operationId":"tache_creer","summary":"Ajouter une tâche","description":"Ajoute une tâche à faire dans Gloria (titre, détail, échéance, contact lié).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"titre":{"type":"string","description":"Verbe d'action : « Relancer Dupont pour le devis »."},"detail":{"type":"string"},"echeance":{"type":"string","description":"AAAA-MM-JJ."},"contact_id":{"type":"string"}},"required":["titre"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/tache_terminer":{"post":{"operationId":"tache_terminer","summary":"Terminer une tâche","description":"Coche une tâche posée : faite (par défaut) ou abandonnée avec un motif.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"motif":{"type":"string"},"statut":{"enum":["faite","abandonnee"],"type":"string"},"tache_id":{"type":"string","description":"Identifiant venu de taches_lister. Les tâches déduites, sans identifiant, se terminent en faisant l'action elle-même."}},"required":["tache_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/tache_reporter":{"post":{"operationId":"tache_reporter","summary":"Reporter une tâche","description":"Change l'échéance d'une tâche posée.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"echeance":{"type":"string","description":"Nouvelle date, AAAA-MM-JJ."},"tache_id":{"type":"string"}},"required":["tache_id","echeance"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/contact_fiche":{"post":{"operationId":"contact_fiche","summary":"Fiche d'un contact","description":"Fiche complète d'un contact de Mes contacts : coordonnées, entreprise, statut, notes, personne en charge.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contact_id":{"type":"string","description":"Identifiant du contact (contacts_rechercher)."}},"required":["contact_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/contact_historique":{"post":{"operationId":"contact_historique","summary":"Historique d'un contact","description":"Tout ce qui s'est passé avec un contact, du plus récent au plus ancien : mails, appels, rendez-vous, devis, messages.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contact_id":{"type":"string"}},"required":["contact_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/contact_affaires":{"post":{"operationId":"contact_affaires","summary":"Affaires d'un contact","description":"Affaires liées à un contact, en cours et passées.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contact_id":{"type":"string"}},"required":["contact_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/contact_creer":{"post":{"operationId":"contact_creer","summary":"Créer un contact","description":"Ajoute un contact dans Mes contacts. Il n'entre pas en prospection (pour cela, utilisez contacts_envoyer).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nom":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string","description":"Téléphone."},"ville":{"type":"string"},"prenom":{"type":"string"},"entreprise":{"type":"string"},"code_postal":{"type":"string"}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/contact_modifier":{"post":{"operationId":"contact_modifier","summary":"Modifier un contact","description":"Corrige ou complète la fiche d'un contact. Seuls les champs fournis changent. Pour ajouter une note, utilisez note_ajouter.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nom":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"poste":{"type":"string"},"ville":{"type":"string"},"prenom":{"type":"string"},"site_web":{"type":"string"},"contact_id":{"type":"string"},"entreprise":{"type":"string"},"code_postal":{"type":"string"},"linkedin_url":{"type":"string"}},"required":["contact_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/contact_ne_plus_contacter":{"post":{"operationId":"contact_ne_plus_contacter","summary":"Ne plus contacter","description":"Prépare l'arrêt de toute prospection vers un contact qui ne veut plus être sollicité. Ne fait RIEN tout de suite : aperçu et numéro de validation, puis « valider » après l'accord de la personne.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"motif":{"type":"string"},"contact_id":{"type":"string"}},"required":["contact_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/rdv_preparer":{"post":{"operationId":"rdv_preparer","summary":"Préparer un rendez-vous","description":"Fiche de préparation d'un rendez-vous : avec qui, où, et tout le dossier du client (échanges, devis en attente, factures, affaires, points en suspens).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jour":{"type":"string","description":"AAAA-MM-JJ, si pas d'identifiant."},"heure":{"type":"string","description":"HH:MM, si pas d'identifiant."},"rdv_id":{"type":"string","description":"Identifiant du rendez-vous (rdv_lister)."}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}},"/v1/outils/rdv_resultat":{"post":{"operationId":"rdv_resultat","summary":"Noter le résultat d'un rendez-vous","description":"Enregistre ce qu'a donné un rendez-vous passé : tenu, lapin, annulé ou reporté, avec un commentaire.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rdv_id":{"type":"string"},"resultat":{"enum":["tenu","lapin","annule","reporte"],"type":"string","description":"lapin = la personne n'est pas venue."},"commentaire":{"type":"string"}},"required":["rdv_id","resultat"],"additionalProperties":false}}}},"responses":{"200":{"description":"Réponse de l'outil","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Clé absente, inconnue ou révoquée"},"403":{"description":"Accès refusé ou droit manquant sur la clé"},"429":{"description":"Quota dépassé"}}}}}}