Référence API

Référence complète des 15 modalités IA et 83 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.

Démarrage rapide : traduction audio de vidéo

cURL (simple)
curl -X POST "https://api.jamiiai.com/video/video-audio-translate" \
  -H "Authorization: Bearer <votre-jeton>" \
  -F "file=@/chemin/vers/video.mp4" \
  -F "LanguageVoiceOutput=French" \
  -F "LanguageTextOutput=English"
cURL (avancé)
curl -X POST "https://api.jamiiai.com/video/video-audio-translate" \
  -H "Authorization: Bearer <votre-jeton>" \
  -F "file=@/chemin/vers/video.mp4" \
  -F "language_voice_output=French" \
  -F "language_text_output=English" \
  -F "source_language=Spanish" \
  -F "voice=nova" \
  -F "generate_subtitles=true"

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

Champ Type Requis Description
message string Oui Le 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

Champ Type Requis Description
prompt string Oui Le 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

Champ Type Requis Description
text string Oui Texte à 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

Champ Type Requis Description
text string Oui Message à 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, traduire la voix vers une autre langue avec audio généré et sous-titres, 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

Champ Type Requis Description
text string Oui Message à envoyer
POST /video/video-to-description Bearer

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

POST /video/video-audio-translate Bearer

Téléverser une vidéo → extraire la parole → traduire le texte + générer l'audio traduit. Supporte l'indice de langue source, le choix de voix et la génération optionnelle de sous-titres.

Essayer maintenant avec la page de test de traduction vidéo

Requête

multipart/form-data avec file, LanguageVoiceOutput et LanguageTextOutput (ou alias en minuscules).

Champs optionnels

Champ Type Description
source_language string Indice de langue pour améliorer la transcription
voice string Voix TTS : alloy, echo, fable, onyx, nova, shimmer
audio_format string Format de sortie demandé (mp3, wav, opus)
generate_subtitles boolean Inclure les sous-titres SRT originaux et traduits

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

Champ Type Requis Description
description string Oui Ce qu'il faut générer
language string Non Langage 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

Champ Type Requis Description
code string Oui Code à réviser
POST /code/explain Bearer

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

Corps de la requête

Champ Type Requis Description
code string Oui Code à expliquer
POST /code/refactor Bearer

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

Corps de la requête

Champ Type Requis Description
code string Oui Code à refactoriser
instructions string Non Instructions 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

Champ Type Requis Description
task string Oui Description 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

Champ Type Requis Description
prompt string Oui Description de l'image
size string Non 1024x1024, 1024x1792 ou 1792x1024
quality string Non standard 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

Champ Type Requis Description
text string Oui Contenu du document
title string Non Titre 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

Champ Type Requis Description
question string Oui Question 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

Champ Type Requis Description
query string Oui Instruction 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

Champ Type Requis Description
text string Oui Texte à traduire
target_language string Oui Langue cible (ex. « Français »)
source_language string Non Langue 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

Champ Type Requis Description
text string Oui Texte à résumer
max_length string Non Longueur cible (ex. « 100 mots »)
style string Non Style 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

Champ Type Requis Description
text string Oui Texte à 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

Champ Type Requis Description
text string Oui Texte source
schema_description string Oui Champs à 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

Champ Type Requis Description
text string Oui Texte à 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

Champ Type Requis Description
text string Oui Texte à 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

Champ Type Requis Description
text1 string Oui Premier texte
text2 string Oui Deuxiè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

Champ Type Requis Description
url string Oui URL publique à récupérer (http/https uniquement)
question string Non Question 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

Champ Type Requis Description
content string Oui Contenu de la mémoire à stocker
metadata object Non Mé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

Champ Type Requis Description
query string Oui Requête de recherche
top_k integer Non Nombre 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

Champ Type Requis Description
namespace string Oui Nom de la base de connaissances
text string Oui Contenu textuel à ingérer
source string Non Libellé 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

Champ Type Requis Description
namespace string Oui Nom de la base de connaissances
url string Oui URL 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

Champ Type Requis Description
namespace string Oui Base de connaissances à interroger
question string Oui Question à répondre
top_k integer Non Passages 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

Champ Type Requis Description
namespace string Oui Base 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

Champ Type Requis Description
text string Oui Texte à traduire
target_language string Oui Langue cible (ex. « Swahili »)
source_language string Non Indice 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

Champ Type Requis Description
text string Oui Texte à 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

Champ Type Requis Description
file fichier Oui Fichier audio (mp3, wav, webm)
language string Non Code 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

Champ Type Requis Description
message string Oui Texte à 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

Champ Type Requis Description
message string Oui Question 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

Champ Type Requis Description
text string Oui Texte à 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

Champ Type Requis Description
amount float Oui Montant numérique
currency_code string Oui Code 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

Champ Type Requis Description
amount float Oui Montant à convertir
source_currency string Oui Code ISO source
target_currency string Oui Code 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

Champ Type Requis Description
question string Oui Question 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

Champ Type Requis Description
message string Oui SMS 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

Champ Type Requis Description
question string Oui Question 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

Champ Type Requis Description
question string Oui Question d’étude ou d’examen
exam_system string Non Systè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

Champ Type Requis Description
question string Oui Question juridique ou réglementaire
country string Non Pays (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

Champ Type Requis Description
theme string Non Thème (sagesse, patience, unité)
culture string Non Culture 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

Champ Type Requis Description
topic string Oui Sujet ou personnage
culture string Non Contexte 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

Champ Type Requis Description
message string Oui Message à 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

Champ Type Requis Description
messages tableau de strings Oui Liste 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

Champ Type Requis Description
username string Oui Nom d'utilisateur (userN)
secret_answer string Oui Ré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"}