مرجع API · تسجيل المفتاح

إثبات حيازة المفتاح

POST/v1/enrollments/{invitationId}/proof

يرسل إثبات الحيازة. بعد قبوله ينتظر المفتاح أن يتصل بك موظفو أنيس ويتحققوا من رمز الأمان الخاص به ويؤكّدوه.

الصلاحيةلا شيء
المصادقةرمز التسجيل
ردّ أنيسموقَّع
حدود الموظفين التي يُحتسب ضمنهالا شيء
حزمة SDK لـ ‎.NETenrollment.ProveAsync(submitted, key)
  • الإثبات الذي لا يُتحقق منه، أو الذي يأتي بعد نحو 30 دقيقة من إرسال المفتاح، لا يُرفض: الرد يقول proofState: "failed". تحقّق من "accepted".
  • بعد مرور نحو 30 دقيقة على إرسال المفتاح لا يمكن أن ينجح إثبات الحيازة: لا تُعِد الإثبات — اطلب من موظفي أنيس إعادة بدء تسجيل المفتاح. وبعد خمس محاولات إثبات فاشلة تُرفض المحاولة التالية بالرمز invitation_invalid.
  • الرمز key_duplicate عند إرسال الإثبات يعني أن الإثبات قُبل من قبل (ضاع ردّه فأُرسل الإثبات نفسه مرة أخرى). اقرأ الحالة قبل أي شيء آخر.

المعاملات

الاسمالموضعالنوعملاحظات
invitationIdإلزاميpathUUIDمعرّف UUID بأحرف صغيرة مع الشرطات.

الاستدعاء

مُصرَّح به عبر Authorization: Enrollment <token>؛ غير موقَّع.

الترويسات: Accept-Language (اختياري). تضبطها حزم SDK كلها نيابةً عنك.

المحتوى: EnrollmentProofRequest، بصيغة JSON.

الحقلالنوعملاحظات
keyIdإلزاميUUIDمعرّف المفتاح من خطوة إرسال المفتاح.
challengeGenerationإلزاميintegerرقم التحدّي الذي تجيب عنه.
signatureإلزاميstringتوقيع ECDSA P-256/SHA-256 على رسالة الإثبات، 64 بايت (ليس DER)، بترميز base64url دون حشو.

الردود

الحالةالمعنىالمحتوى
200نجاح.EnrollmentStatus
401مرفوض: لم تتم المصادقة.مشكلة
404مرفوض: غير موجود، أو ليس لك.مشكلة
409مرفوض: يتعارض مع الحالة الحالية.مشكلة
422مرفوض: الاستدعاء يخالف قاعدة.مشكلة
429مرفوض: بلغتَ حدًا.مشكلة
503لا قرار: خدمة مطلوبة غير متاحة.مشكلة

كل ردّ على هذا الاستدعاء موقَّع من أنيس — النجاح وكل رفض. اشترط وجود التوقيع وتحقّق منه قبل أن تتصرف بناءً على الردّ؛ والردّ بلا توقيع فشل، لا يُعدّ ردًّا (كيف).

حالات الرفض

كل رفض لهذا الاستدعاء مشكلةٌ موقَّعة. ابنِ منطقك على رمزها code؛ وكلٌّ منها يرتبط بصفحة تشرح معناه وما عليك فعله.

الخطأالرمزالحالة
الدعوة غير صالحةinvitation_invalid401
غير موجودresource_not_found404
فشل التحققvalidation_failed422
استُبدل التحدّيchallenge_expired409
الدعوة مستخدمة من قبلkey_duplicate409
تجاوزت حدّ الاستدعاءاتrate_limited429
الخدمة غير متاحةdependency_unavailable503
انتهت مهلة الاستدعاءrequest_timeout504
خطأ داخليinternal_error500

الأنواع

EnrollmentProofRequest

الحقلالنوعملاحظات
keyIdإلزاميUUIDمعرّف المفتاح من خطوة إرسال المفتاح.
challengeGenerationإلزاميintegerرقم التحدّي الذي تجيب عنه.
signatureإلزاميstringتوقيع ECDSA P-256/SHA-256 على رسالة الإثبات، 64 بايت (ليس DER)، بترميز base64url دون حشو.

EnrollmentStatus

الحقلالنوعملاحظات
keyIdUUIDمعرّف مفتاحك.
challengeGenerationintegerرقم التحدّي الحالي.
proofStatestringpending أو accepted أو failed — إثبات لم يُتحقق منه أو جاء متأخرًا. وبعد خمس محاولات إثبات فاشلة تُرفض المحاولة التالية بالرمز invitation_invalid: اطلب من موظفي أنيس إعادة بدء تسجيل المفتاح.
approvalStatestringpending ما دام موظفو أنيس لم يؤكّدوا المفتاح، و approved بعد أن يصبح فعّالًا، و notApplicable في غير ذلك.
statestringpendingInvitation أو pendingProof أو pendingApproval أو active — المفتاح يوقّع الاستدعاءات — أو unavailable (المفتاح قيد الاستبدال بمفتاح أحدث). أما المفتاح الملغى أو المُنهى أو المنتهي الصلاحية فلا يُعرض: تُجيب قراءة الحالة بالرمز resource_not_found.
expiresAtstring (date-time)وقت انتهاء خطوة التسجيل الحالية: الدعوة، ما دامت مفتوحة. لا يظهر بعد أن يصبح المفتاح فعّالًا أو حين لا يعود متاحًا — أما تاريخ انتهاء المفتاح نفسه فهو keyExpiresAt.
keyExpiresAtstring (date-time)تاريخ توقف مفتاحك النشط عن العمل (لا يظهر قبل أن يصبح المفتاح نشطًا). اطلب من موظفي أنيس مفتاحًا بديلًا قبله بأسابيع: فالمفتاح الذي تجاوز تاريخ انتهائه يُرفض بالرمز invalid_credentials في كل استدعاء، بما في ذلك كشف بطاقات اشتريتها من قبل.