Tabla de contenidos

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).

Servidor: / Descargar especificación: JSON YAML

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'