Skip to content

Releases: SmartNL/wp-api-codeia

v1.0.0 — Primera versión estable

Choose a tag to compare

@SmartNL SmartNL released this 05 Sep 02:19

Primera versión estable. Reúne los ocho sprints del roadmap.

WP API Codeia convierte WordPress en una API configurable desde un dashboard propio. El administrador elige qué post types se exponen, qué campos, con qué autenticación y bajo qué permisos; el plugin deriva de esa configuración los endpoints REST, el documento OpenAPI y las reglas de acceso.

La premisa que lo ordena todo: el esquema no se declara, se descubre.

Contenido

Sprint Versión Aportación
1 0.2.0 Contenedor DI, configuración, caché, registro, activación
2 0.3.0 Detección de esquema en cuatro niveles
3 0.4.0 Autenticación: JWT, API Key, Application Passwords, tokens
4 0.5.0 Permisos: matriz de cuatro ejes sobre las capabilities
5 0.6.0 Endpoints CRUD derivados, filtros, paginación por cursor
6 0.7.0 Medios con validación por contenido, y límite de peticiones
7 0.8.0 OpenAPI 3.1, ETag, alias de rutas en raíz
8 0.10.0 Dashboard: siete pantallas sobre la API interna

Decisiones que sostienen el diseño

  • La detección no se fía de get_registered_meta_keys(). Hay plugins que guardan sus campos con update_post_meta() sin registrarlos: son invisibles a la introspección nativa. De ahí los cuatro niveles.
  • No se filtran las claves meta por el prefijo _. En instalaciones reales todos los campos útiles pueden empezar por guion bajo. Se usa una lista de exclusión explícita.
  • Dos puertas de permisos: la matriz del plugin y las capabilities de WordPress. La matriz solo puede restringir, nunca ampliar.
  • Un elemento existente pero no visible devuelve 404, nunca 403. Un 403 confirma la existencia.
  • El MIME se valida por contenido, nunca por extensión ni por Content-Type. SVG queda fuera de la lista blanca: es XML con <script>.
  • Ninguna ruta usa '__return_true' como permission_callback, ni provisionalmente.
  • Los tres módulos —medios, OpenAPI y alias— están apagados de origen. Cada uno amplía la superficie expuesta, y esa es una decisión del administrador.

Estado

245 tests unitarios       · 370 aserciones
192 tests de integración  · 418 aserciones
 48 tests de JavaScript   ·   7 ficheros
phpcs: 0 errores, 21 avisos justificados

Requisitos

PHP 8.0+, WordPress 7.1+. Node solo para desarrollar el dashboard: los assets construidos se versionan, así que el plugin funciona desde un clon o un zip.

Deuda conocida

  • media.max_bytes es configuración muerta. StatusChecker la lee, pero media no existe en Config::defaults() y Config::sanitize() solo conserva las claves de primer nivel que sí existen: el valor nunca puede guardarse, así que la comprobación siempre compara contra el valor por defecto.
  • Sin integración continua. Los scripts de Composer y de npm encajan directamente en un workflow de GitHub Actions.