API
أنشئ رمزًا في صفحة الإعدادات. أرسله بالشكل Authorization: Bearer pf1_….
GET /api/v1/version
GET /api/v1/months/current
GET /api/v1/problems/<slug>/<YYYY-MM>
GET /api/v1/leaderboards?month=YYYY-MM
GET /api/v1/leaderboards/<YYYY-MM>/<slug|global>
GET /api/v1/leaderboards/alltime
GET /api/v1/leaderboards/firsts?month=
GET /api/v1/month
GET /api/v1/month/board?edition=<edition>
GET /api/v1/bounty
GET /api/v1/me
GET /api/v1/me/<YYYY-MM>
GET /api/v1/me/<YYYY-MM>/<slug>
GET /api/v1/me/<YYYY-MM>/<slug>/<NN>/instance (أول جلب، أو تنزيل من الموقع، يبدأ المؤقّت: والاثنان سواء)
POST /api/v1/me/<YYYY-MM>/<slug>/<NN>/answer Idempotency-Key: <uuid> {"answer": "123", "solver": "optional"}
GET /api/v1/me/<YYYY-MM>/<slug>/released
GET /api/v1/me/month/<YYYY-MM|edition>
GET /api/v1/me/month/<YYYY-MM>/<NN>/instance
POST /api/v1/me/month/<YYYY-MM>/<NN>/answer
GET /api/v1/me/answers?month=YYYY-MM
يمكنك إرسال إجابة واحدة في الدقيقة لكل درجة؛ وإن أرسلت أبكر، يكون الرد 429 مع الثواني المتبقية. يكون الرد accepted أو not_accepted أو malformed. الدرجة 00 للتمرين. لا تُحتسب في نتيجتك.
يعطي /api/v1/leaderboards/firsts?month=YYYY-MM، لكل مسألة من مسائل الشهر، صفًّا واحدًا لكل درجة من 01 إلى 12 فتحها أحد: first (أول إجابة مقبولة للدرجة: الاسم المستعار، والمعرّف العام، وreceived_at)، وquickest (أقصر وقت من أول تنزيل حتى الإجابة المقبولة: الاسم المستعار، والمعرّف العام، وsolve_seconds؛ وعند التعادل تُقدَّم الإجابة الأسبق)، وaverage_seconds، وmedian_seconds (عند عدد زوجي من الأوقات، متوسط الوقتين الأوسطين، بدقة الملّي ثانية)، وopened (المتسلّقون الذين ضغطوا «عرض هذه المسألة» أو نزّلوا الدرجة أو حلّوها في ذلك الشهر)، وsolved وpercent (النسبة المئوية الصحيحة لمن حلّها منهم). ابتداءً من شهر 2026-11 يُستبعد فريق الموقع من كل ذلك. وتعطي قائمته potm الشيء نفسه لمسألة الشهر، للدرجات من 01 إلى 12: إدخال واحد لكل إصدار يُحتسب لذلك الشهر.