v2 — Laatste uitrol: 29 oktober 2026
Apps — bannerMedia
GET appsGET apps/{slug}
Als bannerMedia is ingesteld, wordt het blok met de eerste afbeelding uit description en contentSections verwijderd, ook bij een andere bannerafbeelding. Bij elke synchronisatie toegepast; WordPress-inhoud blijft behouden. Zonder banner blijft de inhoud gelijk. Apps opnieuw synchroniseren en lokale inhoud vervangen. V1 ongewijzigd.
Documenten uitsluitend voor WordPress
GET productsGET products/{slug}GET solutionsGET solutions/{slug}GET servicesGET services/{slug}
Documenten met de klasse api-hidden worden tijdens de V2-synchronisatie uitgesloten. Ze blijven beschikbaar in WordPress. Geen nieuwe JSON-velden. Na de uitrol opnieuw synchroniseren en lokale documents-arrays vervangen. V1 blijft ongewijzigd.
Volledige app-samenvattingen
GET appsGET apps/{slug}
App-samenvattingen (subtitle) zijn niet langer beperkt tot 255 tekens. Het veld blijft tekst zonder HTML. Compatibel met het bestaande contract; synchroniseer apps opnieuw voor de volledige tekst. V1 ongewijzigd.
Video’s in app-inhoud
GET appsGET apps/{slug}
ACF-videoshortcodes worden op hun plaats als YouTube- of Vimeo-HTML-speler weergegeven in description en contentSections. De array videos blijft ongewijzigd. Rijen met api-hidden blijven uitgesloten. Synchroniseer na publicatie de inhoud opnieuw en sta deze iframes toe in de client. V1 ongewijzigd.
Inhoud uitsluitend voor WordPress
GET appsGET apps/{slug}GET servicesGET services/{slug}GET solutionsGET solutions/{slug}GET productsGET products/{slug}GET categoriesGET categories/{slug}
HTML- of WPBakery-elementen met de klasse api-hidden en hun onderliggende inhoud worden uitgesloten van beschrijvingen en gestructureerde secties van de V2-catalogus. WordPress blijft ongewijzigd. Geen nieuwe JSON-velden; voer een volledige synchronisatie uit om deze inhoud uit lokale kopieën te verwijderen. V1 ongewijzigd.
Productprijzen verwijderd
GET productsGET products/{slug}GET apps/{slug}GET solutions/{slug}GET services/{slug}
Het veld price (voorheen bedrag/valuta of null) vervalt, ook bij gekoppelde producten. Het filter price vervalt en selecties worden genegeerd. Incompatibele V2-wijziging: prijsvelden, weergaven en filters verwijderen; volledig synchroniseren om opgeslagen prijzen te wissen. V1 ongewijzigd.
Optionele tweede knop
GET page/{slug}
Tweede knop in kaart-HTML data.content: eigen label en URL, beide vereist. Klasse api-sync-button--secondary. Compatibel met bestaande kaarten, geen nieuw JSON-veld; pas de stijl zo nodig aan.
Productserie
GET productsGET products/{slug}
Compatibele toevoeging van series aan productlijsten en productdetails: { label, slug, order }, of null zonder serie. Label en slug volgen de producttaal. series.order is de positie van het product binnen de serie, los van de algemene volgorde; zonder waarde is dit null. Bestaande velden blijven gelijk. Geen migratie nodig; houd rekening met null.
Links naar opnieuw aangemaakte pagina’s
GET menusGET menu/{slug}
Een menu-item naar een actieve pagina blijft zichtbaar wanneer die pagina opnieuw is aangemaakt met de slug van een verwijderde pagina. Verwijderde of niet-toegestane bestemmingen blijven verborgen. Compatibele correctie met of zonder lang, zonder wijziging van het JSON-formaat.
Bron van de categoriebanner
GET categoriesGET categories/{slug}
bannerImage gebruikt nu “Bannière Sheet Category” (banner-sheet-category) in plaats van “Bannière Product Sheet” (category_image). Geen terugval op het oude veld: een ontbrekende waarde of ongeldige afbeelding geeft null. De JSON-naam en het formaat blijven gelijk in lijsten, details en subcategorieën; primaryMedia blijft onafhankelijk. Vul het nieuwe veld vóór de volgende synchronisatie in om een bestaande banner te behouden.
Collectieslugs in menu’s
GET menu/{slug}
Menudoelen van het type collection bevatten nu slug, gelijk aan collection (apps, solutions of services). Beschikbaar met en zonder lang, in items[].target of de per taal gegroepeerde vermeldingen. Compatibele toevoeging in v2; andere doeltypen blijven ongewijzigd.
Afbeeldingen bij links
GET apps/{slug}
Elke vermelding in links bevat nu media: een mediaobject met hetzelfde formaat als primaryMedia, of null als er geen geldige afbeelding aan de link is gekoppeld. Afbeelding en metadata komen uit het record in de gevraagde taal, zonder terugval op een andere taal. Bestaande velden blijven behouden; compatibele toevoeging alleen in v2. De applijsten blijven ongewijzigd.
Uitgelichte afbeeldingen van pagina’s
GET pagesGET page/{slug}
De uitgelichte WordPress-afbeelding wordt als bannerMedia opgenomen in paginalijsten en paginadetails, met de mediastructuur van de catalogus. null als er geen geldige afbeelding is ingesteld. Pagina’s krijgen geen primaryMedia. De metadata komen van de afbeelding van de pagina in de gevraagde taal, zonder terugval op een andere taal. Compatibele toevoeging, uitsluitend in v2.
Headerafbeeldingen voor categorieën
GET categoriesGET categories/{slug}
Categorieën bevatten bannerImage, een mediaobject met dezelfde structuur als primaryMedia, afkomstig uit het headerveld “Category image”. Beschikbaar in lijsten, details en onderliggende categorieën; null als er geen geldige afbeelding is ingesteld. De miniatuur primaryMedia blijft onafhankelijk. Geen terugval op een andere taal. Compatibele toevoeging, uitsluitend in v2.
Migratie van v1 naar v2 — gevolgen voor afnemers
GET productsGET products/{slug}GET categoriesGET categories/{slug}GET appsGET apps/{slug}GET solutionsGET solutions/{slug}GET servicesGET services/{slug}GET pagesGET page/{slug}GET menusGET menu/{slug}
Bij directe API-aanroepen met een licentie voor de gewenste groepen en ondersteuning voor extra JSON-velden bestaat de aanpassing voornamelijk uit het vervangen van /api/ door /api/v2/. Voorbeeld: /api/products?lang=fr wordt /api/v2/products?lang=fr.
**Ongewijzigd:** licentietoken, authenticatie (Authorization: Bearer of x-api-token), taalparameters, filters, paginering en bestaande velden. Gebruik van groups, groupsByLanguage en bannerMedia is optioneel; clients die onbekende JSON-eigenschappen weigeren moeten hun schema aanpassen.
**Toegankelijke inhoud:** v2 past de toegestane licentiegroepen toe. Bestaande licenties kregen alle bij de migratie beschikbare groepen; latere groepen worden niet automatisch toegekend. Zonder toegestane groep zijn lijsten leeg en geven details 404. Oude technische tokens zonder licentie met groepen bieden geen toegang tot de v2-catalogus.
**Lokale catalogus:** begin met een volledige v2-synchronisatie zonder delta of syncUntil uit v1 te hergebruiken. Vervang de lokale catalogus door het volledige toegestane resultaat en gebruik daarna de nieuwe v2-waarde syncUntil. Een 410-antwoord vereist een nieuwe volledige synchronisatie, onder meer na wijzigingen aan licentiegroepen. Dit geldt niet voor directe raadpleging zonder lokale kopie.
V1 blijft beschikbaar op /api/*; er is geen verplichte automatische migratie of omleiding.
Groepen in antwoorden
GET productsGET products/{slug}GET categoriesGET categories/{slug}GET appsGET apps/{slug}GET solutionsGET solutions/{slug}GET servicesGET services/{slug}GET pagesGET page/{slug}GET menusGET menu/{slug}
Lijst- en detailresources bevatten nu groups, alle toegewezen groepsslugs (voorbeeld: ["standard", "BSD"]). [] betekent inhoud zonder groep. Dit zijn inhoudsgroepen, geen tokenrechten; filtering blijft ongewijzigd. Geïdentificeerde gestructureerde verwijzingen worden ook aangevuld. Menu’s zonder lang bevatten groupsByLanguage, met behoud van data. Delta-verwijderingen blijven ongewijzigd. Compatibele toevoeging uitsluitend in v2; lees de volledige gegevens opnieuw om opgeslagen inhoud aan te vullen.
Toegang per groep
GET productsGET products/{slug}GET categoriesGET categories/{slug}GET appsGET apps/{slug}GET solutionsGET solutions/{slug}GET servicesGET services/{slug}GET pagesGET page/{slug}GET menusGET menu/{slug}
V2-inhoud wordt gefilterd op de groepen die voor het token zijn toegestaan. Bij inhoud met meerdere groepen is één overeenkomst voldoende. Inhoud zonder groep blijft beschikbaar voor tokens met minstens één geldige groep. Tokens zonder groepen geven geen inhoud terug: lege lijsten en status 404 voor details.
Bestaande licenties krijgen tijdens de migratie alle beschikbare groepen. Toekomstige groepen worden niet automatisch toegevoegd. Selecteer groepen bij het aanmaken of wijzigen van een licentie in het dashboard. Een nieuwe licentie zonder selectie heeft geen v2-toegang.
De filtering geldt ook voor gekoppelde inhoud, menu’s, aantallen, facetten en paginering. Gegenereerde cataloguslinks gebruiken v2-routes. Wanneer inhoud buiten de toegestane groepen valt, meldt de incrementele synchronisatie een verwijdering.
Voer voor deze wijziging en na aanpassing van de licentiegroepen een volledige synchronisatie uit en vervang de eerdere lokale gegevens. Een incompatibel incrementeel verzoek geeft 410 terug en vereist een nieuwe volledige synchronisatie. V1 blijft ongewijzigd.
Toevoeging van bannerMedia
GET productsGET products/{slug}GET solutionsGET solutions/{slug}GET servicesGET services/{slug}GET appsGET apps/{slug}
Het veld bannerMedia is beschikbaar in de lijsten en de via een slug opgevraagde details van producten, oplossingen, diensten en apps. Het bevat de bannerafbeelding in hetzelfde formaat als primaryMedia, of null als er geen banner is ingesteld voor de gevraagde taal.