> REST_API.JWT
> Base: /api/v1 — JSON — autenticación Bearer JWT (HS256, 1 h)
>> Público: perfil, posts publicados, servicios activos, contacto
>> Protegido: CRUD completo, listado de mensajes. Login con el usuario admin.
> ENDPOINTS
| MÉTODO | RUTA | JWT |
|---|---|---|
| GET | /api/v1/ | no |
| GET | /api/v1/health | no |
| POST | /api/v1/auth/login | no |
| GET | /api/v1/auth/me | sí |
| GET | /api/v1/perfil | no |
| GET | /api/v1/servicios | no* |
| POST | /api/v1/servicios | sí |
| PUT | /api/v1/servicios/<id> | sí |
| DELETE | /api/v1/servicios/<id> | sí |
| GET | /api/v1/posts | no* |
| GET | /api/v1/posts/<id> | no* |
| POST | /api/v1/posts | sí |
| PUT | /api/v1/posts/<id> | sí |
| DELETE | /api/v1/posts/<id> | sí |
| POST | /api/v1/contactos | no |
| GET | /api/v1/contactos | sí |
* Sin token: solo publicados / activos. Con JWT: incluye borradores e inactivos.
> EJEMPLO
curl -s -X POST https://javierdotnet.com/api/v1/auth/login \
-H 'Content-Type: application/json' \
-d '{"username":"admin","password":"***"}'
curl -s https://javierdotnet.com/api/v1/auth/me \
-H 'Authorization: Bearer <token>'
curl -s https://javierdotnet.com/api/v1/posts
> CONSOLA
> token: (ninguno)
// la respuesta JSON aparece aquí