Ga naar hoofdinhoud

REST API Referentie

De Sidefish REST API stelt ontwikkelaars en integratiepartners in staat om programmatisch klanten te beheren, nieuwe dossiers en vragenlijstverzoeken te starten, en ingevulde antwoorden en documenten op te halen.


1. Algemene Specificaties​

  • Basis-URL Productie: https://sidefish.app/api/v1
  • Authenticatie: Header x-api-key: <uw_api_sleutel> of Authorization: Bearer <token>
  • Content-Type: application/json
  • Paginering:
    • page: Paginanummer (standaard: 1)
    • limit: Aantal items per pagina (standaard: 25, maximum: 100)
  • Interactieve Tester: Bekijk de volledige OpenAPI specificatie en test live API-verzoeken in onze Interactieve API Console.

2. Systeem & Gezondheidscontrole​

API Status controleren​

Controleert de status van de API-servers en de databaseverbinding.

GET /health HTTP/1.1
Host: sidefish.app

Voorbeeld Response (200 OK)​

{
"status": "ok",
"timestamp": "2026-09-13T14:30:00.000Z",
"uptime": 86400,
"database": {
"mongodb": "connected"
}
}

3. Klantenbeheer (/customers)​

Klantenlijst ophalen​

Haalt een gepagineerde lijst op van contacten binnen de organisatie.

GET /customers?search=claes&page=1&limit=25 HTTP/1.1
Host: sidefish.app
x-api-key: sf_live_...

Query Parameters​

  • search (optioneel): Zoekterm op voornaam, achternaam of e-mailadres.
  • portfolioId (optioneel): Filter op een specifieke contactgroep.
  • page / limit: Paginering.

Voorbeeld Response (200 OK)​

{
"customers": [
{
"_id": "64e8b1c4e12a9c001f5a9e32",
"thirdpartyId": "CUST-8812",
"portfolio": "64e8b1c4e12a9c001f5a9e10",
"data": {
"Voornaam": "Pieter",
"Achternaam": "Claes",
"Email": "pieter.claes@example.be",
"Telefoon": "+32470123456"
},
"createdAt": "2026-01-15T10:00:00.000Z"
}
],
"total": 1
}

Individueel contact ophalen​

GET /customers/{customerId} HTTP/1.1
Host: sidefish.app
x-api-key: sf_live_...

Nieuw contact aanmaken​

POST /customers HTTP/1.1
Host: sidefish.app
x-api-key: sf_live_...
Content-Type: application/json

{
"portfolioId": "64e8b1c4e12a9c001f5a9e10",
"thirdpartyId": "CRM-90021",
"data": {
"Voornaam": "Sophie",
"Achternaam": "Wouters",
"Email": "sophie.wouters@example.be",
"Telefoon": "+32471987654",
"Straat": "Veldstraat",
"Huisnummer": "42",
"Postcode": "9000",
"Gemeente": "Gent"
}
}

4. Vragenlijsten (/questionlists)​

Beschikbare formulieren opvragen​

Haalt alle actieve vragenlijstsjablonen op van de organisatie.

GET /questionlists HTTP/1.1
Host: sidefish.app
x-api-key: sf_live_...

Voorbeeld Response (200 OK)​

[
{
"_id": "64e8b1c4e12a9c001f5a9e20",
"name": "Aanvraag Woningverzekering",
"slug": "woningverzekering",
"description": "Digitale intake voor gebouw- en inboedelverzekering.",
"supportedLanguages": ["nl", "fr"],
"hasReportSpec": true
}
]

5. Acties & Sessieverzoeken (/sessionrequests)​

Nieuwe actie starten​

Maakt een nieuw dossierverzoek aan voor een contactpersoon en verstuurt optioneel direct de uitnodiging.

POST /sessionrequests HTTP/1.1
Host: sidefish.app
x-api-key: sf_live_...
Content-Type: application/json

{
"customerId": "64e8b1c4e12a9c001f5a9e32",
"questionListIds": ["64e8b1c4e12a9c001f5a9e20"],
"type": "qlist",
"notificationEmail": {
"send": true
},
"notificationSms": {
"send": false
},
"reminderSchedule": {
"reminder1Days": 3,
"reminder2Days": 7
}
}

Mogelijke waarden voor type:​

  • qlist: Standaard vragenlijstverzoek.
  • multisigning: Vragenlijst met gekwalificeerde digitale handtekening.
  • quicksign: Direct document ter ondertekening zonder vragenlijst.
  • campaign: Openbare campagne-link.

Voorbeeld Response (201 Created)​

{
"_id": "64e8b1c4e12a9c001f5a9e40",
"code": "WF7K92",
"url": "https://sidefish.app/action/WF7K92",
"status": "sent",
"createdAt": "2026-09-13T14:35:00.000Z"
}

Actie Opnieuw Openstellen (Reopen)​

Heropent een reeds afgeronde actie zodat de klant correcties kan doorvoeren.

POST /sessionrequests/{actionId}/reopen HTTP/1.1
Host: sidefish.app
x-api-key: sf_live_...

Actie Annuleren​

Trekt een openstaand verzoek per direct in.

POST /sessionrequests/{actionId}/deactivate HTTP/1.1
Host: sidefish.app
x-api-key: sf_live_...

6. Sessies & Resultaten (/sessions)​

Sessiedetails & Ingevulde antwoorden opvragen​

GET /sessions/{sessionId} HTTP/1.1
Host: sidefish.app
x-api-key: sf_live_...

Voorbeeld Response (200 OK)​

{
"_id": "64e8b1c4e12a9c001f5a9e31",
"sessionRequest": "64e8b1c4e12a9c001f5a9e40",
"customer": "64e8b1c4e12a9c001f5a9e32",
"responses": [
{
"questionId": "q_woningtype",
"questionTitle": "Wat is het type van uw woning?",
"response": "Vrijstaande eengezinswoning"
},
{
"questionId": "q_bouwjaar",
"questionTitle": "Wat is het bouwjaar?",
"response": "2018"
}
],
"documents": [
{
"fileName": "Rapport_Woningverzekering.pdf",
"fileUrl": "/files/downloads/doc_64e8b20a.pdf"
}
],
"createdAt": "2026-09-13T14:20:00.000Z"
}

7. Foutafhandeling​

Alle API-fouten worden geretourneerd in een consistent JSON-formaat:

{
"success": false,
"error": "De opgegeven vragenlijst werd niet gevonden.",
"status": 404
}
HTTP StatusBetekenis
400 Bad RequestOngeldige invoerparameters of ontbrekende verplichte velden in het JSON-verzoek.
401 UnauthorizedOngeldige, ontbrekende of verlopen API-sleutel of token.
403 ForbiddenOnvoldoende rechten om de gevraagde bewerking uit te voeren.
404 Not FoundDe opgevraagde entiteit (klant, sessie of vragenlijst) bestaat niet.
500 Internal Server ErrorOnverwachte serverfout. Deze fouten worden automatisch gemonitord.