Hola a todos, estoy teniendo problemas para actualizar un tema. Puedo obtener el id del primer mensaje como se muestra aquí. Esto se confirma ejecutando lo siguiente:
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)
Lo cual devuelve un código de estado 200 y la información que esperaba sobre el mensaje.
Pero cuando intento:
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": "Mensaje genial, pero aquí hay una actualización al cuerpo del mensaje",
"edit_reason": "Cambie esto porque puedo."
}
}
"""
resp = requests.put(url, headers=headers, data=data)
print(resp.status_code)
Obtengo [\"BAD CSRF\"].
Soy administrador y mi clave es global. Idealmente, me gustaría ejecutar esto con una clave menos permisiva.
Este mensaje es el primero y único en un tema que creé mediante la API.
¡Muchas gracias de antemano ![]()