Confirmation de l'accès API aux paramètres du site pour les limites d'auteur

Je travaille sur une intégration qui publie et synchronise des sujets compagnons dans Discourse via l’API. Pour le diagnostic de configuration, j’aimerais lire les limites de rédaction actuelles du forum afin que l’intégration puisse vérifier le contenu avant de tenter de créer ou de mettre à jour des sujets.

Les paramètres auxquels j’essaie de confirmer l’accès incluent :

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

J’ai d’abord vérifié /site.json, qui est accessible et utile pour les indications de capacités publiques, mais il ne semble pas exposer ces paramètres concrets de limites de rédaction.

Avec une clé API pour un utilisateur bot non administrateur, ceux-ci ont retourné 404 :

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

Après avoir rendu l’utilisateur bot administrateur, ceux-ci ont fonctionné :

/admin/site_settings.json
/admin/site_settings

En utilisant les en-têtes :

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

/site_settings.json a toujours retourné 404.

Mes questions :

  1. /admin/site_settings.json est-il le chemin API attendu pour lire les paramètres actuels du site ?
  2. La permission d’utilisateur administrateur est-elle requise, ou existe-t-il une portée API en lecture seule/granulaire prise en charge pour cela ?
  3. /site_settings.json est-il déprécié, dépendant d’un plugin, ou n’est-il pas censé exister ?
  4. Pour les intégrations, le modèle recommandé consiste-t-il à utiliser une clé de diagnostic/configuration capable d’administration pour lire les paramètres, tout en utilisant une clé de publication moins privilégiée pour le travail normal de synchronisation des sujets/messages ?

L’objectif n’est pas de modifier les paramètres via l’API, mais seulement de les lire lors du diagnostic de configuration afin que l’intégration

  1. C’est /admin/site_settings.json

  2. Vous devez être administrateur, sauf pour les paramètres qui ont client: true, ceux-ci peuvent être trouvés dans /site/settings.json

Tous les paramètres dont vous avez besoin, sauf les deux derniers, peuvent être trouvés dans /site/settings.json.

Mais pour les groupes autorisés, le mécanisme fonctionne différemment : si vous demandez /site.json en tant qu’utilisateur spécifique, vous pouvez inspecter can_tag_topics et can_create_tags.

  1. AFAIK /site_settings.json n’a jamais existé.

  2. Je pense que, pour votre cas d’utilisation spécifique, vous pouvez vous en sortir avec un utilisateur régulier en utilisant le modèle sous #2.

Merci @RGJ, c’était exactement la distinction manquante.

J’ai testé les chemins d’accès sur mon forum et je peux confirmer :

/site/settings.json

/site.json

fonctionnent avec ma clé actuelle de bot global/admin.

/site/settings.json expose les limites numériques de création dont j’ai besoin, notamment :

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

Et /site.json, lorsqu’il est demandé en tant qu’utilisateur bot, expose :

can_tag_topics
can_create_tag

Cela semble être le bon modèle pour les diagnostics de configuration.

Une question de suivi : j’ai également testé une clé API granulaire limitée à la publication de sujets/messages/catégories/étiquettes :

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

Avec cette clé granulaire :

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

mais :

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

Je ne vois pas de portée granulaire évidente dans l’interface d’administration qui permette l’accès à ces deux points de terminaison de niveau site.

Manque-t-il une portée granulaire ou une configuration d’URL autorisée pour /site/settings.json et /site.json ?

Étant donné que les clés sont destinées à un utilisateur bot administrateur, chaque clé est capable d’actions d’administrateur au niveau utilisateur. La clé granulaire ne restreint que les points de terminaison API qu’elle peut appeler.

Sinon, ma configuration pratique pendant les tests semble être :

  1. une clé de publication globale actuelle
  2. une clé de diagnostics globale pour les vérifications de configuration qui lisent les paramètres du site
  3. un candidat de clé de publication granulaire pour la synchronisation normale des sujets/messages/étiquettes

Si la clé de publication granulaire s’avère suffisante pour la synchronisation normale, la clé de publication globale originale pourrait être mise hors service, laissant :

  1. clé de publication granulaire pour la synchronisation en temps réel
  2. clé de diagnostics globale/capable d’administration pour les vérifications de configuration

Mais cela dépend de savoir si la clé granulaire peut couvrir toutes les opérations de publication normales, et si /site/settings.json / /site.json doivent rester du côté des diagnostics.