API de entrega

Lee contenido publicado con peticiones GET simples bajo /api/p/{ref}/. Sin autenticación, CORS abierto, solo se expone el contenido publicado (no archivado). {ref} es un id de proyecto o slug.

Nodos

GET /api/p/{ref}/nodes/by-path/*

Resuelve un nodo por su ruta de slug, p. ej. /nodes/by-path/blog/about. Acepta ?locale=xx (por defecto el default_locale del proyecto; 400 invalid_locale en caso contrario).

Devuelve el nodo renderizable:

{ "data": {
  "id", "parent_id?", "slug", "type", "title", "locale", "path",
  "blocks": [ { "id", "type", "order", "data" } ],  // locale overrides merged
  "seo": { canonical, robots, og, twitter, hreflang, jsonld, breadcrumbs },
  "translated": true|false
} }

GET /api/p/{ref}/nodes/{id}

La misma forma renderizable, resuelta por id de nodo. También acepta ?locale.

GET /api/p/{ref}/nodes

Lista todos los nodos publicados (filas en bruto).

Entradas de colección

GET /api/p/{ref}/entries

Entradas publicadas paginadas de una colección. Consulta: collection (obligatorio, ruta de slug), page (1), per_page (20, máx. 100), q, sort.

{ "data": [ { "id", "slug", "title", "path", "updated_at" } ],
  "total", "page", "per_page" }

Lectura localizada (módulo de traducciones)

GET /api/p/{ref}/translations/nodes/{nodeId}

El nodo publicado fusionado con los metadatos de un locale + las anulaciones por bloque. Consulta ?locale=xx (obligatorio).

SEO y marca

GET /api/p/{ref}/sitemap.xml

Un urlset (o un sitemapindex que referencia fragmentos sitemap-{n}.xml por encima de 5000 nodos). Una entrada por locale con alternativas hreflang. Necesita el public_base_url del proyecto.

GET /api/p/{ref}/robots.txt

Robots estándar con una línea Sitemap: cuando se establece una URL base.

GET /api/p/{ref}/theme

Marca del inquilino para la pantalla de inicio de sesión (previa a la autenticación): { logo_url, favicon_url, accent_color, name_override }.