No se puede actualizar la configuración de la categoría a través de la API

Hola, hemos estado trabajando en una herramienta para crear categorías utilizando una entrada CSV. Pudimos establecer con éxito las relaciones padre-hijo al crear las categorías. Sin embargo, estamos encontrando problemas cuando se trata de aplicar la configuración de la categoría; falla constantemente. Cualquier orientación sobre cómo aplicar la configuración de la categoría (como las que se enumeran a continuación) después de crear una nueva categoría sería apreciada. Incluso hemos intentado agregar un retraso de hasta 40 segundos antes de aplicar la configuración, pero aún no funciona.

También quiero actualizar la descripción de la categoría :: update_about_post(category_id, description) # Actualizar solo la descripción.

También quería agregar dos campos personalizados adicionales para la categoría, ¿cómo agrego esto?

Función para actualizar la configuración de la categoría

def update_category_settings(category_id):
time.sleep(5) # Agregar un retraso para asegurar que la categoría se cree completamente antes de aplicar la configuración

url = f"{DISCOURSE_URL}/categories/{category_id}"
data = {
    "subcategory_list_style": "boxes", # Establecer el estilo de subcategoría en "Cajas"
    "show_subcategory_list": True, # Mostrar la lista de subcategorías encima de los temas
    "allow_solved_on_category": True # Habilitar la función de resuelto
}

response = requests.put(url, json={"category": data}, headers=headers)

if response.status_code == 200:
    print(f"Configuración de categoría actualizada para la categoría ID {category_id}")
else:
    print(f"Error al actualizar la configuración para la categoría ID {category_id}: {response.status_code}, {response.text}")

Se agradecería cualquier aporte, ya que estoy atascado en este punto…

No lo he probado con Python, pero valdría la pena intentar usar la cadena "true" en lugar del booleano True para los parámetros booleanos. Discourse interpretará las cadenas "true" y "false" como booleanos.

Supongo que puedes hacer que funcionen algunas llamadas a la API y solo tienes problemas con esta en particular. Avísanos si no es el caso.

Gracias Simon… tienes toda la razón, puedo hacer que algunas llamadas a la API funcionen… puedo crear categorías con relaciones padre-hijo… simplemente no puedo agregar detalles de descripción, y otras configuraciones relacionadas con la categoría no puedo hacer que funcionen.

Intenté actualizar algunas configuraciones de categoría en mi foro local desde la línea de comandos. Esto funciona:

❯ curl -X PUT "http://localhost:4200/categories/10.json" \
      -H "Api-Key: $api_key" \
      -H "Api-Username: system" \
      -H "Content-Type: multipart/form-data;" \
      -F "show_subcategory_list=true" \
      -F "subcategory_list_style='boxes'" \
      -F "allow_badges=false"

Intentaría usar "true" en lugar de True si no puedes hacerlo funcionar.

Creo que eso es esperado. Para agregar la descripción, necesitas editar el tema “acerca de” de la categoría. Desafortunadamente, no creo que la URL del tema “acerca de” se devuelva de una solicitud a la URL de la categoría (por ejemplo, http://localhost:4200/categories/10.json). Puedes obtenerla de la URL categories/json de tu sitio. El campo que contiene la URL del tema “acerca de” se llama topic_url. Por ejemplo: "topic_url":"/t/about-the-general-category/3".

Así que, a menos que haya una forma más fácil que no esté viendo, necesitarás hacer una solicitud a /categories.json, obtener el topic_url para la categoría que te interesa, y luego hacer una solicitud a la API para editar la primera publicación de ese tema.