تخطَّ إلى المستندات
API

تحديث دور

كل حقل اختياري، و`permissions` تستبدل القائمة كلها.

PATCHapi.openemail.uk/roles/{id}

ينفّذ الاستدعاء الحقيقي على مساحة عملك، بمفتاحك أنت.

PATCH /roles/{id}

كل حقل اختياري، وpermissions تستبدل القائمة كلها.

مثال

يتطلب roles:write. وإغفال حقل يتركه على حاله، وهو ما يعنيه PATCH.

curl
curl -X PATCH "$OE/roles/role_2b81de079c1f0a4b7e05d386" -H "$AUTH" \  -H "Content-Type: application/json" \  -d '{ "permissions": ["emails:read", "threads:read", "labels:read", "contacts:read"] }'
الاستجابة
{  "object": "role",  "id": "role_2b81de079c1f0a4b7e05d386",  "name": "Support",  "description": "Answers the shared inboxes and nothing else.",  "permissions": ["emails:read", "threads:read", "labels:read", "contacts:read"],  "builtin": null,  "editable": true,  "deletable": true,  "members": 3,  "apiKeys": 1,  "createdAt": "2026-08-30T10:41:02.000Z",  "updatedAt": "2026-08-30T13:02:19.000Z"}

permissions تستبدل القائمة كلها. لا يوجد نداء لمنح إذن واحد ولن يوجد: فالقائمة هي ما يُدقَّق، والتعديل المعنون بالفهرس هو تحديث ضائع لحظة فتح تبويبين. اقرأ الدور، وغيّر المدخل الذي تقصده، وأعد إرسالها كلها. إرسال إذن واحد لا يضيف إذنًا. بل يترك الدور حاملًا ذلك الإذن بالضبط، مع ما يستلزمه.

description قابلة للقيمة الفارغة إضافةً إلى كونها اختيارية، والفرق هو جوهر التعديل الجزئي: إغفالها يُبقي الجملة المخزَّنة، وإرسال null يمسحها. ولولا قابلية القيمة الفارغة لما كانت هناك طريقة لإزالة وصف إلا باستبداله بمسافة.

المالك هو الدور الوحيد الذي يرفضه الـ PATCH، ويرفض كل حقل فيه: role_immutable، وهو 409 مع param: "roleId". وكل ما عداه يقبل اسمًا جديدًا بسهولة قبوله قائمة أذونات جديدة، والأدوار المزروعة منها. وbuiltin يسجّل من أين جاء الدور، لا ما يُسمح بفعله به. أما الاسم الذي يحمله دور آخر أصلًا فهو role_name_taken بدل ذلك، وهو 409 مع param: "name".

يسري التعديل على الطلب التالي لأي شخص يحمل الدور، ومفاتيح API منهم، لأن السقف يُحسَم لكل طلب لا يُخزَّن مؤقتًا. ولذلك فإن تضييق دور هو سحب حيّ يسري دون تدوير المفاتيح تحته. وتوسيعه حيّ أيضًا، وهو النصف الجدير بالتذكّر.