Disable account confirm emails when creating users via API

Se o usuário foi realmente criado, o user_id estará na resposta. Mas, considerando que você não consegue encontrar o usuário no painel de administração, provavelmente ele não foi criado por algum motivo.

Ah, ok, então você está criando um importador. No entanto, você não deve fazer isso por meio de chamadas de API, mas sim criar um script de importador e executá-lo diretamente dentro do seu contêiner Docker.

Eu recomendo olhar alguns dos muitos exemplos listados em discourse/script/import_scripts at main · discourse/discourse · GitHub

Posso perguntar por quê?
(Tenho acesso de administrador ao Discourse, mas não ao servidor/contêiner Docker, então teria que pedir a outra pessoa para fazer isso.)

Parece que sim! Existem causas conhecidas para isso? Algo nas configurações?

É 100 vezes mais rápido se for uma importação grande, e você terá acesso direto aos métodos da classe ImportScripts::Base que tornam super fácil criar usuários e muitas outras coisas para importações, como criar grupos, categorias, tópicos e postagens:

Você pode criar o script e pedir para que alguém o execute, se necessário.

Não há problemas conhecidos relacionados a isso. Aqui está um exemplo de solicitação curl para criar um usuário:

curl -i -sS -X POST "http://localhost:3000/users" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: ****" \
-H "Api-Username: system" \
-F "name=cfbcc77ae9f4230d2c25" \
-F "username=cfbcc77ae9f4230d2c25" \
-F "email=cfbcc77ae9f4230d2c25@example.com" \
-F "password=3f348653105f05505f5f1a3ff70ef984" \
-F "active=true" \
-F "user_fields[1]=cfbcc77ae9f4230d2c25" \
-F "user_fields[2]=828c0ec3a76"

que retorna:

{"success":true,"active":false,"message":"\u003cp\u003eVocê está quase pronto! Enviamos um e-mail de ativação para \u003cb\u003ecfbcc77ae9f4230d2c25@example.com\u003c/b\u003e. Siga as instruções no e-mail para ativar sua conta.\u003c/p\u003e\u003cp\u003eSe não chegar, verifique sua pasta de spam.\u003c/p\u003e","user_id":4}

É possível que algo tenha mudado, pois parece que os e-mails estão sendo enviados agora, mas o usuário ainda está sendo criado. Parece que o active=true não está sendo aplicado.

Também devo admitir que não tenho conhecimento sobre Ruby :man_facepalming:

Então, vou tentar investigar o problema com a API um pouco mais. Vou tentar fazer uma chamada semelhante à sua. Apenas algumas coisas para esclarecer:
a) O endpoint é [mydomain]/users.json, certo?
b) O Content-Type deve ser "multipart/form-data" ou "application/json", conforme descrito na documentação da API?
c) Para que servem os "user_fields"?

Sim, geralmente você deseja adicionar .json a todas as rotas. Sim, você também pode usar application/json para o content-type e os user_fields são opcionais; eles faziam parte apenas do meu script de exemplo que eu já tinha.

Funcionou!

Enviar exatamente o mesmo comando curl que o seu (com meus dados) resultou na criação de um usuário ativado.
Ainda não tenho certeza do motivo pelo qual não funcionou para mim originalmente, quando enviava solicitações semelhantes pelo Postman. Vou investigar mais a fundo esse problema e reportarei aqui se encontrar algo relevante.

Obrigado pela sua ajuda!

Isso foi resolvido com este commit: