> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# حذف الشركات دفعةً واحدة: واجهة API لمحو بيانات KYB

> احذف كيانات الشركات (KYB) في Didit دفعةً واحدة حسب vendor_data أو didit_internal_id، وذلك بما يتوافق مع متطلبات GDPR وCCPA.



مطالبة حذف الشركات دفعةً واحدة
        نسخ الموجّه إلى الحافظة



      
      

\<pre>

\`Goal: Permanently delete one or many Didit Business (KYB) entities. The matching business records, their tag links, and their comment history are removed permanently. Verification sessions and their records (KYB session data, document submissions, AML hits, beneficial-owner verifications) are NOT removed by this endpoint; delete those separately with DELETE /v3/session/{sessionId}/delete/.

Endpoint: POST https://verification.didit.me/v3/businesses/delete/
Auth header: x-api-key: <DIDIT_API_KEY>
Content-Type: application/json

Request body — provide EXACTLY ONE selector (mutually exclusive):
\- vendor_data_list: string[] — your own identifiers (case-insensitive after normalisation).
\- didit_internal_id_list: string[] (UUIDs) — Didit's internal IDs.
\- delete_all: true — wipe every business in this application. No confirmation, no undo.

curl:
curl -X POST 'https://verification.didit.me/v3/businesses/delete/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"vendor_data_list": ["company-123", "company-456"]}'

Response 200:
\{
"deleted": <int — number of businesses actually deleted; excludes vendor_data values that didn't match>
}

Idempotency: re-sending the same list returns deleted: 0 after the first run (unmatched IDs are silently skipped). There is no undo.

Failure modes:
\- 400 — no selector supplied. { "detail": "Provide vendor_data_list, didit_internal_id_list, or set delete_all=true." }
\- 401 — missing/invalid x-api-key.
\- 403 — lacks delete:businesses. { "detail": "You do not have permission to perform this action." }
\- 409 — the selection includes a company in a finalized regulatory report. Nothing is deleted. The body has code: in_filed_report and reports[] with uuid, report_number, report_type and case_uuid. Delete the reports, then repeat the request.
\- 409 — code: subject_deletion_in_progress: another request is still deleting one of the selected companies. This request deleted nothing; repeat it once that deletion has finished.
\- 429 — rate-limited.

WARNING — delete_all: true: there is no confirmation step and no undo. Restrict to API keys you intentionally provision for batch maintenance.

When to prefer status change instead:
\- For day-to-day blocking, use PATCH /v3/businesses/{vendor_data}/update-status/ with {"status": "BLOCKED"} — it keeps the audit trail intact while rejecting future sessions for the same identifier.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

الصق في

## نظرة عامةيحذف هذا الـ endpoint كيانًا واحدًا أو أكثر من [كيانات الشركات](https://docs.didit.me/ar/entities/businesses/overview.md). تُحذف سجلات الشركات نهائيًا. أما جلسات التحقق من الشركات (KYB) فلا يشملها هذا الـ endpoint، وتبقى مع إزالة ارتباطها بالشركة. احذفها باستخدام [حذف الجلسة](https://docs.didit.me/ar/sessions-api/delete-session.md). والمعاملات غير مشمولة أيضًا، ويمكنك حذفها باستخدام [الحذف الدفعي للمعاملات](https://docs.didit.me/ar/management-api/transactions/delete.md).## متى تستخدمه- **طلبات الحق في النسيان.**
- **تنظيف** الشركات التجريبية أثناء ضمان الجودة.
- **إلغاء توفير** الشركات التي أُزيلت من منصتك.## ملاحظات- تقبل قائمة من قيم `vendor_data` أو قيم `didit_internal_id`.
- تتسم العملية بـ idempotency: حذف شركة محذوفة بالفعل لا يُحدث أي تغيير.
- تعيد الاستجابة عدد العناصر المحذوفة فقط، ولا تعيد تقريرًا لكل عنصر. القيم التي لم تطابق أي سجل تُتخطى دون إشعار.
- يُصدر الحدث `business.data.updated` مع تعيين `deleted_at`.
- تُحذف السجلات التي تملكها الشركة نفسها معها، وهي روابط الوسوم وسجل التعليقات وسجلات الجهاز والشبكة الخاصة بها.
- أما السجلات التي تنتجها جلسة التحقق من الشركات (KYB) فلا تُحذف مع الشركة: بيانات سجل الشركات، والمستندات المرفوعة، ونتائج AML، وفحوص المستفيدين الحقيقيين والأشخاص الرئيسيين تتبع الجلسة، وتبقى حتى تحذف الجلسة نفسها.## البيانات في تقرير تنظيمي نهائيإذا كانت أي شركة محددة جزءًا من حالة لها تقرير تنظيمي نهائي، فإن الطلب كله يعيد `409` ولا يُحذف أي شيء. تتضمن الاستجابة `code: in_filed_report` وتذكر كل تقرير:```json theme={null}
{
  "detail": "A case about this person or company has a filed regulatory report, so it cannot be deleted.",
  "code": "in_filed_report",
  "reports": [
    {
      "uuid": "5ec00000-0000-4000-8000-000000000007",
      "report_number": "SAR-0001",
      "report_type": "SAR",
      "case_uuid": "c1a5e000-0000-4000-8000-000000000001"
    }
  ]
}
```احذف كل تقرير باستخدام [حذف التقرير](https://docs.didit.me/ar/management-api/regulatory-reports/delete.md)، ثم أعد الطلب نفسه.## عملية حذف قيد التنفيذ بالفعلتُحذف الشركة بطلب واحد في كل مرة. إذا كان طلب آخر ما زال يحذف إحدى الشركات المحددة، ينتظر هذا الطلب بضع ثوانٍ كحد أقصى، ثم يعيد `409` مع `code: subject_deletion_in_progress` دون حذف أي شيء:```json theme={null}
{
  "detail": "This person or company is being deleted. Retry after deletion completes.",
  "code": "subject_deletion_in_progress"
}
```أعد الطلب نفسه بعد اكتمال الحذف الآخر. الشركة التي حذفها الطلب الآخر لن تطابق الطلب بعد ذلك، لذا لن يحذف الطلب المكرر إلا ما تبقى.## الأذوناتيجب أن يمنح الدور الإذن `delete:businesses`. ويُخصَّص هذا الإذن عادةً للدورين `OWNER` و`ADMIN`.## ذات صلة- [الاحتفاظ بالبيانات](https://docs.didit.me/ar/console/data-retention.md)
- [سجلات التدقيق](https://docs.didit.me/ar/console/audit-logs.md)
- [عمليات الشركات](https://docs.didit.me/ar/entities/businesses/operations.md)


## OpenAPI

````yaml ar/openapi-25.json POST /v3/businesses/delete/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API التحقق من الهوية. قم بالمصادقة باستخدام الرأس x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/businesses/delete/:
    post:
      tags:
        - Businesses
      summary: حذف الشركات دفعة واحدة
      description: >-
        **حذف الشركات نهائياً** — لا يمكن التراجع عن هذا الإجراء. للحظر، يُفضّل
        استخدام [تحديث حالة
        الشركة](#patch-/v3/businesses/-vendor_data-/update-status/) مع
        `BLOCKED`.


        **التقارير التنظيمية المُقدَّمة:** إذا كانت البيانات المحددة واردة في
        تقرير تنظيمي نهائي، فسيتم رفض الطلب بأكمله مع رمز الحالة `409` ولن يُحذف
        أي شيء. يستخدم نص الاستجابة `code: in_filed_report` ويحدد كل تقرير
        باستخدام `uuid` و`report_number` و`report_type` و`case_uuid`. احذف
        التقارير، ثم أعد إرسال الطلب.
      operationId: batch_delete_businesses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                قدّم `vendor_data_list`، أو `didit_internal_id_list`، أو
                `delete_all: true`. الأسبقية عند إرسال عدة عناصر: `delete_all` >
                `vendor_data_list` > `didit_internal_id_list` (يُستخدم المحدد ذو
                الأسبقية الأعلى فقط).
              properties:
                vendor_data_list:
                  type: array
                  items:
                    type: string
                  description: >-
                    المعرّفات الخاصة بك المراد حذفها، وتتم مطابقتها تماماً كما
                    أُرسلت.
                didit_internal_id_list:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: >-
                    معرّفات UUID الداخلية لـ Didit (`didit_internal_id`) المطلوب
                    حذفها.
                delete_all:
                  type: boolean
                  default: false
                  description: >-
                    إذا كانت القيمة `true`، فسيتم حذف كل شركة في التطبيق. لا
                    يمكن دمجها مع محددات القائمة.
            examples:
              Specific businesses:
                summary: الحذف بواسطة vendor_data
                value:
                  vendor_data_list:
                    - company-123
                    - company-456
              Specific internal IDs:
                summary: الحذف بواسطة didit_internal_id
                value:
                  didit_internal_id_list:
                    - a1b2c3d4-e5f6-7890-abcd-ef1234567890
                    - b2c3d4e5-f6a7-8901-bcde-f12345678901
              All businesses:
                summary: مسح كل الشركات في هذا التطبيق
                value:
                  delete_all: true
      responses:
        '200':
          description: تم حذف الشركات. يعيد عدد الصفوف التي تمت إزالتها فعلياً.
          content:
            application/json:
              schema:
                type: object
                properties:
                  deleted:
                    type: integer
                    description: >-
                      عدد الشركات المحذوفة (يستثني قيم vendor_data التي لم تطابق
                      أي شيء).
              examples:
                Deleted some:
                  value:
                    deleted: 2
                Nothing matched:
                  value:
                    deleted: 0
        '400':
          description: >-
            لم يتم تقديم أي محدد (جميع الحقول `vendor_data_list`
            و`didit_internal_id_list` و`delete_all` مفقودة أو فارغة). نص الخطأ
            عبارة عن مصفوفة JSON.
          content:
            application/json:
              examples:
                Missing selector:
                  value:
                    - >-
                      Provide vendor_data_list, didit_internal_id_list, or set
                      delete_all=true.
        '403':
          description: >-
            مفتاح API مفقود أو غير صالح أو ملغى، أو لا يمكن للمفتاح حذف الشركات
            لهذا التطبيق. يعيد المفتاح المفقود `403`؛ بينما يعيد المفتاح الخاطئ
            أو الملغى أو منتهي الصلاحية `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '409':
          description: >-
            لم يتم حذف أي شيء. يوضح `code` السبب: `in_filed_report` عندما يتضمن
            التحديد شركة في تقرير تنظيمي نهائي، و`subject_deletion_in_progress`
            عندما يكون هناك طلب آخر لا يزال يحذف إحدى الشركات المحددة. أعد
            المحاولة بعد انتهاء عملية الحذف تلك.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/InFiledReportError'
                  - $ref: '#/components/schemas/SubjectDeletionInProgressError'
        '429':
          description: >-
            تم تجاوز حد المعدل؛ تراجع مؤقتاً وأعد المحاولة بعد الفاصل الزمني
            الموضح في `Retry-After`.
          content:
            application/json:
              examples:
                Rate limited:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST 'https://verification.didit.me/v3/businesses/delete/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"vendor_data_list": ["company-123", "company-456"]}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.businesses.batch_delete(
                vendor_data_list=["company-123", "company-456"],
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.businesses.batchDelete({
              vendor_data_list: ["company-123", "company-456"],
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.BatchDelete(ctx, didit.BusinessesBatchDeleteParams{\n\tVendorDataList: didit.Some([]string{\"company-123\", \"company-456\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.BusinessesBatchDeleteParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.businesses().batchDelete(BusinessesBatchDeleteParams.builder()
                    .vendorDataList(List.of("company-123", "company-456"))
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->businesses->batchDelete([
                'vendor_data_list' => ['company-123', 'company-456'],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result = didit.businesses.batch_delete(vendor_data_list:
            ["company-123", "company-456"])

            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.Businesses.BatchDeleteAsync(new
            BusinessesBatchDeleteParams

            {
                VendorDataList = new string[] { "company-123", "company-456" },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    InFiledReportError:
      type: object
      description: >-
        رُفض الحذف لأن البيانات المحددة مدرجة في تقرير تنظيمي نهائي. لم يُحذف أي
        شيء. احذف التقرير، ثم كرر الطلب.
      required:
        - detail
        - code
      properties:
        detail:
          type: string
        code:
          type: string
          enum:
            - in_filed_report
          description: رمز خطأ ثابت لعملية حذف محظورة بسبب تقرير تنظيمي نهائي.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: التقارير التي تمنع حذف شخص أو شركة أو حالة أو جلسة.
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/FiledReportTransaction'
          description: المعاملات التي تمنع حذف المعاملة، مع التقارير التي تدرج كل منها.
    SubjectDeletionInProgressError:
      type: object
      description: >-
        لا يزال هناك طلب آخر يحذف هذا الشخص أو هذه الشركة. لم يحذف هذا الطلب أي
        شيء ويمكن إعادته بمجرد انتهاء ذلك الحذف؛ وعند تكراره يتم حذف كل ما لا
        يزال محدداً.
      required:
        - detail
        - code
      properties:
        detail:
          type: string
        code:
          type: string
          enum:
            - subject_deletion_in_progress
          description: رمز خطأ ثابت لشخص أو شركة لا يزال طلب آخر يحذفهما.
    FiledRegulatoryReport:
      type: object
      description: تقرير تنظيمي مكتمل يمنع الحذف المطلوب.
      required:
        - uuid
        - report_number
        - report_type
        - case_uuid
      properties:
        uuid:
          type: string
          format: uuid
          description: معرّف UUID للتقرير.
        report_number:
          type: string
          description: رقم التقرير المعروض في Console (على سبيل المثال، SAR-0001).
        report_type:
          type: string
          enum:
            - SAR
            - STR
            - CTR
            - TTR
            - UTR
            - IFT
            - CBR
            - TFR
          description: نوع التقرير التنظيمي.
        case_uuid:
          type: string
          format: uuid
          description: الحالة التي ينتمي إليها التقرير.
    FiledReportTransaction:
      type: object
      description: معاملة لا يمكن حذفها لأن تقريراً تنظيمياً نهائياً يدرجها.
      required:
        - uuid
        - transaction_id
        - reports
      properties:
        uuid:
          type: string
          format: uuid
          description: معرّف UUID لمعاملة Didit.
        transaction_id:
          type: string
          description: معرّف المعاملة المقدَّم عند إنشاء المعاملة.
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: التقارير المكتملة التي تتضمن هذه المعاملة.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console.
        يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا
        شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات
        المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن
        المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم
        إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو
        الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير
        404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة
        بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL
        للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك
        إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع
        https://docs.didit.me/console/api-keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.