Riferimento API REST di Procurize.AI#
Accedi programmaticamente alla tua base di conoscenza – documenti, questionari, RAG e report – usando il tuo token API.
Applicabile a: API Procurize.AI v1
Autenticazione: chiave API tramite intestazioneX-API-Key(vedi Token API per la gestione dei token)
URL base:https://api.procurize.com
Panoramica#
L’API REST di Procurize.AI fornisce accesso programmatico alle funzionalità chiave della piattaforma. Ti consente di integrare Procurize.AI con i tuoi sistemi interni, automatizzare la gestione della base di conoscenza e creare flussi di lavoro personalizzati.
Moduli supportati (autenticati con token):
- RagArticle – gestire i documenti
- RagFaq – gestire le voci FAQ
- RagQuery – eseguire query RAG
Autenticazione#
Tutti gli endpoint autenticati richiedono un token API passato nell’intestazione della richiesta.
| Intestazione | Valore |
|---|---|
X-API-Key | <YOUR_API_TOKEN> |
Esempio:
curl -X GET "https://api.procurize.com/v1/..." \
-H "X-API-Key: your-api-token-here"
💡 I token sono associati alla tua organizzazione – non è necessario specificare un ID organizzazione nella richiesta.
URL Base#
Tutti gli endpoint dell’API REST sono disponibili sotto:
https://api.procurize.com
Gestione degli errori#
L’API utilizza i codici di stato HTTP standard.
| Codice | Significato |
|---|---|
200 OK | Richiesta completata con successo |
201 Created | Risorsa creata con successo |
204 No Content | Richiesta completata, nessun corpo nella risposta |
400 Bad Request | Parametri non validi o richiesta malformata |
401 Unauthorized | Token API mancante o non valido |
403 Forbidden | Il token non ha i permessi per questa azione |
404 Not Found | La risorsa non esiste |
500 Internal Server Error | Errore interno del server inatteso |
Le risposte di errore includono un codice di errore leggibile da macchina e un messaggio leggibile da umano.
Riferimento dei Moduli#
RagArticle#
GET /questionnaire/rag/articles/summary#
Riepilogo: Riepilogo per la pagina Home
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| proj | query | string (uuid) | No | ID del progetto. |
Risposta (200):
{
"active": 5
}
GET /questionnaire/rag/articles/total#
Riepilogo: Numero di articoli
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| q | query | string | No | Filtro sul nome o codice dell’articolo. |
| state | query | array | No | Filtro sugli stati. |
| project | query | array | No | Filtro sui progetti. |
| type | query | array | No | Filtro sui tipi di documento. |
Risposta (200):
42
GET /questionnaire/rag/articles/list#
Riepilogo: Ottieni l’elenco degli articoli
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| q | query | string | No | Filtro sul nome o codice dell’articolo. |
| state | query | array | No | Filtro sugli stati. |
| project | query | array | No | Filtro sui progetti. |
| type | query | array | No | Filtro sui tipi di documento. |
| s | query | string | No | Campo di ordinamento. |
| asc | query | boolean | No | Ordinamento ascendente. |
| ps | query | integer (int32) | No | Dimensione della pagina. |
| p | query | integer (int32) | No | Numero di pagina (basato su 1). |
Risposta (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": "Titolo Articolo",
"description": "Descrizione dell'articolo",
"documentTypes": [
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "Nome Tipo",
"plural": "Nomi Tipo",
"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": "Analysis completed successfully",
"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#
Riepilogo: Restituisce il contenuto Markdown dal file
Corpo della richiesta (multipart/form-data):
{
"url": "https://example.com/file.pdf",
"file": "binary"
}
Risposta (200):
"Markdown content from file"
POST /questionnaire/rag/article/create#
Riepilogo: Crea un articolo
Corpo della richiesta (multipart/form-data):
{
"code": "ART-001",
"name": "Titolo Articolo",
"description": "Descrizione dell'articolo",
"content": "# Contenuto Articolo\n\nQuesto è il contenuto dell'articolo.",
"url": "https://example.com/file.pdf",
"file": "binary"
}
Risposta (200):
{
"code": "ART-001",
"org": "00000000-0000-0000-0000-000000000000",
"id": "00000000-0000-0000-0000-000000000000",
"name": "Titolo Articolo",
"description": "Descrizione dell'articolo",
"documentTypes": null,
"size": 150,
"revision": null,
"type": "Article",
"state": "Active",
"projects": null,
"items": null,
"isShared": false
}
GET /questionnaire/rag/article/check#
Riepilogo: Verifica l’esistenza dell’articolo.
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice dell’articolo. |
Risposta (200):
true
GET /questionnaire/rag/article-info#
Riepilogo: Ottieni le informazioni dell’articolo per codice.
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice dell’articolo. |
Risposta (200):
{
"code": "ART-001",
"org": "00000000-0000-0000-0000-000000000000",
"id": "00000000-0000-0000-0000-000000000000",
"name": "Titolo Articolo",
"description": "Descrizione dell'articolo",
"documentTypes": null,
"size": 150,
"revision": null,
"type": "Article",
"state": "Active",
"projects": null,
"items": null,
"isShared": false
}
GET /questionnaire/rag/article#
Riepilogo: Ottieni il contenuto dell’articolo per codice
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice dell’articolo. |
| format | query | string | No | Se true, restituisce il contenuto HTML nel corpo della risposta. Altrimenti restituisce il contenuto in formato Markdown. |
| split | query | boolean | No | Se true, restituisce il contenuto separato per elementi RAG. |
| css | query | boolean | No | Se true, restituisce il contenuto HTML/PDF con CSS. |
Risposta (200):
"# Titolo Articolo\n\nQuesto è il contenuto dell'articolo in formato Markdown."
POST /questionnaire/rag/article#
Riepilogo: Aggiorna i metadati dell’articolo
Corpo della richiesta:
{
"code": "ART-001",
"name": "Titolo Articolo Aggiornato",
"description": "Descrizione aggiornata",
"projects": [
"00000000-0000-0000-0000-000000000000"
],
"documentTypes": [
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "Nome Tipo",
"plural": "Nomi Tipo"
}
],
"isShared": true,
"state": "Active"
}
Risposta (200):
{}
DELETE /questionnaire/rag/article#
Riepilogo: Elimina l’articolo
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice dell’articolo. |
GET /questionnaire/rag/article/pdf#
Riepilogo: Ottieni l’articolo in PDF per codice
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice dell’articolo. |
Risposta (200):
(pdf binary)
GET /questionnaire/rag/article/content#
Riepilogo: Ottieni il contenuto dell’articolo
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice dell’articolo. |
Risposta (200):
{
"content": "# Titolo Articolo\n\nContenuto qui."
}
POST /questionnaire/rag/article/content#
Riepilogo: Aggiorna il contenuto dell’articolo
Corpo della richiesta (multipart/form-data):
{
"code": "ART-001",
"content": "# Contenuto Aggiornato",
"file": "binary"
}
POST /questionnaire/rag/plural#
Riepilogo: Ottieni la forma plurale del sostantivo
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| noun | query | string | No | Sostantivo da pluralizzare. |
Risposta (200):
{
"plural": "Articles"
}
POST /questionnaire/rag/article/find-types#
Riepilogo: Analizza l’articolo con IA e restituisce i loro tipi
Corpo della richiesta (multipart/form-data):
{
"code": "ART-001",
"content": "# Contenuto Articolo"
}
Risposta (200):
[
{
"plural": "Types"
}
]
POST /questionnaire/rag/article/format-with-ai#
Riepilogo: Formatta il contenuto dell’articolo con IA
Corpo della richiesta (multipart/form-data):
{
"code": "ART-001",
"content": "# Contenuto Articolo"
}
Risposta (200):
{
"formattedContent": "# Formatted Article Content"
}
POST /questionnaire/rag/article/improve-on-suggestions#
Riepilogo: Migliora il documento basandosi sui suggerimenti
Corpo della richiesta (multipart/form-data):
{
"suggestions": [
{
"sectionTitle": "Introduzione",
"suggestion": "Aggiungi più dettagli qui."
}
],
"code": "ART-001",
"content": "# Contenuto Articolo"
}
Risposta (200):
{
"improvedContent": "# Improved Content"
}
GET /questionnaire/rag/article/parts#
Riepilogo: Restituisce l’elenco delle parti dell’articolo
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| id | query | array | Sì | Elenco delle parti dell’articolo. |
Risposta (200):
[
{
"id": "00000000-0000-0000-0000-000000000000",
"code": "part-1",
"title": "Introduzione",
"orderNumber": 1,
"content": "Contenuto dell'introduzione."
}
]
GET /questionnaire/rag/article/revisions#
Riepilogo: Restituisce l’elenco delle revisioni dell’articolo
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice dell’articolo. |
Risposta (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": "Analysis completed",
"operationId": "op-12345"
}
}
]
GET /questionnaire/rag/article/revisions/info/{id}#
Riepilogo: Ottieni le informazioni della revisione dell’articolo
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| id | path | string (uuid) | Sì | ID della revisione. |
Risposta (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": "Analysis completed",
"operationId": "op-12345"
}
}
GET /questionnaire/rag/article/revisions/{id}#
Riepilogo: Ottieni il contenuto della revisione dell’articolo
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| id | path | string (uuid) | Sì | ID della revisione. |
Risposta (200):
"# Article Revision Content\n\nPrevious version."
GET /questionnaire/rag/article/analyze#
Riepilogo: Analizza il contenuto dell’articolo con IA
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice dell’articolo. |
| rev | query | integer (int32) | No | Numero della revisione. |
| force | query | boolean | No | Forza la creazione di una nuova analisi e cancella eventuali risultati incompleti precedenti. |
Risposta (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": "Analysis completed",
"operationId": "op-12345"
}
GET /questionnaire/rag/article/analyze/{id}#
Riepilogo: Ottieni il risultato dell’analisi dell’articolo
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| id | path | string (uuid) | Sì | ID dell’analisi. |
Risposta (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": "Analysis completed",
"operationId": "op-12345",
"fragments": [
"fragment-1",
"fragment-2"
],
"ownInconcies": "Own inconsistencies found",
"ragInconcies": "RAG inconsistencies found",
"proposals": "Improvement proposals"
}
GET /questionnaire/rag/messages/list#
Riepilogo: Elenca tutti i messaggi
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| id | query | string (uuid) | Sì | ID della collezione RAG. |
| item | query | string (uuid) | No | ID dell’elemento RAG. |
| message | query | string (uuid) | No | ID del messaggio. |
| asc | query | boolean | No | Ordinamento ascendente. |
| ps | query | integer (int32) | No | Dimensione della pagina. |
| p | query | integer (int32) | No | Numero di pagina (basato su 1). |
Risposta (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": "Message content",
"created": "2025-01-15T10:30:00Z",
"updated": "2025-01-15T10:30:00Z",
"replies": 0
}
]
}
POST /questionnaire/rag/messages/add#
Riepilogo: Aggiungi un nuovo messaggio
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| id | query | string (uuid) | Sì | ID della collezione RAG. |
| item | query | string (uuid) | No | ID dell’elemento RAG. |
| message | query | string (uuid) | No | ID del messaggio a cui rispondere. |
Corpo della richiesta:
{
"text": "New message content"
}
Risposta (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": "New message content",
"created": "2025-01-15T10:30:00Z",
"updated": "2025-01-15T10:30:00Z",
"replies": 0
}
POST /questionnaire/rag/message#
Riepilogo: Aggiorna un messaggio esistente
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| c | query | string (uuid) | Sì | ID della collezione RAG. |
| id | query | string (uuid) | Sì | ID del messaggio. |
Corpo della richiesta:
{
"text": "Updated message content"
}
Risposta (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": "Updated message content",
"created": "2025-01-15T10:30:00Z",
"updated": "2025-01-15T10:45:00Z",
"replies": 0
}
DELETE /questionnaire/rag/message#
Riepilogo: Elimina un messaggio esistente
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| id | query | string (uuid) | Sì | ID del messaggio. |
Risposta (200):
{}
RagFaq#
GET /questionnaire/rag/faq-collections/summary#
Riepilogo: Riepilogo per la pagina Home
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| proj | query | string (uuid) | No | ID del progetto. |
Risposta (200):
{
"active": 3
}
GET /questionnaire/rag/faq-collections/total#
Riepilogo: Numero di collezioni FAQ.
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| q | query | string | No | Filtro sul nome o codice della collezione. |
| state | query | array | No | Filtro sugli stati. |
| project | query | array | No | Filtro sui progetti. |
Risposta (200):
3
GET /questionnaire/rag/faq-collections/list#
Riepilogo: Ottieni l’elenco delle collezioni FAQ.
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| q | query | string | No | Filtro sul nome o codice della collezione. |
| state | query | array | No | Filtro sugli stati. |
| project | query | array | No | Filtro sui progetti. |
| s | query | string | No | Campo di ordinamento. |
| asc | query | boolean | No | Ordinamento ascendente. |
| ps | query | integer (int32) | No | Dimensione della pagina. |
| p | query | integer (int32) | No | Numero di pagina (basato su 1). |
Risposta (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": "Collezione FAQ",
"description": "Descrizione della collezione FAQ",
"documentTypes": null,
"size": 5,
"revision": null,
"type": "Faq",
"state": "Active",
"projects": null,
"items": null,
"isShared": false
}
]
}
GET /questionnaire/rag/faq-collections/find-items#
Riepilogo: Trova voci FAQ.
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| q | query | string | Sì | Filtro sulla domanda. |
| project | query | string (uuid) | No | Filtro sul progetto. |
| ps | query | integer (int32) | No | Dimensione della pagina. |
| p | query | integer (int32) | No | Numero di pagina (basato su 1). |
Risposta (200):
{
"paging": {
"pageNumber": 1,
"pageSize": 10,
"total": 5,
"totalPages": 1
},
"items": [
{
"index": 0,
"question": "What is this product?",
"answer": "This is a great product.",
"comment": "Product FAQ",
"state": "Active"
}
]
}
POST /questionnaire/rag/faq-collection/create#
Riepilogo: Crea una nuova collezione FAQ.
Corpo della richiesta (multipart/form-data):
{
"code": "FAQ-001",
"name": "Collezione FAQ",
"description": "Descrizione della collezione FAQ",
"content": "Content here",
"file": "binary"
}
Risposta (200):
{
"code": "FAQ-001",
"id": "00000000-0000-0000-0000-000000000000",
"name": "Collezione FAQ",
"description": "Descrizione della collezione FAQ",
"documentTypes": null,
"size": 5,
"revision": null,
"type": "Faq",
"state": "Active",
"projects": null,
"items": null,
"isShared": false
}
POST /questionnaire/rag/faq-collection#
Riepilogo: Aggiorna i metadati della collezione FAQ.
Corpo della richiesta:
{
"code": "FAQ-001",
"name": "Updated FAQ Collection",
"description": "Updated description",
"projects": null,
"documentTypes": null,
"isShared": false,
"state": "Active"
}
DELETE /questionnaire/rag/faq-collection#
Riepilogo: Elimina la collezione FAQ.
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice della collezione. |
GET /questionnaire/rag/faq-collection#
Riepilogo: Ottieni la collezione FAQ.
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice della collezione. |
Risposta (200):
{
"code": "FAQ-001",
"org": "00000000-0000-0000-0000-000000000000",
"id": "00000000-0000-0000-0000-000000000000",
"name": "Collezione FAQ",
"description": "Descrizione della collezione FAQ",
"documentTypes": null,
"size": 5,
"revision": null,
"type": "Faq",
"state": "Active",
"projects": null,
"items": null,
"isShared": false
}
GET /questionnaire/rag/faq-collection/check#
Riepilogo: Verifica l’esistenza della collezione FAQ.
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice della collezione. |
Risposta (200):
true
GET /questionnaire/rag/faq-collection/items-total#
Riepilogo: Numero di voci FAQ.
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice della collezione. |
| q | query | string | No | Filtro sul contenuto della voce FAQ. |
Corpo della richiesta:
["Active", "Default"]
Risposta (200):
5
GET /questionnaire/rag/faq-collection/items#
Riepilogo: Ottieni l’elenco delle voci FAQ.
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice della collezione. |
| q | query | string | No | Filtro sul contenuto della voce FAQ. |
| state | query | array | No | Filtro sugli stati. |
| s | query | string | No | Campo di ordinamento. |
| asc | query | boolean | No | Ordinamento ascendente. |
| ps | query | integer (int32) | No | Dimensione della pagina. |
| p | query | integer (int32) | No | Numero di pagina (basato su 1). |
Risposta (200):
{
"paging": {
"pageNumber": 1,
"pageSize": 10,
"total": 5,
"totalPages": 1
},
"items": [
{
"index": 0,
"question": "What is this product?",
"answer": "This is a great product.",
"comment": "Product FAQ",
"state": "Active"
}
]
}
POST /questionnaire/rag/faq-collection/item/create#
Riepilogo: Crea una nuova voce FAQ.
Corpo della richiesta:
{
"code": "FAQ-001",
"index": 0,
"question": "What is this product?",
"answer": "This is a great product.",
"comment": "Product FAQ",
"state": "Active"
}
Risposta (200):
{
"index": 0,
"question": "What is this product?",
"answer": "This is a great product.",
"comment": "Product FAQ",
"state": "Active"
}
GET /questionnaire/rag/faq-collection/item#
Riepilogo: Ottieni la voce FAQ.
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice della collezione. |
| index | query | integer (int32) | Sì | Indice (base 0) della voce FAQ nella collezione. |
Risposta (200):
{
"index": 0,
"question": "What is this product?",
"answer": "This is a great product.",
"comment": "Product FAQ",
"state": "Active"
}
POST /questionnaire/rag/faq-collection/item#
Riepilogo: Aggiorna la voce FAQ.
Corpo della richiesta:
{
"code": "FAQ-001",
"index": 0,
"newIndex": 1,
"question": "Updated question?",
"answer": "Updated answer.",
"comment": "Updated comment",
"state": "Active"
}
DELETE /questionnaire/rag/faq-collection/item#
Riepilogo: Elimina la voce FAQ.
Parametri:
| Nome | In | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|---|
| code | query | string | Sì | Codice della collezione. |
| index | query | integer (int32) | Sì | Indice (base 0) della voce FAQ nella collezione. |
RagQuery#
POST /questionnaire/rag/query#
Riepilogo: Esegui una query nella Knowledge Base RAG
Corpo della richiesta:
{
"project": "00000000-0000-0000-0000-000000000000",
"excludeCollections": [
"00000000-0000-0000-0000-000000000000"
],
"question": "What is this product?",
"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
}
Risposta (200):
{
"attempt": 1,
"preparedQuery": {
"original": "What is this product?",
"enhanced": "What is this product and its features?"
},
"ragItems": [
{
"id": "00000000-0000-0000-0000-000000000000",
"distance": 0.25
}
],
"question": "What is this product?",
"generalInstructions": "Based on the knowledge base, here is the answer:",
"text": "This product is a great solution for your needs.",
"explanation": "The answer was found in multiple sources with high confidence."
}
POST /questionnaire/rag/query-stream#
Riepilogo: Esegui una query nella Knowledge Base RAG (streaming)
Corpo della richiesta: (identico a quello sopra)
Risposta (200):
[
{
"text": "This product is a great solution",
"fragments": [
{
"id": "00000000-0000-0000-0000-000000000000",
"part": 1,
"distance": 0.25,
"type": "Article",
"code": "ART-001",
"title": "Product Title",
"fragment": "Product content fragment"
}
]
},
{
"text": " for your needs.",
"fragments": []
}
]
POST /questionnaire/rag/query-fragments#
Riepilogo: Esegui una query nella Knowledge Base RAG (frammenti)
Corpo della richiesta:
{
"project": "00000000-0000-0000-0000-000000000000",
"exclude_documents": [
"00000000-0000-0000-0000-000000000000"
],
"query": "What is this product?",
"top_k": 5,
"similarity_threshold": 0.5,
"prepare_query": true
}
Risposta (200):
{
"results": [
{
"document_id": "00000000-0000-0000-0000-000000000000",
"document_code": "ART-001",
"document_title": "Product Title",
"revision": 3,
"chunk_index": 0,
"content": "Product content fragment",
"metadata": {
"author": "John Doe",
"created_at": "2025-01-15T10:30:00Z",
"last_updated_at": "2025-01-15T10:35:00Z",
"doc_categories": [
"Product",
"Information"
]
},
"similarity_score": 0.85
}
]
}
Articoli correlati#
- Token API – Generazione e gestione – come creare e gestire i token
- Chiedi all’IA con la tua base di conoscenza – utilizzo delle query RAG
