Получаю ["BAD CSRF"] при обновлении темы через API [python]

Привет, друзья! У меня возникли проблемы с обновлением темы. Я могу получить id первого поста, как показано здесь. Это подтверждается выполнением следующего кода:

import requests
from requests.structures import CaseInsensitiveDict

url = "https://my/discourse/instance/posts/{post_id}.json"

headers = CaseInsensitiveDict()
headers["Authorization"] = "{"api-key": "{le_api_key}", "api-username": "{le_username}"}"

resp = requests.get(url, headers=headers)

print(resp.status_code)

Код возвращает статус 200 и ожидаемую информацию о посте.

Однако при попытке выполнить следующее:

import requests
from requests.structures import CaseInsensitiveDict

url = "https://my/discourse/instance/posts/{post_id}.json"

headers = CaseInsensitiveDict()
headers["Authorization"] = "{"api-key": "le_api_key", "api-username": "le_username"}"
headers["Content-Type"] = "application/json"

data = """
{
  "post": {
      "raw": "Крутой пост, но вот обновлённое тело поста",
      "edit_reason": "Я изменил это, потому что могу."
   }
}
"""

resp = requests.put(url, headers=headers, data=data)

print(resp.status_code)

Получаю ошибку ["BAD CSRF"].

Я являюсь администратором, и мой ключ имеет тип global. В идеале я хотел бы запускать это с менее привилегированным ключом.
Этот пост является первым и единственным в теме, которую я создал через API.

Заранее большое спасибо :slight_smile:

Почему вы вложенно используете заголовки под этим ключом словаря Authorization? Это не задокументировано на Discourse REST API Documentation :thinking:

Вы правы, это то, что делает инструмент, который я использую для тестирования API. Он работает, и это, похоже, проблема само по себе:

header1 = CaseInsensitiveDict()
header1["Authorization"] = '{"api-key": "longapikey", "api-username": "myusername"}'

header2 = {"api-key": "longapikey", "api-username": "myusername"}

r = requests.get(url, headers= HEADER)

Когда HEADER == header1, всё работает. Когда == header2, я получаю:

{"errors":["У вас нет прав для просмотра запрошенного ресурса. Имя пользователя или ключ API недействительны."],"error_type":"invalid_access"}

Кстати, спасибо за ваш ответ!