Adicionar membros do grupo vs adicionar proprietários: formato de dados é diferente

Ao usar a API para adicionar membros e proprietários a um grupo, parece que o formato de dados necessário é diferente. Isso pode ser intencional, mas gostaria de saber o porquê (isso está quebrando o pydiscourse, a melhor biblioteca que consigo encontrar para interagir com a API do Discourse em Python).

Adicionando um membro a um grupo:

curl -X PUT "https://{mydomain}/admin/groups/{group_id}/members.json" \ 
    -d 'usernames={my-username}' \
    -H "Api-Key: {my-api-key}" \
    -H "Api-Username: {my-api-username}"

Adicionando um proprietário a um grupo:

curl -X PUT "https://{mydomain}/admin/groups/{group_id}/owners.json" \ 
    -d 'group[usernames]={my-username}' \
    -H "Api-Key: {my-api-key}" \
    -H "Api-Username: {my-api-username}"

Tenho curiosidade sobre por que a chave para o parâmetro de nome de usuário no endpoint de proprietários precisa ser escrita como group[usernames] em vez de apenas usernames?

A única razão que posso dar é que eles estão, na verdade, usando dois controladores diferentes.

O endpoint de adicionar membros está mapeado para o controlador de grupos:

PUT /admin/groups/:id/members(.:format) groups#add_members

E o endpoint de adicionar proprietários está mapeado para o controlador admin/grupos.

PUT /admin/groups/:id/owners(.:format) admin/groups#add_owners

É improvável que atualizemos este endpoint, pois muitas integrações já o utilizam exatamente como está. Sua melhor opção é abrir uma issue no repositório do pydiscourse. Você também pode aplicar um monkey patch para corrigir add_group_owner no seu aplicativo Python até que a questão seja resolvida dentro do pydiscourse.