Documentazione · Appendici
Riferimento degli endpoint REST
Questa appendice elenca le rotte dell'API REST registrate dal plugin ADP Car Market Hub sotto il namespace as24ci/v1.
Quando utilizzare questo documento
Utilizza questo riferimento quando hai la necessità di chiamare un endpoint del plugin, quando stai diagnosticando risposte 403/404 impreviste o quando stai documentando un'integrazione. Per la descrizione concettuale di ciascun endpoint, consulta REST API Endpoints.
Panoramica
Tutte le rotte registrate dal plugin utilizzano l'API REST di WordPress e condividono il namespace as24ci/v1. L'URL completo di qualsiasi endpoint è la radice REST di WordPress seguita dalla rotta, tipicamente https://example.com/wp-json/as24ci/v1/....
Gli endpoint si dividono in cinque gruppi:
- Dati pubblici dei veicoli (
/vehicles,/vehicles/{id}) — disabilitati per impostazione predefinita; controllati daas24ci_rest_api_enabled. - Helper dei preferiti (
/favorites) — utilizzato dalla pagina dei preferiti del front-end. - Tracciamento degli analytics (
/analytics/track) — utilizzato dallo script del front-end. - Trigger di importazione cron (
/cron-import) — protetto da token; utilizzato da pianificatori esterni. - Segnale di aggiornamento della licenza (
/license-refresh-signal) — utilizzato dall'API Platform per richiedere al sito di riconvalidare la propria licenza.
Riepilogo degli endpoint
| Rotta | Metodo | Autenticazione | Sempre registrato? |
|---|---|---|---|
/as24ci/v1/vehicles | GET | Nessuna (pubblico) | No — solo quando as24ci_rest_api_enabled è '1'. |
/as24ci/v1/vehicles/{id} | GET | Nessuna (pubblico) | No — stesso controllo di cui sopra. |
/as24ci/v1/favorites | POST | Nessuna (pubblico) | Sì. |
/as24ci/v1/analytics/track | POST | Nessuna (pubblico) | Sì. |
/as24ci/v1/cron-import | GET | Bearer token | Sì. Restituisce 403 finché non viene configurato un token. |
/as24ci/v1/license-refresh-signal | POST | Modello di attendibilità basato solo sul segnale (gestito all'interno della callback) | Sì. |
GET /as24ci/v1/vehicles
Elenco paginato e filtrabile dei veicoli importati il cui stato dell'articolo è publish.
Parametri di query:
| Parametro | Tipo | Predefinito | Note |
|---|---|---|---|
page | intero ≥ 1 | 1 | Numero di pagina. |
per_page | intero 1–100 | 10 | Elementi per pagina. |
make | stringa | — | Corrispondenza esatta con la chiave meta della marca. |
model | stringa | — | Corrispondenza esatta con la chiave meta del modello. |
fuel_type | stringa | — | Corrispondenza LIKE con la chiave meta del tipo di carburante. |
year_min, year_max | intero | — | Intervallo numerico rispetto a _as24ci_year. |
price_min, price_max | numerico | — | Intervallo numerico rispetto a _as24ci_price. |
orderby | date, price, mileage, title | date | Campo di ordinamento. |
order | asc, desc | desc | Direzione di ordinamento (insensibile alle maiuscole/minuscole). |
Risposta (struttura):
{
"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
}
Il campo image rappresenta la dimensione medio-grande dell'immagine in evidenza (stringa vuota se assente). Il campo currency ripiega su as24ci_default_currency quando non è memorizzata alcuna valuta specifica per il veicolo.
GET /as24ci/v1/vehicles/{id}
Dettagli completi per un singolo veicolo.
- Parametro di percorso:
id— intero positivo; validato e convertito tramiteabsint. - Autenticazione: nessuna (pubblico). Stesso controllo dell'endpoint dell'elenco.
- Risposta: tutti i campi della risposta dell'elenco più
description,images(array di URL degli allegati alla dimensionelarge, che unisce le immagini manuali e quelle importate e ripiega sull'immagine in evidenza),equipment_standard,equipment_optionaleseller. - Errori:
404 as24ci_vehicle_not_foundquando l'articolo non esiste, non è il CPTas24ci_caro non è pubblicato.
POST /as24ci/v1/favorites
Idrata i preferiti del visitatore con i dati correnti dei veicoli per gli ID memorizzati nel local storage del browser.
- Autenticazione: nessuna (pubblico). Sempre registrato.
- Corpo: oggetto JSON con
ids— un array di ID degli articoli. Sanificato in un elenco univoco di interi positivi; limitato a un massimo di 50 ID per richiesta. - Risposta:
{ "vehicles": [ ... ] }. - Note: Vengono restituiti solo i veicoli pubblicati. Gli articoli a cui il visitatore non ha più accesso (eliminati, bozze, tipo di articolo errato) vengono omessi silenziosamente.
POST /as24ci/v1/analytics/track
Riceve gli eventi di analytics dal pixel di tracciamento del front-end.
- Autenticazione: nessuna (pubblico). Sempre registrato.
- Parametri del corpo:
post_id— intero ≥ 0. Predefinito0.event_type— uno traview,view_archive,view_compare,view_favorites,filter_search,contact_open,lead_sent.extra_data— stringa sanificata opzionale. Perfilter_search, deve essere un oggetto JSON contenente le coppie chiave/valore dei filtri attivi.- Risposta:
{ "tracked": true }in caso di successo, oppure{ "tracked": false }con HTTP400quando l'evento richiede un articolo di veicolo che non esiste o non è pubblicato. - Note: Intenzionalmente permissivo in modo che i visitatori anonimi possano inviare eventi. Non fare affidamento su di esso per dati aziendali autorevoli.
GET /as24ci/v1/cron-import
Endpoint protetto da token che esegue la routine di importazione condivisa. Delega allo stesso metodo Scheduler::run_import() utilizzato dall'hook WP-Cron e dal pulsante di amministrazione manuale "Avvia ora".
- Autenticazione: bearer token. Fornisci il token tramite l'intestazione HTTP
Authorization: Bearer <token>(scelta consigliata — evita che il token compaia nei log di accesso) o tramite il parametro di query?token=<token>. Il confronto utilizzahash_equals()per mitigare gli attacchi di temporizzazione (timing attacks). - Memorizzazione del token: opzione
as24ci_cron_token. Generalo o ruotalo da Importazione e limiti nell'amministrazione del plugin. - Risposte:
403quando non è configurato alcun token o il token fornito non corrisponde.200con{ "success": true, "message": "...", "counts": { ... } }in caso di esecuzione riuscita.429consuccess: falsequando un'altra importazione è già in corso e l'esecutore ha rifiutato di avviarne una seconda.500quando l'esecutore ha generato un'eccezione.- Effetto collaterale: Un'autenticazione riuscita aggiorna
as24ci_last_external_cron_run, che la scheda Sistema e aiuto utilizza per confermare che il cron esterno sta raggiungendo il sito. La visita a qualsiasi URL con?as24ci_cron=1aggiorna anche questo timestamp tramite l'hook heartbeat suinit.
Esempio di chiamata cron esterna (segnaposto — sostituisci con il tuo host e un token generato):
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
Endpoint di segnale leggero che consente all'API Platform di richiedere al sito di riconvalidare la propria licenza fuori banda (ad esempio dopo un cambio di piano). Registrato in modo incondizionato affinché la piattaforma possa sempre raggiungerlo; non è vincolato dall'opzione dell'API REST pubblica dei veicoli.
- Autenticazione: modello di attendibilità basato solo sul segnale. L'autenticazione viene gestita all'interno della callback anziché da un
permission_callback; la richiesta deve essere in formato JSON e viene validata rispetto alla struttura del segnale prevista. - Corpo: oggetto JSON. I campi di correlazione sicuri e non segreti (
request_id,event) vengono restituiti per scopi di tracciamento. - Risposte:
405 method_not_allowedquando la richiesta non èPOST.400 invalid_content_typequando il corpo non è in formato JSON, o400 invalid_jsonquando non è possibile analizzare il corpo.200quando il segnale viene accettato.- Proprietario:
AS24CI\License_Refresh_Signal.
Note operative
- Gli endpoint pubblici dei veicoli eseguono chiamate
WP_Querystandard e rispettano la normale memorizzazione nella cache degli oggetti di WordPress. Richieste identiche ripetute beneficiano delle cache dei post e dei post-meta. - I filtri numerici si aggiungono a un
meta_query. Su cataloghi di grandi dimensioni, assicurati che le chiavi meta sottostanti siano indicizzate a livello di database se prevedi un traffico intenso. Verifica la strategia di indicizzazione nella versione corrente del plugin prima della pubblicazione. - L'endpoint dell'elenco applica
update_postmeta_cache()sui post restituiti per mantenere prevedibili i tempi di risposta. - L'endpoint dei preferiti limita rigidamente ogni richiesta a 50 ID per prevenire abusi.
- L'endpoint di importazione cron imposta
nocache_headers()in modo che i proxy di memorizzazione nella cache non interferiscano con le esecuzioni pianificate. - Si raccomanda l'uso di permalink personalizzati (pretty permalinks) per gli URL REST in stile percorso. Con i permalink semplici, gli endpoint sono comunque raggiungibili tramite
?rest_route=.
Risoluzione dei problemi
/vehiclesrestituisce404. L'API pubblica è disabilitata. Impostaas24ci_rest_api_enabledsu'1'in Impostazioni → SEO e integrazioni (o tramite WP-CLI /update_option)./cron-importrestituisce403. Non è configurato alcun token (as24ci_cron_tokenvuoto — il messaggio di risposta lo conferma) oppure il token fornito non corrisponde. Genera un nuovo token dall'amministrazione e riprova./cron-importrestituisce429. Un'altra importazione è già in corso e un blocco impedisce una seconda esecuzione simultanea. Attendi il completamento dell'esecuzione corrente.- Array
vehiclesvuoto sull'endpoint dell'elenco senza filtri. Nessun veicolo è pubblicato o il catalogo non è stato ancora importato. Controlla la schermata Importazione e limiti e i log di importazione. - HTTP
400su/analytics/track. L'evento richiede un articolo di veicolo pubblicato, mapost_idfa riferimento a una bozza, a un articolo eliminato o a un articolo che non è un veicolo.