SEO Pages API

API REST per la gestione dei metadati SEO delle pagine CMS. Questi endpoint permettono di leggere e modificare programmaticamente i dati SEO delle pagine, utili per integrazioni con strumenti SEO esterni o automazioni.


Autenticazione

Tutte le richieste alle API SEO richiedono autenticazione tramite Bearer Token.

Header Richiesto

Authorization: Bearer {your-api-token}

Codici di Errore Autenticazione

Codice
Descrizione

401 Unauthorized

Token mancante o non valido

403 Forbidden

Token valido ma permessi insufficienti


Permessi Richiesti

Le API utilizzano gli stessi permessi del backend CMS:

Endpoint
Permesso Richiesto

GET Elenco pagine

Cms.pages.show

GET Singola pagina

Cms.pages.show

PATCH Aggiorna pagina

Cms.pages.update


Endpoint

Elenco Pagine Indicizzabili

Restituisce l'elenco paginato delle pagine CMS indicizzabili con i relativi dati SEO.

circle-info

Vengono restituite solo le pagine che soddisfano tutti questi criteri:

  • Attive (is_active = true)

  • Pubblicate (data pubblicazione valida)

  • Indicizzabili (meta_noindex = false)

Request

Body Parameters

Parametro
Tipo
Obbligatorio
Default
Descrizione

locale

string

No

Locale progetto

Codice lingua (es: it, en, de)

offset

integer

No

0

Offset per paginazione

limit

integer

No

50

Numero massimo di risultati (max: 100)

parent_id

integer

No

ID del nodo padre per filtrare le sotto-pagine

Esempio Request

circle-info

Il parametro parent_id è opzionale. Se specificato, restituisce solo le sotto-pagine dirette del nodo padre indicato.

Response 200


Dettaglio Singola Pagina

Restituisce i dati SEO completi di una singola pagina identificata dal suo node_id.

circle-exclamation

Request

Path Parameters

Parametro
Tipo
Descrizione

nodeId

integer

ID della pagina (PageModel.id)

Body Parameters

Parametro
Tipo
Obbligatorio
Default
Descrizione

locale

string

No

Locale progetto

Codice lingua della traduzione

Esempio Request

Response 200

Response 404


Aggiorna Dati SEO

Aggiorna i campi SEO di una pagina specifica.

circle-info

Comportamento dei campi:

  • Campi non inviati → rimangono invariati

  • Campi inviati con valore vuoto ("") → vengono svuotati (impostati a null)

  • Campi inviati con nuovo valore → vengono aggiornati

Request

Path Parameters

Parametro
Tipo
Descrizione

nodeId

integer

ID della pagina (PageModel.id)

Body Parameters

Parametro
Tipo
Obbligatorio
Validazione
Descrizione

locale

string

max: 5 caratteri

Codice lingua della traduzione

seo_title

string

No

max: 255 caratteri

Titolo SEO personalizzato

seo_h1

string

No

max: 255 caratteri

Tag H1 personalizzato

meta_description

string

No

max: 500 caratteri

Meta description

meta_keywords

string

No

max: 255 caratteri

Meta keywords

meta_noindex

boolean

No

true / false

Flag noindex per i motori di ricerca

meta_nofollow

boolean

No

true / false

Flag nofollow per i link

sitemap_priority

string

No

auto, high, medium, low

Priorità nella sitemap

sitemap_frequency

string

No

never, yearly, monthly, weekly, daily, hourly, always

Frequenza di aggiornamento nella sitemap

Esempio Request - Aggiornamento Completo

Esempio Request - Aggiornamento Parziale

Esempio Request - Svuotamento Campo

Response 200

Response 404

Response 422 - Errore di Validazione


Struttura Dati Response

Oggetto Pagina SEO

Campo
Tipo
Descrizione

id

integer

ID della traduzione (PageTransModel.id)

node_id

integer

ID della pagina/nodo (PageModel.id)

parent_id

integer | null

ID della pagina genitore, null se pagina root

name

string

Nome della pagina tradotto

locale_code

string

Codice lingua della traduzione

canonical

string

URL canonico completo della pagina

is_canonical

boolean

Indica se questa è la versione canonica

seo_title

string | null

Titolo SEO personalizzato

seo_h1

string | null

Tag H1 personalizzato

meta_description

string | null

Meta description

meta_keywords

string | null

Meta keywords

meta_noindex

boolean

Se true, la pagina non viene indicizzata

meta_nofollow

boolean

Se true, i link non vengono seguiti

sitemap_priority

string

Priorità sitemap: auto, high, medium, low

sitemap_frequency

string

Frequenza sitemap: never, yearly, monthly, weekly, daily, hourly, always

alternative_langs

object

Mappa delle versioni in altre lingue {locale: url}

updated_at

string

Data ultimo aggiornamento (ISO 8601)

published_from

string | null

Data inizio pubblicazione (ISO 8601)

published_to

string | null

Data fine pubblicazione (ISO 8601), null se illimitata

Oggetto Meta (Paginazione)

Campo
Tipo
Descrizione

totalCount

integer

Numero totale di pagine disponibili

totalPages

integer

Numero totale di pagine di risultati

Campo
Tipo
Descrizione

self

string

URL della pagina corrente

first

string

URL della prima pagina (se applicabile)

prev

string

URL della pagina precedente (se applicabile)

next

string

URL della pagina successiva (se applicabile)

last

string

URL dell'ultima pagina (se applicabile)


Esempi di Utilizzo

cURL - Elenco Pagine

cURL - Dettaglio Pagina

cURL - Aggiornamento SEO

JavaScript (Fetch API)

PHP (Guzzle)


Codici di Stato HTTP

Codice
Descrizione

200 OK

Richiesta completata con successo

401 Unauthorized

Autenticazione richiesta o token non valido

403 Forbidden

Permessi insufficienti per l'operazione

404 Not Found

Pagina non trovata o non appartenente al progetto

422 Unprocessable Entity

Errore di validazione dei dati

500 Internal Server Error

Errore interno del server


Note Tecniche

Scope Progetto

Tutte le operazioni sono limitate al progetto corrente dell'utente autenticato. Non è possibile accedere o modificare pagine di altri progetti.

Lingue Alternative

Il campo alternative_langs contiene solo le lingue per cui esiste una traduzione pubblicata della pagina. Se una pagina non ha traduzioni in altre lingue, l'oggetto sarà vuoto {}.

Valori di Priorità Sitemap

Valore
Descrizione

auto

Priorità calcolata automaticamente in base alla profondità

high

Priorità alta (1.0)

medium

Priorità media (0.5)

low

Priorità bassa (0.3)

Valori di Frequenza Sitemap

Valore
Descrizione

always

Contenuto che cambia ad ogni accesso

hourly

Aggiornamento orario

daily

Aggiornamento giornaliero

weekly

Aggiornamento settimanale (default)

monthly

Aggiornamento mensile

yearly

Aggiornamento annuale

never

Contenuto archiviato, mai modificato


Limiti e Rate Limiting

Parametro
Limite

Risultati per pagina (max)

100

Risultati per pagina (default)

50

circle-exclamation

Ultimo aggiornamento

È stato utile?