> ## 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 EPIC de l'Índia (registre electoral, ECI)

> Validació de l'EPIC de l'Índia (registre electoral, ECI) a bases de dades oficials amb Didit. Des de $0.25 per crida, sense contractes ni mínims.

Verifica les dades d'entrada contra la base de dades de la Comissió Electoral de l'Índia. Didit exposa aquest servei a través de `POST /v3/database-validation/` perquè puguis verificar les dades enviades contra la font autoritzada i rebre resultats de coincidència normalitzats.

## Cobertura

* **Cobertura:** > 75%
* **País:** Índia
* **ID del servei:** `ind_epic_voter_s_registration`
* **Domini de dades:** Govern
* **Categoria:** ElectoralRoll

## Entrades

| Camp | Obligatori | Exemple |
| - | -: | - |
| `full_name` | Sí | `John Doe` |
| `date_of_birth` | Sí | `1990-01-01` |
| `epic_card` | Sí | `ABC1234567` |
| `vendor_data` | No | `user-1234` |

* **Entrades obligatòries:** `full_name`, `date_of_birth`, `epic_card`
* **Entrades opcionals:** `vendor_data`
* **Consentiment:** Obligatori
* **Disponibilitat al flux de treball:** Disponible al flux de treball amb mapatge de camps
* **Cobertura:** > 75%
* **Preu:** \$0.25 per consulta satisfactòria

En un flux de treball, `epic_card` no apareix imprès en cap document d'identitat, de manera que cap pas no el genera per si sol. Recull-lo d'una resposta de qüestionari, d'un camp d'extracció de Document AI o d'un valor que enviïs en crear la sessió, i mapeja'l al pas de Validació en bases de dades. Fins que no estigui mapejat, l'editor de flux de treball mostra aquest servei desactivat i indica quina entrada falta; en execució, una entrada que falta fa que la comprovació s'ometi abans de cap consulta, de manera que mai no et facturen una base de dades que no s'ha pogut consultar.

No tots els documents que accepta aquest servei contenen l'identificador que es fa servir per consultar-lo. Quan l'identificador no s'extreu del document, la comprovació es registra com a **no aplicable**: no es consulta cap base de dades i no se't factura, cosa que en alguns països representa una part important dels usuaris reals. Per cobrir-los, recull també l'identificador d'una resposta de qüestionari, d'un camp d'extracció de Document AI o d'un valor que enviïs en crear la sessió, i mapeja'l al pas de Validació en bases de dades.

## Paràmetres del cos

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

Codi de país ISO 3166-1 alpha-3 per a aquest servei de base de dades.

Exemple: `IND`

**services** `string` *required* (default: ind\_epic\_voter\_s\_registration)

Matriu que conté aquest ID de servei. Fixar el servei manté la sol·licitud limitada a aquesta base de dades exacta.

Exemple: `ind_epic_voter_s_registration`

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

Consentiment explícit de l'usuari final per a aquest servei.

Exemple: `true`

**full\_name** `string` *required* (default: John Doe)

Nom legal complet a validar.

Exemple: `John Doe`

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

Data de naixement en format `YYYY-MM-DD`.

Exemple: `1990-01-01`

**epic\_card** `string` *required* (default: ABC1234567)

Número de la targeta d'elector EPIC.

Exemple: `ABC1234567`

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

La teva referència estable d'aquesta persona, com ara el teu ID d'usuari intern. Didit l'utilitza per vincular les comprovacions independents amb el mateix usuari final i reduir el soroll de detecció de duplicats.

Exemple: `user-1234`

## Regles d'entrada i notes de validació

* `epic_card` ha de coincidir amb `[A-Za-z]{3}\d{7,14}`.

## Com fer la crida

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=IND" \
  -F "services=ind_epic_voter_s_registration" \
  -F "vendor_data=user-1234" \
  -F "consent=true" \
  -F "full_name=John Doe" \
  -F "date_of_birth=1990-01-01" \
  -F "epic_card=ABC1234567"
```

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

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="IND",
    services=["ind_epic_voter_s_registration"],
    consent=True,
    full_name="John Doe",
    date_of_birth="1990-01-01",
    epic_card="ABC1234567",
    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: "IND",
  services: ["ind_epic_voter_s_registration"],
  consent: true,
  full_name: "John Doe",
  date_of_birth: "1990-01-01",
  epic_card: "ABC1234567",
  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: "IND",
	Services:     didit.Some([]string{"ind_epic_voter_s_registration"}),
	Consent:      didit.Bool(true),
	FullName:     didit.String("John Doe"),
	DateOfBirth:  didit.String("1990-01-01"),
	EpicCard:     didit.String("ABC1234567"),
	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("IND")
        .services(List.of("ind_epic_voter_s_registration"))
        .consent(true)
        .fullName("John Doe")
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .epicCard("ABC1234567")
        .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' => 'IND',
    'services' => ['ind_epic_voter_s_registration'],
    'consent' => true,
    'full_name' => 'John Doe',
    'date_of_birth' => '1990-01-01',
    'epic_card' => 'ABC1234567',
    '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: "IND",
  services: ["ind_epic_voter_s_registration"],
  consent: true,
  full_name: "John Doe",
  date_of_birth: "1990-01-01",
  epic_card: "ABC1234567",
  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 = "IND",
    Services = new string[] { "ind_epic_voter_s_registration" },
    Consent = true,
    FullName = "John Doe",
    DateOfBirth = "1990-01-01",
    EpicCard = "ABC1234567",
    VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
```

Cada crida satisfactòria retorna HTTP `200`. El camp **`outcome_code`** indica què ha passat realment, distingint, per exemple, una discrepància biomètrica real (`BIOMETRIC_NO_MATCH`) d'una selfie que no s'ha pogut llegir (`BIOMETRIC_IMAGE_UNUSABLE`). L'`status` mostrat és l'estat predeterminat de la funcionalitat; les [accions de Partial Match / No Match](https://docs.didit.me/ca/core-technology/database-validation/database-validation-warnings.md) que hagis configurat poden substituir-lo.

**`MATCH`**: El registre ha confirmat la identitat i tots els camps comprovats coincideixen.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "IND",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "ind_epic_voter_s_registration",
      "service_name": "India EPIC (Voter's Registration) (ECI)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "full_name": "John Doe",
        "identification_number": "SAMPLE-ID-12345"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`**: S'ha trobat el número d'identificació però un o més camps personals (normalment el nom o la data de naixement) no coincideixen completament.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "IND",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "ind_epic_voter_s_registration",
      "service_name": "India EPIC (Voter's Registration) (ECI)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "full_name": "John Doe",
        "identification_number": "SAMPLE-ID-12345"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "no_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`NO_MATCH`**: El registre no ha retornat cap coincidència per a les dades enviades.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "IND",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "ind_epic_voter_s_registration",
      "service_name": "India EPIC (Voter's Registration) (ECI)",
      "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"
      }
    }
  ]
}
```

## Dades retornades

Els camps exactes que es mostren a `source_data` depenen del que retorni el registre. L'exemple generat per a `ind_epic_voter_s_registration` documenta actualment aquesta estructura normalitzada:

* `date_of_birth`
* `full_name`
* `identification_number`

## Preus i SLA

Les consultes d'India EPIC (Voter's Registration) (ECI) només es facturen quan Didit rep un resultat concloent de la font de validació.

* **Preu per crida:** \$0.25 USD.
* **Facturació:** per consulta satisfactòria. No et facturen quan el registre no és accessible, quan falten camps obligatoris o quan la sol·licitud es rebutja abans d'arribar a la font.
* **Latència:** p95 típica \< 2 s.
* **Disponibilitat:** 99.9% per trimestre per part de Didit; la disponibilitat de la font externa varia segons el país i el conjunt de dades.

## Continua llegint

* [Visió general de la validació en bases de dades a l'Índia](https://docs.didit.me/api-reference/database-validation/india.md)
* [Visió general de la validació en bases de dades](https://docs.didit.me/ca/core-technology/database-validation/overview.md)
* [Codis de resultat](https://docs.didit.me/ca/core-technology/database-validation/database-validation-outcome-codes.md)


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