Releases: SmartNL/wp-api-codeia
Releases · SmartNL/wp-api-codeia
Release list
v1.0.0 — Primera versión estable
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 conupdate_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'comopermission_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_byteses configuración muerta.StatusCheckerla lee, peromediano existe enConfig::defaults()yConfig::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.