Изменение статуса темы через API на pinned-global не работает

Я работаю над скриптом на Python, который использует API Discourse для установки статуса поста в ‘pinned-globally’, следуя документации API.

Запрос на установку статуса ‘pinned-globally’ завершается ошибкой с кодом возврата 400, тогда как запрос с параметром status, установленным в ‘pinned’, работает безупречно (то есть я вижу, что пост закреплен локально).
Вот фрагмент моего кода:

apiWebsite = '<my_website_URL>'
apiKey = '<secret>'
apiUsername = '<secret>'

headers = {
    'Api-Key': apiKey,
    'Api-Username': apiUsername
}


# Этот запрос работает корректно
# Закрепить тот же пост локально
payload = {
    'status': 'pinned',
    'enabled': 'true',
    'until': '2019-11-25T08:00:00'
}
u = requests.put(apiWebsite + '/t/29082/status', headers=headers, data=payload)
print(u.status_code)

После сброса статуса закрепления на false я пытаюсь закрепить пост глобально следующим образом.

# Этот запрос НЕ РАБОТАЕТ
# Закрепить ту же тему глобально
payload = {
    'status': 'pinned-globally',
    'enabled': 'true',
    'until': '2019-11-25T08:00:00'
}
u = requests.put(apiWebsite + '/t/29082/status', headers=headers, data=payload)
print(u.status_code)

Не упускаю ли я что-то очевидное, или это настоящая ошибка?

P.S. У пользователя достаточно привилегий.

2 лайка

Вы не можете закрепить одну и ту же тему одновременно в глобальном и локальном масштабе. Вы можете выбрать один из вариантов.

1 лайк

Привет, Дэвид, конечно, я написал код именно так, чтобы показать разницу между двумя запросами. Я изменю первый пост, чтобы сделать всё более понятным.

1 лайк

Ах, хорошо :ok_hand:. Просматривая код, я вижу это, что вызывает ошибку 400

Думаю, вам нужно использовать pinned_globally вместо pinned-globally. Можете попробовать это и посмотреть, сработает ли? Похоже, это опечатка в нашей документации по API — я исправлю её.

Редактирование: исправлено в Correct pinned_globally in topic status documentation · discourse/discourse_api_docs@fcf0d5f · GitHub

5 лайков

Подтверждено! :slight_smile:
Большое спасибо! :clap:

3 лайка