RuleSets

Support DQE
Support DQE
  • Mise à jour
RuleSets - DQE One Standalone API

Importez, exportez et consultez les RuleSets de déduplication sur lesquels s'appuient les processes check_duplicate.

{DOMAIN} est le nom d'hôte de votre propre serveur DQE One Standalone — il est auto-hébergé, cette valeur dépend donc de votre déploiement. {EMAIL} est votre identifiant de connexion DQE One et {API_TOKEN} le token généré dans My Account > API Token.
Documentation associée : DQE One Standalone API — Introduction, Files, Credentials, Processes, Runs & results, RuleSets.
Pour construire un RuleSet visuellement, consultez Configure a RuleSet in DQE One Standalone.
Deux ids différents. Chaque RuleSet possède un identifiant numérique id et une chaîne setId. createProcess attend l'id numérique dans ruleSet ; getRuleset attend la chaîne dans set_id ; et dans un process check_duplicate, la clé de fields est le setId de type chaîne. Les deux proviennent de listRulesets.
Lister les RuleSets - DQE One Standalone API

Liste vos RuleSets, du plus récemment mis à jour au plus ancien.

listRulesets

Requête

Envoyez une requête GET. Il n'y a aucun paramètre.

GEThttps://{DOMAIN}/api/Ruleset/list

Exemples de code

Lister vos RuleSets

curl -u "{EMAIL}:{API_TOKEN}" \ "https://{DOMAIN}/api/Ruleset/list"
fetch("https://{DOMAIN}/api/Ruleset/list", { method: "GET", headers: { "Authorization": "Basic " + btoa("{EMAIL}:{API_TOKEN}") } }) .then(r => r.text()) .then(data => console.log(data));
import requests response = requests.get( "https://{DOMAIN}/api/Ruleset/list", auth=("{EMAIL}", "{API_TOKEN}"), ) print(response.status_code, response.text)
<?php $ch = curl_init("https://{DOMAIN}/api/Ruleset/list"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_USERPWD, "{EMAIL}:{API_TOKEN}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $status . " " . $response;
const axios = require('axios'); axios({ method: "get", url: "https://{DOMAIN}/api/Ruleset/list", auth: { username: "{EMAIL}", password: "{API_TOKEN}" } }) .then(res => console.log(res.status, res.data)) .catch(err => console.log(err.response ? err.response.status : err.message, err.response && err.response.data));
import java.net.URI; import java.net.http.*; import java.util.Base64; String auth = Base64.getEncoder().encodeToString("{EMAIL}:{API_TOKEN}".getBytes()); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{DOMAIN}/api/Ruleset/list")) .header("Authorization", "Basic " + auth) .method("GET", HttpRequest.BodyPublishers.noBody()) .build(); HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode() + " " + response.body());
using System.Net.Http; using System.Net.Http.Headers; using System.Text; using var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("{EMAIL}:{API_TOKEN}"))); using var request = new HttpRequestMessage(HttpMethod.Get, "https://{DOMAIN}/api/Ruleset/list"); var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode + " " + await response.Content.ReadAsStringAsync());
package main import ( "fmt" "io" "net/http" ) func main() { req, _ := http.NewRequest("GET", "https://{DOMAIN}/api/Ruleset/list", nil) req.SetBasicAuth("{EMAIL}", "{API_TOKEN}") resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() out, _ := io.ReadAll(resp.Body) fmt.Println(resp.StatusCode, string(out)) }

Paramètres

Cet endpoint ne prend aucun paramètre.

Authentification : HTTP Basic — votre email DQE One et votre API token (My Account > API Token). Consultez l'article Introduction.

Réponse

Tableau. Statut HTTP 200.

Le corps est un tableau JSON ; chaque élément contient ces clés.

Clé Description Type
id Id numérique - ce qu'attend /api/Process/create dans 'ruleSet'. Integer
setId Id de type chaîne - ce qu'attend /api/Ruleset/get dans 'set_id'. String
label String
updatedOn String
source String

Exemple de réponse

Exemple de réponse
[ { "id": 7, "setId": "RS_ABC", "label": "Contacts email+name", "updatedOn": "2026-11-01T10:00:00Z", "source": "postgres" } ]

Erreurs

HTTP Corps / signification
401 Unauthorized

Tester l'API

Cliquez sur le bouton ci-dessous pour tester cet endpoint en direct dans votre navigateur.

À savoir : cette console envoie une vraie requête à votre propre serveur depuis votre navigateur, avec votre véritable API token.
Ouvrir la console
Obtenir un RuleSet - DQE One Standalone API

Renvoie la définition complète d'un RuleSet, y compris les libellés de règles de correspondance dont vous avez besoin pour un process check_duplicate.

getRuleset

Requête

Envoyez une requête GET avec le set_id de type chaîne.

Où se trouvent les libellés : les valeurs de matching.Labels[].value sont ce que vous listez dans fields lors de la création du process, par ex. {"RS_ABC": ["Email + Name"]}.
GEThttps://{DOMAIN}/api/Ruleset/get?set_id={set_id}

Exemples de code

Obtenir un RuleSet

curl -u "{EMAIL}:{API_TOKEN}" \ "https://{DOMAIN}/api/Ruleset/get?set_id=RS_ABC"
fetch("https://{DOMAIN}/api/Ruleset/get?set_id=RS_ABC", { method: "GET", headers: { "Authorization": "Basic " + btoa("{EMAIL}:{API_TOKEN}") } }) .then(r => r.text()) .then(data => console.log(data));
import requests response = requests.get( "https://{DOMAIN}/api/Ruleset/get", auth=("{EMAIL}", "{API_TOKEN}"), params={"set_id": "RS_ABC"}, ) print(response.status_code, response.text)
<?php $ch = curl_init("https://{DOMAIN}/api/Ruleset/get?set_id=RS_ABC"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_USERPWD, "{EMAIL}:{API_TOKEN}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $status . " " . $response;
const axios = require('axios'); axios({ method: "get", url: "https://{DOMAIN}/api/Ruleset/get", auth: { username: "{EMAIL}", password: "{API_TOKEN}" }, params: { "set_id": "RS_ABC" } }) .then(res => console.log(res.status, res.data)) .catch(err => console.log(err.response ? err.response.status : err.message, err.response && err.response.data));
import java.net.URI; import java.net.http.*; import java.util.Base64; String auth = Base64.getEncoder().encodeToString("{EMAIL}:{API_TOKEN}".getBytes()); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{DOMAIN}/api/Ruleset/get?set_id=RS_ABC")) .header("Authorization", "Basic " + auth) .method("GET", HttpRequest.BodyPublishers.noBody()) .build(); HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode() + " " + response.body());
using System.Net.Http; using System.Net.Http.Headers; using System.Text; using var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("{EMAIL}:{API_TOKEN}"))); using var request = new HttpRequestMessage(HttpMethod.Get, "https://{DOMAIN}/api/Ruleset/get?set_id=RS_ABC"); var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode + " " + await response.Content.ReadAsStringAsync());
package main import ( "fmt" "io" "net/http" ) func main() { req, _ := http.NewRequest("GET", "https://{DOMAIN}/api/Ruleset/get?set_id=RS_ABC", nil) req.SetBasicAuth("{EMAIL}", "{API_TOKEN}") resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() out, _ := io.ReadAll(resp.Body) fmt.Println(resp.StatusCode, string(out)) }

Paramètres

Champ Description Type Obl / Opt
set_id La chaîne setId issue de la liste. String Obligatoire
Authentification : HTTP Basic — votre email DQE One et votre API token (My Account > API Token). Consultez l'article Introduction.

Réponse

RuleSet. Statut HTTP 200.

Clé Description Type
setId String
isEditable Boolean
label String
updatedOn String
source String
matching Object
filtering Object
parenting Object
merging Object
objectsNames Array
multiobjectsMapping Object
isPublished Boolean

Exemple de réponse

La réponse est une pièce jointe, pas du JSON.

Erreurs

HTTP Corps / signification
400 set_id parameter is required
401 Unauthorized
404 RuleSet not found

Tester l'API

Cliquez sur le bouton ci-dessous pour tester cet endpoint en direct dans votre navigateur.

À savoir : cette console envoie une vraie requête à votre propre serveur depuis votre navigateur, avec votre véritable API token.
Ouvrir la console
Exporter les RuleSets - DQE One Standalone API

Télécharge tous vos RuleSets dans un seul fichier JSON indexé par set_id. Il n'y a ni filtre ni pagination.

exportRulesets

Requête

Envoyez une requête GET. La réponse est une pièce jointe de type fichier JSON.

GEThttps://{DOMAIN}/api/Ruleset/export

Exemples de code

Exporter tous vos RuleSets

curl -u "{EMAIL}:{API_TOKEN}" \ "https://{DOMAIN}/api/Ruleset/export"
fetch("https://{DOMAIN}/api/Ruleset/export", { method: "GET", headers: { "Authorization": "Basic " + btoa("{EMAIL}:{API_TOKEN}") } }) .then(r => r.text()) .then(data => console.log(data));
import requests response = requests.get( "https://{DOMAIN}/api/Ruleset/export", auth=("{EMAIL}", "{API_TOKEN}"), ) print(response.status_code, response.text)
<?php $ch = curl_init("https://{DOMAIN}/api/Ruleset/export"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_USERPWD, "{EMAIL}:{API_TOKEN}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $status . " " . $response;
const axios = require('axios'); axios({ method: "get", url: "https://{DOMAIN}/api/Ruleset/export", auth: { username: "{EMAIL}", password: "{API_TOKEN}" } }) .then(res => console.log(res.status, res.data)) .catch(err => console.log(err.response ? err.response.status : err.message, err.response && err.response.data));
import java.net.URI; import java.net.http.*; import java.util.Base64; String auth = Base64.getEncoder().encodeToString("{EMAIL}:{API_TOKEN}".getBytes()); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{DOMAIN}/api/Ruleset/export")) .header("Authorization", "Basic " + auth) .method("GET", HttpRequest.BodyPublishers.noBody()) .build(); HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode() + " " + response.body());
using System.Net.Http; using System.Net.Http.Headers; using System.Text; using var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("{EMAIL}:{API_TOKEN}"))); using var request = new HttpRequestMessage(HttpMethod.Get, "https://{DOMAIN}/api/Ruleset/export"); var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode + " " + await response.Content.ReadAsStringAsync());
package main import ( "fmt" "io" "net/http" ) func main() { req, _ := http.NewRequest("GET", "https://{DOMAIN}/api/Ruleset/export", nil) req.SetBasicAuth("{EMAIL}", "{API_TOKEN}") resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() out, _ := io.ReadAll(resp.Body) fmt.Println(resp.StatusCode, string(out)) }

Paramètres

Cet endpoint ne prend aucun paramètre.

Authentification : HTTP Basic — votre email DQE One et votre API token (My Account > API Token). Consultez l'article Introduction.

Réponse

Pièce jointe JSON. Statut HTTP 200.

Réponse binaire/pièce jointe (application/octet-stream).

Exemple de réponse

La réponse est une pièce jointe, pas du JSON.

Erreurs

HTTP Corps / signification
401 Unauthorized

Tester l'API

Cliquez sur le bouton ci-dessous pour tester cet endpoint en direct dans votre navigateur.

À savoir : cette console envoie une vraie requête à votre propre serveur depuis votre navigateur, avec votre véritable API token.
Ouvrir la console
Importer des RuleSets - DQE One Standalone API

Importe un ou plusieurs RuleSets depuis un fichier JSON au format d'export.

importRuleset

Requête

Envoyez un POST multipart/form-data avec un seul champ nommé file (un fichier .json).

Comportement à connaître : les règles à code personnalisé (une règle avec une clé Definition, ou Custom: true) sont rejetées. Un RuleSet modifiable existant ayant le même set_id est écrasé. Un fichier peut réussir partiellement : vous obtenez alors partial success avec la liste des erreurs. Lorsque tous les RuleSets échouent, le statut est 500 et error est une liste (contrairement à tous les autres endpoints, où il s'agit d'une chaîne). Un RuleSet qui pointe vers un fichier ou un credential doit référencer un élément existant.
POSThttps://{DOMAIN}/api/Ruleset/import

Exemples de code

Importer des RuleSets

curl -u "{EMAIL}:{API_TOKEN}" -X POST \ -F "file=@rulesets.json" \ "https://{DOMAIN}/api/Ruleset/import"
const form = new FormData(); form.append("file", fileInput.files[0]); // <input type="file"> fetch("https://{DOMAIN}/api/Ruleset/import", { method: "POST", headers: { "Authorization": "Basic " + btoa("{EMAIL}:{API_TOKEN}") }, body: form }) .then(r => r.text()) .then(data => console.log(data));
import requests response = requests.post( "https://{DOMAIN}/api/Ruleset/import", auth=("{EMAIL}", "{API_TOKEN}"), files={"file": open("rulesets.json", "rb")}, ) print(response.status_code, response.text)
<?php $ch = curl_init("https://{DOMAIN}/api/Ruleset/import"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_USERPWD, "{EMAIL}:{API_TOKEN}"); curl_setopt($ch, CURLOPT_POSTFIELDS, ['file' => new CURLFile("rulesets.json")]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $status . " " . $response;
const axios = require('axios'); const FormData = require('form-data'); const fs = require('fs'); const form = new FormData(); form.append('file', fs.createReadStream("rulesets.json")); axios({ method: "post", url: "https://{DOMAIN}/api/Ruleset/import", auth: { username: "{EMAIL}", password: "{API_TOKEN}" }, headers: form.getHeaders(), data: form }) .then(res => console.log(res.status, res.data)) .catch(err => console.log(err.response ? err.response.status : err.message, err.response && err.response.data));
import java.net.URI; import java.net.http.*; import java.util.Base64; String auth = Base64.getEncoder().encodeToString("{EMAIL}:{API_TOKEN}".getBytes()); String boundary = "----dqe" + System.nanoTime(); byte[] content = java.nio.file.Files.readAllBytes(java.nio.file.Path.of("rulesets.json")); var out = new java.io.ByteArrayOutputStream(); out.write(("--" + boundary + "\r\nContent-Disposition: form-data; name=\"file\"; filename=\"" + "rulesets.json" + "\"\r\n\r\n").getBytes()); out.write(content); out.write(("\r\n--" + boundary + "--\r\n").getBytes()); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{DOMAIN}/api/Ruleset/import")) .header("Authorization", "Basic " + auth) .header("Content-Type", "multipart/form-data; boundary=" + boundary) .method("POST", HttpRequest.BodyPublishers.ofByteArray(out.toByteArray())) .build(); HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode() + " " + response.body());
using System.Net.Http; using System.Net.Http.Headers; using System.Text; using var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("{EMAIL}:{API_TOKEN}"))); using var request = new HttpRequestMessage(HttpMethod.Post, "https://{DOMAIN}/api/Ruleset/import"); var form = new MultipartFormDataContent(); form.Add(new ByteArrayContent(File.ReadAllBytes("rulesets.json")), "file", "rulesets.json"); request.Content = form; var response = await client.SendAsync(request); Console.WriteLine((int)response.StatusCode + " " + await response.Content.ReadAsStringAsync());
package main import ( "bytes" "fmt" "io" "mime/multipart" "net/http" "os" ) func main() { var buf bytes.Buffer w := multipart.NewWriter(&buf) part, _ := w.CreateFormFile("file", "rulesets.json") f, _ := os.Open("rulesets.json") io.Copy(part, f) w.Close() req, _ := http.NewRequest("POST", "https://{DOMAIN}/api/Ruleset/import", &buf) req.SetBasicAuth("{EMAIL}", "{API_TOKEN}") req.Header.Set("Content-Type", w.FormDataContentType()) resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() out, _ := io.ReadAll(resp.Body) fmt.Println(resp.StatusCode, string(out)) }

Paramètres

Champ Description Type Obl / Opt
file Un export de RuleSets au format .json. String (file) Obligatoire
Authentification : HTTP Basic — votre email DQE One et votre API token (My Account > API Token). Consultez l'article Introduction.

Réponse

Importé (succès ou succès partiel). Statut HTTP 200.

Clé Description Type
status
Valeurs : success, partial success, error
String
id Array
error Une LISTE ici (contrairement à tous les autres endpoints). Array

Exemple de réponse

Exemple de réponse
{ "status": "success", "id": [ 7 ] }

Erreurs

HTTP Corps / signification
400 API only accept .json file.
401 Unauthorized
500

Tester l'API

Cliquez sur le bouton ci-dessous pour tester cet endpoint en direct dans votre navigateur.

À savoir : cette console envoie une vraie requête à votre propre serveur depuis votre navigateur, avec votre véritable API token. Cela crée ou écrase de vrais RuleSets.
Ouvrir la console

Voir aussi

Associé à

Cet article vous a-t-il été utile ?

Utilisateurs qui ont trouvé cela utile : 0 sur 0