Marquer des publications spécifiques comme "lues" via l'API ?

Bonjour,

Je récupère des publications via l’API Discourse en utilisant Python. La requête appelle le code suivant (qui effectue essentiellement une requête GET) et renvoie un fichier .json similaire à cette publication :

    def topic_by_id(self, topic_id, **kwargs):
        return self._get("/t/{0}.json".format(topic_id), **kwargs)

Les publications retournées possèdent un drapeau 'read'. Les publications que j’envoie ont read=True, mais pour celles que je reçois, elles sont toutes marquées read=False, sauf si je me connecte activement à Discourse et que je les lis.

Existe-t-il un moyen de marquer une publication spécifique comme lue via l’API, étant donné un post_id ? J’ai examiné pydiscourse, qui propose une méthode pour ajouter du temps de lecture, ce qui devrait également marquer la publication comme « lue ». Cependant, peu importe la quantité de temps de lecture que j’« ajoute », l’endpoint .json renvoie toujours false. Je ne me soucie pas des « lacunes » de lecture tant que je peux marquer des identifiants de publication spécifiques.

    def topic_timings(self, topic_id, time, timings={}, **kwargs):
        """
        Définir le temps passé à lire une publication
        Un effet secondaire de cela est de marquer la publication comme lue

        Args:
            topic_id: { post_number: ms }
            time: temps total pour le sujet (dans quelle unité ???? )
            timings:
        """
        kwargs["topic_id"] = topic_id
        kwargs["topic_time"] = time
        for post_num, timing in timings.items():
            kwargs["timings[{0}]".format(post_num)] = timing
        return self._post("/topics/timings", **kwargs)

Une fonctionnalité similaire a déjà été réalisée pour les notifications en utilisant l’endpoint notifications/mark-read :

    def mark_read(self, notification_id):
        return self._put('/notifications/mark-read.json', id=notification_id)

Par ailleurs, une autre solution de contournement valide serait de pouvoir marquer un sujet entier (toutes les publications qu’il contient) comme lu.

Toute aide est la bienvenue !

EDIT : il est requis que cela fonctionne également pour les messages privés.

Bon, je l’ai rétro-ingénieré avec le navigateur.
La fonction topic_timings() doit être appelée en utilisant l’index du post dans l’argument timings={} plutôt que l’ID du post.

Je suppose que c’est une solution de contournement tout à fait acceptable, même si je préférerais une méthode basée sur l’ID du post, car il n’est pas très facile de déduire l’index à partir des IDs (il faudra d’abord récupérer le sujet lui-même).

Je ne sais pas si cela aidera, mais je crois qu’il existe une route /p/<POST_ID>.