API를 통해 카테고리 설정을 업데이트할 수 없음

안녕하세요, CSV 입력을 사용하여 카테고리를 생성하는 도구를 개발하고 있습니다. 카테고리 생성 시 부모-자식 관계를 성공적으로 설정할 수 있었습니다. 그러나 카테고리 설정을 적용할 때 문제가 발생하고 있으며, 일관되게 실패하고 있습니다. 새 카테고리를 생성한 후 카테고리 설정(아래에 나열된 것들)을 적용하는 방법에 대한 조언을 구합니다. 설정을 적용하기 전에 최대 40초까지 지연을 추가하는 것도 시도해 보았지만, 여전히 작동하지 않습니다.

또한 카테고리 설명을 업데이트하는 방법도 알고 싶습니다: update_about_post(category_id, description) # 설명만 업데이트.

그리고 카테고리에 두 개의 추가 사용자 정의 필드를 추가하고 싶은데, 어떻게 추가해야 하는지 궁금합니다.

카테고리 설정을 업데이트하는 함수

def update_category_settings(category_id):
time.sleep(5) # 설정을 적용하기 전에 카테고리가 완전히 생성되었는지 확인하기 위해 지연 추가

url = f"{DISCOURSE_URL}/categories/{category_id}"
data = {
    "subcategory_list_style": "boxes",  # 하위 카테고리 스타일을 "Boxes"로 설정
    "show_subcategory_list": True,  # 주제 위에 하위 카테고리 목록 표시
    "allow_solved_on_category": True  # 해결됨 기능 활성화
}

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

if response.status_code == 200:
    print(f"카테고리 ID {category_id}에 대한 카테고리 설정이 업데이트되었습니다")
else:
    print(f"카테고리 ID {category_id}의 설정 업데이트 실패: {response.status_code}, {response.text}")

현재 이 지점에서 막혀 있으니, 어떤 조언이라도 감사하겠습니다…

Python에서는 테스트해 보지 않았지만, 부울 파라미터의 경우 True 대신 문자열 "true"를 사용해 보는 것이 좋습니다. Discourse는 문자열 "true"와 "false"를 부울 값으로 해석합니다.

다른 API 호출은 정상적으로 작동하고, 이 특정 호출에서만 문제가 발생하고 있다고 가정합니다. 만약 상황이 다르다면 알려 주세요.

Simon님, 말씀이 완전히 맞습니다. 몇 가지 API 호출은 정상적으로 작동합니다… 부모-자식 관계를 가진 카테고리를 생성하는 것도 가능합니다… 다만 설명 세부 정보와 기타 카테고리 관련 설정을 추가하는 부분만 작동하지 않고 있습니다.

로컬 포럼에서 커맨드 라인을 통해 일부 카테고리 설정을 업데이트하려고 시도했습니다. 아래 명령은 정상적으로 작동합니다:

❯ 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"

작동이 안 될 경우 True 대신 "true"를 사용해 보시기 바랍니다.

이는 예상되는 동작입니다. 설명을 추가하려면 해당 카테고리의 “about”(소개) 주제를 편집해야 합니다. 안타깝게도 카테고리 URL(예: http://localhost:4200/categories/10.json)에 대한 요청에서는 “about” 주제 URL이 반환되지 않는 것으로 보입니다. 하지만 사이트의 categories/json URL을 통해 이를 가져올 수는 있습니다. “about” 주제 URL을 포함하는 필드는 topic_url이라고 합니다. 예를 들어: "topic_url":"/t/about-the-general-category/3".

따라서 제가 놓친 더 쉬운 방법이 없는 한, /categories.json에 요청을 보내 관심 있는 카테고리의 topic_url을 가져온 후, 해당 주제의 첫 번째 게시물을 편집하기 위해 API 요청을 보내야 합니다.