> ## 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.

# وجهة webhook: واجهة API لسجل تنبيهات الفشل

> اعرض تنبيهات فشل وجهات webhook في Didit مع الطوابع الزمنية وعدد مرات الفشل، باستخدام صلاحية القراءة والترقيم بالحد والإزاحة.

تُعيد واجهة API الخاصة بنشاط وجهة webhook في Didit تنبيهات الفشل المسجَّلة، من الأحدث إلى الأقدم. يحتوي كل عنصر على `id` و`type` (`failure_alert`) و`occurred_at` و`failure_count`.

استخدم `limit` و`offset` للتنقل بين الصفحات، وتابع `next` حتى تصبح قيمته null. يمكن أن يكون `count` محدودًا بحد أقصى أو مُقدَّرًا. يُرجع طلب وجهة غير موجودة الرمز `404`.

تختلف هذه التنبيهات عن [محاولات التسليم](https://docs.didit.me/ar/management-api/webhook/list-deliveries.md). راجع [نشاط فشل webhook](https://docs.didit.me/ar/integration/webhooks.md#سياسة-إعادة-المحاولة) و[تحليلات الوجهة](https://docs.didit.me/ar/management-api/webhook/destination-analytics.md).


## OpenAPI

````yaml ar/openapi-25.json GET /v3/organization/{organization_id}/application/{application_id}/webhook/destinations/{destination_uuid}/activity/
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/organization/{organization_id}/application/{application_id}/webhook/destinations/{destination_uuid}/activity/:
    get:
      tags:
        - Webhook
      summary: سرد نشاط وجهة webhook
      description: >-
        يسرد تنبيهات الفشل المسجلة لوجهة واحدة، من الأحدث إلى الأقدم. يتطلب
        read:webhooks. يجب أن تنتمي بيانات اعتماد التطبيق أو مفتاح API إلى
        التطبيق الوارد في المسار، ويجب أن تملك token من نوع Bearer الخاص بالعضو
        صلاحية الوصول إلى ذلك التطبيق. هذه أحداث تنبيه فشل، وليست محاولات تسليم
        فردية ولا أنواع أحداث webhook الصادرة. راجع
        [Webhooks](https://docs.didit.me/ar/integration/webhooks#سياسة-إعادة-المحاولة).
      operationId: list_activity_webhooks_destinations
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: معرّف المؤسسة.
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: معرّف التطبيق.
        - name: destination_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: معرّف uuid للوجهة.
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
            minimum: 1
          description: الحد الأقصى لعدد النتائج في كل صفحة.
        - name: offset
          in: query
          schema:
            type: integer
            default: 0
            minimum: 0
          description: عدد النتائج التي يجب تخطيها.
      responses:
        '200':
          description: سرد نشاط وجهة webhook.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookDestinationActivityList'
        '401':
          description: بيانات الاعتماد مفقودة أو غير صالحة أو منتهية الصلاحية.
        '403':
          description: ليس لدى المستدعي صلاحية الوصول إلى هذا التطبيق أو الأذونات المطلوبة.
        '404':
          description: وجهة webhook غير موجودة.
        '429':
          $ref: '#/components/responses/RateLimitedRead'
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            client = Didit()

            for item in client.webhooks.destinations.list_activity(
                "11111111-2222-3333-4444-555555555555",
            ):
                print(item)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            const didit = new Didit();


            for await (const item of
            didit.webhooks.destinations.listActivity("11111111-2222-3333-4444-555555555555"))
            {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.Webhooks.Destinations.ListActivityAutoPaging(ctx, \"11111111-2222-3333-4444-555555555555\", didit.WebhooksDestinationsListActivityParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            for (var item :
            client.webhooks().destinations().listActivity("11111111-2222-3333-4444-555555555555"))
            {
                System.out.println(item);
            }
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            $didit = new DiditClient();


            foreach
            ($didit->webhooks->destinations->listActivity('11111111-2222-3333-4444-555555555555')
            as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            # and DIDIT_APPLICATION_ID.

            didit = Didit::Client.new


            didit.webhooks.destinations.list_activity("11111111-2222-3333-4444-555555555555").auto_paging_each
            do |item|
              puts item.to_h
            end
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            using var client = new DiditClient();


            await foreach (var item in await
            client.Webhooks.Destinations.ListActivityAsync("11111111-2222-3333-4444-555555555555"))

            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    WebhookDestinationActivityList:
      type: object
      required:
        - count
        - next
        - previous
        - results
      properties:
        count:
          type: integer
          description: >-
            عدد النتائج، ويُقتصر عادةً على 100، وقد يكون تقديرياً. اتبع next
            بدلاً من استخدام count لإيقاف الترقيم.
        next:
          type: string
          description: عنوان URL للصفحة التالية، أو null.
          nullable: true
        previous:
          type: string
          description: عنوان URL للصفحة السابقة، أو null.
          nullable: true
        results:
          type: array
          items:
            $ref: '#/components/schemas/WebhookDestinationActivity'
      example:
        count: 1
        next: null
        previous: null
        results:
          - id: 00000000-0000-4000-8000-000000000003
            type: failure_alert
            occurred_at: '2026-11-11T01:00:00Z'
            failure_count: 3
    WebhookDestinationActivity:
      type: object
      required:
        - id
        - type
        - occurred_at
        - failure_count
      properties:
        id:
          type: string
          description: معرّف تنبيه الفشل.
          format: uuid
        type:
          type: string
          description: نوع النشاط.
          enum:
            - failure_alert
        occurred_at:
          type: string
          description: وقت تنبيه الفشل.
          format: date-time
        failure_count:
          type: integer
          description: عدد حالات الفشل المسجلة مع هذا التنبيه.
          minimum: 0
    RateLimitBudgetError:
      type: object
      description: >-
        تُرجع فقط عند رفض ميزانية وسيط تحديد المعدل. أخطاء 429 الأخرى، بما في
        ذلك تعارضات idempotency والحدود الخاصة بنقطة النهاية، لا تضمن هذه الحقول
        الوصفية.
      required:
        - detail
        - reference
        - limit
        - remaining
        - reset
        - window_seconds
      properties:
        detail:
          type: string
          description: رسالة رفض الميزانية الحالية المقروءة للإنسان.
        reference:
          type: string
          pattern: ^RL-[0-9a-f]{32}$
          description: >-
            مرجع الدعم المعتم: RL- متبوعة بـ 32 حرفًا سداسيًا عشريًا صغيرًا من
            UUID.
        limit:
          type: integer
          description: الميزانية للنطاق الذي تجاوز الحد؛ تساوي X-RateLimit-Limit.
        remaining:
          type: integer
          minimum: 0
          description: >-
            الميزانية المتبقية، محدودة بحيث لا تقل عن الصفر؛ تساوي
            X-RateLimit-Remaining.
        reset:
          type: integer
          format: int64
          description: >-
            وقت إعادة تعيين النافذة بالثواني منذ حقبة Unix، ويساوي
            X-RateLimit-Reset.
        window_seconds:
          type: integer
          description: >-
            مدة النافذة الثابتة بالثواني، وليست الفترة المتبقية للانتظار. يجب
            احترام Retry-After قبل إعادة المحاولة.
      example:
        detail: >-
          Write request rate limit exceeded. You can make up to 300 requests per
          minute.
        reference: RL-00000000000040008000000000000001
        limit: 300
        remaining: 0
        reset: 1794358860
        window_seconds: 60
  responses:
    RateLimitedRead:
      description: >-
        تجاوزت ميزانية القراءة الخاصة بالوسيط. التزم بالرأس Retry-After قبل
        إعادة المحاولة.
      headers:
        Retry-After:
          $ref: '#/components/headers/BudgetRetryAfter'
        X-RateLimit-Scope:
          $ref: '#/components/headers/BudgetXRateLimitScope'
        X-RateLimit-Limit:
          $ref: '#/components/headers/BudgetXRateLimitLimit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/BudgetXRateLimitRemaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/BudgetXRateLimitReset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitBudgetError'
          example:
            detail: >-
              GET request rate limit exceeded. You can make up to 600 requests
              per minute.
            reference: RL-00000000000040008000000000000001
            limit: 600
            remaining: 0
            reset: 1794358860
            window_seconds: 60
  headers:
    BudgetRetryAfter:
      description: >-
        عدد الثواني للانتظار، مقرّباً إلى أعلى حتى بداية النافذة التالية. يظهر
        في حالات رفض ميزانية الوسيط.
      schema:
        type: integer
    BudgetXRateLimitScope:
      description: النطاق الذي تجاوز ميزانيته. يظهر في حالات رفض ميزانية الوسيط.
      schema:
        type: string
    BudgetXRateLimitLimit:
      description: >-
        الميزانية المخصصة للنطاق الذي تم تجاوزه؛ وتساوي حد جسم الطلب. تظهر في
        حالات الرفض الصادرة عن ميزانية البرمجية الوسيطة.
      schema:
        type: integer
    BudgetXRateLimitRemaining:
      description: >-
        الميزانية المتبقية، محدودة بحيث لا تقل عن الصفر؛ تساوي remaining في
        الجسم. تظهر في حالات رفض الميزانية من الوسيط.
      schema:
        type: integer
    BudgetXRateLimitReset:
      description: >-
        وقت إعادة التعيين بالثواني منذ حقبة Unix؛ يساوي قيمة reset في جسم
        الاستجابة. يظهر في حالات رفض ميزانية الوسيط.
      schema:
        type: integer
  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.
    BearerAuth:
      type: http
      scheme: bearer
      description: token الوصول الخاص باعتماد العميل للتطبيق.

````

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