Is this related to the fact that the https://{defaultHost}/invites/link.json API stopped working today?
I’m not sure - it could be? I am not familiar with this endpoint.
Well, I have got a few hundreds emails from our automation now failing. We used the endpoint https://{defaultHost}/invites/link and we started getting 404. I check the documentation and the endpoint is now reported to be https://{defaultHost}/invites/link.json (with the extra .json), but also with that change I keep getting 404.
I am not sure how to fix that. We need to generate invite links to send them through our systems. It worked beautifully until today
Also, doing a PUT to that address return BAD REQUEST, but a PUT to an unexisting address returns NOT FOUND. I am not sure if this is an hint that the endpoint is there and it is just not working
Maybe I should specify that I have an instance of Discourse hosted by you at https://d.strumenta.community/
That API endpoint was moved to https://{defaultHost}/invites.json as we consolidated the email and link invites.
Ok, then I think the documentation is not up-to-date
Does this endpoint generates an invite link, but does not send an email?
Because according to the documentation the difference betweek /invites.json and and /invites/link.json is the sending of the email
Also, a post to /invites.json returns BAD REQUEST for me → my bad, I should use " and not '
With the correction, I get an answered telling the user was emailed, and I would like to prevent that:
It would be useful to have a notification when API changes and get access to the current documentation, otherwise stuff breaks all of a sudden and one cannot fix it…
Adding this here, just for visibility:
$ curl 'http://localhost:3000/invites.json' -X 'POST' \
-H "Api-Key: d5fc02c5f4efaafacc82e4ff3410ae283d1c5da68ac43430d5133aaf4785593f" \
-H "Api-Username: dan" \
-H "Content-Type: application/json" \
-d "{\"max_redemptions_allowed\":5}"
{"id":18,"link":"http://localhost:3000/invites/6f524dba4ced35ecae709a8614db3b05","redemption_count":0,"max_redemptions_allowed":5,"custom_message":null,"updated_at":"2021-03-10T15:44:44.259Z","expires_at":"2021-04-09T15:44:44.258Z","expired":false,"topics":[],"groups":[]}%
I will be updating our API documentation. Thank you for bringing that to my attention and sorry for the inconvenience.
It would be nice if create returned the existing invite link instead of throwing an error if it’s from the same user. The 422 error response is pretty generic, it took me ages to figure out why my tests were failing.
Added a PR for retrieving an existing invite by email address: FEATURE: Retrieve an existing link only invite by jessicah · Pull Request #12575 · discourse/discourse · GitHub
I found an undocumented flag skip_email that prevents the email being sent so you can just grab the link. Pass it in the body with the email and you should be good!
{
"email": "someone@test.com",
"skip_email": "true"
}
I did some brief testing and it’s worth noting that if you use it to generate an email link, then you can’t go back and use it to send an email automatically - emailed always returns false once skip_email is used.
Y a-t-il une raison pour que invites/retrieve ne soit pas dans la documentation sous Discourse API Docs ? Ou est-ce que je manque quelque chose.
Je veux inviter des adresses e-mail qui existent dans une base de données externe, seulement si a) elles n’ont pas déjà de compte, et b) si elles n’ont pas déjà été invitées (ce processus s’exécutera périodiquement et je ne veux pas spammer les personnes qui n’ont pas répondu assez vite à leur invitation). invites/retrieve.json semble être la bonne façon de vérifier b) d’après ce qui semble être dans le commit.
Il s’agit probablement d’un oubli de sa présence dans la documentation de l’API, je vais travailler à l’ajouter.
Ce serait bien si ceux-ci étaient générés par, ou du moins testés contre, le cœur actuel de Discourse.
Il semblerait qu’il y ait un moyen raisonnablement simple (ce qui signifie probablement 2 jours de travail et non l’heure que j’aimerais croire !) de faire exécuter des spécifications pour les tester. Oh, ou peut-être est-ce à cela que sert https://redocly.com/ ?
Ce qui serait vraiment agréable pour mon cas d’utilisation, c’est un moyen de récupérer toutes les invitations envoyées par tous les utilisateurs. Si « par tous les utilisateurs » est le point bloquant, il serait acceptable pour mon cas d’utilisation de récupérer toutes les invitations (quel que soit leur état).
Avec cette méthode, je suis obligé de sonder chaque possibilité, ce qui pourrait représenter 1000 adresses e-mail alors qu’il n’y en a probablement que quelques-unes dans la table.
How to get a password from database? - #3 by pfaffman indique que la base de données n’est pas exposée par défaut, donc utiliser du code pour accéder à la base de données à partir d’un processus externe n’est pas faisable directement, du moins pas avec mon implémentation actuelle – et ce ne serait peut-être pas une bonne idée d’exposer le port de la base de données de toute façon.
J’essaie d’automatiser les invitations et l’appartenance à des groupes pour les adresses e-mail dans une base de données externe.
Et deux fois, il a été fait référence au plugin data explorer (explorateur de données), ce qui est également la réponse ici, mais peut-être avez-vous besoin de savoir que vous pouvez Run Data Explorer queries with the Discourse API
ah oui, c’était le point clé qui me manquait – merci pour l’indication


