v1.0.0 OpenAPI 3.1.0
MeetAgain API
Acceso programático a eventos públicos, acciones de las personas miembros (asistencia, comentarios, subida de imágenes) y lecturas de administración. Los endpoints no públicos requieren autenticación con un token de acceso personal (PAT).
Autenticación
Token de acceso personal
Autentícate ante la API con un token de acceso personal: un token de portador de larga duración vinculado a tu cuenta.
Para tus propias CLI, scripts o tareas de operaciones. Genera un token de portador de larga duración en tu página de tokens de acceso y revócalo en cualquier momento desde la misma página.
Cabecera:
Authorization: Bearer mapat_...
Actúa como: tú (el emisor del token)
admin
Acciones de administración de la plataforma a través de la API. Reservadas a personas usuarias con ROLE_ADMIN.
GET /api/v1/admin/logs/cron Listar entradas recientes del registro de tareas
Listar entradas recientes del registro de tareas
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
limit
|
query |
integer
|
predeterminado: 100
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Lista paginada del registro de tareas programadas | CronLogList |
401 |
Token bearer ausente o no válido | |
403 |
Rol insuficiente |
Solicitud de ejemplo
curl '/api/v1/admin/logs/cron?limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/seo/status Estado SEO con las variaciones desde la última recogida
Estado SEO con las variaciones desde la última recogida
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
property
|
query |
integer
|
Identificador de la propiedad; por defecto, la primera activada |
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Estado actual resumido | SeoStatus |
401 |
Token bearer ausente o no válido | |
403 |
Rol o alcance insuficientes | |
404 |
No hay ninguna propiedad monitorizada |
Solicitud de ejemplo
curl '/api/v1/admin/seo/status?property=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/seo/issues Listar los problemas de SEO detectados
Listar los problemas de SEO detectados
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
property
|
query |
integer
|
|
filter
|
query |
string
|
predeterminado: open
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Lista de problemas | SeoIssueList |
401 |
Token bearer ausente o no válido | |
403 |
Rol o alcance insuficientes | |
404 |
No hay ninguna propiedad monitorizada |
Solicitud de ejemplo
curl '/api/v1/admin/seo/issues?property=1&filter=value' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/seo/actions Listar las acciones de SEO registradas recientemente
Listar las acciones de SEO registradas recientemente
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
limit
|
query |
integer
|
predeterminado: 100
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Lista de acciones | SeoActionList |
401 |
Token bearer ausente o no válido | |
403 |
Rol o alcance insuficientes |
Solicitud de ejemplo
curl '/api/v1/admin/seo/actions?limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/admin/seo/actions Registrar una acción de SEO para atribuirla más adelante
Registrar una acción de SEO para atribuirla más adelante
Cuerpo de la solicitud
obligatorio
Tipo de contenido: application/json
| Nombre | Tipo | Descripción |
|---|---|---|
kind |
string
|
|
title |
string
|
|
detail |
string | null
|
|
git_sha |
string | null
|
|
issue_id |
integer | null
|
|
occurred_at |
string | null
(date-time)
|
Respuestas
| Código | Descripción | |
|---|---|---|
201 |
La acción guardada | SeoAction |
400 |
Cuerpo de la petición mal formado | |
401 |
Token bearer ausente o no válido | |
403 |
Rol o alcance insuficientes | |
422 |
Tipo de acción desconocido o marca de tiempo ilegible |
Solicitud de ejemplo
curl -X POST '/api/v1/admin/seo/actions' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"kind":"value","title":"value","detail":"value","git_sha":"value","issue_id":"value","occurred_at":"value"}'
GET /api/v1/admin/logs/sendlog Listar las entradas del registro de envío de correo
Listar las entradas del registro de envío de correo
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
limit
|
query |
integer
|
predeterminado: 100
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Lista paginada del registro de envío | SendlogList |
401 |
Token bearer ausente o no válido | |
403 |
Rol insuficiente |
Solicitud de ejemplo
curl '/api/v1/admin/logs/sendlog?limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/logs/cron/{id} Obtener una entrada del registro de tareas programadas
Obtener una entrada del registro de tareas programadas
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
id
*
|
path |
integer
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Detalle de la entrada del registro de tareas programadas | CronLogDetail |
401 |
Token bearer ausente o no válido | |
403 |
Rol insuficiente | |
404 |
Entrada del registro de tareas programadas no encontrada |
Solicitud de ejemplo
curl '/api/v1/admin/logs/cron/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
PUT /api/v1/admin/images/{id}/alt Guardar el texto alternativo de una imagen por idioma
Guardar el texto alternativo de una imagen por idioma
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
id
*
|
path |
integer
|
Cuerpo de la solicitud
obligatorio
Tipo de contenido: application/json
| Nombre | Tipo | Descripción |
|---|---|---|
alt |
object
|
Idioma => texto alternativo; una cadena vacía lo elimina |
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Elemento actualizado con los idiomas requeridos y ausentes recalculados | MissingAltImageItem |
400 |
Cuerpo de la petición mal formado | |
401 |
Token bearer ausente o no válido | |
403 |
Rol o alcance insuficientes | |
404 |
Imagen no encontrada | |
422 |
Un idioma fuera del conjunto requerido para la imagen |
Solicitud de ejemplo
curl -X PUT '/api/v1/admin/images/1/alt' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"alt":"value"}'
GET /api/v1/admin/logs/sendlog/{id} Obtener una entrada del registro de envío
Obtener una entrada del registro de envío
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
id
*
|
path |
integer
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Detalle de la entrada del registro de envío | SendlogDetail |
401 |
Token bearer ausente o no válido | |
403 |
Rol insuficiente | |
404 |
Entrada del registro de envío no encontrada |
Solicitud de ejemplo
curl '/api/v1/admin/logs/sendlog/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/images/missing-alt Listar imágenes sin texto alternativo por idioma (keyset)
Listar imágenes sin texto alternativo por idioma (keyset)
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
after_id
|
query |
integer
|
Cursor keyset: recorrer solo las imágenes con un identificador mayor |
limit
|
query |
integer
|
Candidatas revisadas por página (las coincidencias pueden ser menos)
predeterminado: 50
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Página de imágenes a las que aún les falta el texto alternativo en al menos un idioma requerido | MissingAltImageList |
401 |
Token bearer ausente o no válido | |
403 |
Rol o alcance insuficientes |
Solicitud de ejemplo
curl '/api/v1/admin/images/missing-alt?after_id=1&limit=1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/security/incidents Listar incidentes de seguridad recientes
Listar incidentes de seguridad recientes
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
limit
|
query |
integer
|
predeterminado: 100
|
since
|
query |
string
(date-time)
|
Fecha y hora ISO-8601 como límite inferior de endedAt |
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Lista de incidentes | IncidentList |
401 |
Token bearer ausente o no válido | |
403 |
Rol insuficiente |
Solicitud de ejemplo
curl '/api/v1/admin/security/incidents?limit=1&since=value' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/images/{id}/content Servir una vista previa reducida de la imagen original
Servir una vista previa reducida de la imagen original
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
id
*
|
path |
integer
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Bytes de la vista previa (normalmente image/webp; el tipo de medio original si falla la conversión) | |
401 |
Token bearer ausente o no válido | |
403 |
Rol o alcance insuficientes | |
404 |
No se encuentra la imagen ni su archivo original |
Solicitud de ejemplo
curl '/api/v1/admin/images/1/content' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/admin/security/incidents/{id} Obtener un incidente de seguridad con sus informes
Obtener un incidente de seguridad con sus informes
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
id
*
|
path |
integer
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Detalle del incidente | IncidentDetail |
401 |
Token bearer ausente o no válido | |
403 |
Rol insuficiente | |
404 |
Incidente no encontrado |
Solicitud de ejemplo
curl '/api/v1/admin/security/incidents/1' \
-H "Authorization: Bearer $ACCESS_TOKEN"
event-actions
Acciones de personas usuarias autenticadas sobre eventos: asistencia, comentarios, subida de imágenes
POST /api/v1/events/{id}/rsvp Confirmar asistencia a un evento
Confirmar asistencia a un evento
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Asistencia registrada (o ya existente) | RsvpResult |
401 |
Token bearer ausente o no válido | |
403 |
No permitido (pertenencia al grupo / cuenta bloqueada) | |
404 |
Evento no encontrado | ErrorResponse |
409 |
Evento cancelado o ya comenzado | ErrorResponse |
Solicitud de ejemplo
curl -X POST '/api/v1/events/{id}/rsvp' \
-H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/events/{id}/rsvp Retirar la asistencia a un evento
Retirar la asistencia a un evento
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Asistencia retirada (o ya inexistente) | RsvpResult |
401 |
Token bearer ausente o no válido | |
403 |
No permitido | |
404 |
Evento no encontrado | ErrorResponse |
409 |
Evento cancelado o ya comenzado | ErrorResponse |
Solicitud de ejemplo
curl -X DELETE '/api/v1/events/{id}/rsvp' \
-H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/events/{id}/images Subir una imagen a un evento
Subir una imagen a un evento
Cuerpo de la solicitud
obligatorio
Tipo de contenido: multipart/form-data
| Nombre | Tipo | Descripción |
|---|---|---|
file |
string
(binary)
|
Respuestas
| Código | Descripción | |
|---|---|---|
201 |
Imagen subida | ImageUploaded |
400 |
No hay archivo o el formato no es compatible | ErrorResponse |
401 |
Token bearer ausente o no válido | |
403 |
No permitido | |
404 |
Evento no encontrado |
Solicitud de ejemplo
curl -X POST '/api/v1/events/{id}/images' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-F "file=@/path/to/file"
POST /api/v1/events/{id}/comments Publicar un comentario en un evento
Publicar un comentario en un evento
Cuerpo de la solicitud
obligatorio
Tipo de contenido: application/json
| Nombre | Tipo | Descripción |
|---|---|---|
content |
string
|
Respuestas
| Código | Descripción | |
|---|---|---|
201 |
Comentario creado | CommentCreated |
400 |
Contenido vacío o demasiado largo | ErrorResponse |
401 |
Token bearer ausente o no válido | |
403 |
No permitido | |
404 |
Evento no encontrado |
Solicitud de ejemplo
curl -X POST '/api/v1/events/{id}/comments' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"content":"value"}'
DELETE /api/v1/events/{id}/images/{imageId} Eliminar una imagen de un evento (propia o admin)
Eliminar una imagen de un evento (propia o admin)
Respuestas
| Código | Descripción | |
|---|---|---|
204 |
Imagen eliminada | |
401 |
Token bearer ausente o no válido | |
403 |
La imagen no es tuya y no tienes permisos de administración | |
404 |
Imagen o evento no encontrado |
Solicitud de ejemplo
curl -X DELETE '/api/v1/events/{id}/images/{imageId}' \
-H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/events/{id}/comments/{commentId} Eliminar un comentario de un evento (propio o admin)
Eliminar un comentario de un evento (propio o admin)
Respuestas
| Código | Descripción | |
|---|---|---|
204 |
Comentario eliminado | |
401 |
Token bearer ausente o no válido | |
403 |
El comentario no es tuyo y no tienes permisos de administración | |
404 |
Comentario o evento no encontrado |
Solicitud de ejemplo
curl -X DELETE '/api/v1/events/{id}/comments/{commentId}' \
-H "Authorization: Bearer $ACCESS_TOKEN"
events
Listados y detalle de eventos públicos
GET /api/v1/events Listar los próximos eventos públicos
Listar los próximos eventos públicos
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
locale
|
query |
string
|
|
from
|
query |
string
(date-time)
|
Límite inferior ISO-8601 (por defecto: ahora) |
to
|
query |
string
(date-time)
|
Límite superior ISO-8601 |
limit
|
query |
integer
|
predeterminado: 20
|
offset
|
query |
integer
|
predeterminado: 0
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Lista paginada de eventos | EventList |
Solicitud de ejemplo
curl '/api/v1/events?locale=en&from=value&to=value&limit=1&offset=1'
GET /api/v1/events/{id} Obtener un evento por su identificador
Obtener un evento por su identificador
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
id
*
|
path |
integer
|
|
locale
|
query |
string
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Detalle del evento | EventDetail |
404 |
Evento no encontrado o no visible en el contexto actual | ErrorResponse |
Solicitud de ejemplo
curl '/api/v1/events/1?locale=value'
group-admin
Acciones de administración limitadas a un grupo. Requieren el rol de propietario u organizador en el grupo indicado, o ROLE_ADMIN en la plataforma.
GET /api/v1/groups/{groupSlug}/admin/members Listar las personas miembros de un grupo
Listar las personas miembros de un grupo
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
groupSlug
*
|
path |
string
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Lista de miembros | GroupMemberList |
401 |
Token bearer ausente o no válido | |
403 |
Quien llama no es propietario ni organizador de este grupo | |
404 |
Grupo no encontrado | ErrorResponse |
Solicitud de ejemplo
curl '/api/v1/groups/groupSlug/admin/members' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/groups/{groupSlug}/admin/settings Leer la configuración de un grupo
Leer la configuración de un grupo
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
groupSlug
*
|
path |
string
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Configuración del grupo | GroupSettings |
401 |
Token bearer ausente o no válido | |
403 |
Quien llama no es propietario ni organizador de este grupo | |
404 |
Grupo no encontrado | ErrorResponse |
Solicitud de ejemplo
curl '/api/v1/groups/weiqi-club/admin/settings' \
-H "Authorization: Bearer $ACCESS_TOKEN"
groups
Grupos cliente (multisite)
GET /api/v1/groups Listar los grupos activos
Listar los grupos activos
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Lista de resúmenes de grupos | GroupList |
Solicitud de ejemplo
curl '/api/v1/groups'
GET /api/v1/groups/{groupSlug} Obtener un grupo por su slug
Obtener un grupo por su slug
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
groupSlug
*
|
path |
string
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Detalle del grupo | GroupDetail |
404 |
Grupo no encontrado | ErrorResponse |
Solicitud de ejemplo
curl '/api/v1/groups/groupSlug'
GET /api/v1/groups/{groupSlug}/cms Listar las páginas CMS de un grupo
Listar las páginas CMS de un grupo
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
groupSlug
*
|
path |
string
|
|
language
|
query |
string
|
Código de idioma de dos letras. Si se omite, se usa el primer idioma disponible de cada elemento. Si se indica pero la página no tiene ese idioma, se recurre a "en" (o al primero disponible). |
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Lista de páginas CMS | CmsPageList |
404 |
Grupo no encontrado | ErrorResponse |
Solicitud de ejemplo
curl '/api/v1/groups/weiqi-club/cms?language=en'
GET /api/v1/groups/{groupSlug}/cms/{cmsSlug} Metadatos de una página CMS por grupo y slug
Metadatos de una página CMS por grupo y slug
Parámetros
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
groupSlug
*
|
path |
string
|
|
cmsSlug
*
|
path |
string
|
|
language
|
query |
string
|
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Metadatos de la página CMS | CmsPage |
404 |
Grupo no encontrado, o página no encontrada / no visible en este grupo | ErrorResponse |
Solicitud de ejemplo
curl '/api/v1/groups/platform/cms/about?language=value'
me
Persona usuaria autenticada (lecturas limitadas al alcance del token)
GET /api/v1/me Obtener el perfil de la persona usuaria autenticada
Obtener el perfil de la persona usuaria autenticada
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Perfil de usuario | MeProfile |
401 |
Token bearer ausente o no válido |
Solicitud de ejemplo
curl '/api/v1/me' \
-H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/me/rsvps Listar las próximas asistencias del usuario autenticado
Listar las próximas asistencias del usuario autenticado
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
Lista de los próximos eventos a los que la persona usuaria ha confirmado asistencia | MeRsvpList |
401 |
Token bearer ausente o no válido |
Solicitud de ejemplo
curl '/api/v1/me/rsvps' \
-H "Authorization: Bearer $ACCESS_TOKEN"
status
Estado
GET /api/status Endpoint de comprobación de estado
Endpoint de comprobación de estado
Respuestas
| Código | Descripción | |
|---|---|---|
200 |
El servicio funciona correctamente | HealthStatus |
Solicitud de ejemplo
curl '/api/status'