Este sitio expone únicamente un API

La interfaz pública (Frontend) se despliega aparte. Aquí se entregan recursos REST en formato JSON listos para integrarse en aplicaciones web o móviles.

Puntos clave

Ejemplos de endpoints

/wp-json/wp/v2/posts

Entradas públicas.

GET https://api-cafeteria.javiermisat.com/wp-json/wp/v2/posts

/wp-json/wp/v2/categories

Categorías de contenido.

GET https://api-cafeteria.javiermisat.com/wp-json/wp/v2/categories

/wp-json/wp/v2/media

Biblioteca multimedia.

GET https://api-cafeteria.javiermisat.com/wp-json/wp/v2/media

/wp-json/cafeteria/v1/auth-check

Estado de autenticación.

GET https://api-cafeteria.javiermisat.com/wp-json/cafeteria/v1/auth-check

Algunos endpoints requieren credenciales para métodos de escritura (POST/PUT/PATCH/DELETE).

Uso rápido (fetch)

fetch('https://api-cafeteria.javiermisat.com/wp-json/wp/v2/posts')
  .then(r => r.json())
  .then(data => console.log(data));

Autenticación & seguridad

Lectura pública

Las peticiones GET a recursos públicos no requieren token.

Operaciones de escritura

Se exige sesión válida. Respuesta 401 si no hay autenticación.

fetch('https://api-cafeteria.javiermisat.com/wp-json/wp/v2/posts', {
  method: 'POST',
  headers: {
    'Content-Type':'application/json',
    'X-WP-Nonce': window.wpApiSettings?.nonce
  },
  body: JSON.stringify({ title:'Nuevo', status:'draft' })
});

Application Passwords

Para integraciones de servidor puedes usar Application Passwords (usuario + clave específica).

const cred = btoa('usuario:APP_PASSWORD');
fetch('https://api-cafeteria.javiermisat.com/wp-json/wp/v2/posts', {
  headers: { 'Authorization': 'Basic ' + cred }
});

CORS

Origen permitido configurado. Ajusta en functions.php para producción (no usar comodín *).

Buenas prácticas: usar HTTPS, restringir Access-Control-Allow-Origin, aplicar roles mínimos y rotar Application Passwords.