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 las secciones de contenido, supervisión y registros de la plataforma. 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)

cms

Edición de páginas y bloques del CMS. Reservada a personas usuarias con ROLE_ADMIN.

GET /api/v1/cms/pages Listar todas las páginas CMS con su grupo propietario y el número de bloques por idioma

Listar todas las páginas CMS con su grupo propietario y el número de bloques por idioma

Respuestas

Código Descripción
200 Todas las páginas CMS, las más recientes primero CmsPageSummaryList
401 Token bearer ausente o no válido
403 Rol o alcance insuficientes

Solicitud de ejemplo

curl '/api/v1/cms/pages' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/cms/block-types Catálogo de tipos de bloque y los campos que acepta cada uno

Catálogo de tipos de bloque y los campos que acepta cada uno

Respuestas

Código Descripción
200 Definiciones de campos que validan los endpoints de escritura CmsBlockTypeCatalog
401 Token bearer ausente o no válido
403 Rol o alcance insuficientes

Solicitud de ejemplo

curl '/api/v1/cms/block-types' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/cms/blocks/{blockId} Eliminar un bloque

Eliminar un bloque

Parámetros

Nombre En Tipo Descripción
blockId * path integer

Respuestas

Código Descripción
204 Bloque eliminado
401 Token bearer ausente o no válido
403 Rol o alcance insuficientes
404 Bloque no encontrado

Solicitud de ejemplo

curl -X DELETE '/api/v1/cms/blocks/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
PATCH /api/v1/cms/blocks/{blockId} Superponer campos sobre un bloque almacenado

Superponer campos sobre un bloque almacenado

La carga se fusiona sobre la almacenada, por lo que un cuerpo parcial solo cambia los campos que nombra.

Parámetros

Nombre En Tipo Descripción
blockId * path integer

Cuerpo de la solicitud

obligatorio

Tipo de contenido: application/json

Nombre Tipo Descripción
type any Nombre del tipo de bloque o id numérico; por defecto el tipo almacenado
payload object

Respuestas

Código Descripción
200 El bloque almacenado, tras la hidratación y la sanitización CmsBlockSummary
400 Cuerpo de la petición mal formado
401 Token bearer ausente o no válido
403 Rol o alcance insuficientes
404 Bloque no encontrado
422 Tipo de bloque inutilizable o falta un campo obligatorio ValidationErrorResponse

Solicitud de ejemplo

curl -X PATCH '/api/v1/cms/blocks/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type":"Text","payload":"value"}'
GET /api/v1/cms/pages/{id}/blocks Bloques ordenados de una página en un idioma

Bloques ordenados de una página en un idioma

Parámetros

Nombre En Tipo Descripción
id * path integer
locale query string Código de idioma de dos letras; por defecto el idioma predeterminado configurado

Respuestas

Código Descripción
200 Bloques en orden de prioridad CmsBlockList
401 Token bearer ausente o no válido
403 Rol o alcance insuficientes
404 Página no encontrada
422 Idioma desconocido

Solicitud de ejemplo

curl '/api/v1/cms/pages/1/blocks?locale=en' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/cms/pages/{id}/blocks Añadir un bloque a una página en un idioma

Añadir un bloque a una página en un 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
locale string
type any Nombre del tipo de bloque o id numérico del catálogo de tipos de bloque
payload object

Respuestas

Código Descripción
201 El bloque almacenado, tras la hidratación y la sanitización CmsBlockSummary
400 Cuerpo de la petición mal formado
401 Token bearer ausente o no válido
403 Rol o alcance insuficientes
404 Página no encontrada
422 Idioma desconocido, tipo de bloque inutilizable o falta un campo obligatorio ValidationErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/cms/pages/1/blocks' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"locale":"en","type":"Text","payload":"value"}'
POST /api/v1/cms/blocks/{blockId}/move Mover un bloque una posición arriba o abajo dentro de su página e idioma

Mover un bloque una posición arriba o abajo dentro de su página e idioma

Parámetros

Nombre En Tipo Descripción
blockId * path integer

Cuerpo de la solicitud

obligatorio

Tipo de contenido: application/json

Nombre Tipo Descripción
direction string

Respuestas

Código Descripción
200 Los bloques de la página en su nuevo orden CmsBlockList
400 Cuerpo de la petición mal formado
401 Token bearer ausente o no válido
403 Rol o alcance insuficientes
404 Bloque no encontrado
422 Dirección distinta de up o down

Solicitud de ejemplo

curl -X POST '/api/v1/cms/blocks/1/move' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"direction":"value"}'

images

Texto alternativo de imágenes por idioma. Reservado a personas usuarias con ROLE_ADMIN.

PUT /api/v1/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/images/1/alt' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"alt":"value"}'
GET /api/v1/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/images/missing-alt?after_id=1&limit=1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/images/1/content' \
  -H "Authorization: Bearer $ACCESS_TOKEN"

security

Flujo de incidentes de seguridad. Solo lectura, reservado a personas usuarias con ROLE_ADMIN.

GET /api/v1/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/security/incidents?limit=1&since=value' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/security/incidents/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"

seo

Supervisión de buscadores: estado, incidencias y acciones. Reservada a personas usuarias con ROLE_ADMIN.

GET /api/v1/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/seo/status?property=1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/seo/issues?property=1&filter=value' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/seo/actions?limit=1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/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/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"}'

logs

Registros de cron y de envío de correo. Solo lectura, reservados a personas usuarias con ROLE_ADMIN.

GET /api/v1/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/logs/cron?limit=1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/logs/sendlog?limit=1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/logs/cron/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/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/logs/sendlog/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"

auth

Iniciar sesión con correo y contraseña para obtener un token de acceso personal

POST /api/v1/auth/login Iniciar sesión y recibir un token de acceso personal

Iniciar sesión y recibir un token de acceso personal

Emite un nuevo token de acceso personal para este dispositivo y revoca el que emitió un inicio de sesión anterior con el mismo nombre de dispositivo. Envíalo como token Bearer en cada llamada y vuelve a iniciar sesión ante un 401.

Cuerpo de la solicitud

obligatorio

Tipo de contenido: application/json

Nombre Tipo Descripción
email string (email)
password string (password)
deviceName string Nombre estable de esta instalación, que el miembro ve en su lista de tokens

Respuestas

Código Descripción
200 Sesión iniciada LoginResult
400 Cuerpo mal formado o nombre de dispositivo no válido (bad_request, invalid_device_name) ErrorResponse
401 Correo o contraseña incorrectos (invalid_credentials) ErrorResponse
403 La cuenta aún no puede o ya no puede iniciar sesión (account_blocked, email_not_verified, pending_approval); el miembro lo resuelve en el sitio web ErrorResponse
429 Demasiados intentos (too_many_attempts, con Retry-After) o protección de inicio de sesión activa (login_restricted); inicia sesión en el sitio web ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/auth/login' \
  -H "Content-Type: application/json" \
  -d '{"email":"value","password":"value","deviceName":"value"}'
POST /api/v1/auth/logout Cerrar sesión y revocar el token que hace la llamada

Cerrar sesión y revocar el token que hace la llamada

Respuestas

Código Descripción
204 Token revocado
401 Token bearer ausente o no válido

Solicitud de ejemplo

curl -X POST '/api/v1/auth/logout' \
  -H "Authorization: Bearer $ACCESS_TOKEN"

community

GET /api/v1/community/blocks Listar los miembros bloqueados por quien llama

Listar los miembros bloqueados por quien llama

Respuestas

Código Descripción
200 Miembros bloqueados MemberList
401 Token bearer ausente o no válido

Solicitud de ejemplo

curl '/api/v1/community/blocks' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/community/members Listar los miembros de la plataforma

Listar los miembros de la plataforma

Los miembros que el miembro que llama puede ver, excluidos los bloqueados. Quien se dio de baja del directorio tampoco aparece aquí, igual que en la web; su perfil sigue siendo accesible por id.

Parámetros

Nombre En Tipo Descripción
limit query integer
predeterminado: 20
offset query integer
predeterminado: 0

Respuestas

Código Descripción
200 Miembros MemberList
401 Token bearer ausente o no válido

Solicitud de ejemplo

curl '/api/v1/community/members?limit=1&offset=1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/community/blocks/{id} Bloquear a un miembro

Bloquear a un miembro

Bloquear elimina cualquier seguimiento en ambos sentidos y oculta la conversación en ambas bandejas. Repetir la llamada es seguro.

Parámetros

Nombre En Tipo Descripción
id * path integer

Respuestas

Código Descripción
204 Bloqueado
401 Token bearer ausente o no válido
404 El miembro no existe (not_found) ErrorResponse
422 Bloquearse a uno mismo (self_target) ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/community/blocks/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/community/blocks/{id} Desbloquear a un miembro

Desbloquear a un miembro

Repetir la llamada es seguro. Desbloquear no restaura un seguimiento que el bloqueo eliminó.

Parámetros

Nombre En Tipo Descripción
id * path integer

Respuestas

Código Descripción
204 No bloqueado
401 Token bearer ausente o no válido
404 El miembro no existe (not_found) ErrorResponse

Solicitud de ejemplo

curl -X DELETE '/api/v1/community/blocks/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/community/members/{id} Leer el perfil de un miembro

Leer el perfil de un miembro

Parámetros

Nombre En Tipo Descripción
id * path integer

Respuestas

Código Descripción
200 El perfil del miembro MemberProfile
401 Token bearer ausente o no válido
403 El miembro ha bloqueado a quien llama (forbidden) ErrorResponse
404 El miembro no existe (not_found) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/community/members/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/community/conversations Listar las conversaciones del miembro que llama

Listar las conversaciones del miembro que llama

Una entrada por persona, la más reciente primero. Las personas bloqueadas en cualquiera de los dos sentidos quedan fuera.

Parámetros

Nombre En Tipo Descripción
limit query integer
predeterminado: 20
offset query integer
predeterminado: 0

Respuestas

Código Descripción
200 Conversaciones ConversationList
401 Token bearer ausente o no válido
403 Token sin el ámbito community:read (insufficient_scope) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/community/conversations?limit=1&offset=1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
PATCH /api/v1/community/messages/{id} Editar un mensaje dentro de la ventana de edición

Editar un mensaje dentro de la ventana de edición

Un mensaje puede editarse durante diez minutos después de enviarlo. La web responde 403 aquí; esta interfaz responde 409, porque la ventana es un conflicto de estado y no un fallo de autorización.

Parámetros

Nombre En Tipo Descripción
id * path integer

Cuerpo de la solicitud

obligatorio

Tipo de contenido: application/json

Nombre Tipo Descripción
content string

Respuestas

Código Descripción
200 El mensaje guardado ThreadMessage
401 Token bearer ausente o no válido
404 El mensaje no existe o lo envió otra persona (not_found) ErrorResponse
409 La ventana de diez minutos ha pasado (edit_window_expired) ErrorResponse
422 content_required o content_too_long ErrorResponse

Solicitud de ejemplo

curl -X PATCH '/api/v1/community/messages/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content":"value"}'
POST /api/v1/community/members/{id}/follow Seguir a un miembro

Seguir a un miembro

Repetir la llamada es seguro: declara el estado final deseado en lugar de alternar.

Parámetros

Nombre En Tipo Descripción
id * path integer

Respuestas

Código Descripción
204 Siguiendo
401 Token bearer ausente o no válido
404 El miembro no existe (not_found) ErrorResponse
409 Un bloqueo en cualquiera de los dos sentidos (blocked) ErrorResponse
422 Seguirse a uno mismo (self_target) ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/community/members/1/follow' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/community/members/{id}/follow Dejar de seguir a un miembro

Dejar de seguir a un miembro

Repetir la llamada es seguro.

Parámetros

Nombre En Tipo Descripción
id * path integer

Respuestas

Código Descripción
204 No siguiendo
401 Token bearer ausente o no válido
404 El miembro no existe (not_found) ErrorResponse

Solicitud de ejemplo

curl -X DELETE '/api/v1/community/members/1/follow' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/community/groups/{slug}/members Listar los miembros de un grupo

Listar los miembros de un grupo

La misma lista, acotada a un grupo. Un grupo inaccesible para quien llama devuelve el mismo 404 que un slug desconocido; alcanzar un grupo privado u oculto requiere un token que además lleve me:read, porque la pertenencia se resuelve mediante ese ámbito.

Parámetros

Nombre En Tipo Descripción
slug * path string
limit query integer
predeterminado: 20
offset query integer
predeterminado: 0

Respuestas

Código Descripción
200 Miembros de ese grupo MemberList
401 Token bearer ausente o no válido
404 Grupo no encontrado o inaccesible (not_found) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/community/groups/slug/members?limit=1&offset=1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/community/conversations/{userId} Leer un hilo

Leer un hilo

Del más antiguo al más reciente. Esta lectura no tiene efectos: no marca el hilo como leído, a diferencia de abrir la página en la web. Para eso está POST /api/v1/community/conversations/{userId}/read.

Parámetros

Nombre En Tipo Descripción
userId * path integer
limit query integer
predeterminado: 20
offset query integer
predeterminado: 0

Respuestas

Código Descripción
200 El hilo MessageThread
401 Token bearer ausente o no válido
404 El miembro no existe (not_found) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/community/conversations/1?limit=1&offset=1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/community/conversations/{userId} Enviar un mensaje directo

Enviar un mensaje directo

Parámetros

Nombre En Tipo Descripción
userId * path integer

Cuerpo de la solicitud

obligatorio

Tipo de contenido: application/json

Nombre Tipo Descripción
content string

Respuestas

Código Descripción
201 El mensaje guardado ThreadMessage
401 Token bearer ausente o no válido
404 El miembro no existe (not_found) ErrorResponse
409 Un bloqueo en cualquiera de los dos sentidos (blocked) ErrorResponse
422 content_required, content_too_long o self_target ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/community/conversations/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content":"value"}'
POST /api/v1/community/conversations/{userId}/read Marcar un hilo como leído

Marcar un hilo como leído

Parámetros

Nombre En Tipo Descripción
userId * path integer

Respuestas

Código Descripción
204 Marcado como leído
401 Token bearer ausente o no válido
404 El miembro no existe (not_found) ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/community/conversations/1/read' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/community/groups/{slug}/town-hall/topics Listar los temas del Town Hall de un grupo

Listar los temas del Town Hall de un grupo

El árbol completo del foro del grupo, en profundidad primero, tal como lo carga el sitio web. Sin paginar. Un grupo sin Town Hall, o cuyo Town Hall está cerrado para quien llama, responde 404 - la misma respuesta que un slug desconocido.

Parámetros

Nombre En Tipo Descripción
slug * path string

Respuestas

Código Descripción
200 El árbol de temas TopicList
401 Token bearer ausente o no válido
404 Grupo no encontrado, no accesible o Town Hall cerrado para quien llama (not_found) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/community/groups/slug/town-hall/topics' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/community/groups/{slug}/town-hall/topics Iniciar un tema o un subtema

Iniciar un tema o un subtema

Parámetros

Nombre En Tipo Descripción
slug * path string

Cuerpo de la solicitud

obligatorio

Tipo de contenido: application/json

Nombre Tipo Descripción
title string
parentId integer | null Iniciar un subtema de este tema.

Respuestas

Código Descripción
201 Tema creado Topic
401 Token bearer ausente o no válido
404 Grupo o tema padre no encontrado, o Town Hall cerrado para quien llama (not_found) ErrorResponse
422 empty_title, title_too_long o too_deep ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/community/groups/slug/town-hall/topics' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"value","parentId":"value"}'
GET /api/v1/community/groups/{slug}/town-hall/gallery Listar la galería del Town Hall de un grupo

Listar la galería del Town Hall de un grupo

Las fotos subidas a los eventos del grupo, las más recientes primero, cada una con su evento. Las fotos denunciadas por un miembro se omiten, como en la página del evento.

Parámetros

Nombre En Tipo Descripción
slug * path string
limit query integer
predeterminado: 20
offset query integer
predeterminado: 0
locale query string Idioma de los títulos de los eventos

Respuestas

Código Descripción
200 Una página de fotos GalleryList
401 Token bearer ausente o no válido
404 Grupo no encontrado, no accesible o Town Hall cerrado para quien llama (not_found) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/community/groups/slug/town-hall/gallery?limit=1&offset=1&locale=en' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/community/groups/{slug}/town-hall/topics/{id} Eliminar un tema

Eliminar un tema

El autor puede eliminar un tema mientras no tenga subtemas ni respuestas; un admin lo elimina con todo su subárbol.

Parámetros

Nombre En Tipo Descripción
slug * path string
id * path integer

Respuestas

Código Descripción
204 Tema eliminado
401 Token bearer ausente o no válido
403 No se permite eliminarlo (forbidden) ErrorResponse
404 Grupo o tema no encontrado, o Town Hall cerrado para quien llama (not_found) ErrorResponse

Solicitud de ejemplo

curl -X DELETE '/api/v1/community/groups/slug/town-hall/topics/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
PATCH /api/v1/community/groups/{slug}/town-hall/topics/{id} Renombrar un tema (autor o admin)

Renombrar un tema (autor o admin)

Parámetros

Nombre En Tipo Descripción
slug * path string
id * path integer

Cuerpo de la solicitud

obligatorio

Tipo de contenido: application/json

Nombre Tipo Descripción
title string

Respuestas

Código Descripción
200 Tema renombrado Topic
401 Token bearer ausente o no válido
403 Ni el autor ni admin (forbidden) ErrorResponse
404 Grupo o tema no encontrado, o Town Hall cerrado para quien llama (not_found) ErrorResponse
422 empty_title o title_too_long ErrorResponse

Solicitud de ejemplo

curl -X PATCH '/api/v1/community/groups/slug/town-hall/topics/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"value"}'
GET /api/v1/community/groups/{slug}/town-hall/topics/{id}/replies Listar las respuestas a un tema

Listar las respuestas a un tema

Las más recientes primero, paginadas hacia atrás como los comentarios de eventos: pasa el nextBefore de la página anterior.

Parámetros

Nombre En Tipo Descripción
slug * path string
id * path integer
before query integer Solo respuestas más antiguas que este id de respuesta
limit query integer
predeterminado: 20

Respuestas

Código Descripción
200 Una página de respuestas CommentList
401 Token bearer ausente o no válido
404 Grupo o tema no encontrado, o Town Hall cerrado para quien llama (not_found) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/community/groups/slug/town-hall/topics/1/replies?before=1&limit=1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/community/groups/{slug}/town-hall/topics/{id}/replies Responder a un tema

Responder a un tema

Parámetros

Nombre En Tipo Descripción
slug * path string
id * path integer

Cuerpo de la solicitud

obligatorio

Tipo de contenido: application/json

Nombre Tipo Descripción
content string

Respuestas

Código Descripción
201 Respuesta creada CommentCreated
401 Token bearer ausente o no válido
404 Grupo o tema no encontrado, o Town Hall cerrado para quien llama (not_found) ErrorResponse
422 content_required o content_too_long ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/community/groups/slug/town-hall/topics/1/replies' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content":"value"}'
DELETE /api/v1/community/groups/{slug}/town-hall/topics/{id}/replies/{replyId} Eliminar una respuesta (propia o como admin)

Eliminar una respuesta (propia o como admin)

Parámetros

Nombre En Tipo Descripción
slug * path string
id * path integer
replyId * path integer

Respuestas

Código Descripción
204 Respuesta eliminada
401 Token bearer ausente o no válido
403 No es tu respuesta y no eres admin (forbidden) ErrorResponse
404 Grupo, tema o respuesta no encontrados, una respuesta a otro tema, o Town Hall cerrado para quien llama (not_found) ErrorResponse

Solicitud de ejemplo

curl -X DELETE '/api/v1/community/groups/slug/town-hall/topics/1/replies/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"

event-actions

Acciones de personas usuarias autenticadas sobre eventos: asistencia, comentarios, subida de imágenes

PUT /api/v1/events/{id}/rsvp Fijar la asistencia y los acompañantes de un evento

Fijar la asistencia y los acompañantes de un evento

Idempotente: fija la asistencia y el número de acompañantes en una llamada y devuelve el estado resultante.

Parámetros

Nombre En Tipo Descripción
id * path integer

Cuerpo de la solicitud

obligatorio

Tipo de contenido: application/json

Nombre Tipo Descripción
going boolean
guests integer Acompañantes que trae el miembro, de 0 a 5; se ignora si no asiste

Respuestas

Código Descripción
200 Estado de asistencia resultante RsvpResult
401 Token bearer ausente o no válido
403 No permitido (not_a_member) ErrorResponse
404 Evento no encontrado ErrorResponse
409 Evento cancelado o ya comenzado (event_canceled, event_started) ErrorResponse
400 El cuerpo no es un objeto, o going no es un booleano (bad_request) ErrorResponse
422 Número de acompañantes fuera de rango (validation_failed) ErrorResponse

Solicitud de ejemplo

curl -X PUT '/api/v1/events/1/rsvp' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"going":"value","guests":"value"}'
POST /api/v1/events/{id}/rsvp Confirmar asistencia a un evento

Confirmar asistencia a un evento

Parámetros

Nombre En Tipo Descripción
id * path integer

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) ErrorResponse
404 Evento no encontrado ErrorResponse
409 Evento cancelado o ya comenzado ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/events/1/rsvp' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
DELETE /api/v1/events/{id}/rsvp Retirar la asistencia a un evento

Retirar la asistencia a un evento

Retirarse nunca se rechaza: un evento cancelado, uno que ya ha empezado y una membresía perdida permiten igualmente salir de la lista de asistentes.

Parámetros

Nombre En Tipo Descripción
id * path integer

Respuestas

Código Descripción
200 Asistencia retirada (o ya inexistente) RsvpResult
401 Token bearer ausente o no válido
404 Evento no encontrado ErrorResponse

Solicitud de ejemplo

curl -X DELETE '/api/v1/events/1/rsvp' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/events/{id}/images Listar las fotos de un evento

Listar las fotos de un evento

Las fotos del evento en todos los tamaños generados. Las fotos denunciadas por un miembro se omiten, como en la página del evento.

Parámetros

Nombre En Tipo Descripción
id * path integer

Respuestas

Código Descripción
200 Las fotos del evento ImageList
401 Token bearer ausente o no válido
403 Token sin el alcance event-actions:read (insufficient_scope) ErrorResponse
404 Evento no encontrado o no visible para quien llama (not_found) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/events/1/images' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/events/{id}/images Subir una imagen a un evento

Subir una imagen a un evento

Parámetros

Nombre En Tipo Descripción
id * path integer

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 file_required, file_rejected o upload_failed ErrorResponse
401 Token bearer ausente o no válido
403 No permitido ErrorResponse
404 Evento no encontrado ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/events/1/images' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -F "file=@/path/to/file"
GET /api/v1/events/{id}/comments Listar los comentarios de un evento

Listar los comentarios de un evento

Los más recientes primero, como en la página del evento. Pasa el nextBefore de la página anterior para obtener la siguiente.

Parámetros

Nombre En Tipo Descripción
id * path integer
before query integer Solo los comentarios anteriores a este identificador de comentario
limit query integer
predeterminado: 25

Respuestas

Código Descripción
200 Una página de comentarios CommentList
401 Token bearer ausente o no válido
403 Token sin el alcance event-actions:read (insufficient_scope) ErrorResponse
404 Evento no encontrado o no visible para quien llama (not_found) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/events/1/comments?before=1&limit=1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/events/{id}/comments Publicar un comentario en un evento

Publicar un comentario en un evento

Parámetros

Nombre En Tipo Descripción
id * path integer

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 content_required o content_too_long ErrorResponse
401 Token bearer ausente o no válido
403 No permitido ErrorResponse
404 Evento no encontrado ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/events/1/comments' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content":"value"}'
GET /api/v1/events/{id}/attendees Listar quién asiste a un evento

Listar quién asiste a un evento

Quién asiste, tal como la página del evento lo muestra a un miembro con sesión iniciada: las personas inscritas con sus invitados, más el recuento externo que mantiene la organización.

Parámetros

Nombre En Tipo Descripción
id * path integer

Respuestas

Código Descripción
200 Las personas que asisten AttendeeList
401 Token bearer ausente o no válido
403 Token sin el alcance event-actions:read (insufficient_scope) ErrorResponse
404 Evento no encontrado o no visible para quien llama (not_found) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/events/1/attendees' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/events/{id}/occurrences Listar las otras fechas de un encuentro recurrente

Listar las otras fechas de un encuentro recurrente

Los próximos eventos visibles de la misma serie, cada uno con la asistencia de quien llama. Un evento sin serie responde consigo mismo.

Parámetros

Nombre En Tipo Descripción
id * path integer

Respuestas

Código Descripción
200 Próximas fechas de la serie EventList
401 Token bearer ausente o no válido
404 Evento no encontrado ErrorResponse

Solicitud de ejemplo

curl '/api/v1/events/1/occurrences' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
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)

Parámetros

Nombre En Tipo Descripción
id * path integer
imageId * path integer

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 ErrorResponse
404 Imagen o evento no encontrado ErrorResponse

Solicitud de ejemplo

curl -X DELETE '/api/v1/events/1/images/1' \
  -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)

Parámetros

Nombre En Tipo Descripción
id * path integer
commentId * path integer

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 ErrorResponse
404 Comentario o evento no encontrado ErrorResponse

Solicitud de ejemplo

curl -X DELETE '/api/v1/events/1/comments/1' \
  -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
group query string Slug del grupo; un slug desconocido devuelve una lista vacía

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&group=weiqi-club'
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"
PATCH /api/v1/me Editar el perfil del miembro autenticado

Editar el perfil del miembro autenticado

Solo cambian los campos presentes en el cuerpo. El nombre sigue la regla del sitio: un nombre ya guardado por encima del límite sigue funcionando, pero un cambio debe respetarlo.

Cuerpo de la solicitud

obligatorio

Tipo de contenido: application/json

Nombre Tipo Descripción
name string
bio string | null
locale string Uno de los idiomas habilitados en esta plataforma
public boolean

Respuestas

Código Descripción
200 El perfil guardado MeProfile
401 Token bearer ausente o no válido
403 Token sin el alcance me:write (insufficient_scope) ErrorResponse
422 Un campo fue rechazado (validation_failed); errors los nombra: name_required, name_too_long, locale_not_enabled, bio_invalid, public_invalid ValidationErrorResponse

Solicitud de ejemplo

curl -X PATCH '/api/v1/me' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"value","bio":"value","locale":"value","public":"value"}'
GET /api/v1/me/rsvps Listar las próximas asistencias del usuario autenticado

Listar las próximas asistencias del usuario autenticado

Parámetros

Nombre En Tipo Descripción
locale query string Código de idioma; tiene prioridad sobre Accept-Language

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?locale=en' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/me/avatar Sustituir la foto de perfil del miembro autenticado

Sustituir la foto de perfil del miembro autenticado

Sustituye la foto de perfil del miembro. La imagen anterior permanece en su propia galería, como en el sitio.

Cuerpo de la solicitud

obligatorio

Tipo de contenido: multipart/form-data

Nombre Tipo Descripción
file string (binary)

Respuestas

Código Descripción
200 El perfil con su nueva foto MeProfile
400 file_required, file_rejected o upload_failed ErrorResponse
401 Token bearer ausente o no válido
403 Token sin el alcance me:write (insufficient_scope) ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/me/avatar' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -F "file=@/path/to/file"
GET /api/v1/me/groups Listar los grupos del miembro autenticado

Listar los grupos del miembro autenticado

Cada grupo al que el miembro pertenece o ha pedido unirse, incluidos los que lo han bloqueado, con el rol y el estado de la membresía.

Respuestas

Código Descripción
200 Las membresías del miembro autenticado MembershipList
401 Token bearer ausente o no válido

Solicitud de ejemplo

curl '/api/v1/me/groups' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/me/events Listar los próximos encuentros del miembro autenticado

Listar los próximos encuentros del miembro autenticado

Los próximos eventos de los grupos del miembro más los eventos visibles a los que confirmó asistencia en otro sitio; los cancelados incluidos y marcados.

Parámetros

Nombre En Tipo Descripción
from query string (date-time) Límite inferior ISO-8601 (por defecto: ahora)
limit query integer
predeterminado: 20
offset query integer
predeterminado: 0
locale query string Código de idioma; tiene prioridad sobre Accept-Language

Respuestas

Código Descripción
200 Lista paginada de eventos EventList
401 Token bearer ausente o no válido

Solicitud de ejemplo

curl '/api/v1/me/events?from=value&limit=1&offset=1&locale=en' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/me/signal-token Emitir el token de señal de notificaciones para este dispositivo

Emitir el token de señal de notificaciones para este dispositivo

Emite para el dispositivo de la aplicación que llama un segundo token que solo puede leer GET /api/v1/signal, válido durante 90 días. Pedirlo de nuevo lo reemplaza, y revocar el token de la aplicación del dispositivo también lo revoca.

Respuestas

Código Descripción
201 El token de señal SignalTokenResult
400 El token que llama no fue emitido por el inicio de sesión de la API (not_an_app_token) ErrorResponse
401 Token bearer ausente o no válido
403 Token sin el alcance me:write (insufficient_scope) ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/me/signal-token' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/me/notifications Listar las notificaciones del miembro autenticado

Listar las notificaciones del miembro autenticado

La campana de notificaciones del sitio, como datos. Cada elemento se calcula en vivo a partir de los mismos proveedores que usa el sitio; no se almacena nada, por lo que no hay estado de lectura, ni historial, ni cursor. Las etiquetas vuelven en el idioma solicitado.

Respuestas

Código Descripción
200 La campana NotificationList
401 Token bearer ausente o no válido
403 Token sin el alcance me:read (insufficient_scope) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/me/notifications' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
GET /api/v1/me/push-subscriptions Listar los dispositivos push registrados

Listar los dispositivos push registrados

Devuelve además la clave pública VAPID que un cliente necesita para suscribirse, y si el push está configurado en esta plataforma.

Respuestas

Código Descripción
200 Los dispositivos registrados PushSubscriptionList
401 Token bearer ausente o no válido
403 Token sin el alcance me:read (insufficient_scope) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/me/push-subscriptions' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/me/push-subscriptions Registrar un dispositivo push

Registrar un dispositivo push

Registra un punto de conexión de Web Push asociado al token que llama, de modo que revocar el dispositivo en /profile/access-tokens también detiene sus notificaciones. Volver a enviar un punto de conexión conocido lo traslada al dispositivo que llama y responde 200.

Cuerpo de la solicitud

obligatorio

Tipo de contenido: application/json

Nombre Tipo Descripción
endpoint string
p256dh string
auth string
transport string

Respuestas

Código Descripción
200 Se ha actualizado un punto de conexión conocido PushSubscriptionEntry
201 El punto de conexión se ha registrado PushSubscriptionEntry
401 Token bearer ausente o no válido
403 Token sin el alcance me:write (insufficient_scope) ErrorResponse
422 validation_failed, endpoint_rejected o too_many_subscriptions ValidationErrorResponse
503 No hay ninguna clave VAPID configurada en esta plataforma (push_unavailable) ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/me/push-subscriptions' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"endpoint":"value","p256dh":"value","auth":"value","transport":"value"}'
GET /api/v1/me/notification-settings Leer las preferencias de notificación del miembro autenticado

Leer las preferencias de notificación del miembro autenticado

El mismo interruptor principal y los mismos seis conmutadores que el miembro edita en /profile/config.

Respuestas

Código Descripción
200 Las preferencias almacenadas MeNotificationSettings
401 Token bearer ausente o no válido
403 Token sin el alcance me:read (insufficient_scope) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/me/notification-settings' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
PATCH /api/v1/me/notification-settings Editar las preferencias de notificación del miembro autenticado

Editar las preferencias de notificación del miembro autenticado

Solo cambian las claves presentes en el cuerpo de la petición. La escritura pasa por el mismo servicio que el sitio, así que un cambio aquí aparece en /profile/config.

Cuerpo de la solicitud

obligatorio

Tipo de contenido: application/json

Respuestas

Código Descripción
200 Las preferencias guardadas MeNotificationSettings
401 Token bearer ausente o no válido
403 Token sin el alcance me:write (insufficient_scope) ErrorResponse
422 Un campo fue rechazado (validation_failed); errors los nombra: name_required, name_too_long, locale_not_enabled, bio_invalid, public_invalid ValidationErrorResponse

Solicitud de ejemplo

curl -X PATCH '/api/v1/me/notification-settings' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
DELETE /api/v1/me/push-subscriptions/{id} Eliminar un dispositivo push

Eliminar un dispositivo push

Elimina un dispositivo registrado. El registro de otro miembro responde 404 en lugar de 403, para que el punto de conexión no confirme que un identificador existe.

Parámetros

Nombre En Tipo Descripción
id * path integer El identificador de suscripción del endpoint de listado

Respuestas

Código Descripción
204 Eliminado
401 Token bearer ausente o no válido
403 Token sin el alcance me:write (insufficient_scope) ErrorResponse
404 No existe ese dispositivo para este miembro
503 No hay ninguna clave VAPID configurada en esta plataforma (push_unavailable) ErrorResponse

Solicitud de ejemplo

curl -X DELETE '/api/v1/me/push-subscriptions/1' \
  -H "Authorization: Bearer $ACCESS_TOKEN"

memberships

Las membresías de grupo del miembro que llama: invitaciones, entrada y salida

GET /api/v1/memberships/invitations Listar las invitaciones de grupo pendientes

Listar las invitaciones de grupo pendientes

Las invitaciones dirigidas al miembro que llama, sin las que oculta un bloqueo en cualquiera de los dos sentidos.

Respuestas

Código Descripción
200 Las invitaciones pendientes InvitationList
401 Token bearer ausente o no válido
403 Token sin el alcance memberships:read (insufficient_scope) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/memberships/invitations' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/memberships/groups/{slug} Unirse a un grupo listado, o solicitarlo

Unirse a un grupo listado, o solicitarlo

Aquí solo puede unirse a un grupo que aparezca en el directorio. A un grupo oculto se entra en su propio dominio y a uno privado por invitación, así que ambos responden group_not_joinable. Si el grupo exige aprobación, la membresía vuelve como pendiente.

Parámetros

Nombre En Tipo Descripción
slug * path string

Cuerpo de la solicitud

Tipo de contenido: application/json

Nombre Tipo Descripción
platformMailConsent boolean Responde a la entrada en la plataforma: si la plataforma puede enviar anuncios y correos de eventos

Respuestas

Código Descripción
200 La membresía resultante, aprobada o pendiente Membership
401 Token bearer ausente o no válido
404 No hay tal grupo (not_found) ErrorResponse
409 group_not_joinable, blocked_in_group o platform_crossing_required ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/memberships/groups/slug' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"platformMailConsent":"value"}'
DELETE /api/v1/memberships/groups/{slug} Salir de un grupo

Salir de un grupo

Rigen las mismas reglas del sitio: la última persona propietaria no puede salir, un miembro bloqueado tampoco, y del grupo de la plataforma solo se puede salir cuando ya no hace falta para otra membresía.

Parámetros

Nombre En Tipo Descripción
slug * path string

Respuestas

Código Descripción
204 Membresía finalizada
401 Token bearer ausente o no válido
404 No hay tal grupo, o no hay membresía en él (not_found) ErrorResponse
409 last_owner, blocked_in_group o may_not_leave_platform ErrorResponse

Solicitud de ejemplo

curl -X DELETE '/api/v1/memberships/groups/slug' \
  -H "Authorization: Bearer $ACCESS_TOKEN"
POST /api/v1/memberships/invitations/{id}/accept Aceptar una invitación de grupo

Aceptar una invitación de grupo

Al aceptar, la membresía queda establecida con el rol invitado. Mientras el miembro aún deba unirse al grupo de la plataforma, esto responde 409 platform_crossing_required; reinténtalo con platformMailConsent para responder antes esa pregunta.

Parámetros

Nombre En Tipo Descripción
id * path integer

Cuerpo de la solicitud

Tipo de contenido: application/json

Nombre Tipo Descripción
platformMailConsent boolean Responde a la entrada en la plataforma: si la plataforma puede enviar anuncios y correos de eventos

Respuestas

Código Descripción
200 La membresía resultante Membership
401 Token bearer ausente o no válido
404 No hay tal invitación para este miembro (invitation_not_found) ErrorResponse
409 blocked_in_group, membership_rejected o platform_crossing_required ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/memberships/invitations/1/accept' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"platformMailConsent":"value"}'
POST /api/v1/memberships/invitations/{id}/decline Rechazar una invitación de grupo

Rechazar una invitación de grupo

Parámetros

Nombre En Tipo Descripción
id * path integer

Respuestas

Código Descripción
204 Invitación rechazada
401 Token bearer ausente o no válido
404 No hay tal invitación para este miembro (invitation_not_found) ErrorResponse

Solicitud de ejemplo

curl -X POST '/api/v1/memberships/invitations/1/decline' \
  -H "Authorization: Bearer $ACCESS_TOKEN"

signal

Si algo ha cambiado para el miembro, sin decir qué

GET /api/v1/signal Si algo ha cambiado para el miembro

Si algo ha cambiado para el miembro

Un valor opaco que cambia cuando cambia la campana, cuando un evento al que el miembro dijo que sí se cancela, se mueve de hora o de lugar, y cuando vence su recordatorio. No revela nada más, así que un token que solo puede leer esta sección puede guardarse donde la aplicación no puede protegerlo.

Respuestas

Código Descripción
200 El valor actual SignalState
401 Token bearer ausente o no válido
403 Token sin el alcance signal:read (insufficient_scope) ErrorResponse

Solicitud de ejemplo

curl '/api/v1/signal' \
  -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'