Documentation · API de vérification

La requête

Comment décrire les parties que vous vérifiez, où l’outil de correspondance les cherche, et quels paramètres restreignent et règlent le résultat.

Une requête de correspondance décrit les parties à vérifier, indique la collection à interroger et, au besoin, restreint les candidats et règle le calcul du score. Vous pouvez essayer chaque élément dans Vérification.

Exemple de requête

Trois parties dans une seule requête : une personne avec des noms dans deux écritures, une société avec son pays et un navire avec son numéro IMO. La chaîne de requête ne conserve que les inscriptions de sanctions, exclut un registre et demande un seuil plus strict.

curl -X POST "https://api.crownintelligence.net/api/match/default?limit=3&threshold=0.8&topics=sanction&exclude_dataset=Wikidata%20PEPs" \
  -H "Content-Type: application/json" \
  -d '{"queries":{"person":{"schema":"Person","properties":{"name":["Igor Putin","Игорь Путин"],"birthDate":["1953-03-30"],"nationality":["ru"]}},"company":{"schema":"Company","properties":{"name":["Rosneft"],"country":["ru"]}},"vessel":{"schema":"Vessel","properties":{"name":["Example Star"],"imoNumber":["9000000"]}}}}'
import requests

BASE = "https://api.crownintelligence.net"
PARAMS = {
    "limit": 3,
    "threshold": 0.8,           # stricter than the 0.75 default
    "algorithm": "standard",
    "topics": ["sanction"],     # sanctions listings only
    "exclude_dataset": ["Wikidata PEPs"],
}
PERSON = {"schema": "Person", "properties": {"name": ["Igor Putin", "Игорь Путин"], "birthDate": ["1953-03-30"], "nationality": ["ru"]}}
COMPANY = {"schema": "Company", "properties": {"name": ["Rosneft"], "country": ["ru"]}}
VESSEL = {"schema": "Vessel", "properties": {"name": ["Example Star"], "imoNumber": ["9000000"]}}

r = requests.post(f"{BASE}/api/match/default", params=PARAMS,
                  json={"queries": {"person": PERSON, "company": COMPANY, "vessel": VESSEL}}, timeout=90)
r.raise_for_status()
for key, answer in r.json()["responses"].items():
    best = answer["results"][0] if answer["results"] else None
    print(key, answer["status"], best and (best["score"], best["caption"], best["datasets"]))
const BASE = "https://api.crownintelligence.net";
const params = new URLSearchParams({ limit: "3", threshold: "0.8", algorithm: "standard" });
params.append("topics", "sanction");
params.append("exclude_dataset", "Wikidata PEPs");

const queries = {
  person: { schema: "Person", properties: { name: ["Igor Putin", "Игорь Путин"], birthDate: ["1953-03-30"], nationality: ["ru"] } },
  company: { schema: "Company", properties: { name: ["Rosneft"], country: ["ru"] } },
  vessel: { schema: "Vessel", properties: { name: ["Example Star"], imoNumber: ["9000000"] } },
};
const res = await fetch(`${BASE}/api/match/default?${params}`, {
  method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ queries }),
});
const data = await res.json();
for (const [key, answer] of Object.entries(data.responses)) console.log(key, answer.status, answer.results[0]?.caption);

Délimitation : où l’outil de correspondance cherche

La correspondance se déroule en deux étapes. Le service rassemble d’abord les candidats de la collection : les fiches qui contiennent tous les mots du nom recherché, puis, s’il y en a moins de 50, celles qui partagent un mot du nom, commencent par le nom recherché ou portent le numéro IMO. Ensuite, chaque candidat est évalué par rapport à la requête complète et les meilleurs sont retournés. La délimitation et les filtres agissent sur la première étape : ils déterminent donc quelles fiches peuvent être évaluées.

La collection

La collection fait partie du chemin et est obligatoire : /api/match/default, /api/match/sanctions, /api/match/peps, /api/match/crime ou /api/match/maritime. Un nom inconnu retourne 404 avec la liste des collections.

CollectionContenuFichesRegistres
defaultToutes les fiches actives : sanctions, PEPs, interdiction de contracter, mesures d’application et autres listes de risques——
sanctionsInscriptions de sanctions seulement——
pepsPersonnes politiquement vulnérables (PPV)——
crimeInterdictions de contracter, mandats fiscaux et avis d’insolvabilité——
maritimeNavires et fiches comportant un numéro IMO——

Les chiffres proviennent de la version actuelle (/api/catalog). Un registre unique ne peut pas servir de chemin; utilisez plutôt include_dataset.

Filtrage

Les filtres sont des paramètres de la chaîne de requête et peuvent être répétés. Plusieurs valeurs d’un même filtre sont combinées par OU; des filtres différents sont combinés par ET. Ainsi, ?topics=sanction&topics=debarment&exclude_dataset=US%20CSL signifie « inscriptions de sanctions ou d’interdiction de contracter, mais pas du registre US CSL ». Les filtres appliqués sont renvoyés dans filters.

Filtrer par sujets

topics accepte sanction, role.pep, debarment et reg.action (aussi sous forme de liste séparée par des virgules). Les sujets sont actuellement déduits du type de liste dont provient une fiche; voir Sujets de risque. Un sujet inconnu retourne 400 avec les valeurs acceptées.

Filtrer par registres

include_dataset ne conserve que les fiches des registres nommés; exclude_dataset les exclut. Utilisez les noms de registres affichés par Sources, /api/sources et le champ datasets de chaque résultat, par exemple include_dataset=UK%20OFSI. Les noms doivent être exacts; un nom inconnu ne correspond simplement à rien.

La requête

Le corps contient jusqu’à 20 requêtes nommées sous queries. Nommez-les d’après vos propres identifiants de client ou de ligne afin de pouvoir rattacher les réponses. Une requête unique sans l’enveloppe queries est également acceptée et reçoit une réponse sous q1.

{"schema": "Company", "properties": {"name": ["Example Trading LLC"], "country": ["ae"]}}

Le schéma

schema indique le type de partie que vous décrivez : Person, Company, Organization, Vessel, Airplane ou LegalEntity (tout type). Il est facultatif et sa valeur par défaut est LegalEntity. Une fiche d’un type nettement différent (un navire alors que vous avez demandé une personne) perd 0,20; les fiches dont le type est inconnu ne sont pas pénalisées. Utilisez le type le plus précis que vous connaissez.

Les propriétés

Les propriétés sont des listes de chaînes, de cinq valeurs au maximum chacune. Voici celles que lit l’outil de correspondance; toute autre est ignorée. L’élément query renvoyé dans la réponse montre exactement ce qui a été lu, ce qui est le moyen le plus rapide de repérer une propriété mal orthographiée.

PropriétéÉgalement accepté sousFormat et utilisation
namequeryNoms et alias. Obligatoire sauf si un numéro IMO est fourni. Toute écriture; les accents sont ignorés.
birthDatedobYYYY, YYYY-MM ou YYYY-MM-DD. Les dates partielles sont comparées selon la précision fournie.
nationalitycountry, countries, jurisdiction, flagCodes ISO 3166 à deux lettres, en majuscules ou en minuscules. La nationalité d’une personne, le territoire d’une société ou le pavillon d’un navire.
imoNumberimoNuméro IMO à sept chiffres. Les caractères non numériques sont supprimés.

Personne

Indiquez le nom complet en une seule chaîne (prénoms et nom de famille); les parties de nom séparées ne sont pas lues individuellement. Ajoutez la date de naissance, même seulement l’année, et la nationalité : chaque valeur concordante augmente le score et chaque valeur contradictoire le diminue.

Société et organisation

Indiquez la dénomination sociale et les noms commerciaux, ainsi que le pays d’immatriculation. Les numéros d’immatriculation, d’identification fiscale et LEI ne sont pas encore pris en compte dans le score; conservez-les donc dans vos propres dossiers aux fins d’examen, mais ne vous y fiez pas ici.

Navire

Le numéro IMO est l’élément de preuve le plus fort : un numéro concordant porte le score à au moins 0,98, un numéro différent le réduit de 0,30. Utilisez flag pour l’État du pavillon. Voir Maritime pour la couverture.

Paramètres de réglage et valeurs par défaut

ParamètreValeur par défautSignification
limit5Résultats par requête, de 1 à 50.
threshold0.75Score à partir duquel match est vrai, de 0 à 1. Les résultats inférieurs au seuil sont tout de même retournés.
algorithmstandardstandard ou name-only; best est accepté comme valeur par défaut actuelle. Voir Réglage.
topics, include_dataset, exclude_datasetaucunFiltres de candidats, ci-dessus.
changed_sinceaucunDate ou heure ISO 8601 : seulement les fiches ajoutées ou modifiées depuis. Pour la revérification planifiée; voir Surveillance.

En savoir plus : La réponse, Référence du modèle, Réglage de l’outil de correspondance.

Dernière mise à jour : 2026-10-03