Référence API

Référence complète des 15 modalités IA et 82 endpoints. Tous les endpoints utilisent JSON via REST avec authentification JWT.

Authentification

Tous les endpoints protégés nécessitent un jeton JWT valide. Obtenez-en un en appelant l'un des quatre endpoints de connexion, puis incluez-le dans chaque requête :

En-tête HTTP
Authorization: Bearer <votre-jeton>

Les jetons sont émis pour l'un des quatre rôles : admin, entreprise, employé ou client. Chaque rôle a des niveaux d'accès différents, notamment pour les endpoints de base de données.

Requêtes

Tous les endpoints acceptent et retournent du JSON sauf indication contraire (ex. : les téléversements utilisent multipart/form-data, les téléchargements de documents retournent du binaire). L'URL de base pour toutes les requêtes est :

URL de base
https://api.jamiiai.com

La documentation Swagger interactive est disponible à /docs lors de l'exécution du serveur API.

Chat IA

IA conversationnelle propulsée par GPT-4o-mini avec historique de conversation persistant, prompts système personnalisés et support du streaming. Chaque session utilisateur maintient son propre contexte.

POST /chat Bearer

Envoyer un message et recevoir une réponse générée par l'IA. L'historique de conversation est maintenu côté serveur.

Corps de la requête

ChampTypeRequisDescription
messagestringOuiLe message à envoyer à l'IA

Réponse

JSON
{
  "response": "L'informatique quantique utilise des qubits..."
}
GET /chat/history Bearer

Retourner l'historique complet de la conversation pour la session en cours.

Réponse

JSON
{
  "history": [
    {"role": "user", "content": "Bonjour"},
    {"role": "assistant", "content": "Bonjour ! Comment puis-je vous aider ?"}
  ]
}
POST /chat/reset Bearer

Effacer l'historique de conversation et recommencer à zéro.

Réponse

JSON
{"message": "Conversation history cleared"}
PUT /chat/system-prompt Bearer

Mettre à jour le prompt système qui guide le comportement de l'IA.

Corps de la requête

ChampTypeRequisDescription
promptstringOuiLe nouveau prompt système

Réponse

JSON
{"message": "System prompt updated", "prompt": "Tu es un pirate..."}

Chat Vocal

Pipeline audio complet — transcription parole-en-texte avec OpenAI Whisper, synthèse texte-en-parole, et conversations audio de bout en bout. Téléversez des fichiers audio et recevez des réponses textuelles ou audio.

POST /voice/audio-to-audio Bearer

Envoyer de l'audio, obtenir la transcription + réponse IA texte + réponse audio. Pipeline complet STT → Chat → TTS.

Requête

multipart/form-data avec un champ file contenant le fichier audio.

Réponse

JSON
{
  "transcription": "Qu'est-ce que l'IA ?",
  "response": "L'IA signifie...",
  "audio": "<MP3 encodé en base64>"
}
POST /voice/speech-to-text Bearer

Transcrire un fichier audio en texte avec OpenAI Whisper.

Requête

multipart/form-data avec un champ file.

Réponse

JSON
{"text": "Bonjour, comment allez-vous ?"}
POST /voice/text-to-speech Bearer

Convertir du texte en audio MP3 avec OpenAI TTS.

Corps de la requête

ChampTypeRequisDescription
textstringOuiTexte à synthétiser

Réponse

Audio MP3 binaire (audio/mpeg).

POST /voice/text-to-audio Bearer

Envoyer du texte, obtenir la réponse IA texte + réponse audio (Chat → TTS).

Corps de la requête

ChampTypeRequisDescription
textstringOuiMessage à envoyer

Réponse

JSON
{
  "response": "Voici ma réponse...",
  "audio": "<MP3 encodé en base64>"
}

Chat Vidéo

Extraire l'audio et les images des vidéos téléversées avec ffmpeg. Transcrire l'audio vidéo, converser sur le contenu vidéo et décrire les images avec GPT-4 Vision.

POST /video/video-to-audio Bearer

Téléverser une vidéo → extraire l'audio → chat IA → réponse texte + audio.

Requête

multipart/form-data avec un champ file contenant la vidéo.

POST /video/video-to-text Bearer

Téléverser une vidéo → extraire l'audio → transcrire en texte avec Whisper.

POST /video/text-to-video-reply Bearer

Envoyer du texte → chat → TTS → réponse texte + audio.

Corps de la requête

ChampTypeRequisDescription
textstringOuiMessage à envoyer
POST /video/video-to-description Bearer

Téléverser une vidéo → extraire une image à 1 seconde → décrire avec AI Vision.

Assistant Code

Générer, réviser, expliquer et refactoriser du code avec l'IA et des prompts système spécifiques pour des résultats ciblés et de haute qualité. Supporte tous les langages de programmation.

POST /code/generate Bearer

Générer du code à partir d'une description en langage naturel.

Corps de la requête

ChampTypeRequisDescription
descriptionstringOuiCe qu'il faut générer
languagestringNonLangage cible (ex. « python »)
POST /code/review Bearer

Réviser du code et retourner des commentaires sur les bugs, problèmes de sécurité et améliorations.

Corps de la requête

ChampTypeRequisDescription
codestringOuiCode à réviser
POST /code/explain Bearer

Expliquer ce qu'un morceau de code fait en langage simple.

Corps de la requête

ChampTypeRequisDescription
codestringOuiCode à expliquer
POST /code/refactor Bearer

Refactoriser du code pour une meilleure qualité, lisibilité et maintenabilité.

Corps de la requête

ChampTypeRequisDescription
codestringOuiCode à refactoriser
instructionsstringNonInstructions de refactorisation spécifiques

Agent IA

Exécution de tâches autonome avec outils intégrés. L'agent planifie, appelle des outils, observe les résultats et itère jusqu'à complétion. Outils intégrés : calculator, datetime_now, text_transform, json_extract.

POST /agent/task Bearer

Soumettre une tâche pour exécution autonome par l'agent IA avec appel d'outils.

Corps de la requête

ChampTypeRequisDescription
taskstringOuiDescription de la tâche

Réponse

JSON
{
  "result": "La réponse est 15.",
  "tools_available": ["calculator", "datetime_now", "text_transform", "json_extract"]
}
GET /agent/history Bearer

Retourner l'historique de conversation et d'utilisation des outils de l'agent.

POST /agent/reset Bearer

Effacer l'historique de conversation de l'agent.

Intelligence Image

Décrire des images, répondre à des questions visuelles avec GPT-4 Vision, et générer des images à partir de prompts textuels avec DALL-E 3. Supporte PNG, JPEG, GIF et WebP.

POST /image/image-to-text Bearer

Décrire une image téléversée avec OpenAI Vision.

Requête

multipart/form-data avec un champ file.

Réponse

JSON
{"description": "Un coucher de soleil sur une chaîne de montagnes..."}
POST /image/image-to-answer Bearer

Répondre à une question spécifique sur une image téléversée.

Requête

multipart/form-data avec les champs file et question.

POST /image/text-to-image Bearer

Générer une image à partir d'un prompt textuel avec DALL-E 3.

Corps de la requête

ChampTypeRequisDescription
promptstringOuiDescription de l'image
sizestringNon1024x1024, 1024x1792 ou 1792x1024
qualitystringNonstandard ou hd

Réponse

JSON
{"url": "https://oaidalleapi...", "prompt": "Un chat avec un chapeau haut-de-forme"}

Génération de Documents

Transformer du texte en documents Word professionnels, présentations PowerPoint et fichiers PDF — prêts à télécharger. Utilise python-docx, python-pptx et fpdf2.

POST /document/text-to-word Bearer

Générer un document Word (.docx) à partir de texte. Retourne un fichier binaire à télécharger.

Corps de la requête

ChampTypeRequisDescription
textstringOuiContenu du document
titlestringNonTitre du document
POST /document/text-to-powerpoint Bearer

Générer une présentation PowerPoint (.pptx) à partir de texte. Le texte long est automatiquement réparti sur plusieurs diapositives.

POST /document/text-to-pdf Bearer

Générer un document PDF (.pdf) à partir de texte.

Intelligence Base de données

Posez des questions en français — Jamii AI les traduit en SQL, les exécute de manière sécurisée et retourne des réponses lisibles. Contrôle d'accès à quatre rôles au niveau des lignes : les admins voient tout, les employés sont restreints aux tables autorisées, les clients sont filtrés par leurs propres données.

POST /db/chat Bearer

Requête base de données en langage naturel avec contrôle d'accès au niveau des lignes par rôle.

Corps de la requête

ChampTypeRequisDescription
questionstringOuiQuestion en langage naturel

Réponse

JSON
{"answer": "Il y a eu 1 247 commandes passées en février."}
GET /db/schema Bearer

Retourner le schéma de la base de données (tables et colonnes).

POST /db/query Admin

Exécuter une requête SELECT ou SHOW brute. Rôle admin/entreprise uniquement.

Corps de la requête

ChampTypeRequisDescription
querystringOuiInstruction SQL SELECT ou SHOW
POST /db/chat/reset Bearer

Effacer l'historique de conversation du chatbot BD.

POST /db/select_for_customer Bearer

Sélectionner une base de données de travail après la connexion client.

GET /db/companies Admin/Employé

Lister les entreprises auxquelles l'utilisateur appartient.

POST /db/select_for_company Admin/Employé

Sélectionner une base de données d'entreprise par numéro d'entreprise.

Texte IA

Traduire du texte entre langues, générer des résumés avec style configurable, analyser le sentiment avec scores de confiance, et extraire des données structurées à partir de texte non structuré — le tout propulsé par GPT.

POST /text/translate Bearer

Traduire du texte vers une langue cible.

Corps de la requête

ChampTypeRequisDescription
textstringOuiTexte à traduire
target_languagestringOuiLangue cible (ex. « Français »)
source_languagestringNonLangue source (auto-détectée si omise)

Réponse

JSON
{"translated": "Hello world", "target_language": "English"}
POST /text/summarize Bearer

Résumer du texte avec style et longueur configurables.

Corps de la requête

ChampTypeRequisDescription
textstringOuiTexte à résumer
max_lengthstringNonLongueur cible (ex. « 100 mots »)
stylestringNonStyle de résumé (ex. « concis », « détaillé »)

Réponse

JSON
{"summary": "Un résumé concis du texte d'entrée..."}
POST /text/sentiment Bearer

Analyser le sentiment d'un texte — retourne l'étiquette de sentiment, le score de confiance et l'explication.

Corps de la requête

ChampTypeRequisDescription
textstringOuiTexte à analyser

Réponse

JSON
{
  "sentiment": "positif",
  "confidence": 0.95,
  "explanation": "Langage fortement positif détecté"
}
POST /text/extract Bearer

Extraire des données structurées à partir de texte non structuré selon une description de schéma.

Corps de la requête

ChampTypeRequisDescription
textstringOuiTexte source
schema_descriptionstringOuiChamps à extraire (ex. « nom, email, téléphone »)

Réponse

JSON
{
  "data": {"nom": "Alice", "email": "alice@exemple.com", "telephone": "555-1234"}
}

Modération de contenu

Détectez instantanément le contenu nuisible, haineux, violent ou sexuel avec le modèle de modération d'OpenAI. Retourne des indicateurs par catégorie et des scores de confiance pour un filtrage de contenu granulaire.

POST /moderation/check Bearer

Vérifier si un texte contient du contenu nuisible avec l'API de Modération OpenAI.

Corps de la requête

ChampTypeRequisDescription
textstringOuiTexte à modérer

Réponse

JSON
{
  "flagged": false,
  "categories": {},
  "category_scores": {"violence": 0.0012, "hate": 0.0003}
}

Embeddings

Générer des vecteurs d'embedding pour la recherche sémantique, le clustering et la recommandation. Calculer la similarité cosinus entre deux textes. Utilise le modèle text-embedding-3-small d'OpenAI.

POST /embeddings/generate Bearer

Générer un vecteur d'embedding pour une chaîne de texte.

Corps de la requête

ChampTypeRequisDescription
textstringOuiTexte à encoder

Réponse

JSON
{
  "embedding": [0.012, -0.034, 0.056, ...],
  "dimensions": 1536
}
POST /embeddings/similarity Bearer

Calculer la similarité cosinus entre deux textes (0 à 1).

Corps de la requête

ChampTypeRequisDescription
text1stringOuiPremier texte
text2stringOuiDeuxième texte

Réponse

JSON
{"text1": "chat", "text2": "chaton", "score": 0.92}

Intelligence Web

Récupérer n'importe quelle URL publique, extraire son contenu textuel et obtenir un résumé alimenté par l'IA ou poser des questions spécifiques sur la page. Inclut une protection SSRF qui bloque les IP privées et les schémas non-HTTP.

POST /web/summarize Bearer

Récupérer une URL et résumer son contenu, ou répondre à une question spécifique à son sujet.

Corps de la requête

ChampTypeRequisDescription
urlstringOuiURL publique à récupérer (http/https uniquement)
questionstringNonQuestion spécifique sur le contenu de la page

Réponse

JSON
{
  "url": "https://exemple.com/article",
  "summary": "L'article traite de..."
}

Mémoire persistante

Stocker, rappeler sémantiquement et gérer des mémoires persistantes avec recherche basée sur les embeddings. Idéal pour construire des assistants IA contextuels qui se souviennent des préférences utilisateur et des interactions passées.

POST /memory/store Bearer

Stocker une mémoire avec des métadonnées optionnelles. Un vecteur d'embedding est généré automatiquement pour le rappel sémantique.

Corps de la requête

ChampTypeRequisDescription
contentstringOuiContenu de la mémoire à stocker
metadataobjectNonMétadonnées clé-valeur optionnelles

Réponse

JSON
{
  "id": 0,
  "content": "L'utilisateur préfère le mode sombre",
  "metadata": {"category": "preferences"}
}
POST /memory/recall Bearer

Rappeler les mémoires les plus pertinentes par similarité sémantique à une requête.

Corps de la requête

ChampTypeRequisDescription
querystringOuiRequête de recherche
top_kintegerNonNombre max de résultats (défaut : 5)

Réponse

JSON
{
  "memories": [
    {"id": 0, "content": "L'utilisateur préfère le mode sombre", "metadata": {}, "score": 0.92}
  ],
  "count": 1
}
POST /memory/clear Bearer

Effacer toutes les mémoires stockées.

Réponse

JSON
{"message": "All memories cleared"}

Base de connaissances

Ingestion de documents par espace de noms (texte et URL) avec génération augmentée par récupération (RAG) pour des Q&R alimentées par l'IA. Créez des bases de connaissances personnalisées pour toute application web.

POST /kb/ingest Bearer

Ingérer du texte brut dans un espace de noms. Le texte est automatiquement découpé et vectorisé.

Corps de la requête

ChampTypeRequisDescription
namespacestringOuiNom de la base de connaissances
textstringOuiContenu textuel à ingérer
sourcestringNonLibellé source optionnel

Réponse

JSON
{"namespace": "mon-app", "chunks_added": 3, "source": "faq.md"}
POST /kb/ingest-url Bearer

Récupérer une URL, extraire le texte, découper, vectoriser et stocker. Protection SSRF.

Corps de la requête

ChampTypeRequisDescription
namespacestringOuiNom de la base de connaissances
urlstringOuiURL publique (http/https uniquement)

Réponse

JSON
{"namespace": "mon-app", "chunks_added": 12, "source": "https://example.com/faq"}
POST /kb/query Bearer

Interroger une base de connaissances. Utilise le RAG pour trouver les passages pertinents et générer une réponse.

Corps de la requête

ChampTypeRequisDescription
namespacestringOuiBase de connaissances à interroger
questionstringOuiQuestion à répondre
top_kintegerNonPassages max (défaut 5, max 20)

Réponse

JSON
{"answer": "Les retours sont acceptés sous 30 jours.", "sources": ["faq.md"], "namespace": "mon-app"}
GET /kb/list Bearer

Lister tous les espaces de noms avec leur nombre de passages.

Réponse

JSON
{"knowledge_bases": [{"namespace": "mon-app", "chunks": 15}]}
POST /kb/clear Bearer

Supprimer tous les documents d'un espace de noms.

Corps de la requête

ChampTypeRequisDescription
namespacestringOuiBase de connaissances à vider

Réponse

JSON
{"message": "Knowledge base 'mon-app' cleared."}

Afrique Lang

Traduction et détection de langues africaines, voix STT/TTS avec indices linguistiques, chat contextuel sur l’Afrique, modération de contenu pour langues africaines et liste des langues supportées.

POST /africa/translate Bearer

Traduire du texte entre langues africaines (swahili, yoruba, haoussa, amharique, wolof, lingala, zoulou, etc.).

Corps de la requête

ChampTypeRequisDescription
textstringOuiTexte à traduire
target_languagestringOuiLangue cible (ex. « Swahili »)
source_languagestringNonIndice de langue source

Réponse

JSON
{"translated": "Habari, u hali gani?", "target_language": "Swahili"}
POST /africa/detect-language Bearer

Détecter dans quelle langue africaine un texte est écrit.

Corps de la requête

ChampTypeRequisDescription
textstringOuiTexte à identifier

Réponse

JSON
{"language": "Swahili", "confidence": 0.95, "script": "Latin", "region": "Afrique de l'Est"}
GET /africa/languages Bearer

Lister toutes les langues africaines supportées.

Réponse

JSON
{"languages": ["Swahili", "Yoruba", "Hausa", "Amharic", "Wolof", "Lingala", "Zulu", "..."]}
POST /africa/transcribe Bearer

Transcrire de l'audio avec support des langues africaines. Envoyez l'audio en données multipart avec un indice language optionnel (ISO-639-1).

Champs du formulaire

ChampTypeRequisDescription
filefichierOuiFichier audio (mp3, wav, webm)
languagestringNonCode ISO-639-1 (ex. « sw », « yo », « ha »)

Réponse

JSON
{"text": "Habari yako"}
POST /africa/synthesize Bearer

Convertir du texte en langue africaine en parole. Retourne des octets audio/mpeg.

Corps de la requête

ChampTypeRequisDescription
messagestringOuiTexte à synthétiser
POST /africa/chat Bearer

Discuter avec une IA experte en géographie, histoire, cultures, économie et actualités africaines.

Corps de la requête

ChampTypeRequisDescription
messagestringOuiQuestion sur l'Afrique

Réponse

JSON
{"response": "Les principales exportations du Kenya comprennent le thé, le café, les produits horticoles..."}
POST /africa/chat/reset Bearer

Effacer l'historique de conversation du chat contextuel africain.

Réponse

JSON
{"message": "African chat history cleared."}
POST /africa/moderate Bearer

Modérer du contenu en langues africaines, détectant les discours haineux, le tribalisme et la désinformation.

Corps de la requête

ChampTypeRequisDescription
textstringOuiTexte à vérifier

Réponse

JSON
{"flagged": false, "reason": "", "language_detected": "Swahili", "categories": {"hate_speech": false, "tribalism": false, "misinformation": false, "violence": false, "discrimination": false}}

Afrique Vie

Formatage et conversion de devises africaines, analyse de transactions d’argent mobile (M-Pesa, MTN MoMo, Orange Money), conseiller agricole, éducation et préparation aux examens, et guidance juridique et réglementaire.

POST /africa/currency/format Bearer

Formater un montant dans une devise africaine (CFA, Naira, Shilling, Rand, Cedi, etc.).

Corps de la requête

ChampTypeRequisDescription
amountfloatOuiMontant numérique
currency_codestringOuiCode devise ISO (ex. « KES »)

Réponse

JSON
{"formatted": "KSh 1 500,50", "currency_code": "KES", "currency_name": "Shilling kényan", "amount": 1500.5}
POST /africa/currency/convert Bearer

Estimer la conversion entre devises africaines.

Corps de la requête

ChampTypeRequisDescription
amountfloatOuiMontant à convertir
source_currencystringOuiCode ISO source
target_currencystringOuiCode ISO cible

Réponse

JSON
{"source_amount": 1000, "source_currency": "KES", "target_amount": 3150, "target_currency": "NGN", "rate": 3.15, "note": "Taux approximatif"}
GET /africa/currencies Bearer

Lister toutes les devises africaines supportées.

Réponse

JSON
{"currencies": {"KES": "Shilling kényan", "NGN": "Naira nigérian", "ZAR": "Rand sud-africain", "...": "..."}}
POST /africa/mobile-money/ask Bearer

Poser une question sur les services d'argent mobile (M-Pesa, MTN MoMo, Orange Money, Airtel Money, EcoCash).

Corps de la requête

ChampTypeRequisDescription
questionstringOuiQuestion sur l'argent mobile

Réponse

JSON
{"response": "Pour envoyer de l'argent via M-Pesa, composez *334# et suivez les instructions..."}
POST /africa/mobile-money/parse Bearer

Analyser un message de transaction d'argent mobile ou un code USSD en données structurées.

Corps de la requête

ChampTypeRequisDescription
messagestringOuiSMS de transaction ou code USSD

Réponse

JSON
{"provider": "M-Pesa", "transaction_type": "send", "amount": 500, "currency": "KES", "recipient": "+254712345678", "reference": "QH45G7Z2", "status": "completed", "raw_text": "Confirmé. Ksh500 envoyé à +254712345678"}
POST /africa/agriculture/ask Bearer

Poser des questions sur l’agriculture, les cultures et l’élevage africains.

Corps de la requête

ChampTypeRequisDescription
questionstringOuiQuestion sur l’agriculture

Réponse

JSON
{"response": "Le manioc est l'une des cultures les plus importantes en Afrique subsaharienne..."}
POST /africa/education/ask Bearer

Questions d’éducation et de préparation aux examens africains (WAEC, JAMB, KCSE, Baccalauréat).

Corps de la requête

ChampTypeRequisDescription
questionstringOuiQuestion d’étude ou d’examen
exam_systemstringNonSystème d’examen cible

Réponse

JSON
{"response": "Dans le programme de biologie du WAEC, la photosynthèse est..."}
POST /africa/legal/ask Bearer

Questions sur le droit des affaires et la réglementation en Afrique.

Corps de la requête

ChampTypeRequisDescription
questionstringOuiQuestion juridique ou réglementaire
countrystringNonPays (ex: Nigeria, Kenya)

Réponse

JSON
{"response": "Au Nigeria, la loi CAMA exige que..."}

Afrique Culture

Proverbes et sagesse africains par thème ou culture, et contes — légendes et folklore de tout le continent.

POST /africa/proverbs/get Bearer

Obtenir un proverbe africain par thème ou culture.

Corps de la requête

ChampTypeRequisDescription
themestringNonThème (sagesse, patience, unité)
culturestringNonCulture ou ethnie

Réponse

JSON
{"proverb": "Si tu veux aller vite, va seul...", "language": "Igbo", "culture": "Igbo", "meaning": "...", "theme": "unité"}
POST /africa/storytelling/tell Bearer

Raconter un conte, une légende ou une histoire folklorique africaine.

Corps de la requête

ChampTypeRequisDescription
topicstringOuiSujet ou personnage
culturestringNonContexte culturel

Réponse

JSON
{"story": "Il y a longtemps, au pays des Ashanti..."}

Streaming (SSE)

Streaming en temps réel des réponses de chat token par token via Server-Sent Events. Idéal pour construire des interfaces de chat réactives qui affichent le texte au fur et à mesure de sa génération.

POST /chat/stream Bearer

Streamer une réponse de chat token par token. Retourne text/event-stream.

Corps de la requête

ChampTypeRequisDescription
messagestringOuiMessage à envoyer

Réponse (flux SSE)

Flux d'événements
data: Il
data: était
data: une
data: fois
data: [DONE]

Traitement par lots

Traiter plusieurs messages de chat en un seul appel API. Chaque message est traité indépendamment — le chatbot est réinitialisé entre les messages pour éviter toute contamination croisée du contexte.

POST /batch/chat Bearer

Envoyer plusieurs messages et recevoir des réponses individuelles pour chacun.

Corps de la requête

ChampTypeRequisDescription
messagestableau de stringsOuiListe de messages (min 1)

Réponse

JSON
{
  "results": ["Réponse au premier...", "Réponse au second..."],
  "count": 2
}

Endpoints d'authentification

Authentification JWT à quatre rôles avec contrôle d'accès au niveau des lignes. Admins, entreprises, employés et clients obtiennent chacun un accès adapté. Toutes les informations utilisent la table customers_credential avec correspondance insensible à la casse du secret_answer.

POST /auth/customer/login Public

Connexion client — valide contre customers_credential + customers, nécessite is_verified = 'yes'.

Corps de la requête

ChampTypeRequisDescription
usernamestringOuiNom d'utilisateur (userN)
secret_answerstringOuiRéponse secrète (insensible à la casse)

Réponse

JSON
{
  "access_token": "eyJhbGciOi...",
  "token_type": "bearer",
  "role": "customer",
  "firstname": "Alice"
}
POST /auth/admin/login Public

Connexion admin — nécessite company_employee_links.is_admin = 1 et status = 1.

POST /auth/employee/login Public

Connexion employé — nécessite company_employee_links.status = 1. Le JWT inclut allow_tables_list.

POST /auth/company/login Public

Connexion entreprise — nécessite customers.type = 'webcompany'. Mêmes droits d'accès que l'admin.

GET /auth/usage Bearer

Obtenir les statistiques d'utilisation de l'API pour l'utilisateur actuellement authentifié.

Système

Endpoints système pour les vérifications de santé et la surveillance.

GET /health Public

Vérification de santé — retourne le statut de l'API et la version. Aucune authentification requise.

Réponse

JSON
{"status": "ok", "version": "0.1.0"}