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 intestazione X-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):

Autenticazione#

Tutti gli endpoint autenticati richiedono un token API passato nell’intestazione della richiesta.

IntestazioneValore
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.

CodiceSignificato
200 OKRichiesta completata con successo
201 CreatedRisorsa creata con successo
204 No ContentRichiesta completata, nessun corpo nella risposta
400 Bad RequestParametri non validi o richiesta malformata
401 UnauthorizedToken API mancante o non valido
403 ForbiddenIl token non ha i permessi per questa azione
404 Not FoundLa risorsa non esiste
500 Internal Server ErrorErrore 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:

NomeInTipoObbligatorioDescrizione
projquerystring (uuid)NoID del progetto.

Risposta (200):

{
  "active": 5
}

GET /questionnaire/rag/articles/total#

Riepilogo: Numero di articoli

Parametri:

NomeInTipoObbligatorioDescrizione
qquerystringNoFiltro sul nome o codice dell’articolo.
statequeryarrayNoFiltro sugli stati.
projectqueryarrayNoFiltro sui progetti.
typequeryarrayNoFiltro sui tipi di documento.

Risposta (200):

42

GET /questionnaire/rag/articles/list#

Riepilogo: Ottieni l’elenco degli articoli

Parametri:

NomeInTipoObbligatorioDescrizione
qquerystringNoFiltro sul nome o codice dell’articolo.
statequeryarrayNoFiltro sugli stati.
projectqueryarrayNoFiltro sui progetti.
typequeryarrayNoFiltro sui tipi di documento.
squerystringNoCampo di ordinamento.
ascquerybooleanNoOrdinamento ascendente.
psqueryinteger (int32)NoDimensione della pagina.
pqueryinteger (int32)NoNumero 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:

NomeInTipoObbligatorioDescrizione
codequerystringCodice dell’articolo.

Risposta (200):

true

GET /questionnaire/rag/article-info#

Riepilogo: Ottieni le informazioni dell’articolo per codice.

Parametri:

NomeInTipoObbligatorioDescrizione
codequerystringCodice 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:

NomeInTipoObbligatorioDescrizione
codequerystringCodice dell’articolo.
formatquerystringNoSe true, restituisce il contenuto HTML nel corpo della risposta. Altrimenti restituisce il contenuto in formato Markdown.
splitquerybooleanNoSe true, restituisce il contenuto separato per elementi RAG.
cssquerybooleanNoSe 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:

NomeInTipoObbligatorioDescrizione
codequerystringCodice dell’articolo.

GET /questionnaire/rag/article/pdf#

Riepilogo: Ottieni l’articolo in PDF per codice

Parametri:

NomeInTipoObbligatorioDescrizione
codequerystringCodice dell’articolo.

Risposta (200):

(pdf binary)

GET /questionnaire/rag/article/content#

Riepilogo: Ottieni il contenuto dell’articolo

Parametri:

NomeInTipoObbligatorioDescrizione
codequerystringCodice 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:

NomeInTipoObbligatorioDescrizione
nounquerystringNoSostantivo 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:

NomeInTipoObbligatorioDescrizione
idqueryarrayElenco 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:

NomeInTipoObbligatorioDescrizione
codequerystringCodice 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:

NomeInTipoObbligatorioDescrizione
idpathstring (uuid)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:

NomeInTipoObbligatorioDescrizione
idpathstring (uuid)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:

NomeInTipoObbligatorioDescrizione
codequerystringCodice dell’articolo.
revqueryinteger (int32)NoNumero della revisione.
forcequerybooleanNoForza 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:

NomeInTipoObbligatorioDescrizione
idpathstring (uuid)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:

NomeInTipoObbligatorioDescrizione
idquerystring (uuid)ID della collezione RAG.
itemquerystring (uuid)NoID dell’elemento RAG.
messagequerystring (uuid)NoID del messaggio.
ascquerybooleanNoOrdinamento ascendente.
psqueryinteger (int32)NoDimensione della pagina.
pqueryinteger (int32)NoNumero 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:

NomeInTipoObbligatorioDescrizione
idquerystring (uuid)ID della collezione RAG.
itemquerystring (uuid)NoID dell’elemento RAG.
messagequerystring (uuid)NoID 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:

NomeInTipoObbligatorioDescrizione
cquerystring (uuid)ID della collezione RAG.
idquerystring (uuid)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:

NomeInTipoObbligatorioDescrizione
idquerystring (uuid)ID del messaggio.

Risposta (200):

{}

RagFaq#

GET /questionnaire/rag/faq-collections/summary#

Riepilogo: Riepilogo per la pagina Home

Parametri:

NomeInTipoObbligatorioDescrizione
projquerystring (uuid)NoID del progetto.

Risposta (200):

{
  "active": 3
}

GET /questionnaire/rag/faq-collections/total#

Riepilogo: Numero di collezioni FAQ.

Parametri:

NomeInTipoObbligatorioDescrizione
qquerystringNoFiltro sul nome o codice della collezione.
statequeryarrayNoFiltro sugli stati.
projectqueryarrayNoFiltro sui progetti.

Risposta (200):

3

GET /questionnaire/rag/faq-collections/list#

Riepilogo: Ottieni l’elenco delle collezioni FAQ.

Parametri:

NomeInTipoObbligatorioDescrizione
qquerystringNoFiltro sul nome o codice della collezione.
statequeryarrayNoFiltro sugli stati.
projectqueryarrayNoFiltro sui progetti.
squerystringNoCampo di ordinamento.
ascquerybooleanNoOrdinamento ascendente.
psqueryinteger (int32)NoDimensione della pagina.
pqueryinteger (int32)NoNumero 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:

NomeInTipoObbligatorioDescrizione
qquerystringFiltro sulla domanda.
projectquerystring (uuid)NoFiltro sul progetto.
psqueryinteger (int32)NoDimensione della pagina.
pqueryinteger (int32)NoNumero 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:

NomeInTipoObbligatorioDescrizione
codequerystringCodice della collezione.

GET /questionnaire/rag/faq-collection#

Riepilogo: Ottieni la collezione FAQ.

Parametri:

NomeInTipoObbligatorioDescrizione
codequerystringCodice 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:

NomeInTipoObbligatorioDescrizione
codequerystringCodice della collezione.

Risposta (200):

true

GET /questionnaire/rag/faq-collection/items-total#

Riepilogo: Numero di voci FAQ.

Parametri:

NomeInTipoObbligatorioDescrizione
codequerystringCodice della collezione.
qquerystringNoFiltro 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:

NomeInTipoObbligatorioDescrizione
codequerystringCodice della collezione.
qquerystringNoFiltro sul contenuto della voce FAQ.
statequeryarrayNoFiltro sugli stati.
squerystringNoCampo di ordinamento.
ascquerybooleanNoOrdinamento ascendente.
psqueryinteger (int32)NoDimensione della pagina.
pqueryinteger (int32)NoNumero 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:

NomeInTipoObbligatorioDescrizione
codequerystringCodice della collezione.
indexqueryinteger (int32)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:

NomeInTipoObbligatorioDescrizione
codequerystringCodice della collezione.
indexqueryinteger (int32)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#

in alto
Seleziona lingua