# Topsearch API
Wordt gebruikt op elke pagina, bijv 500.html.
# API endpoint
Op het element .js-topsearch staat een data-url attribuut. Dit geeft de api-endpoint aan:
<div class="js-topsearch" data-url="/.netlify/functions/topsearch">…</div>
# Request payload
Er gaat een post met de volgende payload naartoe:
{
  "q": "foo"
}
# API JSON response
De topsearch verwacht de volgende JSON als response van api.
Bij een lege query (?q=) komen er 5 suggesties. Deze worden gebruikt om de meest gezochte termen direct te pushen. Resultaten zijn in dit geval leeg. Korte labels zijn gewenst.
{
  "query": "",
  "suggestions": [
    { "label": "Alle opleidingen", "link": "/opleidingsoverzicht.html" },
    { "label": "Open dagen", "link": "/open-dagen.html" },
    { "label": "Vakanties", "link": "/vakanties.html" },
    { "label": "Bedrijven", "link": "/bedrijven.html" },
    { "label": "Contact", "link": "/contact.html" }
  ],
  "results": [],
  "totalResults": null
}

Bij een gevulde query (?q=eco) komen er maximaal 7 resultaten. Suggesties zijn in dit geval leeg.
Het is waarschijnlijk in sommige gevallen nodig 'zoekmachine-vriendelijke' labels voor bijv. opleidingen aan te bieden, zodat er onderscheid is tussen 'economie deeltijd', 'economie voltijd' etc…i.p.v 'economie' en 'economie'.
{
  "query": "eco",
  "suggestions": [],
  "results": [
    { "label": "Economie", "link": "https://www.google.com" },
    { "label": "economische", "link": "https://www.google.com" },
    { "label": "economische opleidingen", "link": "https://www.google.com" },
    { "label": "economische opleidingen werken", "link": "https://www.google.com" },
    { "label": "ecologische", "link": "https://www.google.com" },
    { "label": "Economie Hogeschool", "link": "https://www.google.com" },
    { "label": "Economie Overzicht", "link": "https://www.google.com" }
  ],
  "totalResults": 22
}

# Results
| Required | Key | Type | Description | 
|---|---|---|---|
| x | query | {String} |  Gezochte query | 
| x | suggestions | {Array} |  Lege array of gevuld met SuggestionObject | 
| x | results | {Array} |  Lege array of gevuld met ResultObject | 
| x | totalResults | {Integer} |  totaal aantal resultaten | 
# SuggestionObject
| Required | Key | Type | Description | 
|---|---|---|---|
| x | label | {String} |  Suggestie label | 
| x | link | {String} |  Link naar de pagina | 
# ResultObject
| Required | Key | Type | Description | 
|---|---|---|---|
| x | label | {String} |  Resultaat label | 
| x | link | {String} |  Link naar de pagina | 
← Finder