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

# التحقق من السجل الجنائي الاتحادي في البرازيل

> استعلام من قاعدة بيانات البرازيل الرسمية للسجل الجنائي الاتحادي (Polícia Federal) عبر Didit، بسعر يبدأ من $0.20 لكل استدعاء، بلا عقود ولا حد أدنى.

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

## التغطية

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

## المدخلات

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

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

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

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

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

مثال: `BRA`

**services** `string` *required* (default: bra\_antecedentes\_criminais\_pf)

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

مثال: `bra_antecedentes_criminais_pf`

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

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

مثال: `true`

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

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

مثال: `12345678909`

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

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

مثال: `John`

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

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

مثال: `Doe`

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

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

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

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

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

مثال: `user-1234`

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

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

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

```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_antecedentes_criminais_pf" \
  -F "vendor_data=user-1234" \
  -F "consent=true" \
  -F "tax_number=12345678909" \
  -F "first_name=John" \
  -F "last_name=Doe" \
  -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_antecedentes_criminais_pf"],
    consent=True,
    first_name="John",
    last_name="Doe",
    date_of_birth="1990-01-01",
    tax_number="12345678909",
    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_antecedentes_criminais_pf"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  tax_number: "12345678909",
  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_antecedentes_criminais_pf"}),
	Consent:      didit.Bool(true),
	FirstName:    didit.String("John"),
	LastName:     didit.String("Doe"),
	DateOfBirth:  didit.String("1990-01-01"),
	TaxNumber:    didit.String("12345678909"),
	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_antecedentes_criminais_pf"))
        .consent(true)
        .firstName("John")
        .lastName("Doe")
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .taxNumber("12345678909")
        .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_antecedentes_criminais_pf'],
    'consent' => true,
    'first_name' => 'John',
    'last_name' => 'Doe',
    'date_of_birth' => '1990-01-01',
    'tax_number' => '12345678909',
    '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_antecedentes_criminais_pf"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  tax_number: "12345678909",
  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_antecedentes_criminais_pf" },
    Consent = true,
    FirstName = "John",
    LastName = "Doe",
    DateOfBirth = "1990-01-01",
    TaxNumber = "12345678909",
    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_antecedentes_criminais_pf",
      "service_name": "Brazil - Federal Criminal Record (Polícia Federal)",
      "source_data": {
        "certificate_number": "000000000000",
        "certificate_status": "NADA CONSTA",
        "certificate_valid_until": "2027-01-03",
        "criminal_record_found": false,
        "date_of_birth": "1990-01-01",
        "first_name": "JOHN",
        "full_name": "JOHN DOE",
        "identification_number": "12345678909",
        "last_name": "DOE"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "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_antecedentes_criminais_pf",
      "service_name": "Brazil - Federal Criminal Record (Polícia Federal)",
      "source_data": {
        "certificate_number": "000000000000",
        "certificate_status": "NADA CONSTA",
        "certificate_valid_until": "2027-01-03",
        "criminal_record_found": false,
        "date_of_birth": "1990-01-01",
        "first_name": "JOHN",
        "full_name": "JOHN DOE",
        "identification_number": "12345678909",
        "last_name": "DOE"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "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_antecedentes_criminais_pf",
      "service_name": "Brazil - Federal Criminal Record (Polícia Federal)",
      "source_data": {
        "date_of_birth": "NO_MATCH",
        "full_name": "NO_MATCH",
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "date_of_birth": "no_match",
        "full_name": "no_match",
        "identification_number": "no_match"
      }
    }
  ]
}
```

**`INCONCLUSIVE`**: لم تُصدر الشرطة الفيدرالية الشهادة عبر الإنترنت، وهذا ما تفعله عندما يلزم حسم سجل أو تشابه أسماء شخصيًا. لا تُستخلص أي نتيجة في أي من الاتجاهين.

```json 200 OK — INCONCLUSIVE theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "BRA",
  "match_type": null,
  "validations": [
    {
      "outcome_code": "INCONCLUSIVE",
      "service_id": "bra_antecedentes_criminais_pf",
      "service_name": "Brazil - Federal Criminal Record (Polícia Federal)",
      "source_data": {
        "certificate_status": "NOT_ISSUED",
        "identification_number": "12345678909"
      },
      "validation": {}
    }
  ]
}
```

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

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

* `certificate_number`
* `certificate_status`
* `certificate_valid_until`
* `criminal_record_found`
* `date_of_birth`
* `first_name`
* `full_name`
* `identification_number`
* `last_name`

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

تُحتسب تكلفة استعلامات السجل الجنائي الاتحادي في البرازيل (Polícia Federal) فقط عندما يتلقى Didit نتيجة حاسمة من مصدر التحقق.

* **السعر لكل استدعاء:** \$0.20 USD.
* **الفوترة:** لكل استعلام ناجح. لا يُحتسب عليك أي رسوم عندما يتعذر الوصول إلى السجل، أو عند غياب الحقول المطلوبة، أو عندما يُرفض الطلب قبل وصوله إلى المصدر.
* **زمن الاستجابة:** زمن الاستجابة عند النسبة المئوية 95 (p95) عادةً أقل من ثانيتين.
* **التوفر:** 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.