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: https://github.com/discourse/discourse/pull/12575
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.
Existe algum motivo pelo qual invites/retrieve não está na documentação em Discourse API Docs? Ou estou perdendo alguma coisa.
Eu quero convidar endereços de e-mail que existem em um banco de dados externo, somente se a) eles ainda não tiverem uma conta, e b) se eles ainda não foram convidados (este processo será executado periodicamente e eu não quero sobrecarregar as pessoas que não responderam ao convite rápido o suficiente). invites/retrieve.json parece ser a maneira certa de descobrir b) pelo que parece estar no commit.
É provável que seja apenas uma omissão que está faltando na documentação da API, vou trabalhar para adicioná-la.
Seria Ăłtimo se eles fossem gerados por, ou pelo menos testados contra, o discourse core atual.
Pareceria que haveria uma maneira razoavelmente simples (o que provavelmente significa 2 dias de trabalho e não a 1 hora que eu gostaria de acreditar!) de fazer com que as especificações fossem executadas para testá-los. Ah, ou talvez seja para isso que serve https://redocly.com/?
O que seria realmente bom para o meu caso de uso é uma maneira de recuperar todos os convites convidados por todos os usuários. Se “por todos os usuários” for o ponto de interrupção, seria bom para o meu caso de uso recuperar todos os convites (independentemente do estado).
Com este método, sou forçado a sondar cada possibilidade, o que pode ser 1000 endereços de e-mail quando provavelmente há apenas alguns na tabela.
How to get a password from database? - #3 by pfaffman indica que o banco de dados não é exposto por padrão, então usar código para acessar o banco de dados a partir de um processo externo não é viável diretamente, pelo menos não com minha implementação atual – e talvez não fosse uma boa ideia expor a porta do banco de dados em qualquer caso.
Estou tentando automatizar convites e associação de grupos para endereços de e-mail em um banco de dados externo.
E duas vezes referiu-se ao plugin data explorer (explorador de dados), que também é a resposta aqui, mas talvez você precise saber que pode Run Data Explorer queries with the Discourse API
ah sim, esse era o ponto chave que eu estava perdendo – obrigado pela dica


