Koppelen met API
Om voor klanten een alternatief te bieden voor crawling hebben we enkele endpoints beschikbaar gesteld om zo vanuit externe bronnen informatie met ons platform te delen, of vanuit ons platform te lezen. Deze endpoints zijn primair voor het lezen, schrijven, bijwerken en verwijderen van de zogeheten Documenten.
Documenten
Binnen het platform zijn Documenten de bronnen waaruit wij antwoorden genereren. Alle documenten voor een klant bijelkaar noemen wij de kennisbank. Met de API heeft een externe partij invloed op deze kennisbank en daarmee de kwaliteit van de gegenereerde antwoorden.
Authenticatie
Om HTTP-verzoeken naar ons systeem te authoriseren gebruiken we een zogeheten ‘long lived Bearer token’.
Wij zijn in staat tokens te beheren met alle permissies, maar ook met een selectie van deze permissies.
Bijvoorbeeld: Als een openbare service alleen gemachtigd moet zijn om informatie op te vragen, dat al is aangemaakt door een andere strategie of token.
Voorbeeld van Authorization-header met een Bearer-token:
Authorization: Bearer 31090db4198c2bf9f9a7d768bf6107a40f102d47534cb122b0
Aan deze authenticatie-token verlenen wij de volgende (CRUD-)permissies:
documents:create
documents:read
documents:update
documents:delete
API Documentatie
Algemene informatie en uitgangspunten
De API is een combinatie van het JSON:API standaard bovenop een REST-architectuur.
Dit heeft als voordeel dat de URL-structuur van de beschikbare endpoints en de request/response formats voorspelbaar zijn. De API verwacht hierom de volgende headers bij elke request:Accept:
application/vnd.api+jsonContent-Type:
application/vnd.api+json
Alle endpoints zijn per klant beschikbaar onder een eigen sub-domein,
bijvoorbeeld: https://{klant}.vragen.ai/api/v1/In antwoorden vanuit de API vind je de property
content_cleanedterug.
Hierin vind je de opgeslagen content terug dat door onze filter en parser is gegaan, t.b.v. verdere verwerking. Hiermee kan worden gevalideerd of de verzonden informatie goed wordt verwerkt.
Document Schema
Wanneer je documenten toevoegt aan de kennisbank, kun je de volgende informatie meegeven:
Basis velden
external_reference
Type: string (verplicht)
Een referentie naar het document binnen je eigen systeem. Gebruik dit veld om een koppeling te maken tussen documenten in de kennisbank en records in je eigen database of CMS.
url
Type: string (verplicht)
De unieke bron-URL van het document. Hiermee maken we elk document uniek en onderscheidbaar binnen de kennisbank. Zorg ervoor dat elke URL uniek is per document.
mime_type
Type: string (verplicht)
Het bestandstype van de bron. Momenteel ondersteunen we de volgende types:
text/htmlvoor HTML-documentenapplication/pdfvoor PDF-bestanden
title
Type: string (optioneel, maar aanbevolen)
De titel van het document. Deze wordt gebruikt voor weergave in zoekresultaten en helpt gebruikers het document te identificeren.
Automatische extractie: Als je geen titel meegeeft, halen we automatisch de titel uit het document zelf (bijvoorbeeld uit een <h1> tag bij HTML-documenten).
content
Type: string (optioneel)
De volledige tekstinhoud van het document. Deze content wordt geïndexeerd en vormt de basis voor het doorzoeken van de kennisbank.
Automatische download: Als je geen content meegeeft, downloaden we automatisch het document op basis van de opgegeven URL en extraheren we de content. Dit is handig wanneer je niet zelf de content wil ophalen en extraheren.
Let op
In het geval van "mime_type": "text/html" verwachten wij zo compleet mogelijke en een valide HTML.
Geef content altijd binnen volledige HTML tags: <html><body> ... </body></html>
Extra velden
meta_data
Type: object (optioneel)
Een flexibel object voor aanvullende metadata die het gedrag van de kennisbank en zoekresultaten kan verrijken. Je bent volledig vrij om hier eigen velden aan toe te voegen. Deze metadata wordt gebruikt om de systemen slimmer te maken en kan ingezet worden om zoekresultaten te verrijken.
Veelgebruikte meta_data velden (voorbeelden):
Hoewel er geen voorgeschreven structuur is, worden de volgende velden vaak gebruikt en herkend door het systeem:
author (string) - De auteur of maker van het document
date (string, ISO 8601 formaat) - Publicatie- of wijzigingsdatum van het document. Deze datum kan worden gebruikt om de actualiteit van bronnen te bepalen.
language (string, ISO 639-1 code) - De taal van het document (bijv. "nl", "en")
category (string) - Categorisering van het document (bijv. "productdocumentatie", "blogpost", "handleiding")
Gebruik van custom velden:
Je kunt volledig vrij eigen metadata velden toevoegen die specifiek zijn voor jouw use case. Deze custom velden kunnen worden gebruikt voor:
Maatwerk functionaliteit binnen systemen
Slimmer maken van je Agent en Antwoordsysteem
Filtering en facettering van zoekresultaten
Verrijken van je zoekresultaten
Endpoints
Creëren van een nieuw document
POST https://{klant}.vragen.ai/api/v1/documents
Voorbeeld Request body:
Voorbeeld Response
Lezen van een bestaand document
GET https://{klant}.vragen.ai/api/vi/documents/{document_id}
Voorbeeld Response (vergelijkbaar met 'Creeren van document'):
Bijwerken van een bestaand document
PATCH https://{klant}.vragen.ai/api/v1/documents/{document_id}
Voorbeeld Request body:
Voorbeeld response:
Lezen van alle aanwezige documenten
Voorbeeld response body
Het antwoord zal een lijst van documenten bevatten, indien aanwezig. Structuur van deze objecten zijn hetzelfde per document en vergelijkbaar met wanneer je een enkel document opvraagt.
Let op: met de volgende informatie dat je zal terugkrijgen kan je opvolgende verzoeken sturen om verdere informatie op te halen
Verwijderen van een document
DELETE https://{klant}.vragen.ai/api/v1/documents/{document_id}
Support
Aan de hand van bovenstaande informatie en voorbeelden zou je geen problemen moeten ondervinden om een verbinding op te zetten met onze API. Als je nog vragen hebt, neem dan contact op met ons supportteam via info@vragen.ai.
