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

# واجهة مكتب الائتمان الكندي 2 (غير FINTRAC): مطابقة الهوية

> التحقق من قواعد البيانات الموثوقة في كندا عبر مكتب الائتمان 2 (غير FINTRAC) من Didit. بدءاً من $1.75 لكل استدعاء، دون عقود ولا حد أدنى.

تتحقق هذه الخدمة من بيانات الإدخال مقارنةً ببيانات «رأس الملف الائتماني» المستمدة من مكتب ائتمان في كندا. لا توفّر هذه الخدمة البيانات التي يتطلبها FINTRAC، لكنها قادرة على توفير مؤشرات إضافية لكشف الاحتيال. يلزم تقديم طلب إلى الوكالة. يتيح Didit هذه الخدمة عبر `POST /v3/database-validation/` لتتمكن من التحقق من البيانات المُرسلة مقابل المصدر الموثوق، والحصول على نتائج مطابقة موحّدة.

## التغطية

* **التغطية:** \~ 85%
* **الدولة:** كندا
* **معرّف الخدمة:** `can_credit_bureau_2_non_fintrac`
* **نطاق البيانات:** المالية
* **الفئة:** CreditBureau

## المدخلات

| الحقل | مطلوب | مثال |
| - | -: | - |
| `first_name` | نعم | `John` |
| `last_name` | نعم | `Doe` |
| `date_of_birth` | نعم | `1990-01-01` |
| `address.street_1` | نعم | `123 Sample Street` |
| `address.postal_code` | نعم | `10001` |
| `address.street_2` | لا | `Unit 4` |
| `address.city` | لا | `Sample City` |
| `address.region` | لا | `Sample State` |
| `vendor_data` | لا | `user-1234` |

* **المدخلات المطلوبة:** `first_name`، `last_name`، `date_of_birth`، `address.street_1`، `address.postal_code`
* **المدخلات الاختيارية:** `address.street_2`، `address.city`، `address.region`، `vendor_data`
* **الموافقة:** مطلوبة
* **توفر سير العمل:** متاح في سير العمل
* **التغطية:** \~ 85%
* **السعر:** \$1.75 لكل استعلام ناجح

## معاملات الجسم

**issuing\_state** `string` *required* (default: CAN)

رمز الدولة وفق ISO 3166-1 alpha-3 لخدمة قاعدة البيانات هذه.

مثال: `CAN`

**services** `string` *required* (default: can\_credit\_bureau\_2\_non\_fintrac)

مصفوفة تحتوي على معرّف هذه الخدمة. تثبيت الخدمة يُبقي الطلب مقصوراً على قاعدة البيانات المحددة هذه تحديداً.

مثال: `can_credit_bureau_2_non_fintrac`

**consent** `boolean` *required* (default: true)

موافقة صريحة من المستخدم النهائي على هذه الخدمة.

مثال: `true`

**first\_name** `string` *required* (default: John)

الاسم الأول المراد التحقق منه.

مثال: `John`

**last\_name** `string` *required* (default: Doe)

اسم العائلة المراد التحقق منه.

مثال: `Doe`

**date\_of\_birth** `string` *required* (default: 1990-01-01)

تاريخ الميلاد بتنسيق `YYYY-MM-DD`.

مثال: `1990-01-01`

**address** `object` *required* (default: \{"street\_1":"123 Sample Street","street\_2":"Unit 4","city":"Sample City","region":"Sample State","postal\_code":"10001","country":"US"})

كائن عنوان سكني منظّم. استخدم `street_1` و`street_2` و`city` و`region` و`postal_code` و`country`. ما زال يُقبل عنوان نصي كامل بالصيغة القديمة، لكنه غير مستحسن.

مثال: `{"street_1":"123 Sample Street","street_2":"Unit 4","city":"Sample City","region":"Sample State","postal_code":"10001","country":"US"}`

**vendor\_data** `string` (default: user-1234)

معرّفك الثابت لهذا الشخص، مثل معرّف المستخدم الداخلي لديك. يستخدمه Didit لربط الفحوصات المستقلة بالمستخدم النهائي نفسه، وتقليل الضوضاء في كشف التكرار.

مثال: `user-1234`

## قواعد المدخلات وملاحظات التحقق

* في خدمات العناوين، أرسل حقول العنوان المنظمة بدلاً من سلسلة `address` واحدة كلما أمكن.
* `address.street_1` هو عنوان الشارع، ويشمل رقم المبنى ونوع الشارع.
* `address.street_2` هو الشقة أو الوحدة أو المبنى أو الطابق أو أي سطر إضافي في العنوان. أرسله فقط عندما يتوفر لديك.
* `address.city` هو المدينة أو الضاحية أو المنطقة أو المحلية أو الحي السكني.
* `address.region` هو الولاية أو المقاطعة أو الإقليم أو البلدة.
* `address.postal_code` هو الرمز البريدي.
* تتطلب خدمات قواعد البيانات القائمة على العناوين على الأقل عنوان الشارع والرمز البريدي؛ والطلبات المرفوضة قبل البحث في المصدر لا تُحتسب.

## كيفية الاستدعاء

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=CAN" \
  -F "services=can_credit_bureau_2_non_fintrac" \
  -F "vendor_data=user-1234" \
  -F "consent=true" \
  -F "first_name=John" \
  -F "last_name=Doe" \
  -F "date_of_birth=1990-01-01" \
  -F 'address={"street_1":"123 Sample Street","street_2":"Unit 4","city":"Sample City","region":"Sample State","postal_code":"10001","country":"US"}'
```

```python Python theme={null}
from didit import Didit

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="CAN",
    services=["can_credit_bureau_2_non_fintrac"],
    consent=True,
    first_name="John",
    last_name="Doe",
    date_of_birth="1990-01-01",
    address={"street_1": "123 Sample Street", "street_2": "Unit 4", "city": "Sample City", "region": "Sample State", "postal_code": "10001", "country": "US"},
    vendor_data="user-1234",
)
print(result)
```

```javascript Node.js theme={null}
import Didit from "@didit-protocol/sdk-node";

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

const result = await didit.databaseValidation.validate({
  issuing_state: "CAN",
  services: ["can_credit_bureau_2_non_fintrac"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  address: { street_1: "123 Sample Street", street_2: "Unit 4", city: "Sample City", region: "Sample State", postal_code: "10001", country: "US" },
  vendor_data: "user-1234",
});
console.log(result);
```

```go Go theme={null}
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()

result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
	IssuingState: "CAN",
	Services:     didit.Some([]string{"can_credit_bureau_2_non_fintrac"}),
	Consent:      didit.Bool(true),
	FirstName:    didit.String("John"),
	LastName:     didit.String("Doe"),
	DateOfBirth:  didit.String("1990-01-01"),
	Address:      didit.Some[any](map[string]any{"street_1": "123 Sample Street", "street_2": "Unit 4", "city": "Sample City", "region": "Sample State", "postal_code": "10001", "country": "US"}),
	VendorData:   didit.String("user-1234"),
})
if err != nil {
	log.Fatal(err)
}
fmt.Printf("%+v\n", result)
```

```java Java theme={null}
import java.time.LocalDate;
import java.util.List;
import me.didit.Didit;
import me.didit.types.DatabaseValidationValidateParams;

// Reads DIDIT_API_KEY.
Didit client = new Didit();

var result = client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
        .issuingState("CAN")
        .services(List.of("can_credit_bureau_2_non_fintrac"))
        .consent(true)
        .firstName("John")
        .lastName("Doe")
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .address(DatabaseValidationValidateParams.Address.ofVariant1(DatabaseValidationValidateParams.Address.Variant1.builder()
                .street1("123 Sample Street")
                .street2("Unit 4")
                .city("Sample City")
                .region("Sample State")
                .postalCode("10001")
                .country("US")
                .build()))
        .vendorData("user-1234")
        .build());
System.out.println(result);
```

```php PHP theme={null}
<?php

require 'vendor/autoload.php';

use Didit\DiditClient;

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

$result = $didit->databaseValidation->validate([
    'issuing_state' => 'CAN',
    'services' => ['can_credit_bureau_2_non_fintrac'],
    'consent' => true,
    'first_name' => 'John',
    'last_name' => 'Doe',
    'date_of_birth' => '1990-01-01',
    'address' => ['street_1' => '123 Sample Street', 'street_2' => 'Unit 4', 'city' => 'Sample City', 'region' => 'Sample State', 'postal_code' => '10001', 'country' => 'US'],
    'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
```

```ruby Ruby theme={null}
require "didit"

# Reads DIDIT_API_KEY.
didit = Didit::Client.new

result = didit.database_validation.validate(
  issuing_state: "CAN",
  services: ["can_credit_bureau_2_non_fintrac"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  address: { street_1: "123 Sample Street", street_2: "Unit 4", city: "Sample City", region: "Sample State", postal_code: "10001", country: "US" },
  vendor_data: "user-1234"
)
puts result.to_h
```

```csharp .NET theme={null}
using System;
using System.Collections.Generic;
using System.Text.Json;
using Didit;

// Reads DIDIT_API_KEY.
using var client = new DiditClient();

var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
    IssuingState = "CAN",
    Services = new string[] { "can_credit_bureau_2_non_fintrac" },
    Consent = true,
    FirstName = "John",
    LastName = "Doe",
    DateOfBirth = "1990-01-01",
    Address = new Dictionary<string, object> { ["street_1"] = "123 Sample Street", ["street_2"] = "Unit 4", ["city"] = "Sample City", ["region"] = "Sample State", ["postal_code"] = "10001", ["country"] = "US" },
    VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
```

يعيد كل استدعاء ناجح استجابة HTTP `200`. يخبرك الحقل **`outcome_code`** بما حدث فعلاً، فيميّز مثلاً بين عدم تطابق بيومتري حقيقي (`BIOMETRIC_NO_MATCH`) وسيلفي تعذّرت قراءته (`BIOMETRIC_IMAGE_UNUSABLE`). الحالة `status` المعروضة هي الحالة الافتراضية للميزة، ويمكن لـ[إجراءات المطابقة الجزئية / عدم المطابقة المُهيأة لديك](https://docs.didit.me/ar/core-technology/database-validation/database-validation-warnings.md) أن تتجاوزها.

**`MATCH`**: أكّد السجل الهوية، وتطابق كل حقل جرى فحصه.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "CAN",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "can_credit_bureau_2_non_fintrac",
      "service_name": "Canada Credit Bureau 2 (Non-FINTRAC)",
      "source_data": {
        "address": "123 Sample Street",
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "last_name": "Doe"
      },
      "validation": {
        "address": "full_match",
        "date_of_birth": "full_match",
        "full_name": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`**: لم يتطابق تماماً حقل واحد أو أكثر من الحقول التي تقارنها هذه الخدمة. في هذا المثال، لم يتطابق `full_name`، بينما تطابق `address` و`date_of_birth`.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "CAN",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "can_credit_bureau_2_non_fintrac",
      "service_name": "Canada Credit Bureau 2 (Non-FINTRAC)",
      "source_data": {
        "address": "123 Sample Street",
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "last_name": "Doe"
      },
      "validation": {
        "address": "full_match",
        "date_of_birth": "full_match",
        "full_name": "no_match"
      }
    }
  ]
}
```

**`NO_MATCH`**: لم يُعِد السجل أي تطابق للبيانات المُرسلة.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "CAN",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "can_credit_bureau_2_non_fintrac",
      "service_name": "Canada Credit Bureau 2 (Non-FINTRAC)",
      "source_data": {
        "address": "NO_MATCH",
        "date_of_birth": "NO_MATCH",
        "full_name": "NO_MATCH"
      },
      "validation": {
        "address": "no_match",
        "date_of_birth": "no_match",
        "full_name": "no_match"
      }
    }
  ]
}
```

## البيانات المُعادة

تعتمد الحقول الدقيقة المعروضة في `source_data` على ما يعيده السجل. يوضح المثال المولَّد لـ `can_credit_bureau_2_non_fintrac` الشكل الموحّد التالي:

* `address`
* `date_of_birth`
* `first_name`
* `last_name`

## الأسعار واتفاقيات مستوى الخدمة

تُحتسب رسوم استعلامات Canada Credit Bureau 2 (Non-FINTRAC) فقط عندما تستلم Didit نتيجة قاطعة من مصدر التحقق.

* **السعر لكل استدعاء:** \$1.75 USD.
* **الفوترة:** لكل استعلام ناجح. لا تُحتسب عليك رسوم عند تعذر الوصول إلى السجل، أو عند عدم اكتمال الحقول المطلوبة، أو عند رفض الطلب قبل وصوله إلى المصدر.
* **زمن الاستجابة:** المئين 95 المعتاد أقل من ثانيتين.
* **التوفر:** 99.9% لكل ربع سنة من جهة Didit؛ ويختلف توفر المصدر النهائي حسب الدولة ومجموعة البيانات.

## متابعة القراءة

* [نظرة عامة على التحقق من قواعد البيانات في كندا](https://docs.didit.me/api-reference/database-validation/canada.md)
* [نظرة عامة على التحقق من قواعد البيانات](https://docs.didit.me/ar/core-technology/database-validation/overview.md)
* [رموز النتائج](https://docs.didit.me/ar/core-technology/database-validation/database-validation-outcome-codes.md)


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