Parâmetros necessários da API do Discourse para 'atualizar categoria'

Por que os atributos name, color e text_color são obrigatórios para a rota de atualização de categoria
(Discourse API Docs)?

Parece que atributos como o slug deveriam poder ser atualizados sem a necessidade de especificar outros atributos.

Eu também acho isso um pouco irritante. Ao atualizar outras informações sobre uma categoria, nem sempre sei o color e o text_color da categoria. Então, minhas opções são alterar ambos para algo inócuo ou fazer outra chamada à API para coletar essas informações primeiro. Aqui está um exemplo usando o discourse_api gem:

response = client.categories

cat = response.find {|e| e['name'] == 'Category Name'}

response = client.update_category(
  id: cat['id'],
  name: cat['name'],
  color: cat['color'],
  text_color: cat['text_color'],

  # Adicione o(s) atributo(s) que você realmente deseja atualizar abaixo
  parent_category_id: 7, # Estou aninhando várias categorias sob a #7
)

Obviamente, nem sempre saberei o nome da categoria também. Definitivamente preciso consultá-lo antes de atualizar a categoria.

Seria útil se esses parâmetros não fossem obrigatórios. Alternativamente, poderia haver alguma sintaxe para sinalizar “Não quero alterar o campo”? Por exemplo, se você passar _, ele simplesmente define esse atributo para o valor atual. (Não tenho certeza do motivo dos campos obrigatórios, então estou lançando ideias que podem ou não ser úteis.)

Concordo. Acredito que os campos de cor não devam ser obrigatórios na atualização. Provavelmente, também não deveriam ser obrigatórios na criação. Vou investigar isso e ver o que posso melhorar aqui.

Acabei de enviar uma atualização para isso :slight_smile:

Ao criar uma categoria, o campo de nome ainda é obrigatório, mas ao atualizar a categoria, você não precisa mais especificar o nome, a cor e a cor do texto, além da propriedade real que deseja atualizar.