Référence de l’API REST Procurize.AI#
Accédez programmatiquement à votre base de connaissances – documents, questionnaires, RAG et rapports – en utilisant votre jeton API.
Applicable à : Procurize.AI API v1
Authentification : clé API via l’en‑têteX-API-Key(voir Jetons API pour la gestion des jetons)
URL de base :https://api.procurize.com
Vue d’ensemble#
L’API REST de Procurize.AI fournit un accès programmatique aux fonctionnalités clés de la plateforme. Elle vous permet d’intégrer Procurize.AI à vos systèmes internes, d’automatiser la gestion de la base de connaissances et de créer des flux de travail personnalisés.
Modules pris en charge (authentifiés par jeton) :
- RagArticle – gérer les documents
- RagFaq – gérer les entrées FAQ
- RagQuery – exécuter des requêtes RAG
Authentification#
Tous les points de terminaison authentifiés nécessitent un jeton API passé dans l’en‑tête de la requête.
| En‑tête | Valeur |
|---|---|
X-API-Key | <YOUR_API_TOKEN> |
Exemple :
curl -X GET "https://api.procurize.com/v1/..." \
-H "X-API-Key: your-api-token-here"
💡 Les jetons sont liés à votre organisation – vous n’avez pas besoin de spécifier un ID d’organisation dans la requête.
URL de base#
Tous les points de terminaison de l’API REST sont servis sous :
https://api.procurize.com
Gestion des erreurs#
L’API utilise les codes d’état HTTP standard.
| Code | Signification |
|---|---|
200 OK | Requête réussie |
201 Created | Ressource créée avec succès |
204 No Content | Requête réussie, aucun corps de réponse |
400 Bad Request | Paramètres invalides ou requête mal formée |
401 Unauthorized | Jeton API manquant ou invalide |
403 Forbidden | Le jeton n’a pas la permission pour cette action |
404 Not Found | Ressource inexistante |
500 Internal Server Error | Erreur serveur inattendue |
Les réponses d’erreur incluent un code d’erreur lisible par machine et un message lisible par l’homme.
Référence des modules#
RagArticle#
GET /questionnaire/rag/articles/summary#
Résumé : Résumé pour la page d’accueil
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| proj | query | string (uuid) | Non | ID du projet. |
Réponse (200) :
{
"active": 5
}
GET /questionnaire/rag/articles/total#
Résumé : Nombre d’articles
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| q | query | string | Non | Filtre sur le nom ou le code de l’article. |
| state | query | array | Non | Filtre sur les états. |
| project | query | array | Non | Filtre sur les projets. |
| type | query | array | Non | Filtre sur les types de documents. |
Réponse (200) :
42
GET /questionnaire/rag/articles/list#
Résumé : Obtenir la liste des articles
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| q | query | string | Non | Filtre sur le nom ou le code de l’article. |
| state | query | array | Non | Filtre sur les états. |
| project | query | array | Non | Filtre sur les projets. |
| type | query | array | Non | Filtre sur les types de documents. |
| s | query | string | Non | Champ de tri. |
| asc | query | boolean | Non | Tri ascendant. |
| ps | query | integer (int32) | Non | Taille de page. |
| p | query | integer (int32) | Non | Numéro de page (à partir de 1). |
Réponse (200) :
{
"paging": {
"pageNumber": 1,
"pageSize": 10,
"total": 42,
"totalPages": 5
},
"items": [
{
"code": "ART-001",
"org": "00000000-0000-0000-0000-000000000000",
"id": "00000000-0000-0000-0000-000000000000",
"name": "Titre de l’article",
"description": "Description de l’article",
"documentTypes": [
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "Nom du type",
"plural": "Noms du type",
"count": 5
}
],
"size": 150,
"revision": {
"id": "00000000-0000-0000-0000-000000000000",
"collectionId": "00000000-0000-0000-0000-000000000000",
"rev": 3,
"date": "2025-01-15T10:30:00Z",
"author": {
"id": "user123",
"name": "John Doe",
"email": "john.doe@example.com",
"login": "johndoe",
"ra": true
},
"authorName": "John Doe",
"analysisSummary": {
"id": "00000000-0000-0000-0000-000000000000",
"initiator": {
"id": "user123",
"name": "John Doe",
"email": "john.doe@example.com",
"login": "johndoe",
"ra": true
},
"created": "2025-01-15T10:30:00Z",
"state": "Completed",
"stateDate": "2025-01-15T10:35:00Z",
"stateDetails": "Analyse terminée avec succès",
"operationId": "op-12345"
}
},
"type": "Article",
"state": "Active",
"projects": [
"00000000-0000-0000-0000-000000000000"
],
"items": [
"00000000-0000-0000-0000-000000000000"
],
"isShared": false
}
]
}
POST /questionnaire/rag/file-to-md#
Résumé : Retourne le contenu Markdown du fichier
Corps de la requête (multipart/form-data) :
{
"url": "https://example.com/file.pdf",
"file": "binary"
}
Réponse (200) :
"Contenu Markdown du fichier"
POST /questionnaire/rag/article/create#
Résumé : Créer un article
Corps de la requête (multipart/form-data) :
{
"code": "ART-001",
"name": "Titre de l’article",
"description": "Description de l’article",
"content": "# Contenu de l’article\n\nCeci est le contenu de l’article.",
"url": "https://example.com/file.pdf",
"file": "binary"
}
Réponse (200) :
{
"code": "ART-001",
"org": "00000000-0000-0000-0000-000000000000",
"id": "00000000-0000-0000-0000-000000000000",
"name": "Titre de l’article",
"description": "Description de l’article",
"documentTypes": null,
"size": 150,
"revision": null,
"type": "Article",
"state": "Active",
"projects": null,
"items": null,
"isShared": false
}
GET /questionnaire/rag/article/check#
Résumé : Vérifier l’existence d’un article.
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de l’article. |
Réponse (200) :
true
GET /questionnaire/rag/article-info#
Résumé : Obtenir les informations d’un article par code.
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de l’article. |
Réponse (200) :
{
"code": "ART-001",
"org": "00000000-0000-0000-0000-000000000000",
"id": "00000000-0000-0000-0000-000000000000",
"name": "Titre de l’article",
"description": "Description de l’article",
"documentTypes": null,
"size": 150,
"revision": null,
"type": "Article",
"state": "Active",
"projects": null,
"items": null,
"isShared": false
}
GET /questionnaire/rag/article#
Résumé : Obtenir le contenu d’un article par code
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de l’article. |
| format | query | string | Non | Si vrai, renvoie le contenu HTML dans le corps de la réponse. Sinon, renvoie le contenu en format Markdown. |
| split | query | boolean | Non | Si vrai, renvoie le contenu séparé par les éléments RAG. |
| css | query | boolean | Non | Si vrai, renvoie le contenu HTML/PDF avec CSS. |
Réponse (200) :
"# Titre de l’article\n\nCeci est le contenu de l’article au format Markdown."
POST /questionnaire/rag/article#
Résumé : Mettre à jour les métadonnées de l’article
Corps de la requête :
{
"code": "ART-001",
"name": "Titre de l’article mis à jour",
"description": "Description mise à jour",
"projects": [
"00000000-0000-0000-0000-000000000000"
],
"documentTypes": [
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "Nom du type",
"plural": "Noms du type"
}
],
"isShared": true,
"state": "Active"
}
Réponse (200) :
{}
DELETE /questionnaire/rag/article#
Résumé : Supprimer l’article
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de l’article. |
GET /questionnaire/rag/article/pdf#
Résumé : Obtenir l’article au format PDF par code
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de l’article. |
Réponse (200) :
(pdf binary)
GET /questionnaire/rag/article/content#
Résumé : Obtenir le contenu de l’article
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de l’article. |
Réponse (200) :
{
"content": "# Titre de l’article\n\nContenu ici."
}
POST /questionnaire/rag/article/content#
Résumé : Mettre à jour le contenu de l’article
Corps de la requête (multipart/form-data) :
{
"code": "ART-001",
"content": "# Contenu mis à jour",
"file": "binary"
}
POST /questionnaire/rag/plural#
Résumé : Obtenir la forme plurielle du nom
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| noun | query | string | Non | Nom à mettre au pluriel. |
Réponse (200) :
{
"plural": "Articles"
}
POST /questionnaire/rag/article/find-types#
Résumé : Analyser l’article avec l’IA et renvoyer leurs types
Corps de la requête (multipart/form-data) :
{
"code": "ART-001",
"content": "# Contenu de l’article"
}
Réponse (200) :
[
{
"plural": "Types"
}
]
POST /questionnaire/rag/article/format-with-ai#
Résumé : Formater le contenu de l’article avec l’IA
Corps de la requête (multipart/form-data) :
{
"code": "ART-001",
"content": "# Contenu de l’article"
}
Réponse (200) :
{
"formattedContent": "# Contenu d’article formaté"
}
POST /questionnaire/rag/article/improve-on-suggestions#
Résumé : Améliorer le document à partir des suggestions
Corps de la requête (multipart/form-data) :
{
"suggestions": [
{
"sectionTitle": "Introduction",
"suggestion": "Ajouter plus de détails ici."
}
],
"code": "ART-001",
"content": "# Contenu de l’article"
}
Réponse (200) :
{
"improvedContent": "# Contenu amélioré"
}
GET /questionnaire/rag/article/parts#
Résumé : Retourne la liste des parties de l’article
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| id | query | array | Oui | Liste des parties d’article. |
Réponse (200) :
[
{
"id": "00000000-0000-0000-0000-000000000000",
"code": "part-1",
"title": "Introduction",
"orderNumber": 1,
"content": "Contenu de l’introduction."
}
]
GET /questionnaire/rag/article/revisions#
Résumé : Retourne la liste des révisions d’article
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de l’article. |
Réponse (200) :
[
{
"id": "00000000-0000-0000-0000-000000000000",
"collectionId": "00000000-0000-0000-0000-000000000000",
"rev": 1,
"date": "2025-01-15T10:30:00Z",
"author": {
"id": "user123",
"name": "John Doe",
"email": "john.doe@example.com",
"login": "johndoe",
"ra": true
},
"authorName": "John Doe",
"analysisSummary": {
"id": "00000000-0000-0000-0000-000000000000",
"initiator": {
"id": "user123",
"name": "John Doe",
"email": "john.doe@example.com",
"login": "johndoe",
"ra": true
},
"created": "2025-01-15T10:30:00Z",
"state": "Completed",
"stateDate": "2025-01-15T10:35:00Z",
"stateDetails": "Analyse terminée",
"operationId": "op-12345"
}
}
]
GET /questionnaire/rag/article/revisions/info/{id}#
Résumé : Obtenir les informations d’une révision d’article
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| id | path | string (uuid) | Oui | ID de la révision. |
Réponse (200) :
{
"id": "00000000-0000-0000-0000-000000000000",
"collectionId": "00000000-0000-0000-0000-000000000000",
"rev": 1,
"date": "2025-01-15T10:30:00Z",
"author": {
"id": "user123",
"name": "John Doe",
"email": "john.doe@example.com",
"login": "johndoe",
"ra": true
},
"authorName": "John Doe",
"analysisSummary": {
"id": "00000000-0000-0000-0000-000000000000",
"initiator": {
"id": "user123",
"name": "John Doe",
"email": "john.doe@example.com",
"login": "johndoe",
"ra": true
},
"created": "2025-01-15T10:30:00Z",
"state": "Completed",
"stateDate": "2025-01-15T10:35:00Z",
"stateDetails": "Analyse terminée",
"operationId": "op-12345"
}
}
GET /questionnaire/rag/article/revisions/{id}#
Résumé : Obtenir le contenu d’une révision d’article
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| id | path | string (uuid) | Oui | ID de la révision. |
Réponse (200) :
"# Contenu de la révision d’article\n\nVersion précédente."
GET /questionnaire/rag/article/analyze#
Résumé : Analyser le contenu d’un article avec l’IA
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de l’article. |
| rev | query | integer (int32) | Non | Numéro de révision. |
| force | query | boolean | Non | Forcer la création d’une nouvelle analyse et supprimer le résultat d’analyse incomplet précédent s’il existe. |
Réponse (200) :
{
"id": "00000000-0000-0000-0000-000000000000",
"initiator": {
"id": "user123",
"name": "John Doe",
"email": "john.doe@example.com",
"login": "johndoe",
"ra": true
},
"created": "2025-01-15T10:30:00Z",
"state": "Completed",
"stateDate": "2025-01-15T10:35:00Z",
"stateDetails": "Analyse terminée",
"operationId": "op-12345"
}
GET /questionnaire/rag/article/analyze/{id}#
Résumé : Obtenir le résultat d’une analyse d’article
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| id | path | string (uuid) | Oui | ID de l’analyse. |
Réponse (200) :
{
"id": "00000000-0000-0000-0000-000000000000",
"initiator": {
"id": "user123",
"name": "John Doe",
"email": "john.doe@example.com",
"login": "johndoe",
"ra": true
},
"created": "2025-01-15T10:30:00Z",
"state": "Completed",
"stateDate": "2025-01-15T10:35:00Z",
"stateDetails": "Analyse terminée",
"operationId": "op-12345",
"fragments": [
"fragment-1",
"fragment-2"
],
"ownInconcies": "Incohérences propres trouvées",
"ragInconcies": "Incohérences RAG trouvées",
"proposals": "Propositions d’amélioration"
}
GET /questionnaire/rag/messages/list#
Résumé : Lister tous les messages
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| id | query | string (uuid) | Oui | ID de la collection RAG. |
| item | query | string (uuid) | Non | ID de l’élément RAG. |
| message | query | string (uuid) | Non | ID du message. |
| asc | query | boolean | Non | Tri ascendant. |
| ps | query | integer (int32) | Non | Taille de page. |
| p | query | integer (int32) | Non | Numéro de page (à partir de 1). |
Réponse (200) :
{
"paging": {
"pageNumber": 1,
"pageSize": 10,
"total": 5,
"totalPages": 1
},
"items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"replyTo": null,
"questionnaire": null,
"section": null,
"question": null,
"ragCollection": "00000000-0000-0000-0000-000000000000",
"ragItem": "00000000-0000-0000-0000-000000000000",
"targetId": "00000000-0000-0000-0000-000000000000",
"targetType": "Question",
"targetNum": 1,
"author": {
"id": "user123",
"name": "John Doe",
"email": "john.doe@example.com",
"login": "johndoe",
"ra": true
},
"text": "Contenu du message",
"created": "2025-01-15T10:30:00Z",
"updated": "2025-01-15T10:30:00Z",
"replies": 0
}
]
}
POST /questionnaire/rag/messages/add#
Résumé : Ajouter un nouveau message
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| id | query | string (uuid) | Oui | ID de la collection RAG. |
| item | query | string (uuid) | Non | ID de l’élément RAG. |
| message | query | string (uuid) | Non | ID du message auquel répondre. |
Corps de la requête :
{
"text": "Contenu du nouveau message"
}
Réponse (200) :
{
"id": "00000000-0000-0000-0000-000000000000",
"replyTo": null,
"questionnaire": null,
"section": null,
"question": null,
"ragCollection": "00000000-0000-0000-0000-000000000000",
"ragItem": "00000000-0000-0000-0000-000000000000",
"targetId": "00000000-0000-0000-0000-000000000000",
"targetType": "Question",
"targetNum": 1,
"author": {
"id": "user123",
"name": "John Doe",
"email": "john.doe@example.com",
"login": "johndoe",
"ra": true
},
"text": "Contenu du nouveau message",
"created": "2025-01-15T10:30:00Z",
"updated": "2025-01-15T10:30:00Z",
"replies": 0
}
POST /questionnaire/rag/message#
Résumé : Mettre à jour un message existant
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| c | query | string (uuid) | Oui | ID de la collection RAG. |
| id | query | string (uuid) | Oui | ID du message. |
Corps de la requête :
{
"text": "Contenu du message mis à jour"
}
Réponse (200) :
{
"id": "00000000-0000-0000-0000-000000000000",
"replyTo": null,
"questionnaire": null,
"section": null,
"question": null,
"ragCollection": "00000000-0000-0000-0000-000000000000",
"ragItem": "00000000-0000-0000-0000-000000000000",
"targetId": "00000000-0000-0000-0000-000000000000",
"targetType": "Question",
"targetNum": 1,
"author": {
"id": "user123",
"name": "John Doe",
"email": "john.doe@example.com",
"login": "johndoe",
"ra": true
},
"text": "Contenu du message mis à jour",
"created": "2025-01-15T10:30:00Z",
"updated": "2025-01-15T10:45:00Z",
"replies": 0
}
DELETE /questionnaire/rag/message#
Résumé : Supprimer un message existant
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| id | query | string (uuid) | Oui | ID du message. |
Réponse (200) :
{}
RagFaq#
GET /questionnaire/rag/faq-collections/summary#
Résumé : Résumé pour la page d’accueil
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| proj | query | string (uuid) | Non | ID du projet. |
Réponse (200) :
{
"active": 3
}
GET /questionnaire/rag/faq-collections/total#
Résumé : Nombre de collections FAQ.
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| q | query | string | Non | Filtre sur le nom ou le code de la collection. |
| state | query | array | Non | Filtre sur les états. |
| project | query | array | Non | Filtre sur les projets. |
Réponse (200) :
3
GET /questionnaire/rag/faq-collections/list#
Résumé : Obtenir la liste des collections FAQ.
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| q | query | string | Non | Filtre sur le nom ou le code de la collection. |
| state | query | array | Non | Filtre sur les états. |
| project | query | array | Non | Filtre sur les projets. |
| s | query | string | Non | Champ de tri. |
| asc | query | boolean | Non | Tri ascendant. |
| ps | query | integer (int32) | Non | Taille de page. |
| p | query | integer (int32) | Non | Numéro de page (à partir de 1). |
Réponse (200) :
{
"paging": {
"pageNumber": 1,
"pageSize": 10,
"total": 3,
"totalPages": 1
},
"items": [
{
"code": "FAQ-001",
"org": "00000000-0000-0000-0000-000000000000",
"id": "00000000-0000-0000-0000-000000000000",
"name": "Collection FAQ",
"description": "Description de la collection FAQ",
"documentTypes": null,
"size": 5,
"revision": null,
"type": "Faq",
"state": "Active",
"projects": null,
"items": null,
"isShared": false
}
]
}
GET /questionnaire/rag/faq-collections/find-items#
Résumé : Trouver des éléments FAQ.
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| q | query | string | Oui | Filtre sur la question. |
| project | query | string (uuid) | Non | Filtre sur le projet. |
| ps | query | integer (int32) | Non | Taille de page. |
| p | query | integer (int32) | Non | Numéro de page (à partir de 1). |
Réponse (200) :
{
"paging": {
"pageNumber": 1,
"pageSize": 10,
"total": 5,
"totalPages": 1
},
"items": [
{
"index": 0,
"question": "Quel est ce produit ?",
"answer": "C’est un excellent produit.",
"comment": "FAQ produit",
"state": "Active"
}
]
}
POST /questionnaire/rag/faq-collection/create#
Résumé : Créer une nouvelle collection FAQ.
Corps de la requête (multipart/form-data) :
{
"code": "FAQ-001",
"name": "Collection FAQ",
"description": "Description de la collection FAQ",
"content": "Contenu ici",
"file": "binary"
}
Réponse (200) :
{
"code": "FAQ-001",
"id": "00000000-0000-0000-0000-000000000000",
"name": "Collection FAQ",
"description": "Description de la collection FAQ",
"documentTypes": null,
"size": 5,
"revision": null,
"type": "Faq",
"state": "Active",
"projects": null,
"items": null,
"isShared": false
}
POST /questionnaire/rag/faq-collection#
Résumé : Mettre à jour les métadonnées d’une collection FAQ.
Corps de la requête :
{
"code": "FAQ-001",
"name": "Collection FAQ mise à jour",
"description": "Description mise à jour",
"projects": null,
"documentTypes": null,
"isShared": false,
"state": "Active"
}
DELETE /questionnaire/rag/faq-collection#
Résumé : Supprimer une collection FAQ.
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de la collection. |
GET /questionnaire/rag/faq-collection#
Résumé : Obtenir une collection FAQ.
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de la collection. |
Réponse (200) :
{
"code": "FAQ-001",
"org": "00000000-0000-0000-0000-000000000000",
"id": "00000000-0000-0000-0000-000000000000",
"name": "Collection FAQ",
"description": "Description de la collection FAQ",
"documentTypes": null,
"size": 5,
"revision": null,
"type": "Faq",
"state": "Active",
"projects": null,
"items": null,
"isShared": false
}
GET /questionnaire/rag/faq-collection/check#
Résumé : Vérifier l’existence d’une collection FAQ.
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de la collection. |
Réponse (200) :
true
GET /questionnaire/rag/faq-collection/items-total#
Résumé : Nombre d’éléments FAQ.
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de la collection. |
| q | query | string | Non | Filtre sur le contenu de l’élément FAQ. |
Corps de la requête :
["Active", "Default"]
Réponse (200) :
5
GET /questionnaire/rag/faq-collection/items#
Résumé : Obtenir la liste des éléments FAQ.
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de la collection. |
| q | query | string | Non | Filtre sur le contenu de l’élément FAQ. |
| state | query | array | Non | Filtre sur les états. |
| s | query | string | Non | Champ de tri. |
| asc | query | boolean | Non | Tri ascendant. |
| ps | query | integer (int32) | Non | Taille de page. |
| p | query | integer (int32) | Non | Numéro de page (à partir de 1). |
Réponse (200) :
{
"paging": {
"pageNumber": 1,
"pageSize": 10,
"total": 5,
"totalPages": 1
},
"items": [
{
"index": 0,
"question": "Quel est ce produit ?",
"answer": "C’est un excellent produit.",
"comment": "FAQ produit",
"state": "Active"
}
]
}
POST /questionnaire/rag/faq-collection/item/create#
Résumé : Créer un nouvel élément FAQ.
Corps de la requête :
{
"code": "FAQ-001",
"index": 0,
"question": "Quel est ce produit ?",
"answer": "C’est un excellent produit.",
"comment": "FAQ produit",
"state": "Active"
}
Réponse (200) :
{
"index": 0,
"question": "Quel est ce produit ?",
"answer": "C’est un excellent produit.",
"comment": "FAQ produit",
"state": "Active"
}
GET /questionnaire/rag/faq-collection/item#
Résumé : Obtenir un élément FAQ.
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de la collection. |
| index | query | integer (int32) | Oui | Index (base zéro) de l’élément FAQ dans la collection. |
Réponse (200) :
{
"index": 0,
"question": "Quel est ce produit ?",
"answer": "C’est un excellent produit.",
"comment": "FAQ produit",
"state": "Active"
}
POST /questionnaire/rag/faq-collection/item#
Résumé : Mettre à jour un élément FAQ.
Corps de la requête :
{
"code": "FAQ-001",
"index": 0,
"newIndex": 1,
"question": "Question mise à jour ?",
"answer": "Réponse mise à jour.",
"comment": "Commentaire mis à jour",
"state": "Active"
}
DELETE /questionnaire/rag/faq-collection/item#
Résumé : Supprimer un élément FAQ.
Paramètres :
| Nom | Dans | Type | Obligatoire | Description |
|---|---|---|---|---|
| code | query | string | Oui | Code de la collection. |
| index | query | integer (int32) | Oui | Index (base zéro) de l’élément FAQ dans la collection. |
RagQuery#
POST /questionnaire/rag/query#
Résumé : Effectuer une requête dans la base de connaissances RAG
Corps de la requête :
{
"project": "00000000-0000-0000-0000-000000000000",
"excludeCollections": [
"00000000-0000-0000-0000-000000000000"
],
"question": "Quel est ce produit ?",
"yourCompanyName": "Acme Corp",
"yourCompanyAlias": "Acme",
"customerName": "John Doe",
"options": [
"option1",
"option2"
],
"multiselect": false,
"nArticles": 5,
"nFaqs": 3,
"threshold": 0.5,
"debug": false,
"withJustification": true,
"withConfidenceLevel": true,
"withFragments": true,
"nAttempts": 3
}
Réponse (200) :
{
"attempt": 1,
"preparedQuery": {
"original": "Quel est ce produit ?",
"enhanced": "Quel est ce produit et ses caractéristiques ?"
},
"ragItems": [
{
"id": "00000000-0000-0000-0000-000000000000",
"distance": 0.25
}
],
"question": "Quel est ce produit ?",
"generalInstructions": "En se basant sur la base de connaissances, voici la réponse :",
"text": "Ce produit est une excellente solution pour vos besoins.",
"explanation": "La réponse a été trouvée dans plusieurs sources avec une forte confiance."
}
POST /questionnaire/rag/query-stream#
Résumé : Effectuer une requête dans la base de connaissances RAG (flux)
Corps de la requête :
{
"project": "00000000-0000-0000-0000-000000000000",
"excludeCollections": [
"00000000-0000-0000-0000-000000000000"
],
"question": "Quel est ce produit ?",
"yourCompanyName": "Acme Corp",
"yourCompanyAlias": "Acme",
"customerName": "John Doe",
"options": [
"option1",
"option2"
],
"multiselect": false,
"nArticles": 5,
"nFaqs": 3,
"threshold": 0.5,
"debug": false,
"withJustification": true,
"withConfidenceLevel": true,
"withFragments": true,
"nAttempts": 3
}
Réponse (200) :
[
{
"text": "Ce produit est une excellente solution",
"fragments": [
{
"id": "00000000-0000-0000-0000-000000000000",
"part": 1,
"distance": 0.25,
"type": "Article",
"code": "ART-001",
"title": "Titre du produit",
"fragment": "Fragment de contenu du produit"
}
]
},
{
"text": " pour vos besoins.",
"fragments": []
}
]
POST /questionnaire/rag/query-fragments#
Résumé : Effectuer une requête dans la base de connaissances RAG (fragments)
Corps de la requête :
{
"project": "00000000-0000-0000-0000-000000000000",
"exclude_documents": [
"00000000-0000-0000-0000-000000000000"
],
"query": "Quel est ce produit ?",
"top_k": 5,
"similarity_threshold": 0.5,
"prepare_query": true
}
Réponse (200) :
{
"results": [
{
"document_id": "00000000-0000-0000-0000-000000000000",
"document_code": "ART-001",
"document_title": "Titre du produit",
"revision": 3,
"chunk_index": 0,
"content": "Fragment de contenu du produit",
"metadata": {
"author": "John Doe",
"created_at": "2025-01-15T10:30:00Z",
"last_updated_at": "2025-01-15T10:35:00Z",
"doc_categories": [
"Produit",
"Information"
]
},
"similarity_score": 0.85
}
]
}
Articles associés#
- Jetons API – Génération & Gestion – comment créer et gérer les jetons
- Interroger l’IA avec votre base de connaissances – utilisation des requêtes RAG
