Excluindo um usuário via API do Discourse

As contas de usuário também podem ser excluídas via API do Discourse.

Por exemplo;

DELETE /admin/users/{id}.json HTTP/1.1

Content-Type: application/json
Api-Username: system
Api-Key: 1234*******

{
  "delete_posts": true,
  "block_email": false,
  "block_urls": false,
  "block_ip": false
}
  • A solicitação é simplificada para legibilidade.

Como você pode ver, as opções de payload permitem excluir as postagens geradas pelo usuário na mesma solicitação, em vez de excluir as postagens antes da exclusão da conta quando as contas são excluídas manualmente na página de administração.


No entanto, estou recebendo um erro 403 acesso negado para esta solicitação, embora a chave da API tenha um escopo global e o usuário seja system:

{
  "errors": ["Você não tem permissão para visualizar o recurso solicitado."],
  "error_type": "invalid_access"
}

Funciona se você alterar os valores das configurações mencionadas no guia? Os valores padrão podem bloquear a exclusão do usuário. Não tenho 100% de certeza.

Não tenho certeza sobre os detalhes do usuário que você está tentando excluir, mas o erro que você está vendo provavelmente decorre de uma ou mais das seguintes verificações não serem atendidas.

Muito provavelmente, é algo no bloco else. E sim, concordo, a mensagem de erro poderia definitivamente ser menos vaga :grimacing:.

4 curtidas

Exatamente @selase! Parece que meu usuário tem mais posts do que User::MAX_STAFF_DELETE_POST_COUNT e alguns são mais antigos do que SiteSetting.delete_user_max_post_age :slight_smile:

  • delete_user_max_posts: deve ter sido renomeado para delete_user_self_max_post_count desde que o artigo foi publicado. Está definido como 1 (padrão)

    O número máximo de posts que um usuário pode ter enquanto permite a exclusão de conta por autoatendimento. Definido como -1 para desativar a exclusão de conta por autoatendimento.

  • delete_user_max_post_age está definido como 60 (padrão), e o usuário tem posts com mais de 60 dias.

    Não permita a exclusão de usuários cujo primeiro post seja mais antigo que (x) dias.

  • delete_all_posts_max está definido como 15 (padrão), e meu usuário tem 12 posts

    O número máximo de posts que podem ser excluídos de uma vez com o botão Excluir Todos os Posts. Se um usuário tiver mais do que esse número de posts, os posts não poderão ser excluídos de uma vez e o usuário não poderá ser excluído.

Depois que eliminei as restrições, consegui excluir meu usuário via chamada de API.

{"deleted":true}

:grin:

E talvez a Documentação da API pudesse mencionar esse requisito também, talvez?

1 curtida

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.