Confirmación del acceso a la API para la configuración de límites de creación de sitios

Estoy trabajando en una integración que publica y sincroniza temas complementarios en Discourse a través de la API. Para el diagnóstico de la configuración, me gustaría leer los límites actuales de creación de contenido del foro, para que la integración pueda verificar el contenido antes de intentar crear o actualizar temas.

Los ajustes a los que intento confirmar el acceso incluyen:

min_topic_title_length
max_topic_title_length
min_first_post_length
min_post_length
max_post_length
max_tags_per_topic
max_tag_length
tagging_enabled
create_tag_allowed_groups
tag_topic_allowed_groups

Primero revisé /site.json, que es accesible y útil para indicios de capacidades públicas, pero parece que no expone estos ajustes concretos de límites de creación.

Con una clave API para un usuario bot no administrador, estos devolvieron 404:

/site_settings.json
/admin/site_settings.json
/admin/site_settings

Tras convertir al usuario bot en administrador, estos funcionaron:

/admin/site_settings.json
/admin/site_settings

Usando las cabeceras:

Accept: application/json
Api-Key: ...
Api-Username: discussbridge-bot
X-Requested-With: XMLHttpRequest

/site_settings.json seguía devolviendo 404.

Mis preguntas:

  1. ¿Es /admin/site_settings.json la ruta API esperada para leer los ajustes actuales del sitio?
  2. ¿Se requiere permiso de usuario administrador, o existe un ámbito API de solo lectura/granular soportado para esto?
  3. ¿Está /site_settings.json obsoleto, depende de un plugin, o no se espera que exista?
  4. Para integraciones, ¿es el patrón recomendado usar una clave de diagnóstico/configuración con capacidades de administrador para leer ajustes, mientras se usa una clave de publicación con menos privilegios para el trabajo normal de sincronización de temas/publicaciones?

El objetivo no es cambiar ajustes mediante la API, solo leerlos durante el diagnóstico de configuración para que la integración

  1. Es es /admin/site_settings.json

  2. Debes ser administrador, excepto para las configuraciones que tienen client: true, las cuales se pueden encontrar en /site/settings.json

Todas las configuraciones que necesitas, excepto las últimas dos, se pueden encontrar en /site/settings.json.

Pero para los grupos permitidos, el mecanismo funciona de manera diferente: si solicitas /site.json como un usuario específico, puedes inspeccionar can_tag_topics y can_create_tags.

  1. Que yo sepa, /site_settings.json nunca existió.

  2. Creo que, para tu caso de uso específico, puedes arreglártelas con un usuario regular y usando el patrón bajo el #2.

Gracias @RGJ , esa era exactamente la distinción que faltaba.

Probé las rutas en mi foro y puedo confirmar:

/site/settings.json

/site.json

funcionan con mi clave global/admin de bot actual.

/site/settings.json expone los límites numéricos de creación que necesito, incluyendo:

min_topic_title_length
max_topic_title_length
min_first_post_length
min_post_length
max_post_length
max_tags_per_topic
max_tag_length
tagging_enabled

Y /site.json, cuando se solicita como usuario bot, expone:

can_tag_topics
can_create_tag

Eso parece ser el patrón correcto para los diagnósticos de configuración.

Una pregunta adicional: también probé una clave API granular con alcance limitado para trabajos de publicación de temas/publicaciones/categorías/etiquetas:

categories:list
categories:show
posts:edit
posts:list
search:show
tags:list
topics:write
topics:update
topics:read
topics:status

Con esa clave granular:

/t/{topic_id}.json funciona
/tags.json          funciona
categories.json    funciona

pero:

/site/settings.json  403
/site.json           403

No veo un alcance granular obvio en la interfaz de administración que permita el acceso a esos dos puntos finales de nivel de sitio.

¿Me estoy perdiendo algún alcance granular o configuración de URL permitida para /site/settings.json y /site.json?

Dado que las claves son para un usuario bot de administrador, cada clave es capaz de actuar como administrador a nivel de usuario. La clave granular solo restringe a qué puntos finales de la API puede llamar.

Si no es así, mi configuración práctica durante las pruebas parece ser:

  1. una clave de publicación global actual
  2. una clave de diagnóstico global para comprobaciones de configuración que lean la configuración del sitio
  3. una candidata a clave de publicación granular para la sincronización normal de temas/publicaciones/etiquetas

Si la clave de publicación granular resulta suficiente para la sincronización normal, la clave de publicación global original podría dejarse de usar, quedando:

  1. clave de publicación granular para la sincronización en tiempo de ejecución
  2. clave de diagnóstico con capacidad de administrador global para comprobaciones de configuración

Pero eso depende de si la clave granular puede cubrir todas las operaciones normales de publicación, y si /site/settings.json / /site.json deben permanecer en el lado de los diagnósticos.