Documentatie · Bijlagen
REST Endpoint-referentie
Deze bijlage bevat een overzicht van de REST API-routes die door de ADP Car Market Hub-plugin zijn geregistreerd onder de as24ci/v1-namespace.
Wanneer u dit document moet gebruiken
Gebruik deze referentie wanneer u een plugin-endpoint moet aanroepen, wanneer u onverwachte 403/404-antwoorden diagnosticeert, of wanneer u een integratie documenteert. Zie REST API Endpoints voor de conceptuele beschrijving van elk endpoint.
Overzicht
Alle routes die door de plugin worden geregistreerd, maken gebruik van de WordPress REST API en delen de namespace as24ci/v1. De volledige URL van elk endpoint is de WordPress REST-root gevolgd door de route, doorgaans https://example.com/wp-json/as24ci/v1/....
De endpoints vallen uiteen in vijf groepen:
- Openbare voertuiggegevens (
/vehicles,/vehicles/{id}) — standaard uitgeschakeld; beveiligd dooras24ci_rest_api_enabled. - Favorieten-helper (
/favorites) — gebruikt door de favorietenpagina op de frontend. - Analytics-tracking (
/analytics/track) — gebruikt door het frontend-script. - Cron-importtrigger (
/cron-import) — beveiligd met een token; gebruikt door externe planners. - Licentieverversingssignaal (
/license-refresh-signal) — gebruikt door het API Platform om de site te vragen de licentie opnieuw te valideren.
Overzicht van endpoints
| Route | Methode | Authenticatie | Altijd geregistreerd? |
|---|---|---|---|
/as24ci/v1/vehicles | GET | Geen (openbaar) | Nee — alleen wanneer as24ci_rest_api_enabled is '1'. |
/as24ci/v1/vehicles/{id} | GET | Geen (openbaar) | Nee — dezelfde beveiliging als hierboven. |
/as24ci/v1/favorites | POST | Geen (openbaar) | Ja. |
/as24ci/v1/analytics/track | POST | Geen (openbaar) | Ja. |
/as24ci/v1/cron-import | GET | Bearer-token | Ja. Retourneert 403 totdat er een token is geconfigureerd. |
/as24ci/v1/license-refresh-signal | POST | Op signalen gebaseerd vertrouwensmodel (verwerkt in callback) | Ja. |
GET /as24ci/v1/vehicles
Gepagineerde, filterbare lijst van geïmporteerde voertuigen waarvan de post-status publish is.
Query-parameters:
| Parameter | Type | Standaard | Opmerkingen |
|---|---|---|---|
page | integer ≥ 1 | 1 | Paginanummer. |
per_page | integer 1–100 | 10 | Items per pagina. |
make | string | — | Exacte overeenkomst met de meta-sleutel voor het merk. |
model | string | — | Exacte overeenkomst met de meta-sleutel voor het model. |
fuel_type | string | — | LIKE overeenkomst met de meta-sleutel voor het brandstoftype. |
year_min, year_max | integer | — | Numeriek bereik voor _as24ci_year. |
price_min, price_max | numeriek | — | Numeriek bereik voor _as24ci_price. |
orderby | date, price, mileage, title | date | Sorteerveld. |
order | asc, desc | desc | Sorteerrichting (niet hoofdlettergevoelig). |
Antwoord (structuur):
{
"vehicles": [
{
"id": 0, "title": "", "url": "", "image": "",
"make": "", "model": "", "year": 0, "price": 0,
"currency": "EUR", "mileage": 0, "condition": "",
"fuel_type": "", "transmission": "", "body_type": "",
"color": "", "doors": 0, "horse_power": 0, "vin": "",
"listing_id": ""
}
],
"total": 0,
"pages": 0,
"page": 1,
"per_page": 10
}
Het veld image is de middelgrote/grote afmeting van de uitgelichte afbeelding (lege string als er geen is). Het veld currency valt terug op as24ci_default_currency wanneer er geen valuta per voertuig is opgeslagen.
GET /as24ci/v1/vehicles/{id}
Volledige details voor een enkel voertuig.
- Pad-parameter:
id— positief geheel getal; gevalideerd en gecast viaabsint. - Authenticatie: geen (openbaar). Zelfde beveiliging als het lijst-endpoint.
- Antwoord: alle velden uit het lijst-antwoord plus
description,images(array van bijlage-URL's oplarge-formaat, die handmatige en geïmporteerde afbeeldingen combineert en terugvalt op de uitgelichte afbeelding),equipment_standard,equipment_optionalenseller. - Fouten:
404 as24ci_vehicle_not_foundwanneer de post niet bestaat, niet deas24ci_carCPT is, of niet is gepubliceerd.
POST /as24ci/v1/favorites
Hydrateert de favorieten van de bezoeker met actuele voertuiggegevens voor ID's die zijn opgeslagen in de lokale opslag van de browser.
- Authenticatie: geen (openbaar). Altijd geregistreerd.
- Body: JSON-object met
ids— een array van post-ID's. Opgeschoond tot een unieke lijst van positieve gehele getallen; gemaximeerd op 50 ID's per verzoek. - Antwoord:
{ "vehicles": [ ... ] }. - Opmerkingen: Alleen gepubliceerde voertuigen worden geretourneerd. Berichten waar de bezoeker geen toegang meer toe heeft (verwijderd, concept, onjuist post-type) worden geruisloos weggelaten.
POST /as24ci/v1/analytics/track
Ontvangt analytics-gebeurtenissen van de trackingpixel aan de frontend.
- Authenticatie: geen (openbaar). Altijd geregistreerd.
- Body-parameters:
post_id— integer ≥ 0. Standaard0.event_type— een vanview,view_archive,view_compare,view_favorites,filter_search,contact_open,lead_sent.extra_data— optionele opgeschoonde string. Voorfilter_searchmoet dit een JSON-object zijn dat de actieve filter-sleutel/waardeparen bevat.- Antwoord:
{ "tracked": true }bij succes, of{ "tracked": false }met HTTP400wanneer de gebeurtenis een voertuigpost vereist die niet bestaat of niet is gepubliceerd. - Opmerkingen: Bewust permissief zodat anonieme bezoekers gebeurtenissen kunnen verzenden. Vertrouw hier niet op voor sluitende bedrijfsgegevens.
GET /as24ci/v1/cron-import
Met een token beveiligd endpoint dat de gedeelde importroutine uitvoert. Delegeert naar dezelfde Scheduler::run_import()-methode die wordt gebruikt door de WP-Cron-hook en de handmatige "Nu triggeren"-beheerdersknop.
- Authenticatie: bearer-token. Geef het token op via de HTTP-header
Authorization: Bearer <token>(voorkeur — houdt het token buiten de toegangslogs) of de query-parameter?token=<token>. De vergelijking maakt gebruik vanhash_equals()om timing-aanvallen te beperken. - Token-opslag:
as24ci_cron_token-optie. Genereer of roteer deze via Import & Limieten in het plugin-beheer. - Antwoorden:
403wanneer er geen token is geconfigureerd of het opgegeven token niet overeenkomt.200met{ "success": true, "message": "...", "counts": { ... } }bij een succesvolle uitvoering.429metsuccess: falsewanneer er al een andere import actief is en de runner weigerde een tweede te starten.500wanneer de runner een uitzondering heeft gegenereerd.- Bijwerking: Een succesvolle authenticatie werkt
as24ci_last_external_cron_runbij, wat het tabblad Systeem & Hulp gebruikt om te bevestigen dat de externe cron de site bereikt. Het bezoeken van een willekeurige URL met?as24ci_cron=1werkt deze tijdstempel ook bij via de heartbeat-hook opinit.
Voorbeeld van een externe cron-aanroep (placeholder — vervang door uw eigen host en een gegenereerd token):
0 * * * * curl -fsS -H "Authorization: Bearer YOUR_TOKEN" \
"https://example.com/wp-json/as24ci/v1/cron-import?as24ci_cron=1"
POST /as24ci/v1/license-refresh-signal
Lichtgewicht signaal-endpoint waarmee het API Platform de site kan vragen om de licentie out-of-band opnieuw te valideren (bijvoorbeeld na een wijziging van het abonnement). Onvoorwaardelijk geregistreerd zodat het platform dit altijd kan bereiken; het is niet afgeschermd achter de openbare voertuig-REST API-optie.
- Authenticatie: op signalen gebaseerd vertrouwensmodel. Authenticatie wordt afgehandeld binnen de callback in plaats van door een
permission_callback; het verzoek moet JSON zijn en wordt gevalideerd tegen de verwachte signaalstructuur. - Body: JSON-object. Veilige, niet-geheime correlatievelden (
request_id,event) worden alleen teruggestuurd voor tracering. - Antwoorden:
405 method_not_allowedwanneer het verzoek nietPOSTis.400 invalid_content_typewanneer de body geen JSON is, of400 invalid_jsonwanneer de body niet kan worden geparsed.200wanneer het signaal wordt geaccepteerd.- Eigenaar:
AS24CI\License_Refresh_Signal.
Operationele opmerkingen
- De openbare voertuig-endpoints voeren standaard
WP_Query-aanroepen uit en respecteren de normale WordPress-objectcaching. Herhaalde identieke verzoeken profiteren van de post- en post-meta-caches. - Numerieke filters dragen bij aan een
meta_query. Zorg er bij grote catalogi voor dat de onderliggende meta-sleutels op databaseniveau zijn geïndexeerd als u veel verkeer verwacht. Controleer de indexeringsstrategie in de huidige plugin-versie voordat u live gaat. - Het lijst-endpoint past
update_postmeta_cache()toe op de geretourneerde posts om de responstijden voorspelbaar te houden. - Het favorieten-endpoint stelt een harde limiet van 50 ID's per verzoek in om misbruik te voorkomen.
- Het cron-import-endpoint stelt
nocache_headers()in, zodat caching-proxies de geplande uitvoeringen niet verstoren. - Mooie permalinks worden aanbevolen voor REST-URL's in padstijl. Met eenvoudige permalinks zijn de endpoints nog steeds bereikbaar via
?rest_route=.
Problemen oplossen
/vehiclesretourneert404. De openbare API is uitgeschakeld. Stelas24ci_rest_api_enabledin op'1'in Instellingen → SEO & Integraties (of via WP-CLI /update_option)./cron-importretourneert403. Ofwel is er geen token geconfigureerd (as24ci_cron_tokenis leeg — het antwoordbericht bevestigt dit), ofwel komt het opgegeven token niet overeen. Genereer een nieuw token in het beheer en probeer het opnieuw./cron-importretourneert429. Er is al een andere import actief en een vergrendeling voorkomt een tweede gelijktijdige uitvoering. Wacht tot de huidige uitvoering is voltooid.- Lege
vehicles-array op het lijst-endpoint zonder filters. Er zijn geen voertuigen gepubliceerd, of de catalogus is nog niet geïmporteerd. Controleer het scherm Import & Limieten en de importlogs. - HTTP
400op/analytics/track. De gebeurtenis vereist een gepubliceerde voertuigpost, maarpost_idverwijst naar een concept, verwijderde post of een post die geen voertuig is.