Endpoint fea/v1/subir-avatar: asignar la foto de autor desde nuestro lado (autonomía, como #166) — 1er caso Silvia Martínez Cano (1112) #175

Closed
opened 2026-07-15 00:14:17 +00:00 by inma · 1 comment
Collaborator

Qué pedimos

Un endpoint acotado POST /wp-json/fea/v1/subir-avatar para poder asignar la foto de un autor nosotras, en el mismo espíritu que el /crear-autor del #166 (que ya funciona de maravilla). Tú ya lo ofreciste al final del #171.

Por qué (encaja con la autonomía)

  • El /crear-autor crea el usuario pero no pone foto (#171): hoy las asignas tú a mano (face_crop_avatar.py + regen_avatars.php + meta foto_perfil).
  • Es el último eslabón para no depender de ti en el ciclo de la carta (#165, #172, #174): autor nuevo → creado solo → foto asignada sola.

Propuesta de contrato (a tu criterio)

  • POST /wp-json/fea/v1/subir-avatar
  • Auth: nuestra Application Password actual (publicabot/icalvotorre), igual que /crear-autor.
  • Body: user_id (o slug) + la imagen (multipart, o base64 en JSON — como prefieras).
  • Acción: wp_insert_attachment + set del meta foto_perfil del usuario (el que lee el frontend, #171).

Preguntas

  1. ¿El endpoint hace el recorte cuadrado + resize (tu face_crop/regen), o se lo mandamos ya cuadrado al tamaño estándar y él solo lo guarda? (Si nos dices el tamaño estándar, lo recortamos nosotras con Pillow.)
  2. ¿Por user_id o por slug?
  3. ¿Multipart o base64?

1er caso concreto

Silvia Martínez Cano — user id 1112, slug silvia-mtnz. Ahora sale con el Gravatar genérico; Inma tiene su foto lista. En cuanto exista el endpoint, se la ponemos y probamos.

Relacionado: #166 (crear-autor, ya integrado), #171 (avatares), #147 (fotos de autoras).

## Qué pedimos Un endpoint acotado **`POST /wp-json/fea/v1/subir-avatar`** para poder **asignar la foto de un autor nosotras**, en el mismo espíritu que el `/crear-autor` del **#166** (que ya funciona de maravilla). Tú ya lo ofreciste al final del **#171**. ## Por qué (encaja con la autonomía) - El `/crear-autor` crea el usuario pero **no pone foto** (#171): hoy las asignas tú a mano (`face_crop_avatar.py` + `regen_avatars.php` + meta `foto_perfil`). - Es el último eslabón para no depender de ti en el ciclo de la carta (#165, #172, #174): autor nuevo → creado solo → **foto asignada sola**. ## Propuesta de contrato (a tu criterio) - **`POST /wp-json/fea/v1/subir-avatar`** - Auth: nuestra Application Password actual (`publicabot`/`icalvotorre`), igual que `/crear-autor`. - Body: **`user_id`** (o `slug`) + la **imagen** (multipart, o base64 en JSON — como prefieras). - Acción: `wp_insert_attachment` + set del meta **`foto_perfil`** del usuario (el que lee el frontend, #171). ## Preguntas 1. **¿El endpoint hace el recorte cuadrado + resize** (tu `face_crop`/`regen`), o se lo mandamos ya **cuadrado al tamaño estándar** y él solo lo guarda? *(Si nos dices el tamaño estándar, lo recortamos nosotras con Pillow.)* 2. ¿Por **`user_id`** o por **`slug`**? 3. ¿Multipart o base64? ## 1er caso concreto **Silvia Martínez Cano** — user id **1112**, slug `silvia-mtnz`. Ahora sale con el Gravatar genérico; Inma tiene su foto lista. En cuanto exista el endpoint, se la ponemos y probamos. Relacionado: #166 (crear-autor, ya integrado), #171 (avatares), #147 (fotos de autoras).
Owner

Desplegado en producción (commit 15d3d72).

@inma / Mixbot: ya tienes disponible el endpoint para cargar la foto de la nueva autora Silvia Martínez Cano (user_id 1112):

POST https://www.feadulta.com/wp-json/fea/v1/subir-avatar
Content-Type: multipart/form-data
Auth: Application Password de un usuario editor

user_id=1112
avatar=@/ruta/foto.jpg
  • Admite JPEG, PNG y WebP.
  • Máximo 5 MB; fuente entre 512×512 y 4096 px por lado, máximo 16 MP.
  • La foto se recorta/normaliza a 512×512.
  • Actualiza solo foto_perfil; conserva el attachment anterior y devuelve previous_attachment_id para rollback.
  • Respuesta útil: attachment_id, avatar_url, width, height y previous_attachment_id.

Verificado en local end-to-end (401/400/404/201, subida válida y defensa frente a imagen comprimida con dimensiones excesivas) y en producción se comprobó que la ruta está cargada (401 sin auth, 400 con auth pero sin datos). No se ha tocado ninguna autora real durante el despliegue.

✅ **Desplegado en producción** (commit `15d3d72`). @inma / Mixbot: ya tienes disponible el endpoint para cargar la foto de la nueva autora Silvia Martínez Cano (**user_id `1112`**): ```text POST https://www.feadulta.com/wp-json/fea/v1/subir-avatar Content-Type: multipart/form-data Auth: Application Password de un usuario editor user_id=1112 avatar=@/ruta/foto.jpg ``` - Admite JPEG, PNG y WebP. - Máximo 5 MB; fuente entre 512×512 y 4096 px por lado, máximo 16 MP. - La foto se recorta/normaliza a 512×512. - Actualiza solo `foto_perfil`; conserva el attachment anterior y devuelve `previous_attachment_id` para rollback. - Respuesta útil: `attachment_id`, `avatar_url`, `width`, `height` y `previous_attachment_id`. Verificado en local end-to-end (401/400/404/201, subida válida y defensa frente a imagen comprimida con dimensiones excesivas) y en producción se comprobó que la ruta está cargada (`401` sin auth, `400` con auth pero sin datos). No se ha tocado ninguna autora real durante el despliegue.
rafa closed this issue 2026-07-16 11:15:03 +00:00
Sign in to join this conversation.
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rafa/feadulta#175