El feed (L2) — sobre y registros
§3.1 Sobre
{
"last_updated": "2026-08-16T04:00:00Z",
"ttl": 300,
"version": "0.1.0",
"publisher_id": "example-app",
"license": "CC-BY-4.0",
"permitted_use": ["display", "aggregate", "ai_answer"],
"data": { "places": [] }
}
last_updated(RFC 3339 en UTC) es la marca de tiempo de generación del feed, REQUIRED — sin ella un consumidor no puede distinguir «no cambió nada» de «se murió el proceso».ttles el contrato de caché.versiones la versión de la especificación implementada.licensees REQUIRED. Un feed sin licencia no cumple: su ausencia bloquea la revisión legal de cualquier consumidor.permitted_uselleva el consentimiento de reutilización en el sobre (enum cerrado:display|aggregate|redistribute|ai_answer|ai_train).- Los registros siguen el modelo
placecodificado enplace-feed.schema.json, incluidos el estado de tres ejes (los nombres MUST NOT codificar estado operativo — CR-2), el bloque de verificación (§6), elsource{}estructurado, lapublic_urlREQUIRED y la regla de ubicación (address_textOlat+lon; ambos RECOMMENDED; ninguno = no cumple). - Transporte: HTTPS, UTF-8,
Content-Type: application/jsonyAccess-Control-Allow-Origin: *REQUIRED — el único MUST no obvio; sin él, todo consumidor que corra en un navegador necesita un proxy. - Localización: las cadenas legibles por personas MAY usar arreglos
[{text, language}]; las cadenas simples se interpretan comoes.eses la base REQUIRED;enes RECOMMENDED. Los tokens de máquina nunca se traducen. - Tamaño: un archivo SHOULD mantenerse en 5 MB o menos y 10 000 registros
o menos; más allá de eso, fragmenta por municipio DIVIPOLA y lista los
fragmentos en
feeds[]del manifiesto. No hay paginación dentro de archivos estáticos. - Señales de sincronización en L2: regenerar y actualizar
last_updated; RECOMMENDED unlastmodpor fragmento. Antipatrón con nombre propio (MUST NOT): regenerarlast_updateden cada petición para que siempre diga «ahora» — peor que no tener señal (observado en producción).
§3.2 Regla de equivalencia estático ≡ API
El arreglo data.places[] del feed y los elementos de la API de lectura (§4.1)
MUST ser compatibles byte a byte por registro. Un feed estático es una API de
lectura degenerada; las herramientas de conformidad prueban ambos con el mismo
esquema.