Social
Con quién está conectado el dueño.
Este permiso dice quién, nunca qué tienen esas cuentas.
Las solicitudes para seguir una cuenta privada se responden una a una
en /api/v1/social/follow-requests/{username}, o todas a la vez:
PUT /api/v1/social/follow-requests con {"all": true} acepta, y
DELETE /api/v1/social/follow-requests?all=true rechaza. all es
obligatorio en los dos, porque vaciar la cola no tiene vuelta.
/api/ v1/ social/ followersCuentas que siguen al dueño.
/api/ v1/ social/ followingCuentas que el dueño sigue.
/api/ v1/ social/ blocksA quién ha bloqueado el dueño. La dirección contraria no existe: una cuenta lee los bloqueos que hizo, nunca los que recibió.
Parámetros
| Campo | Tipo | Notas |
|---|---|---|
page | integer | De 1 a 1000. |
q | string | Filtra por nombre de usuario o nombre visible. |
/api/ v1/ social/ following/ {username}Sigue una cuenta, o pide seguirla si es privada. La respuesta trae following y requested, y solo uno de los dos es verdadero. Hacerlo dos veces no cambia nada.
/api/ v1/ social/ following/ {username}Deja de seguir una cuenta, o retira la solicitud que aún no fue respondida.
/api/ v1/ social/ blocks/ {username}Bloquea una cuenta. Eso también deshace el seguimiento en ambos sentidos, lo que decide la base de datos y no esta ruta.
/api/ v1/ social/ blocks/ {username}Desbloquea una cuenta. Seguir no se restaura por sí solo.
/api/ v1/ social/ follow-requestsQuién pidió seguir una cuenta privada y aún espera. Solo esa dirección existe: lo que esta cuenta pidió a otras es la cola de ellas, y listarla aquí sería leer una decisión que nadie tomó.
Parámetros
| Campo | Tipo | Notas |
|---|---|---|
page | integer | De 1 a 1000. |
q | string | Filtra por nombre de usuario o nombre visible. |
/api/ v1/ social/ follow-requestsAcepta todas las solicitudes en espera de una vez y dice cuántas: {"data": {"approved": 3}}. Cada una se acepta como en la ruta de una sola solicitud, con la misma verificación en dos pasos cuando la cuenta la exige. Sin all: true en el cuerpo responde 400, porque vaciar la cola no tiene vuelta y no debería pasar por error.
Cuerpo
| Campo | Tipo | Notas |
|---|---|---|
allobligatorio | boolean | Tiene que ser true. |
/api/ v1/ social/ follow-requestsRechaza todas las solicitudes en espera de una vez y dice cuántas: {"data": {"declined": 3}}. Sin ?all=true responde 400, por el mismo motivo que el PUT.
Parámetros
| Campo | Tipo | Notas |
|---|---|---|
allobligatorio | boolean | Tiene que ser true. |
/api/ v1/ social/ follow-requests/ {username}Acepta una solicitud. Quien no estaba esperando responde 404, en vez de un éxito silencioso: aprobar una solicitud retirada no debería leerse como aprobada.
/api/ v1/ social/ follow-requests/ {username}Rechaza una solicitud. Sale de la cola de las dos formas; solo aceptar crea el seguimiento.
/api/ v1/ reportsAvisa a moderación sobre algo. No hay lado de lectura, y no lo habrá: una denuncia es un recado para quienes las atienden, y dejar ver su avance (o dejar contar cuántas veces se denunció una cuenta) convierte la cola en un arma. La respuesta dice que llegó, y nada más. Una persona tiene una denuncia abierta por cosa: denunciar otra vez el mismo perfil o el mismo contenido mientras la primera no se cerró responde 409 conflict, y la primera sigue en pie. ARCADE_APP denuncia un juego de Arcade: no pide username, porque la cuenta es la de quien publica el juego, y hace que uloggd vuelva a verificar la URL del juego, como mucho una vez por hora por juego.
Cuerpo
| Campo | Tipo | Notas |
|---|---|---|
onobligatorio | string | PROFILE, REVIEW, LIST, SCREENSHOT, DIARY, PROFILE_COMMENT, CONTENT_COMMENT o ARCADE_APP. |
username | string | La cuenta que lo publicó. Una denuncia nombra la cuenta de la que trata, incluso cuando es sobre algo que esa cuenta publicó. Obligatorio para todo tipo salvo ARCADE_APP, donde la base de datos toma la cuenta del propio juego. |
reasonobligatorio | string | HARASSMENT, HATE_SPEECH, SPAM, IMPERSONATION, SEXUAL_CONTENT, CHILD_SAFETY, SELF_HARM, VIOLENCE, PRIVACY, SPOILER, SCAM u OTHER. Todos valen para cualquier tipo salvo SPOILER, que es para algo publicado (una reseña, sesión, lista, captura o comentario) y se rechaza con 400 en un PROFILE, y SCAM (estafa), que solo vale para ARCADE_APP. CHILD_SAFETY, SELF_HARM y VIOLENCE van al principio de la cola de moderación, y SCAM también pasa adelante. OTHER no nombra ninguna regla, así que pide details. |
id | string | El contenido denunciado. Obligatorio para todo lo que no sea PROFILE, donde la cuenta misma es el asunto. Con ARCADE_APP, el id de la aplicación del juego. |
details | string | Hasta 1000 caracteres. Con OTHER es obligatorio y tiene al menos 10, sin contar espacios en los extremos: sin eso responde 400. |
instance_id | uuid | Solo con ARCADE_APP, opcional: la partida de la que salió la denuncia. Moderación recibe con ella el lanzamiento, el origen y la última verificación de ese momento. |