تغيير حالة الموضوع عبر API إلى pinned-global لا يعمل

أعمل على سكريبت بلغة بايثون يستخدم واجهة برمجة تطبيقات Discourse لتعيين حالة المنشور إلى ‘pinned-globally’، تماشياً مع توثيق الواجهة.

يفشل الطلب الخاص بـ ‘pinned-globally’ مع رمز استجابة 400، بينما يعمل الطلب الذي يحتوي على معلمة الحالة المحددة إلى ‘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)

هل أغفلت شيئاً واضحاً أم أن الأمر يتعلق بخلل حقيقي؟

ملاحظة: المستخدم يتمتع بصلاحيات كافية.

إعجابَين (2)

لا يمكنك تثبيت نفس الموضوع عالميًا ومحليًا في الوقت نفسه. يمكنك اختيار أحدهما فقط.

إعجاب واحد (1)

مرحبًا ديفيد،
بالطبع، لقد وضعت الكود بهذه الطريقة فقط لإظهار كيف يختلف الطلبان.
سأقوم بتعديل المنشور الأول ليكون أكثر وضوحًا.

إعجاب واحد (1)

أهلاً، جيد :ok_hand:. بعد النظر في الكود، أرى هذا السبب الذي سيؤدي إلى خطأ 400

أعتقد أنك تحتاج إلى pinned_globally بدلاً من pinned-globally. هل يمكنك تجربتها ورؤية ما إذا كانت تعمل؟ يبدو أن هناك خطأ مطبعي في وثائق واجهة برمجة التطبيقات الخاصة بنا - سأقوم بإصلاحه.

تعديل: تم الإصلاح في Correct pinned_globally in topic status documentation · discourse/discourse_api_docs@fcf0d5f · GitHub

5 إعجابات

تم التأكيد! :slight_smile:
شكرًا جزيلاً! :clap:

3 إعجابات