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

# التحقق من CPF في البرازيل عبر واجهة API فورية

> فحص حالة CPF في البرازيل: التحقق من قواعد البيانات الرسمية عبر بنية Didit للهوية. الدفع لكل استدعاء بدءاً من $0.20، بلا عقود ولا حد أدنى.

تُرجع حالة CPF (منتظمة، موقوفة، ملغاة)، والاسم، والاسم الاجتماعي، وتاريخ التسجيل من Receita Federal عبر SERPRO. يتم الاستعلام بمفتاح CPF وتاريخ الميلاد. تعرض Didit هذه الخدمة عبر `POST /v3/database-validation/` لتتمكن من التحقق من البيانات المُرسلة مقابل المصدر الرسمي، واستلام نتائج مطابقة موحّدة. تنسيق الإدخال: يقبل `tax_number` رقم CPF البرازيلي (11 رقمًا بالضبط).

## التغطية

* **التغطية:** \~ 100%
* **الدولة:** البرازيل
* **معرّف الخدمة:** `bra_cpf`
* **نطاق البيانات:** الهوية
* **الفئة:** السجل الضريبي

## المدخلات

| الحقل | مطلوب | مثال |
| - | -: | - |
| `tax_number` | نعم | `11111111111` |
| `date_of_birth` | نعم | `1990-01-01` |
| `first_name` | لا | `John` |
| `last_name` | لا | `Doe` |
| `vendor_data` | لا | `user-1234` |

* **المدخلات المطلوبة:** `tax_number`، `date_of_birth`
* **المدخلات الاختيارية:** `first_name`، `last_name`، `vendor_data`
* **الموافقة:** غير مطلوبة
* **التوفر في سير العمل:** متاحة في سير العمل
* **التغطية:** \~ 100%
* **السعر:** \$0.20 لكل استعلام ناجح

ليست كل مستندات تقبلها هذه الخدمة تحمل المعرّف الذي تستعلم به. عندما لا يُستخرج المعرّف من المستند، يُسجَّل الفحص على أنه **غير قابل للتطبيق**، ولا تُستعلم أي قاعدة بيانات ولا تُحتسب أي رسوم. وفي بعض الدول يشكّل ذلك نسبة كبيرة من المستخدمين الفعليين. لتغطيتهم، اجمع المعرّف أيضًا من إجابة في الاستبيان، أو من حقل استخراج في Document AI، أو من قيمة ترسلها عند إنشاء الجلسة، وقم بربطه في خطوة التحقق من قواعد البيانات.

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

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

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

مثال: `BRA`

**services** `string` *required* (default: bra\_cpf)

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

مثال: `bra_cpf`

**tax\_number** `string` *required* (default: 11111111111)

رقم التعريف الضريبي أو المالي.

مثال: `11111111111`

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

تاريخ الميلاد بصيغة `YYYY-MM-DD`.

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

**first\_name** `string`

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

مثال: `John`

**last\_name** `string`

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

مثال: `Doe`

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

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

مثال: `user-1234`

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

* رقم CPF البرازيلي (11 رقمًا بالضبط)
* يجب أن يحتوي `tax_number` على أرقام فقط؛ أزل المسافات والشرطات وعلامات الترقيم قبل إرسال الطلب.
* يجب أن يكون طول `tax_number` 11 حرفًا بالضبط.

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

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=BRA" \
  -F "services=bra_cpf" \
  -F "vendor_data=user-1234" \
  -F "tax_number=11111111111" \
  -F "date_of_birth=1990-01-01"
```

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

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="BRA",
    services=["bra_cpf"],
    date_of_birth="1990-01-01",
    tax_number="11111111111",
    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: "BRA",
  services: ["bra_cpf"],
  date_of_birth: "1990-01-01",
  tax_number: "11111111111",
  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: "BRA",
	Services:     didit.Some([]string{"bra_cpf"}),
	DateOfBirth:  didit.String("1990-01-01"),
	TaxNumber:    didit.String("11111111111"),
	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("BRA")
        .services(List.of("bra_cpf"))
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .taxNumber("11111111111")
        .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' => 'BRA',
    'services' => ['bra_cpf'],
    'date_of_birth' => '1990-01-01',
    'tax_number' => '11111111111',
    '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: "BRA",
  services: ["bra_cpf"],
  date_of_birth: "1990-01-01",
  tax_number: "11111111111",
  vendor_data: "user-1234"
)
puts result.to_h
```

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

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

var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
    IssuingState = "BRA",
    Services = new string[] { "bra_cpf" },
    DateOfBirth = "1990-01-01",
    TaxNumber = "11111111111",
    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": "BRA",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "bra_cpf",
      "service_name": "Brazil - CPF status check",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "lgpd_minor": "sample_value",
        "minor_under_16": "sample_value",
        "minor_under_18": "sample_value",
        "registration_date": "1990-01-01"
      },
      "validation": {
        "date_of_birth": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`** — تم العثور على رقم التعريف، لكن حقلًا شخصيًا واحدًا أو أكثر (عادةً الاسم أو تاريخ الميلاد) لم يتطابق تمامًا.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "BRA",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "bra_cpf",
      "service_name": "Brazil - CPF status check",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "lgpd_minor": "sample_value",
        "minor_under_16": "sample_value",
        "minor_under_18": "sample_value",
        "registration_date": "1990-01-01"
      },
      "validation": {
        "date_of_birth": "no_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

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

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "BRA",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "bra_cpf",
      "service_name": "Brazil - CPF status check",
      "source_data": {
        "date_of_birth": "NO_MATCH",
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "date_of_birth": "no_match",
        "identification_number": "no_match"
      }
    }
  ]
}
```

## البيانات المُرجعة

تعتمد الحقول الدقيقة التي تظهر في `source_data` على ما يُرجعه السجل. يوثّق المثال المُولَّد لـ`bra_cpf` حاليًا هذا الشكل الموحّد:

* `date_of_birth`
* `first_name`
* `identification_number`
* `last_name`
* `lgpd_minor`
* `minor_under_16`
* `minor_under_18`
* `registration_date`

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

البرازيل - لا تُحتسب استعلامات التحقق من حالة CPF إلا عندما تتلقى Didit نتيجة حاسمة من مصدر التحقق.

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

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

* [نظرة عامة على التحقق من قواعد البيانات في البرازيل](https://docs.didit.me/api-reference/database-validation/brazil.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.