POST/v1/cards/bulk
تنفيذ إجراء جماعي على البطاقات
bulk_cards
ينفّذ إجراءً جماعيًا على البطاقات المحددة. تُفحص الصلاحيات لكل بطاقة: الدور في المجموعة وملف تعريف البيانات (الإجراءات المدمِّرة تتطلب الوصول إلى كل جزء من المستند). البطاقات التي لا يمكنك تنفيذ الإجراء عليها تُتخطى مع ذكر السبب. يُسجَّل كل تغيير في سجل التدقيق للبطاقة، إضافة إلى سجل واحد cards.bulk بالنتيجة.
إجراءات المجلدات:
- الإجراء folder_move مع params.folder_id (مطلوب) يضع البطاقة في المجلد، وإذا مُرِّر params.from_folder_id، يزيلها من ذلك المجلد (نقل من المجلد المفتوح).
- الإجراء folder_remove مع params.folder_id يزيل البطاقة من المجلد؛ وتبقى البطاقة في المجموعة.
تُفحص المجلدات مرة واحدة لكل طلب: المجلد المفقود أو غير المرئي يعيد 404 folders.not_found، وغياب الصلاحية COLLECTION_EDIT_CARDS على المجلد يعيد 403 authz.forbidden، وغياب folder_id أو تمرير from_folder_id من مجموعة أخرى يعيد 400 cards.bulk_invalid. ولكل بطاقة: دون CARD_EDIT تُتخطى البطاقة بالسبب no_write؛ والبطاقة من مجموعة غير مجموعة المجلد تُتخطى بالسبب collection_mismatch؛ والبطاقة الموجودة في مكانها بالفعل يُبلَّغ عنها بالقيمة unchanged.
المصادقة
أرسل مفتاح API في الترويسة Authorization: Authorization: Bearer <key>.
معاملات الترويسة
Idempotency-Keystringمفتاح لإعادة محاولة عملية كتابة بأمان: من 1 إلى 255 حرفًا من أحرف ASCII القابلة للطباعة؛ يُنصح بقيمة UUID v4 لكل عملية منطقية. إعادة المحاولة بالمفتاح نفسه خلال 24 ساعة لا تنفّذ العملية مرة أخرى، بل تعيد الاستجابة المحفوظة (الحالة والترويسات والنص) مع الترويسة
Idempotency-Replayed: true. المفتاح نفسه مع أسلوب أو مسار أوContent-Typeأو نص مختلف يعيد409 api.idempotency_mismatch؛ وما دام الطلب الأول قيد التنفيذ، يعيد409 api.idempotency_in_progressمعRetry-After: 1. بعد استجابة 5xx أو 429 يُحرَّر المفتاح، وتنفّذ إعادة المحاولة العملية مرة أخرى. نطاق المفتاح هو المؤسسة والجهة المستدعية (مفتاح API أو مستخدم أو مفتاح مصدر مخصص).length ≥ 1, length ≤ 255
X-View-Asstringلمفاتيح API ذات الدور
adminفقط. ينفّذ الطلب بصفة ملف تعريف البيانات<profile>[:viewer|verifier|editor]، مثلemployee:viewer. لا يمكن لمفتاح التثبيت استخدام هذه الترويسة (403).
معاملات ملفات تعريف الارتباط
kb_view_asstringملف تعريف ارتباط وضع «View as» (عرض بصفة) للجلسة. تضبطه العملية
POST /auth/view-asوتمسحه العمليةDELETE /auth/view-as.
نص الطلب
application/json
idsarray of stringمطلوبitems ≥ 1, items ≤ 500
paramsobject
الاستجابات
200استجابة ناجحة
ترويسات الاستجابة
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
Idempotency-Replayedالقيمة
true: أُعيدت الاستجابة المحفوظة لهذا المفتاحIdempotency-Key، ولم تُنفَّذ العملية مرة أخرى.
application/json
countsobjectمطلوبالحقول
doneintegerمطلوبreasonsobjectمطلوبالحقول
admin_onlynumbercollection_mismatchintegerconnectornumberfailedintegerneeds_usernumberno_verifynumberno_writenumbernot_foundnumberpartial_accessnumberprocessingintegersame_collectionnumbersensitive_lowernumbertarget_needs_reindexnumberunchangedinteger
skippedintegerمطلوب
donearray of stringمطلوبfileAttachmentjobsarray of integer
400الطلب غير صالح: قيمة معامل أو حالة الكائن لا تسمح بالإجراء (الحقل `detail` رسالة نصية).
ترويسات الاستجابة
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
application/json
401لم تُرسَل بيانات اعتماد (لا ملف تعريف ارتباط للجلسة ولا مفتاح API)، أو لم يُعثر على المفتاح.
ترويسات الاستجابة
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
application/json
403الإجراء غير مسموح: الدور غير كافٍ، أو لا وصول إلى المجموعة أو البطاقة، أو يعمل الطلب في وضع «View as»، أو المؤسسة معلّقة أو محذوفة (الحقل `detail` كائن فيه `code: org_suspended | org_deleted`).
ترويسات الاستجابة
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
application/json
404الكائن غير موجود أو غير متاح لك. لا تؤكد واجهة API وجود كائن مقيّد الوصول.
ترويسات الاستجابة
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
application/json
422خطأ في صحة البيانات: نص الطلب أو المعاملات لا تطابق المخطط (الحقل `detail` قائمة بأخطاء صحة البيانات)، أو قيمة معامل خارج النطاق المسموح (الحقل `detail` رسالة نصية).
ترويسات الاستجابة
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
application/json
429طلبات كثيرة جدًا (`api.rate_limited`)، أو استُنفدت حصة المؤسسة للدقيقة أو اليوم أو الشهر (`api.quota_exceeded`؛ يحتوي الحقل `error.details` على `quota` و`limit` و`reset_at`)، أو بلغت المؤسسة حدها، أو خدمة الإجابات مشغولة (`answers.engine_busy`). انتظر المدة المذكورة في الترويسة `Retry-After`.
ترويسات الاستجابة
Retry-Afterعدد الثواني التي تنتظرها قبل إعادة محاولة الطلب.
RateLimit-Policyالحدود السارية، بصيغة مسودة IETF
draft-ietf-httpapi-ratelimit-headers: عناصر مفصولة بفواصل"<name>";q=<quota>;w=<window in seconds>. العنصرkeyهو معدل طلبات مفتاح API (الحصة هي هامش الذروة، والنافذة الزمنية هي مدة إعادة ملئه بالكامل؛ وللجلسة يكونuser، ودون بيانات اعتمادip)؛ وminuteوdayوmonthهي حصص المؤسسة للدقيقة واليوم والشهر التقويمية بتوقيت UTC.RateLimitالمتبقي من كل حد في الترويسة
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-Limitحد العنصر الأشد صرامة في الترويسة
RateLimit-Policy(العنصر الذي بقي فيه أقل عدد من الطلبات).X-RateLimit-Remainingعدد الطلبات المتبقية ضمن الحد الأشد صرامة.
X-RateLimit-Resetعدد الثواني حتى إعادة ضبط الحد الأشد صرامة.
application/json
رموز الأخطاء
الرموز التي قد تعيدها نقطة النهاية هذه في error.code، إضافةً إلى الرموز العامة لكل طلب.
- 409api.idempotency_in_progress
- 400api.idempotency_key_invalid
- 409api.idempotency_mismatch
- 401auth.not_authenticated
- 403auth.system_scope
- 403authz.forbidden
- 400cards.bulk_invalid
- 403cards.category_whole_access
- 403cards.delete_whole_access
- 400cards.invalid_kind_filter
- 400cards.invalid_order
- 400cards.invalid_owner_filter
- 400cards.invalid_sort
- 400cards.invalid_status_filter
- 400cards.invalid_type_filter
- 400cards.invalid_verification_filter
- 403cards.no_access
- 404cards.not_found
- 403cards.sensitivity_admin_only
- 400cards.unknown_table_part
- 403cards.verify_forbidden
- 400cards.verify_user_account_required
- 400categories.unknown
- 403collections.no_access
- 404collections.not_found
- 404folders.not_found
- 403org.deleted
- 403org.suspended
- 400users.inactive_assignment
- 400users.not_in_org
- 400users.unknown_or_inactive
- 403view_as.read_only
إعادة المحاولة بأمان
أرسل الترويسة Idempotency-Key (قيمة UUID مثلًا) مع كل طلب POST وPATCH. إعادة المحاولة بالمفتاح نفسه خلال 24 ساعة تعيد الاستجابة المحفوظة بدل تنفيذ الطلب مرة أخرى.
حدود المعدل
تحمل الاستجابات الترويستين RateLimit وRateLimit-Policy، والترويسات الأقدم X-RateLimit-Limit وX-RateLimit-Remaining وX-RateLimit-Reset. وفي الاستجابة 429 الترويسة Retry-After بالثواني: انتظر ثم أعد المحاولة.