Langage de requête MDM et accès aux données REST - 7.2

EnrichVersion
7.2
EnrichProdName
Talend Data Fabric
Talend MDM Platform
task
Gouvernance de données > Consolidation de données
Gouvernance de données > Récupération de données
EnrichPlatform
Talend MDM Server
Talend MDM Web UI

Langage de requête MDM et accès aux données REST

La solution MDM de Talend propose une API REST qui permet aux utilisateurs de réaliser plus facilement des opérations de type CRUD (Create/Request/Update/Delete) sur des enregistrements MDM.

Cet article est principalement axé sur les opérations de lecture et d'écriture de l'API REST de MDM et donne des exemples de requêtes simples et plus complexes que vous pouvez inclure aux appels de l'API REST.

Cet article s'applique à tous les produits Talend Platform avec MDM, en version 6.0 et suivantes.

Ressources de l'API REST de MDM

L'API REST de la solution MDM de Talend est une API moderne destinée aux développeurs. Elle simplifie les interfaces avec MDM et permet ainsi aux développeurs d'interagir plus facilement et directement avec les données MDM.

Talend MDM Web UI fournit un accès à la documentation des ressources REST de MDM. Elle vous permet de consulter la syntaxe du langage de requêtes ainsi que les paramètres associés et de tester l'exécution des opérations.

Vous pouvez également intégrer l'API pour les données et l'API pour les transactions. Pour plus d'informations, consultez Intégration de l'API pour les transactions.

Vous pouvez activer le support du partage des ressources d'origine croisée (CORS), dans MDM, lors du développement d'une application Web consommant des ressources MDM REST. Pour plus d'informations, consultez Support du partage des ressources d'origine croisée dans MDM.

Gestion des utilisateurs et des utilisatrices

Création d'un enregistrement

Crée un nouvel enregistrement dans le conteneur de données spécifié. L'enregistrement sera fourni dans le contenu de requête au format XML ou JSON. L'ID de l'enregistrement sera retourné dans l'en-tête de réponse location.

Remarque : L'identifiant que vous avez soumis sera utilisé pour créer l'enregistrement, même si celui-ci est configuré pour être automatiquement généré dans le modèle de données. Une opération de mise à jour sera exécutée si un enregistrement avec le même identifiant existe déjà dans MDM.
Requête
POST /services/rest/data/{containerName}

Le corps est une représentation XML ou JSON de l'enregistrement à créer.

Paramètres
  • containerName : valeur String qui spécifie le nom du conteneur de données dans lequel vous souhaitez créer un nouvel enregistrement de données.
  • container : valeur String qui représente le type du conteneur de données. La valeur est MASTER (default) ou STAGING.
  • updateReport : valeur booléenne qui contrôle la création d'une entrée de journal (rapport de mise à jour). Par défaut, la valeur est true.
  • beforeSaving : valeur booléenne qui contrôle l'appel d'un processus Before Saving. Par défaut, la valeur est false. Si le paramètre beforeSaving est défini sur true, le paramètre updateReport doit également être défini sur true étant donné qu'une entrée de journal (rapport de mise à jour) est nécessaire pour appeler le processus Before Saving.
En-têtes
  • Content-Type : application/xml, text/xml ou application/json
    Remarque : Si la déclaration XML est incluse dans le contenu de la requête XML et que l'attribut d'encodage est utilisé, vous devez définir sa valeur à UTF-8.
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 200 OK : opération exécutée avec succès.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage invalide, un type de stockage invalide ou un document XML invalide.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante, par exemple autorisation d'écriture manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs, par exemple le processus Before Saving retourne une erreur.
Limitation Cette API REST ne supporte pas la création d'un nouvel enregistrement pour l'entité Role dans le conteneur de données système PROVISIONING.

Exemple de requête au format XML

<Product>
  <Picture>/imageserver/upload/TalendShop/tshirt.jpg</Picture>
  <Id>231035936</Id>
  <Name>Talend Fitted T-Shirt</Name>
  <Description>Fitted T. ultra-fine combed ring spun cotton</Description>
  <Features>
    <Sizes/>
    <Colors/>
  </Features>
  <Availability>false</Availability>
  <Price>15.99</Price>
  <Family>[1]</Family>
  <OnlineStore>Talend Shop@@http://www.cafepress.com/Talend.231035936</OnlineStore>
  <Stores>
    <Store></Store>
  </Stores>
</Product>

Exemple de requête au format JSON

{
    "Product": {
        "Picture": "/imageserver/upload/TalendShop/tshirt.jpg",
        "Id": "231035936",
        "Name": "Talend Fitted T-Shirt",
        "Description": "Fitted T. ultra-fine combed ring spun cotton",
        "Features": {
            "Sizes": {},
            "Colors": {}
        },
        "Availability": "false",
        "Price": "15.99",
        "Family": "[1]",
        "OnlineStore": "Talend Shop@@http://www.cafepress.com/Talend.231035936",
        "Stores": {}
    }
}

Exemple d'en-têtes de réponse

{
  "pragma": "No-cache",
  "date": "Tue, 18 Dec 2018 02:35:36 GMT",
  "location": "231035936"
}

Mettre à jour un enregistrement

Met à jour un enregistrement de données en intégralité dans le conteneur de données spécifié. L'enregistrement sera fourni dans le contenu de requête au format XML ou JSON.

Si vous souhaitez conserver des valeurs existantes, utilisez plutôt l'opération de mise à jour partielle. Pour plus d'informations, consultez Mise à jour partielle d'un enregistrement.

Requête
PUT /services/rest/data/{containerName}

Le corps est une représentation XML ou JSON de l'enregistrement à mettre à jour. L'élément Id dans le corps de la requête détermine quel enregistrement sera mis à jour.

Paramètres
  • containerName : valeur String qui spécifie le nom du conteneur de données dans lequel vous souhaitez mettre à jour un enregistrement de données.
  • container : valeur String qui représente le type du conteneur de données. La valeur est MASTER (default) ou STAGING.
  • updateReport : valeur booléenne qui contrôle la création d'une entrée de journal (rapport de mise à jour). Par défaut, la valeur est true.
  • beforeSaving : valeur booléenne qui contrôle l'appel d'un processus Before Saving. Par défaut, la valeur est false. Si le paramètre beforeSaving est défini sur true, le paramètre updateReport doit également être défini sur true étant donné qu'une entrée de journal (rapport de mise à jour) est nécessaire pour appeler le processus Before Saving.
En-têtes
  • Content-Type : application/xml, text/xml ou application/json
    Remarque : Si la déclaration XML est incluse dans le contenu de la requête XML et que l'attribut d'encodage est utilisé, vous devez définir sa valeur à UTF-8.
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 200 OK : opération exécutée avec succès, l'intégralité de l'enregistrement de données est remplacé par l'entrée fournie.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage inexistant, un document XML invalide, un type de stockage invalide ou un identifiant d'enregistrement inexistant.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante, par exemple autorisation d'écriture manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs, par exemple le processus Before Saving retourne une erreur.
Limitation Cette API REST ne supporte pas la mise à jour des enregistrements pour l'entité Role dans le conteneur de données système PROVISIONING.

Exemple de requête au format XML

<Product>
  <Picture>/imageserver/upload/TalendShop/tshirt.jpg</Picture>
  <Id>231035936</Id>
  <Name>Talend Fitted T-Shirt</Name>
  <Description>Fitted T. ultra-fine combed ring spun cotton</Description>
  <Features>
    <Sizes/>
    <Colors/>
  </Features>
  <Availability>false</Availability>
  <Price>18</Price>
  <Family>[1]</Family>
  <OnlineStore>Talend Shop@@http://www.cafepress.com/Talend.231035936</OnlineStore>
  <Stores>
    <Store></Store>
  </Stores>
</Product>

Exemple de requête au format JSON

{
    "Product": {
        "Picture": "/imageserver/upload/TalendShop/tshirt.jpg",
        "Id": "231035936",
        "Name": "Talend Fitted T-Shirt",
        "Description": "Fitted T. ultra-fine combed ring spun cotton",
        "Features": {
            "Sizes": {},
            "Colors": {}
        },
        "Availability": "false",
        "Price": "18",
        "Family": "[1]",
        "OnlineStore": "Talend Shop@@http://www.cafepress.com/Talend.231035936",
        "Stores": {}
    }
}

Supprimer un conteneur

Supprime un conteneur Master ou Staging.
Requête
DELETE /services/rest/data/{containerName}
Paramètres
  • containerName : valeur String qui spécifie le nom du conteneur de données à supprimer.
  • drop : valeur booléenne qui détermine si toutes les données, comme l'index de texte intégral, seront supprimées.
En-têtes
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 204 NO CONTENT : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs, par exemple nom de stockage inexistant.

Mise à jour partielle d'un enregistrement

Vous pouvez mettre à jour partiellement un enregistrement de données dans le conteneur de données spécifié. L'enregistrement sera fourni dans le contenu de requête au format XML.
Requête
PATCH /services/rest/data/{containerName}

Le corps est une représentation XML de l'enregistrement à mettre à jour. L'élément Id dans le corps de la requête détermine quel enregistrement sera mis à jour.

Paramètres
  • containerName : valeur String qui spécifie le nom du conteneur de données dans lequel vous souhaitez mettre à jour partiellement un enregistrement de données.
  • container : valeur String qui représente le type du conteneur de données. La valeur est MASTER (default) ou STAGING.
  • updateReport : valeur booléenne qui contrôle la création d'une entrée de journal (rapport de mise à jour). Par défaut, la valeur est true.
  • pivot : valeur String qui représente le chemin XPath vers un élément multi-occurrences dans lequel des données doivent être ajoutées, remplacées ou supprimées dans l'élément de votre choix.
  • overwrite : valeur booléenne qui contrôle l'écrasement de la liste de valeurs existante pour un élément multi-occurrences au profit d'une nouvelle liste, ou l'ajout des nouvelles valeurs à la liste existante sans dédoublonnage. Par défaut, la valeur est true, ce qui signifie que la liste de valeurs existante sera remplacée par la nouvelle. Cette valeur n'est pas valide lorsque le paramètre delete est défini à true.
  • delete : valeur booléenne qui contrôle la suppression des valeurs correspondant aux valeurs d'entrée pour un élément multi-occurrences. Par défaut, la valeur est false.
  • key : valeur String qui représente le chemin XPath relatif au pivot et qui permet d'identifier un sous-élément de type complexe d'un élément multi-occurrences défini par le paramètre pivot. Si ce paramètre n'est pas spécifié, tous les sous-éléments de l'élément multi-occurrences ayant un XPath qui correspond à celui du sous-élément du flux XML d'entrée seront remplacés. Si plus d'un sous-élément correspond à la clé, le premier sera mis à jour. Si aucun sous-élément ne correspond à la clé, elle sera ajoutée à la fin.
  • position : valeur Integer qui représente l'emplacement des nouvelles valeurs ajoutées. Si ce paramètre n'est pas spécifié, les nouvelles valeurs seront ajoutées à la fin.
En-têtes
  • Content-Type : application/xml ou text/xml
    Remarque : Si la déclaration XML est incluse dans le contenu de la requête XML et que l'attribut d'encodage est utilisé, vous devez définir sa valeur à UTF-8.
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 200 OK : opération exécutée avec succès, l'enregistrement de données identifié par l'élément Id est mis à jour partiellement en fonction de l'entrée fournie.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage inexistant, un document XML invalide, un type de stockage invalide ou un identifiant d'enregistrement inexistant.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante, par exemple autorisation d'écriture manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.
Limitation Cette API REST ne supporte pas la mise à jour partielle des enregistrements pour l'entité Role dans le conteneur de données système PROVISIONING.

Exemple de requête

Supposons qu'il existe un enregistrement comme celui ci-dessous dans une entité Famille :

<Family>
    <Id>1</Id>
    <Name>Lee</Name>
    <Kids>
        <Kid>
            <Name>David</Name>
            <Age>10</Age>
            <Habits>
                <Habit>Basketball</Habit>
                <Habit>Tennis</Habit>
            </Habits>
        </Kid>
        <Kid>
            <Name>James</Name>
            <Age>8</Age>
        </Kid>
        <Kid>
            <Name>Kate</Name>
            <Age>6</Age>
        </Kid>
    </Kids>
</Family>

La valeur delete définie comme true, la valeur pivot définie comme Family/Kids/Kid, et la valeur clé définie comme /Name vont permettre à l'exemple de requête suivant de supprimer l'élément Kid aux occurences multiples identifié par James :

<Person>
    <Id>1</Id>
    <Kids>
        <Kid>
            <Name>James</Name>
        </Kid>
    </Kids>
</Person>

La valeur overwrite définie comme false, la valeur delete définie comme false, la valeur pivot définie comme Family/Kids/Kid[1]/Habits/Habit (Kid[1] indique le premier enfant), la valeur key non spécifiée ou définie comme . et la valeur position définie comme 2 vont permettre à l'exemple de requête suivant d'ajouter deux valeurs à l'élément Habit aux occurences multiples après </Habit>Basketball</Habit> pour le premier enfant :

<Person>
    <Id>1</Id>
    <Kids>
        <Kid>
            <Habits>
                <Habit>Football</Habit>
                <Habit>Table tennis</Habit>
            </Habits>
        </Kid>
    </Kids>
</Person>

Créer ou mettre à jour des enregistrements par lots

Crée ou met à jour par lots plusieurs enregistrements de données appartenant à une ou plusieurs entité(s) dans le conteneur de données spécifié. Les enregistrements seront fournis dans le contenu de requête au format XML ou JSON.

Remarque : L'identifiant que vous avez soumis sera utilisé pour créer l'enregistrement, même si celui-ci est configuré pour être automatiquement généré dans le modèle de données. Une opération de mise à jour sera exécutée si un enregistrement avec le même identifiant existe déjà dans MDM.

Vous pouvez également effectuer une mise à jour partielle de nombreux enregistrements appartenant à une entité en une opération de masse via l'API REST. Pour plus d'informations, consultez Mise à jour partielle de masse d'enregistrements de données MDM via l'API REST.

Requête
POST /services/rest/data/{containerName}/batch

Le corps est une représentation XML ou JSON de l'enregistrement ou des enregistrements à créer ou à mettre à jour. Les enregistrements sous forme de représentation XML doivent être entourés par une balise racine avec un nom arbitraire, records par exemple. Chaque enregistrement contient :

  • un ou plusieurs champ(s) de clé(s) primaire(s) avec valeur(s), obligatoires car il(s) sera(ont) utilisé(s) pour spécifier l'enregistrement à créer ou à mettre à jour. Si l'enregistrement n'existe pas dans le conteneur de données, il sera créé. Si l'enregistrement existe déjà dans le conteneur de données, il sera mis à jour ;
  • autres champs définis pour l'entité spécifiée, dans laquelle les champs obligatoires doivent être renseignés.
Paramètres
  • containerName : valeur String qui spécifie le nom du conteneur de données dans lequel vous souhaitez créer ou mettre à jour différents enregistrements de données.
  • container : valeur String qui représente le type du conteneur de données. La valeur est MASTER (default) ou STAGING.
  • updateReport : valeur booléenne qui contrôle la création d'une entrée de journal (rapport de mise à jour). Par défaut, la valeur est false.
  • beforeSaving : valeur booléenne qui contrôle l'appel d'un processus Before Saving. Par défaut, la valeur est false. Si le paramètre beforeSaving est défini sur true, le paramètre updateReport doit également être défini sur true étant donné qu'une entrée de journal (rapport de mise à jour) est nécessaire pour appeler le processus Before Saving.
En-têtes
  • Content-Type : application/xml, text/xml ou application/json
    Remarque : Si la déclaration XML est incluse dans le contenu de la requête XML et que l'attribut d'encodage est utilisé, vous devez définir sa valeur à UTF-8.
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 200 OK : opération exécutée avec succès.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage invalide, un type de stockage invalide ou un document XML invalide.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante, par exemple autorisation d'écriture manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs, par exemple le processus Before Saving retourne une erreur.
Limitation Cette API REST ne supporte pas la création et la mise à jour de différents enregistrements par lots pour l'entité Role dans le conteneur de données système PROVISIONING.

Exemple de requête au format XML

<records>
    <Store>
        <Id>100001</Id>
        <Address>Beijing APM</Address>
    </Store>
    <Store>
        <Id>100002</Id>
        <Address>Beijing Department Store</Address>
    </Store>
    <Product>
        <Picture>/imageserver/upload/TalendShop/dog.jpg</Picture>
        <Id>231035933</Id>
        <Name>Talend Dog T-Shirt</Name>
        <Description>Doggie t-shirt from American Apparel</Description>
        <Features>
            <Sizes>
                <Size>Small</Size>
                <Size>Medium</Size>
                <Size>Large</Size>
                <Size>X-Large</Size>
            </Sizes>
            <Colors>
                <Color>White</Color>
            </Colors>
        </Features>
        <Availability>false</Availability>
        <Price>16.99</Price>
        <Family>[3]</Family>
        <OnlineStore>Talend Shop@@http://www.cafepress.com/Talend.231035933</OnlineStore>
        <Stores>
            <Store>100001</Store>
            <Store>100002</Store>
        </Stores>
    </Product>
</records>

Exemple de requête au format JSON

[
    {
        "Store": {
            "Id": "100001",
            "Address": "Beijing APM"
        }
    },
    {
        "Store": {
            "Id": "100002",
            "Address": "Beijing Department Store"
        }
    },
    {
        "Product": {
            "Picture": "/imageserver/upload/TalendShop/dog.jpg",
            "Id": "231035933",
            "Name": "Talend Dog T-Shirt",
            "Description": "Doggie t-shirt from American Apparel",
            "Features": {
                "Sizes": {
                    "Size": [
                        "Small",
                        "Medium",
                        "Large",
                        "X-Large"
                    ]
                },
                "Colors": {"Color": "White"}
            },
            "Availability": "false",
            "Price": "16.99",
            "Family": "[3]",
            "OnlineStore": "Talend Shop@@http://www.cafepress.com/Talend.231035933",
            "Stores": {
                "Store": [
                    "100001",
                    "100002"
                ]
            }
        }
    }
]

Supprimer un enregistrement par requête

Supprime un ou plusieurs enregistrement(s) de données correspondant à la requête fournie. La requête est fournie dans le contenu demandé en JSON.
Requête
PUT /services/rest/data/{containerName}/delete

Le corps est un langage de requête au format JSON. Le type de contenu du paramètre est application/json.

Paramètres
  • containerName : valeur String qui spécifie le nom du conteneur de données dans lequel vous souhaitez supprimer un (des) enregistrement(s) de données.
  • container : valeur String qui représente le type du conteneur de données. La valeur est MASTER (default) ou STAGING.
  • updateReport : valeur booléenne qui contrôle la création d'une entrée de journal (rapport de mise à jour). Par défaut, la valeur est false.
  • logical : valeur booléenne qui contrôle la suppression d'enregistrements correspondant à la requête de manière logique. Par défaut, la valeur est false, ce qui implique que les enregistrements sont supprimés physiquement de la base de données et ne peuvent pas être récupérés depuis la Corbeille (Recycle Bin).
    Remarque : La suppression logique est supportée uniquement sur les enregistrements de données maître.
En-têtes
  • Content-Type : application/json
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 200 OK : opération exécutée avec succès, tous les enregistrements correspondant à la requête fournie sont supprimés.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage invalide, un type de stockage invalide ou un document XML invalide.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante, par exemple autorisation d'écriture manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.
Limitation Cette API REST ne supporte pas la suppression d'un enregistrement par requête pour l'entité Role du conteneur de données système PROVISIONING.

Exemple de requête

Pour supprimer les instances de ProductProduct/Price est supérieur à 18, utilisez la requête suivante :

{
   "select": {	
      "from": ["Product"],
      "where": {
         "gt":[
           {"field": "Product/Price"},
           {"value": "18"}
         ]
      }
   }
}

Obtenir des documents XML

Obtient plusieurs documents XML depuis la base de données.
Requête
POST /services/rest/data/{containerName}/documents

Le corps est un tableau d'ID uniques. Le type de contenu du paramètre est application/json.

Paramètres
  • containerName: valeur String qui spécifie le nom du conteneur de données dans lequel interroger l'enregistrement.
  • encoding : jeu de caractères de tous les paramètres de requête et valeurs par défaut de UTF-8.
En-têtes
  • Content-Type : application/json
  • Authorization : schéma d'authentification basique
  • Accept : application/xml
Réponse Tableau JSON contenant les documents des enregistrements.
Statut
  • 200 OK : opération de validation exécutée avec succès, peu importe le résultat de validation.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage invalide.
  • 403 FORBIDDEN : autorisation requise manquante, par exemple autorisation de lecture manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.
Limitation Cette API REST ne supporte pas l'obtention de documents XML pour l'entité Role dans le conteneur de données système PROVISIONING.

Exemple de requête

[
  "Product.Product.231035933",
  "Product.Product.231035934",
  "Product.Product.231035935"
]

Exemple de réponse

[
  	"<ii>
	  <c>Product</c>
	  <dmn>Product</dmn>
	  <dmr/>
	  <sp/>
	  <t>1531809768682</t>
	  <taskId>null</taskId>
	  <i>231035933</i>
	  <p>
		<Product>
		  <Id>231035933</Id>
		  <Name>Talend Dog T-Shirt</Name>
		  <Description>Doggie t-shirt from American Apparel</Description>
		  <Features>
			<Sizes>
			  <Size>Small</Size>
			  <Size>Medium</Size>
			  <Size>Large</Size>
			  <Size>X-Large</Size>
			</Sizes>
			<Colors>
			  <Color>White</Color>
			</Colors>
		  </Features>
		  <Availability>true</Availability>
		  <Price>16.99</Price>
		  <Family>[14]</Family>
		  <OnlineStore>Talend Shop@@http://www.cafepress.com/Talend.231035933</OnlineStore>
		  <Stores/>
		</Product>
	  </p>
	</ii>",
	"<ii>
	  <c>Product</c>
	  <dmn>Product</dmn>
	  <dmr/>
	  <sp/>
	  <t>1531809768659</t>
	  <taskId>null</taskId>
	  <i>231035934</i>
	  <p>
		<Product>
		  <Id>231035934</Id>
		  <Name>Talend Jr. Spaghetti Tank</Name>
		  <Description>Spaghetti tank from American Apparel</Description>
		  <Features>
			<Sizes>
			  <Size>Small</Size>
			  <Size>Medium</Size>
			  <Size>Large</Size>
			  <Size>X-Large</Size>
			</Sizes>
			<Colors>
			  <Color>White</Color>
			  <Color>Light Blue</Color>
			  <Color>Light Pink</Color>
			  <Color>Lemon</Color>
			</Colors>
		  </Features>
		  <Availability>true</Availability>
		  <Price>16.99</Price>
		  <Family>[8]</Family>
		  <OnlineStore>Talend Shop@@http://www.cafepress.com/Talend.231035934</OnlineStore>
		  <Stores/>
		</Product>
	  </p>
	</ii>",
	"<ii>
	  <c>Product</c>
	  <dmn>Product</dmn>
	  <dmr/>
	  <sp/>
	  <t>1531809767902</t>
	  <taskId>null</taskId>
	  <i>231035935</i>
	  <p>
		<Product>
		  <Id>231035935</Id>
		  <Name>Talend Golf Shirt</Name>
		  <Description>Golf-style, collared t-shirt</Description>
		  <Features>
			<Sizes>
			  <Size>Medium</Size>
			</Sizes>
			<Colors>
			  <Color>White</Color>
			</Colors>
		  </Features>
		  <Availability>false</Availability>
		  <Price>16.99</Price>
		  <Family>[8]</Family>
		  <OnlineStore>Talend Shop@@http://www.cafepress.com/Talend.231035935</OnlineStore>
		  <Stores/>
		</Product>
	  </p>
	</ii>"
]

Obtenir les ID uniques de tous les documents

Obtient les ID uniques de tous les documents en tant que tableaux.
Requête
GET /services/rest/data/{containerName}/documents/uniqueIds
Paramètres
  • containerName : valeur String qui spécifie le nom du conteneur de données duquel obtenir les ID uniques de tous les documents.
  • type : valeur String qui spécifie le nom de l'entité.
En-têtes
  • Authorization : schéma d'authentification basique
  • Accept : application/xml
Réponse Tableau JSON contenant toutes les clés primaires de l'entité du conteneur spécifié.
Statut
  • 200 OK : opération de requête exécutée avec succès, les identifiants uniques des documents de l'entité spécifiée sont retournés dans un tableau.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage invalide ou un type de stockage invalide.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante, par exemple autorisation de lecture manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.
Limitation Cette API REST ne supporte pas l'obtention des ID uniques de tous les documents de l'entité Role dans le conteneur de données système PROVISIONING.

Exemple de réponse

[
  "Product.Product.231035935",
  "Product.Product.231035941",
  "Product.Product.231035937",
  "Product.Product.231035938",
  "Product.Product.231035939",
  "Product.Product.231035940",
  "Product.Product.231035934",
  "Product.Product.231035936",
  "Product.Product.231035933"
]

Obtention d'une chaîne de caractères XML d'un document

Obtient une chaîne de caractères XML d'un document.
Requête
GET /services/rest/data/{containerName}/documents/{uniqueId}
Paramètres
  • containerName : valeur String qui spécifie le nom du conteneur de données dans lequel vous souhaitez obtenir une chaîne de caractères XML d'un document.
  • uniqueId : valeur String qui représente l'ID unique du document.
  • encoding : jeu de caractères de tous les paramètres de requête et valeurs par défaut de UTF-8.
En-têtes
  • Authorization : schéma d'authentification basique
  • Accept : application/json
Réponse Document de l'enregistrement du conteneur de données spécifié.
Statut
  • 200 OK : opération de requête exécutée avec succès, l'enregistrement correspondant à l'identifiant fourni sera retourné sous forme de chaîne de caractères.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage invalide ou un type de stockage invalide.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante, par exemple autorisation de lecture manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.
Limitation Cette API REST ne supporte pas l'obtention d'une chaîne de caractères XML d'un document dans l'entité Role du conteneur de données système PROVISIONING.

Exemple de réponse

<ii>
    <c>Product</c>
    <dmn>Product</dmn>
    <dmr/>
    <sp/>
    <t>1531728848296</t>
    <taskId>null</taskId>
    <i>1</i>
    <p>
        <Product>
            <Id>1</Id>
            <Name>New Name</Name>
            <Description>2</Description>
            <Features>
                <Sizes>
                    <Size>Small</Size>
                    <Size>Medium</Size>
                    <Size>Large</Size>
                </Sizes>
                <Colors>
                    <Color>White</Color>
                    <Color>Light Blue</Color>
                    <Color>Light Pink</Color>
                </Colors>
            </Features>
            <Availability>true</Availability>
            <Price>3.00</Price>
            <Stores>
            </Stores>
        </Product>
    </p>
</ii>

Obtenir les enregistrements à l'aide d'une requête

Obtient les enregistrements de données via le conteneur de données spécifié. La requête est fournie dans le contenu demandé en JSON.

Vous pouvez également récupérer un snapshot d'un enregistrement MDM spécifique et parcourir l'historique des enregistrements. Pour plus d'informations, consultez Machine MDM à remonter dans le temps.

Requête
PUT /services/rest/data/{containerName}/query

Le corps est un langage de requête au format JSON. Le type de contenu du paramètre est application/json.

Paramètres
  • containerName : valeur String qui spécifie le nom du conteneur de données dans lequel vous souhaitez lire des enregistrements de données.
  • container : valeur String qui représente le type du conteneur de données. La valeur est MASTER (default) ou STAGING.
  • ignoreCase : valeur booléenne qui contrôle le rejet du cas d'entité et des noms d'attributs dans la réponse JSON. Par défaut, la valeur est true, ce qui signifie que toutes les entités et tous les noms d'attributs dans la réponse JSON seront en minuscules.
En-têtes
  • Content-Type : application/json
  • Authorization : schéma d'authentification basique
  • Accept : application/xml ou application/json
Réponse Documents des enregistrements dans le conteneur spécifié.
Statut
  • 200 OK : opération exécutée avec succès.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage invalide ou un type de stockage invalide.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.
Limitation Cette API REST ne supporte pas l'obtention des enregistrements par requête pour l'entité Role du conteneur de données système PROVISIONING.

Exemple de requête

{
    "select": { 
        "from": ["Product"],
        "where": {
            "gt":[
                {"field": "Product/Price"},
                {"value": "16"}
            ]   
        }
    }
}

Exemple de réponse au format XML

<results>
   <Product>
      <Picture>/imageserver/upload/TalendShop/dog.jpg</Picture>
      <Id>231035933</Id>
      <Name>partialNameUpdate1</Name>
      <Description>partialDescriptionUpdate1</Description>
      <Features>
         <Sizes>
            <Size>Small</Size>
            <Size>Medium</Size>
            <Size>Large</Size>
            <Size>X-Large</Size>
         </Sizes>
         <Colors>
            <Color>White</Color>
         </Colors>
      </Features>
      <Availability>true</Availability>
      <Price>111.00</Price>
      <Family>[14]</Family>
      <OnlineStore>Talend Shop@@http://www.cafepress.com/Talend.231035933</OnlineStore>
      <Stores/>
   </Product>
   <Product>
      <Picture>/imageserver/upload/TalendShop/tshirt.jpg?width=150&height=90&preserveAspectRatio=true</Picture>
      <Id>231035935</Id>
      <Name>partialNameUpdate3</Name>
      <Description>partialDescriptionUpdate3</Description>
      <Features>
         <Sizes>
            <Size>Medium</Size>
         </Sizes>
         <Colors>
            <Color>White</Color>
         </Colors>
      </Features>
      <Availability>false</Availability>
      <Price>333.00</Price>
      <Family>[1]</Family>
      <OnlineStore>Talend Shop@@http://www.cafepress.com/Talend.231035936</OnlineStore>
      <Stores/>
   </Product>
</results>

Exemple de réponse au format JSON

[
  {
    "product": {
      "picture": "/imageserver/upload/TalendShop/dog.jpg",
      "id": "1",
      "name": "New Name",
      "description": "Doggie t-shirt from American Apparel",
      "features": {
        "sizes": {
          "size": [
            "Small",
            "Medium",
            "Large",
            "X-Large"
          ]
        },
        "colors": {
          "color": [
            "White"
          ]
        }
      },
      "availability": "true",
      "price": "16.99",
      "family": "[14]",
      "onlinestore": "Talend Shop@@http://www.cafepress.com/Talend.231035933",
      "stores": {}
    }
  },
  {
    "product": {
      "picture": "/imageserver/upload/TalendShop/dog.jpg",
      "id": "231035933",
      "name": "Talend Dog T-Shirt",
      "description": "Doggie t-shirt from American Apparel",
      "features": {
        "sizes": {
          "size": [
            "Small",
            "Medium",
            "Large",
            "X-Large"
          ]
        },
        "colors": {
          "color": [
            "White"
          ]
        }
      },
      "availability": "true",
      "price": "16.99",
      "family": "[14]",
      "onlinestore": "Talend Shop@@http://www.cafepress.com/Talend.231035933",
      "stores": {}
    }
  },
  {
    "product": {
      "picture": "/imageserver/upload/TalendShop/spaghetti.jpg",
      "id": "231035934",
      "name": "Talend Jr. Spaghetti Tank",
      "description": "Spaghetti tank from American Apparel",
      "features": {
        "sizes": {
          "size": [
            "Small",
            "Medium",
            "Large",
            "X-Large"
          ]
        },
        "colors": {
          "color": [
            "White",
            "Light Blue",
            "Light Pink",
            "Lemon"
          ]
        }
      },
      "availability": "true",
      "price": "16.99",
      "family": "[8]",
      "onlinestore": "Talend Shop@@http://www.cafepress.com/Talend.231035934",
      "stores": {}
    }
  }
]

Valider des enregistrements dans un conteneur

Valide des enregistrements dans le conteneur spécifié. Les enregistrements seront fournis dans le contenu de requête au format XML.

Vous pouvez également valider des enregistrements de données MDM via l'API REST à l'aide d'un Job. Pour plus d'informations, consultez Valider des enregistrements de données par rapport au stockage maître via l'API REST.

Request
POST /services/rest/data/{containerName}/validate

Le corps est une représentation XML d'un ou plusieurs enregistrement(s) à valider, pouvant être entouré d'une balise racine avec un nom arbitraire, records par exemple.

Paramètres
  • containerName : valeur String qui représente le nom du conteneur dans lequel les enregistrements seront validés.

  • container : valeur String qui représente le type du conteneur de données. La valeur est MASTER (default) ou STAGING.
  • beforeSaving : valeur booléenne qui contrôle l'appel d'un processus Before Saving associé à l'enregistrement (aux enregistrements) au cours de la validation. Par défaut, la valeur est true. L'opération de validation des données constitue une action immuable et vous pouvez désactiver la vérification par rapport au processus Before Saving, qui dans certains cas peut modifier les données.

  • returnSource : valeur booléenne qui indique s'il faut inclure les enregistrements envoyés dans la réponse. Par défaut, la valeur est false.

En-têtes
  • Content-Type : application/xml ou text/xml
    Remarque : Si la déclaration XML est incluse dans le contenu de la requête XML et que l'attribut d'encodage est utilisé, vous devez définir sa valeur à UTF-8.
  • Authorization : schéma d'authentification basique
  • Accept : application/xml ou application/json
Réponse La liste des résultats de validation pour chaque enregistrement au format JSON comprend le statut de validité, un message de la règle de validation ou du processus Before Saving, ou un message vide et, facultativement, l'enregistrement d'entrée, comme un écho.
Statut
  • 200 OK : opération de validation exécutée avec succès, peu importe le résultat de validation.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage invalide ou un document XML invalide.
  • 403 FORBIDDEN : autorisation requise manquante, par exemple autorisation d'écriture manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple type de stockage invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.
Limitation L'API REST ne supporte pas la validation des enregistrements pour les entités suivantes :
  • l'entité User du conteneur de données système PROVISIONING,
  • l'entité Role du conteneur de données système PROVISIONING,
  • l'entité Conf du conteneur de données système CONF,
  • l'entité AutoIncrement du conteneur de données système CONF,
  • l'entité BrowseItem du conteneur de données système SearchTemplate et,
  • l'entité HierarchySearchItem du conteneur de données système SearchTemplate.

Exemple de requête

<records> 
    <ProductFamily> 
        <Name>Literature</Name> 
        <Status>Approved</Status> 
    </ProductFamily> 
    <ProductFamily> 
        <Name>Comics</Name> 
        <Status>Unknown</Status> 
    </ProductFamily> 
</records>

Exemple de réponse au format XML

<results>
   <result>
      <isValid>false</isValid>
      <message><msg>[EN:Validation faild]</msg></message>
      <sourceXml>
         <ProductFamily>
            <Name>Literature</Name>
            <Status>Approved</Status>
         </ProductFamily>
      </sourceXml>
   </result>
   <result>
      <isValid>false</isValid>
      <message></message>
      <sourceXml>
         <ProductFamily>
            <Name>Comics</Name>
            <Status>Unknown</Status>
         </ProductFamily>
      </sourceXml>
   </result>
</results>

Exemple de réponse au format JSON

[
  {
    "isValid": false,
    "message": "<msg>[EN:Validation faild]</msg>\n",
    "sourceXml": "<ProductFamily><Name>Literature</Name><Status>Approved</Status></ProductFamily>"
  },
  {
    "isValid": true,
    "message": "",
    "sourceXml": "<ProductFamily><Name>Comics</Name><Status>Unknown</Status></ProductFamily>"
  }
]

Lister les clés primaires pour le conteneur et le type

Liste toutes les clés primaires pour le conteneur et le type.
Requête
GET /services/rest/data/{containerName}/{type}
Paramètres
  • container : valeur String qui représente le type du conteneur de données. La valeur est MASTER (default) ou STAGING.
  • containerName : valeur String qui représente le nom du conteneur.
  • type : valeur String qui spécifie le nom de l'entité.
En-têtes
  • Authorization : schéma d'authentification basique
  • Accept : application/xml
Réponse Retourne le tableau JSON contenant toutes les clés primaires de l'entité du conteneur.
Statut
  • 200 OK : opération exécutée avec succès.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage invalide ou un type de stockage invalide.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante, par exemple autorisation de lecture manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.
Limitation Cette API REST ne supporte pas la liste des clés primaires pour l'entité Role du conteneur de données système PROVISIONING.

Exemple de réponse

[
  {
    "$explicitprojection$": {
      "id": "231035933"
    }
  },
  {
    "$explicitprojection$": {
      "id": "231035934"
    }
  },
  {
    "$explicitprojection$": {
      "id": "231035935"
    }
  },
  {
    "$explicitprojection$": {
      "id": "231035936"
    }
  },
  {
    "$explicitprojection$": {
      "id": "231035937"
    }
  }
]

Mettre partiellement à jour les enregistrements en une opération de masse

Effectuez une mise à jour partielle des enregistrements en une opération de masse. Les enregistrements seront fournis dans le contenu de requête au format XML ou JSON.
Requête
PATCH /services/rest/data/{containerName}/{type}/bulk
Paramètres
  • containerName : valeur String qui spécifie le nom du conteneur de données dans lequel vous souhaitez mettre à jour partiellement des enregistrements en une opération de masse.
  • type : valeur String qui spécifie le nom de l'entité.
  • container : valeur String qui représente le type du conteneur de données. La valeur est MASTER (default) ou STAGING.
  • updateReport : valeur booléenne qui contrôle la création d'une entrée de journal (rapport de mise à jour). Par défaut, la valeur est true.
En-têtes
  • Content-Type : application/xml, text/xml ou application/json
    Remarque : Si la déclaration XML est incluse dans le contenu de la requête XML et que l'attribut d'encodage est utilisé, vous devez définir sa valeur à UTF-8.
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 200 OK : opération exécutée avec succès.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage invalide, un type de stockage invalide ou un document XML invalide.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante, par exemple autorisation d'écriture manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.
Limitation Cette API REST ne supporte pas la mise à jour partielle d'enregistrements en une opération de masse pour l'entité Role dans le conteneur de données système PROVISIONING.

Exemple de requête au format XML

<records>
    <Product>
        <Id>231035933</Id>
        <Name>PartialNameUpdate1</Name>
        <Price>111</Price>
        <Stores>
            <Store>[100001]</Store>
        </Stores>
    </Product>
    <Product>
        <Id>231035934</Id>
        <Name>PartialNameUpdate2</Name>
        <Price>222</Price>
        <Family>[2]</Family>
    </Product>
</records>

Exemple de requête au format JSON (1)

[
    {
        "Product": {
            "Id": "231035933",
            "Name": "PartialNameUpdate1",
            "Price": "111",            
            "Stores": {
                "Store": ["100001"]
            }
        }
    },
    {
        "Product": {
            "Id": "231035934",
            "Name": "PartialNameUpdate2",
            "Price": "222",
            "Family": "[2]"
        }
    }
]

Exemple de requête au format JSON (2)

{
    "records": {
        "Product": [
            {
                "Id": "231035933",
                "Name": "PartialNameUpdate1",
                "Price": "111",
                "Stores": {
                    "Store": ["100001"]
                }
            },
            {
                "Id": "231035934",
                "Name": "PartialNameUpdate2",
                "Price": "222",
                "Family": "[2]"
            }
        ]
    }
}

Pour plus d'exemples concernant cette API REST, consultez Mise à jour partielle de masse d'enregistrements de données MDM via l'API REST.

Obtenir un enregistrement de données par ID

Obtient un enregistrement de données par ID.
Requête
GET /services/rest/data/{containerName}/{type}/{id}
Paramètres
  • containerName : valeur String qui représente le nom du conteneur dans lequel interroger l'enregistrement.
  • container : valeur String qui représente le type du conteneur de données. La valeur est MASTER (default) ou STAGING.
  • type : valeur String qui spécifie le nom de l'entité.
  • id : valeur String spécifiant l'ID de l'enregistrement.
  • datetime : valeur String qui spécifie la date à laquelle l'enregistrement à récupérer a été mis à jour. La date peut être fournie en tant que nombre de millisecondes depuis EPOCH ou en tant que date formatée XML.
  • swing : contrôle la manière dont sont interprétées la date et l'heure CLOSEST, AFTER, ou BEFORE.
  • ignoreCase : valeur booléenne qui contrôle le rejet du cas d'entité et des noms d'attributs dans la réponse JSON. Par défaut, la valeur est true, ce qui signifie que toutes les entités et tous les noms d'attributs dans la réponse JSON seront en minuscules.
En-têtes
  • Authorization : schéma d'authentification basique
  • Accept : application/xml
Réponse Contenu de l'enregistrement an format JSON array.
Statut
  • 200 OK : opération exécutée avec succès.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage invalide.
  • 403 FORBIDDEN : autorisation requise manquante, par exemple autorisation de lecture manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.
Limitation Cette API REST ne supporte pas l'obtention d'un enregistrement par ID pour l'entité Role du conteneur de données système PROVISIONING.

Exemple de réponse

[
  {
    "product": {
      "picture": "/imageserver/upload/TalendShop/dog.jpg",
      "id": "231035933",
      "name": "Talend Dog T-Shirt",
      "description": "Doggie t-shirt from American Apparel",
      "features": {
        "sizes": {
          "size": [
            "Small",
            "Medium",
            "Large",
            "X-Large"
          ]
        },
        "colors": {
          "color": [
            "White"
          ]
        }
      },
      "availability": "false",
      "price": "16.99",
      "family": "[10]",
      "onlinestore": "Talend Shop@@http://www.cafepress.com/Talend.231035933",
      "stores": {}
    }
  }
]

Supprimer un enregistrement par ID

Supprime un enregistrement de données par ID spécifié.
Requête
DELETE /services/rest/data/{containerName}/{type}/{id}
Paramètres
  • containerName : valeur String qui spécifie le nom du conteneur de données dans lequel vous souhaitez supprimer un enregistrement de données.
  • container : valeur String qui représente le type du conteneur de données. La valeur est MASTER (default) ou STAGING.
  • type : valeur String qui spécifie le nom de l'entité dans laquelle vous souhaitez supprimer un enregistrement de données.
  • id : ID de l'enregistrement de données à supprimer. Pour des ID composés, utilisez le point comme séparateur. Par exemple, pour supprimer une instance Address ayant pour 1 dans le conteneur de données Customer, utilisez http://localhost:8180/talendmdm/services/rest/data/Customer/Address/1. Pour supprimer une instance Address ayant pour ID 1 et 2, utilisez http://localhost:8180/talendmdm/services/rest/data/Customer/Address/1.2.
  • updateReport : valeur booléenne qui contrôle la création d'une entrée de journal (rapport de mise à jour). Par défaut, la valeur est true.
  • logical : valeur booléenne qui contrôle la suppression d'un enregistrement de manière logique. Par défaut, la valeur est false, ce qui implique que l'enregistrement est supprimé physiquement de la base de données et ne peut pas être récupéré depuis la Corbeille (Recycle Bin).
    Remarque : La suppression logique est supportée uniquement sur les enregistrements de données maître.
En-têtes
  • Content-Type : application/json
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 200 OK : opération exécutée avec succès, l'enregistrement de données spécifié par l'élément Id sera supprimé.
  • 400 BAD REQUEST : la requête contient un paramètre invalide, par exemple un nom de stockage invalide ou un nom d'entité invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple URL de service invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.
Limitation Cette API REST ne supporte pas la suppression d'un enregistrement par ID pour l'entité Role du conteneur de données système PROVISIONING.

Administration

Obtenir le nom de tous les conteneurs

Obtient le nom de tous les conteneurs, dont les conteneurs système et les conteneurs de données déployés.

Remarque : Seuls les utilisateurs de type Super Admin ayant le rôle administrateur ont accès à cette API. Pour plus d'informations concernant les types d'utilisateur MDM, consultez la description associée dans le Guide utilisateur de Talend Administration Center.
Requête
GET /services/rest/system/containers
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Tableau JSON contenant le nom de tous les conteneurs.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

[
  "amaltoOBJECTSRole",
  "amaltoOBJECTSView",
  "amaltoOBJECTSDataModel",
  "UpdateReport",
  "Product"  
]

Créer un conteneur de données

Crée un conteneur de données avec le nom du conteneur de données spécifié.

Remarque : Seuls les utilisateurs de type Super Admin ayant le rôle administrateur ont accès à cette API. Pour plus d'informations concernant les types d'utilisateur MDM, consultez la description associée dans le Guide utilisateur de Talend Administration Center.
Requête
POST /services/rest/system/containers
Paramètres
  • containerName : valeur String qui spécifie le nom du conteneur de données à créer.
En-têtes
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 204 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Vérifier si un conteneur contient une Staging Area

Vérifie si un système spécifié ou un conteneur de données est configuré avec le stockage staging.

Remarque : Seuls les utilisateurs de type Super Admin ayant le rôle administrateur ont accès à cette API. Pour plus d'informations concernant les types d'utilisateur MDM, consultez la description associée dans le Guide utilisateur de Talend Administration Center.
Requête
GET /services/rest/system/containers/{containerName}/hasStaging
Paramètres
  • containerName : valeur String qui représente le nom du conteneur à vérifier.
En-têtes
  • Authorization : schéma d'authentification basique
Réponse Retourne true si le conteneur spécifié est configuré avec le stockage staging, ou false s'il ne l'est pas.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Vérifier l'existence d'un conteneur

Vérifie l'existence d'un système spécifié ou d'un conteneur.

Remarque : Seuls les utilisateurs de type Super Admin ayant le rôle administrateur ont accès à cette API. Pour plus d'informations concernant les types d'utilisateur MDM, consultez la description associée dans le Guide utilisateur de Talend Administration Center.
Requête
GET /services/rest/system/containers/{containerName}/isExisting
Paramètres
  • containerName : valeur String qui représente le nom du conteneur.
En-têtes
  • Authorization : schéma d'authentification basique
Réponse Retourne true si le conteneur spécifié existe, ou false s'il n'existe pas.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Créer un modèle de données

Crée un modèle de données avec un nom défini et son contenu fournit par un corps de requête en schéma XML.

Remarque : Seuls les utilisateurs de type Super Admin ayant le rôle administrateur ont accès à cette API. Pour plus d'informations concernant les types d'utilisateur MDM, consultez la description associée dans le Guide utilisateur de Talend Administration Center.
Requête
POST /services/rest/system/models
Paramètres
  • name : valeur String qui spécifie le nom du modèle de données à créer.
En-têtes
  • Content-Type : application/xml ou text/xml
    Remarque : Si la déclaration XML est incluse dans le contenu de la requête XML et que l'attribut d'encodage est utilisé, vous devez définir sa valeur à UTF-8.
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de requête

L'exemple de schéma XML va créer un modèle de données avec deux entités Employee et Team.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:import namespace="http://www.w3.org/2001/XMLSchema"/>
    <xsd:element name="Employee">
        <xsd:annotation>
            <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
            <xsd:appinfo source="X_Write">Company_User</xsd:appinfo>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:all>
                <xsd:element maxOccurs="1" minOccurs="1" name="Id" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                        <xsd:appinfo source="X_Write">Company_User</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element maxOccurs="1" minOccurs="1" name="Name" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                        <xsd:appinfo source="X_Write">Company_User</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element maxOccurs="1" minOccurs="1" name="Team" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_ForeignKey">Team/Id</xsd:appinfo>
                        <xsd:appinfo source="X_ForeignKey_NotSep">true</xsd:appinfo>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                        <xsd:appinfo source="X_Write">Company_User</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
            </xsd:all>
        </xsd:complexType>
        <xsd:unique name="Employee">
            <xsd:selector xpath="."/>
            <xsd:field xpath="Id"/>
        </xsd:unique>
    </xsd:element>
    <xsd:element name="Team">
        <xsd:annotation>
            <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:all>
                <xsd:element maxOccurs="1" minOccurs="1" name="Id" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element maxOccurs="1" minOccurs="1" name="Name" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
            </xsd:all>
        </xsd:complexType>
        <xsd:unique name="Team">
            <xsd:selector xpath="."/>
            <xsd:field xpath="Id"/>
        </xsd:unique>
    </xsd:element>
</xsd:schema>

Obtenir les paramètres d'une entité par son nom

Obtient les paramètres d'une entité par son nom, dont l'ID (nom) du modèle de données dans lequel l'entité est créée.

Remarque : Seuls les utilisateurs de type Super Admin ayant le rôle administrateur ont accès à cette API. Pour plus d'informations concernant les types d'utilisateur MDM, consultez la description associée dans le Guide utilisateur de Talend Administration Center.
Requête
GET /services/rest/system/models/entities/{entityName}
Paramètres
  • entityName : valeur String qui spécifie le nom de l'entité.
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Paramètres de l'entité au format JSON.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple nom d'entité invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

{
  "dataModelId": "Product",
  "entity": "Product"
}

Obtenir le schéma XML d'un modèle de données

Obtient le schéma XML d'un modèle de données par son nom.

Remarque : Seuls les utilisateurs de type Super Admin ayant le rôle administrateur ont accès à cette API. Pour plus d'informations concernant les types d'utilisateur MDM, consultez la description associée dans le Guide utilisateur de Talend Administration Center.
Requête
GET /services/rest/system/models/{model}
Paramètres
  • model : valeur String qui représente le nom du modèle de données dont vous souhaitez obtenir le schéma XML.
En-têtes
  • Accept : application/json
  • Authorization : schéma d'authentification basique
Réponse Schéma XML du modèle de données spécifié.
Statut
  • 200 OK : opération exécutée avec succès.
  • 400 BAD REQUEST : la requête contient un paramètre invalide.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple nom de modèle de données invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs, par exemple schéma incorrect.

Exemple de réponse

L'exemple suivant montre le schéma XML d'un modèle de données Company, avec deux entités Employee et Team.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:import namespace="http://www.w3.org/2001/XMLSchema"/>
    <xsd:element name="Employee">
        <xsd:annotation>
            <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
            <xsd:appinfo source="X_Write">Company_User</xsd:appinfo>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:all>
                <xsd:element maxOccurs="1" minOccurs="1" name="Id" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                        <xsd:appinfo source="X_Write">Company_User</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element maxOccurs="1" minOccurs="1" name="Name" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                        <xsd:appinfo source="X_Write">Company_User</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element maxOccurs="1" minOccurs="1" name="Team" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_ForeignKey">Team/Id</xsd:appinfo>
                        <xsd:appinfo source="X_ForeignKey_NotSep">true</xsd:appinfo>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                        <xsd:appinfo source="X_Write">Company_User</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
            </xsd:all>
        </xsd:complexType>
        <xsd:unique name="Employee">
            <xsd:selector xpath="."/>
            <xsd:field xpath="Id"/>
        </xsd:unique>
    </xsd:element>
    <xsd:element name="Team">
        <xsd:annotation>
            <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:all>
                <xsd:element maxOccurs="1" minOccurs="1" name="Id" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element maxOccurs="1" minOccurs="1" name="Name" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
            </xsd:all>
        </xsd:complexType>
        <xsd:unique name="Team">
            <xsd:selector xpath="."/>
            <xsd:field xpath="Id"/>
        </xsd:unique>
    </xsd:element>
</xsd:schema>

Lister les éventuelles incidences des modifications sur un modèle de données

Liste les éventuelles incidences des modifications sur un modèle de données existant, en fournissant une autre version du schéma XML de ce modèle de données dans la requête. En exécutant cet appel, aucune modification ne sera appliquée au modèle de données existant.

Pour plus d'informations concernant le niveau d'incidence des modifications sur un modèle de données, consultez Modifications du modèle de données et leurs niveaux d'impact.

Remarque : Seuls les utilisateurs de type Super Admin ayant le rôle administrateur ont accès à cette API. Pour plus d'informations concernant les types d'utilisateur MDM, consultez la description associée dans le Guide utilisateur de Talend Administration Center.
Requête
POST /services/rest/system/models/{model}
Paramètres
  • model : valeur String qui représente le nom du modèle de données pour lequel vous souhaitez lister les éventuelles incidences des modifications.
  • lang (optionnel) : valeur String du code de langue qui spécifie la langue dans laquelle la description des incidences des modifications sera retournée, par exemple en pour l'anglais. Si ce paramètre n'est pas spécifié, la description des incidences des modifications sera retournée en anglais.
En-têtes
  • Content-Type : application/xml ou text/xml
    Remarque : Si la déclaration XML est incluse dans le contenu de la requête XML et que l'attribut d'encodage est utilisé, vous devez définir sa valeur à UTF-8.
  • Authorization : schéma d'authentification basique
Réponse La description des éventuelles incidences des modifications sur un modèle de données au format XML.
Statut
  • 200 OK : opération exécutée avec succès.
  • 400 BAD REQUEST : la requête contient un paramètre invalide.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple nom de modèle de données invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs, par exemple schéma incorrect.

Exemple de réponse

L'exemple suivant montre les éventuelles incidences des modifications sur le modèle de données Company dans Obtenir le schéma XML d'un modèle de données, en fournissant une autre version de son schéma XML décrit dans Mettre à jour un modèle de données avec XSD.

<result>
    <high>
        <change>
            <message>Element 'Gender' was added.</message>
        </change>
    </high>
    <medium/>
    <low/>
    <entitiesToDrop>
        <entity>Employee</entity>
    </entitiesToDrop>
</result>

Mettre à jour un modèle de données avec XSD

Mise à jour d'un modèle de données avec le XSD (XML Schema Definition) fourni dans le contenu demandé en XML.

Remarque : Seuls les utilisateurs de type Super Admin ayant le rôle administrateur ont accès à cette API. Pour plus d'informations concernant les types d'utilisateur MDM, consultez la description associée dans le Guide utilisateur de Talend Administration Center.
Requête
PUT /services/rest/system/models/{model}
Paramètres
  • model : valeur String qui représente le nom du modèle de données avec le schéma XML que vous souhaitez mettre à jour.
  • force : valeur Boolean qui contrôle la mise à jour du modèle de données avec le nouveau XSD lorsque les modifications ont un impact moyen (Medium) ou élevé (High). Elle est, par défaut, false, ce qui signifie que le modèle de données ne sera pas mis à jour lorsque les modifications ont un impact moyen ou élevé.
En-têtes
  • Content-Type : application/xml ou text/xml
    Remarque : Si la déclaration XML est incluse dans le contenu de la requête XML et que l'attribut d'encodage est utilisé, vous devez définir sa valeur à UTF-8.
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple nom de modèle de données invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs, par exemple schéma incorrect.

Exemple de requête

L'échantillon suivant met à jour le modèle de données Company dans Obtenir le schéma XML d'un modèle de données en ajoutant un nouvel élément obligatoire Gender dans l'entité Employee.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:import namespace="http://www.w3.org/2001/XMLSchema"/>
    <xsd:element name="Employee">
        <xsd:annotation>
            <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
            <xsd:appinfo source="X_Write">Company_User</xsd:appinfo>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:all>
                <xsd:element maxOccurs="1" minOccurs="1" name="Id" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                        <xsd:appinfo source="X_Write">Company_User</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element maxOccurs="1" minOccurs="1" name="Name" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                        <xsd:appinfo source="X_Write">Company_User</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element maxOccurs="1" minOccurs="1" name="Gender" type="xsd:string"> 
                    <xsd:annotation> 
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>  
                        <xsd:appinfo source="X_Write">Company_User</xsd:appinfo> 
                    </xsd:annotation> 
                </xsd:element> 
                <xsd:element maxOccurs="1" minOccurs="1" name="Team" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_ForeignKey">Team/Id</xsd:appinfo>
                        <xsd:appinfo source="X_ForeignKey_NotSep">true</xsd:appinfo>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                        <xsd:appinfo source="X_Write">Company_User</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
            </xsd:all>
        </xsd:complexType>
        <xsd:unique name="Employee">
            <xsd:selector xpath="."/>
            <xsd:field xpath="Id"/>
        </xsd:unique>
    </xsd:element>
    <xsd:element name="Team">
        <xsd:annotation>
            <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:all>
                <xsd:element maxOccurs="1" minOccurs="1" name="Id" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element maxOccurs="1" minOccurs="1" name="Name" type="xsd:string">
                    <xsd:annotation>
                        <xsd:appinfo source="X_Write">Company_Manager</xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
            </xsd:all>
        </xsd:complexType>
        <xsd:unique name="Team">
            <xsd:selector xpath="."/>
            <xsd:field xpath="Id"/>
        </xsd:unique>
    </xsd:element>
</xsd:schema>

Nettoyer les informations en cache de l'authentification classique

Nettoie les informations en cache de l'authentification classique.

Remarque : Seuls les utilisateurs de type Super Admin ayant le rôle administrateur ont accès à cette API. Pour plus d'informations concernant les types d'utilisateur MDM, consultez la description associée dans le Guide utilisateur de Talend Administration Center.
Requête
DELETE /services/rest/system/security/authentication/cache
En-têtes
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Obtenir une liste de toutes les vues

Obtient une liste de toutes les vues Web Filter correspondant aux modèles de données déployés, y compris le nom, la description, l'ID du modèle de données (nom) pour chaque vue, ainsi que les rôles autorisés pour accéder à chaque vue.

Remarque : Seuls les utilisateurs de type Super Admin ayant le rôle administrateur ont accès à cette API. Pour plus d'informations concernant les types d'utilisateur MDM, consultez la description associée dans le Guide utilisateur de Talend Administration Center.
Requête
GET /services/rest/system/views
Paramètres
  • lang (optionnel) : valeur String du code de langue qui spécifie la langue dans laquelle la description de la vue sera retournée, par exemple, en pour l'anglais. Si ce paramètre n'est pas spécifié ou que la description n'existe pas dans la langue spécifiée, toutes les descriptions définies seront retournées.
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Tableau JSON contenant une liste de toutes les vues Web Filter correspondant aux modèles de données déployés.
Statut
  • 200 OK : opération exécutée avec succès.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

[
  {
    "name": "Browse_items_Product",
    "description": "[EN:Product][FR:Produit][ZH:产品]",
    "dataModelId": "Product",
    "roles": [
      "Demo_Manager",
      "Demo_User"
    ]
  },
  {
    "name": "Browse_items_Product#Stores",
    "description": "[FR:Produit avec Magasins][EN:Product with Stores]",
    "dataModelId": "Product",
    "roles": [
      "Demo_Manager",
      "Demo_User"
    ]
  },
  {
    "name": "Browse_items_ProductFamily",
    "description": "[FR:Famille Produit][EN:Product Family]",
    "dataModelId": "Product",
    "roles": [
      "Demo_Manager",
      "Demo_User"
    ]
  },
  {
    "name": "Browse_items_Product#Unavailable",
    "description": "[EN:Unavailable Products][FR:Produits non disponible]",
    "dataModelId": "Product",
    "roles": [
      "Demo_Manager",
      "Demo_User"
    ]
  },
  {
    "name": "Browse_items_Store",
    "description": "[EN:Store][FR:Magasin]",
    "dataModelId": "Product",
    "roles": [
      "Demo_Manager",
      "Demo_User"
    ]
  },
  {
    "name": "Browse_items_Product#AndFamily",
    "description": "[EN:Product with Family][FR:Produit avec famille]",
    "dataModelId": "Product",
    "roles": [
      "Demo_Manager",
      "Demo_User"
    ]
  }
]

Obtenir les paramètres d'une vue par son nom

Obtient les paramètres d'une vue par son nom spécifié, dont la description, l'ID du modèle de données (nom), les éléments métier visibles, les éléments métier recherchables, etc.

Remarque : Seuls les utilisateurs de type Super Admin ayant le rôle administrateur ont accès à cette API. Pour plus d'informations concernant les types d'utilisateur MDM, consultez la description associée dans le Guide utilisateur de Talend Administration Center.
Requête
GET /services/rest/system/views/{viewName}
Paramètres
  • viewName : valeur String qui spécifie le nom de la vue.
  • lang (optionnel) : valeur String du code de langue qui spécifie la langue dans laquelle la description de la vue sera retournée, par exemple, en pour l'anglais. Si ce paramètre n'est pas spécifié ou que la description n'existe pas dans la langue spécifiée, toutes les descriptions définies seront retournées.
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Paramètres de la vue au format JSON.
Statut
  • 200 OK : opération exécutée avec succès.
  • 400 BAD REQUEST : la requête contient un paramètre invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 404 NOT FOUND : la ressource n'existe pas, par exemple identifiant de vue invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

{
  "name": "Browse_items_Product#Stores",
  "description": "[FR:Produit avec Magasins][EN:Product with Stores]",
  "dataModelId": "Product",
  "sortField": "",
  "isAsc": false,
  "isTransformerActive": false,
  "customForm": "",
  "viewableBusinessElements": [
    "Product/Id",
    "Product/Name",
    "Product/Description",
    "Product/Availability",
    "Product/Price",
    "Product/Family",
    "Store/Address"
  ],
  "searchableBusinessElements": [
    "Product",
    "Product/Id",
    "Product/Name",
    "Product/Description",
    "Product/Price",
    "Product/Family",
    "Store/Address"
  ],
  "whereConditions": [
    {
      "leftPath": "Product/Stores/Store",
      "operator": "JOINS",
      "rightValueOrPath": "Store/Id",
      "spellCheck": "false",
      "stringPredicate": "NONE"
    }
  ]
}

Statistics

Obtenir des statistiques de données

Obtient des statistiques d'enregistrements des données maître dans un conteneur, dont le nombre d'enregistrements et le pourcentages d'enregistrements par entité.
Requête
GET /services/rest/system/stats/data/{container}
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • lang (optionnel) : valeur String du code de langue qui spécifie la langue dans laquelle le libellé de chaque entité sera retourné, par exemple, en pour l'anglais. Si ce paramètre n'est pas spécifié ou que le libellé n'existe pas dans la langue spécifiée, le nom de l'entité sera retourné.
  • top (optionnel) : valeur Integer qui limite les données statistiques aux N entités les plus élevées.
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Une réponse JSON avec les statistiques des enregistrements des données maître dans un conteneur donné.
Statut
  • 200 OK : opération exécutée avec succès.
  • 204 QUERY FAILS : informations de configuration manquantes.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 404 NOT FOUND : la ressource n'existe pas.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

{
    "data": [
        {
            "Product": [
                {"count": 9},
                {"percentage": "60"}
            ]
        },
        {
            "Product Family": [
                {"count": 4},
                {"percentage": "26.67"}
            ]
        },
        {
            "Store": [
                {"count": 2},
                {"percentage": "13.33"}
            ]
        }
    ]
}

Obtenir des statistiques d'événements

Obtient le nombre d'appels avec ou sans succès de chaque déclencheur, groupés par statut.
Requête
GET /services/rest/system/stats/events
Paramètres
  • timeframe (optionnel) : valeur Integer qui limite les données statistiques aux appels effectués au cours des dernières N secondes.
  • top (optionnel) : valeur Integer qui limite les données statistiques aux N triggers les plus élevés.
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Une réponse JSON qui contient des statistiques d'événements comme le nombre d'appels avec ou sans succès de chaque déclencheur.
Statut
  • 200 OK : opération exécutée avec succès.
  • 204 QUERY FAILS : informations de configuration manquantes.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 404 NO CONTENT : la requête contient un paramètre invalide.

Exemple de réponse

{
    "events": [
        {
            "failed": [
                {"GoogleMap": 0},
                {"CompleteStoreURLOnCreate": 0},
                {"SynchronizeOnUpdate": 0},
                {"CheckAvailabilityOnCreate": 0}
            ]
        },
        {
            "completed": [
                {"SynchronizeOnUpdate": 5},
                {"GoogleMap": 2},
                {"CompleteStoreURLOnCreate": 2},
                {"CheckAvailabilityOnCreate": 2}
            ]
        }
    ]
}

Obtenir des statistiques du journal

Obtient le nombre de créations et de mises à jour d'événements du journal pour une certaine intervalle de temps pour chaque entité dans un conteneur, groupés par l'entité d'abord, puis par l'opération.
Requête
GET /services/rest/system/stats/journal/{container}
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • lang (optionnel) : valeur String du code de langue qui spécifie la langue dans laquelle le libellé de chaque entité sera retourné, par exemple, en pour l'anglais. Si ce paramètre n'est pas spécifié ou que le libellé n'existe pas dans la langue spécifiée, le nom de l'entité sera retourné.
  • timeframe (optionnel) : valeur Integer qui limite les données statistiques aux appels effectués au cours des dernières N secondes.
  • top (optionnel) : valeur Integer qui limite les données statistiques aux N entités avec les mises à jour les plus fréquentes. Si la valeur est supérieure à 0, les statistiques pour les entités sans journal d'évènements ne seront pas retournées.
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse

Une réponse JSON qui contient des statistiques de création et de mise à jour d'événements du journal pour chaque entité dans un conteneur spécifié.

Notez que l'objet from et to représenté comme temps epoch dans la réponse JSON donne une intervalle de temps et l'objet create et update donne le nombre de créations et mises à jour des événements du journal qui se sont déroulés durant cette intervalle.

Statut
  • 200 OK : opération exécutée avec succès.
  • 204 QUERY FAILS : informations de configuration manquantes.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 404 NO CONTENT : la requête contient un paramètre invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

{
    "journal": [
        {
            "Product": [
                {
                    "creations": [
                        {
                            "create": 1,
                            "from": 1548143636461,
                            "to": 1548143636461
                        }
                    ]
                },
                {
                    "updates": [
                        {
                            "update": 2,
                            "from": 1548143639124,
                            "to": 1548143685771
                        },
                        {
                            "update": 1,
                            "from": 1548143825716,
                            "to": 1548143872363
                        }
                    ]
                }
            ]
        },
        {
            "ProductFamily": [
                {
                    "creations": [
                        {
                            "create": 1,
                            "from": 1548142670616,
                            "to": 1548142670616
                        }
                    ]
                },
                {
                    "updates": []
                }
            ]
        },
        {
            "Store": [
                {
                    "creations": [
                        {
                            "create": 1,
                            "from": 1548142762672,
                            "to": 1548142772475
                        }
                    ]
                },
                {
                    "updates": []
                }
            ]
        }
    ]
}

Obtenir des statistiques de rapprochement

Obtient des statistiques sur le rapprochement intégré pour chaque entité avec une règle de rapprochement attachée dans un conteneur de données.
Requête
GET /services/rest/system/stats/matching/{container}
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • lang (optionnel) : valeur String du code de langue qui spécifie la langue dans laquelle le libellé de chaque entité sera retourné, par exemple, en pour l'anglais. Si ce paramètre n'est pas spécifié ou que le libellé n'existe pas dans la langue spécifiée, le nom de l'entité sera retourné.
  • top (optionnel) : valeur Integer qui limite les données statistiques aux N entités les plus élevées.
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse

Une réponse JSON contenant des statistiques sur le rapprochement intégré pour chaque entité avec une règle de rapprochement attachée dans le conteneur de données spécifié.

Statut
  • 200 OK : opération exécutée avec succès.
  • 204 NO CONTENT : aucune information de configuration correspondant au conteneur.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 404 NOT FOUND : la ressource n'existe pas.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

{
    "matching": [
        {"Store": "100"},
        {"Product Family": "0"},
        {"Product": "100"}
    ]
}

Rapprochement de données

Retourner une explication de rapprochement sur les enregistrements d'entrée

Retourne une explication détaillée sur le rapprochement et le regroupement des enregistrements d'entrée d'une entité étant liée à une règle de rapprochement. Les enregistrements de données sont fournis dans le contenu de requête sous forme de fragments XML.
Requête
POST /services/rest/tasks/matching/explain
Paramètres
  • model : valeur String qui représente le nom du modèle de données MDM.
  • type : valeur String qui spécifie le nom de l'entité.
En-têtes
  • Content-Type : application/xml
    Remarque : Si la déclaration XML est incluse dans le contenu de la requête XML et que l'attribut d'encodage est utilisé, vous devez définir sa valeur à UTF-8.
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Réponse JSON donnant une explication détaillée sur le rapprochement et le regroupement des enregistrements d'entrée d'une entité spécifiée étant liée à une règle de rapprochement.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de requête

<Store>
	<Id>200001</Id>
	<Address>Beijing Book Building (17 Xichang'an Jie)</Address>
	<Lat>116.383681</Lat>
	<Long>39.913855</Long>
</Store>
<Store>
	<Id>200002</Id>
	<Address>Beijing book building</Address>
	<Lat>116.383680</Lat>
	<Long>39.913856</Long>
</Store>

Exemple de réponse

{
  "groups": [
    {
      "group": [
        {
          "result": [
            {
              "id": "4244168a-acd7-42a0-91b7-873422c4982b"
            },
            {
              "confidence": 0.9157568693161011
            },
            {
              "minimum_confidences": [
                {
                  "minimum_confidence": 0.85
                }
              ]
            },
            {
              "match_confidences": [
                {
                  "match_confidence": 0.9
                }
              ]
            },
            {
              "related_ids": [
                "200002",
                "200001"
              ]
            },
            {
              "values": [
                {
                  "value": [
                    {
                      "field": "Store/Id"
                    },
                    {
                      "value": "200001"
                    }
                  ]
                },
                {
                  "value": [
                    {
                      "field": "Store/Address"
                    },
                    {
                      "value": "Beijing Book Building (17 Xichang'an Jie)"
                    }
                  ]
                },
                {
                  "value": [
                    {
                      "field": "Store/Lat"
                    },
                    {
                      "value": "116.383681"
                    }
                  ]
                },
                {
                  "value": [
                    {
                      "field": "Store/Long"
                    },
                    {
                      "value": "39.913856"
                    }
                  ]
                },
                {
                  "value": [
                    {
                      "field": "Store/Map"
                    },
                    {
                      "value": ""
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "details": [
            {
              "detail": [
                {
                  "id": "200002"
                },
                {
                  "match": [
                    {
                      "is_match": true
                    },
                    {
                      "score": 0.9157568693161011
                    },
                    {
                      "field_scores": [
                        {
                          "field_score": [
                            {
                              "pair_id": "200001"
                            },
                            {
                              "field": "Store/Id"
                            },
                            {
                              "fieldValue": "200002"
                            },
                            {
                              "value": 1
                            },
                            {
                              "algorithm": "Dummy"
                            },
                            {
                              "threshold": 0
                            }
                          ]
                        },
                        {
                          "field_score": [
                            {
                              "pair_id": "200001"
                            },
                            {
                              "field": "Store/Address"
                            },
                            {
                              "fieldValue": "Beijing book building"
                            },
                            {
                              "value": 0.9157568693161011
                            },
                            {
                              "algorithm": "Jaro-Winkler"
                            },
                            {
                              "threshold": 0.9
                            }
                          ]
                        },
                        {
                          "field_score": [
                            {
                              "pair_id": "200001"
                            },
                            {
                              "field": "Store/Lat"
                            },
                            {
                              "fieldValue": "116.38368"
                            },
                            {
                              "value": 1
                            },
                            {
                              "algorithm": "Dummy"
                            },
                            {
                              "threshold": 0
                            }
                          ]
                        },
                        {
                          "field_score": [
                            {
                              "pair_id": "200001"
                            },
                            {
                              "field": "Store/Long"
                            },
                            {
                              "fieldValue": "39.913856"
                            },
                            {
                              "value": 1
                            },
                            {
                              "algorithm": "Dummy"
                            },
                            {
                              "threshold": 0
                            }
                          ]
                        },
                        {
                          "field_score": [
                            {
                              "pair_id": "200001"
                            },
                            {
                              "field": "Store/Map"
                            },
                            {
                              "fieldValue": ""
                            },
                            {
                              "value": 1
                            },
                            {
                              "algorithm": "Dummy"
                            },
                            {
                              "threshold": 0
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "values": [
                    {
                      "value": [
                        {
                          "field": "Store/Long"
                        },
                        {
                          "value": "39.913856"
                        }
                      ]
                    },
                    {
                      "value": [
                        {
                          "field": "Store/Map"
                        },
                        {
                          "value": ""
                        }
                      ]
                    },
                    {
                      "value": [
                        {
                          "field": "Store/Address"
                        },
                        {
                          "value": "Beijing book building"
                        }
                      ]
                    },
                    {
                      "value": [
                        {
                          "field": "Store/Id"
                        },
                        {
                          "value": "200002"
                        }
                      ]
                    },
                    {
                      "value": [
                        {
                          "field": "Store/Lat"
                        },
                        {
                          "value": "116.38368"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "detail": [
                {
                  "id": "200001"
                },
                {
                  "match": [
                    {
                      "is_match": true
                    },
                    {
                      "score": 0.9157568693161011
                    },
                    {
                      "field_scores": [
                        {
                          "field_score": [
                            {
                              "pair_id": "200002"
                            },
                            {
                              "field": "Store/Id"
                            },
                            {
                              "fieldValue": "200002"
                            },
                            {
                              "value": 1
                            },
                            {
                              "algorithm": "Dummy"
                            },
                            {
                              "threshold": 0
                            }
                          ]
                        },
                        {
                          "field_score": [
                            {
                              "pair_id": "200002"
                            },
                            {
                              "field": "Store/Address"
                            },
                            {
                              "fieldValue": "Beijing book building"
                            },
                            {
                              "value": 0.9157568693161011
                            },
                            {
                              "algorithm": "Jaro-Winkler"
                            },
                            {
                              "threshold": 0.9
                            }
                          ]
                        },
                        {
                          "field_score": [
                            {
                              "pair_id": "200002"
                            },
                            {
                              "field": "Store/Lat"
                            },
                            {
                              "fieldValue": "116.38368"
                            },
                            {
                              "value": 1
                            },
                            {
                              "algorithm": "Dummy"
                            },
                            {
                              "threshold": 0
                            }
                          ]
                        },
                        {
                          "field_score": [
                            {
                              "pair_id": "200002"
                            },
                            {
                              "field": "Store/Long"
                            },
                            {
                              "fieldValue": "39.913856"
                            },
                            {
                              "value": 1
                            },
                            {
                              "algorithm": "Dummy"
                            },
                            {
                              "threshold": 0
                            }
                          ]
                        },
                        {
                          "field_score": [
                            {
                              "pair_id": "200002"
                            },
                            {
                              "field": "Store/Map"
                            },
                            {
                              "fieldValue": ""
                            },
                            {
                              "value": 1
                            },
                            {
                              "algorithm": "Dummy"
                            },
                            {
                              "threshold": 0
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "values": [
                    {
                      "value": [
                        {
                          "field": "Store/Long"
                        },
                        {
                          "value": "39.913855"
                        }
                      ]
                    },
                    {
                      "value": [
                        {
                          "field": "Store/Map"
                        },
                        {
                          "value": ""
                        }
                      ]
                    },
                    {
                      "value": [
                        {
                          "field": "Store/Address"
                        },
                        {
                          "value": "Beijing Book Building (17 Xichang'an Jie)"
                        }
                      ]
                    },
                    {
                      "value": [
                        {
                          "field": "Store/Id"
                        },
                        {
                          "value": "200001"
                        }
                      ]
                    },
                    {
                      "value": [
                        {
                          "field": "Store/Lat"
                        },
                        {
                          "value": "116.383681"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Retourner une explication sur un groupe de rapprochement

Retourne une explication détaillée sur le rapprochement et le regroupement des enregistrements de données d'un groupe de rapprochement existant.
Requête
GET /services/rest/tasks/matching/explain/{container}/groups
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • type : valeur String qui spécifie le nom de l'entité.
  • group : valeur String qui représente l'identifiant du groupe de rapprochement.
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Réponse JSON donnant une explication détaillée sur le rapprochement et le regroupement des enregistrements de données d'un groupe de rapprochement existant.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

Le format de réponse pour cette API REST est le même que le format de réponse pour Retourner une explication de rapprochement sur les enregistrements d'entrée.

Retourner une explication de rapprochement sur les enregistrements de données dans la Staging Area

Retourne une explication détaillée sur le rapprochement d'une liste d'enregistrements de données dans la Staging Area. Vous devez soumettre les enregistrements de données en indiquant leurs IDs dans le contenu de requête, tout en les séparant par un saut de ligne.
Requête
POST /services/rest/tasks/matching/explain/{container}/records
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • type : valeur String qui spécifie le nom de l'entité.
En-têtes
  • Content-Type : text/plain
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Réponse JSON donnant une explication détaillée sur le rapprochement d'une liste d'enregistrements de données dans la Staging Area.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de requête

200001
200002

Exemple de réponse

Le format de réponse pour cette API REST est le même que le format de réponse pour Retourner une explication de rapprochement sur les enregistrements d'entrée.

Retourner une liste d'enregistrements similaires

Retourne une liste d'enregistrements de données dans la Staging Area similaires à celle fournie dans le contenu de requête en tant qu'XML, y compris les enregistrements maître similaires avec le statut 205 et ses enregistrements source.
Requête
POST /services/rest/tasks/matching/similar/{container}
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • model : valeur String qui représente le nom du modèle de données MDM.
  • type : valeur String qui spécifie le nom de l'entité.
En-têtes
  • Content-Type : application/xml
    Remarque : Si la déclaration XML est incluse dans le contenu de la requête XML et que l'attribut d'encodage est utilisé, vous devez définir sa valeur à UTF-8.
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Réponse JSON contenant une liste des enregistrements de données dans la zone de préparation similaire à l'enregistrement d'entrée de données.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de requête

<Product>
  <Id>300000001</Id>
  <Name>the old man and the sea</Name>
  <Description>Author - Ernest Miller Hemingway</Description>
  <Availability>false</Availability>
  <Price>21.99</Price>
</Product>

Exemple de réponse

{
  "items": [
    {
      "id": "200000005",
      "confidence": 0.9279589414596557,
      "golden": false
    },
    {
      "id": "200000006",
      "confidence": 0.960698914527893,
      "golden": false
    },
    {
      "id": "dc5bfccb-010a-4f3e-8b32-7b00ef0e7cd7",
      "confidence": 0.960698914527893,
      "golden": true
    }
  ]
}

Gestion de la zone de préparation

Obtenir des statistiques de la zone de préparation pour le conteneur courant

Obtient des statistiques de la zone de préparation pour le conteneur courant, dont le nom du conteneur, du modèle, le nombre total d'enregistrements, d'enregistrements valides, invalides et en attente de validation.
Requête
GET /services/rest/tasks/staging
En-têtes
  • Accept : application/json, application/xml ou text/xml
  • Authorization : schéma d'authentification basique
Réponse Les statistiques de la zone de préparation pour le conteneur courant.
Statut
  • 200 OK : opération exécutée avec succès.
  • 204 NO CONTENT : conteneur ou modèle non sélectionné.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse au format JSON

{
  "total_records": 100,
  "waiting_validation_records": 15,
  "valid_records": 80,
  "invalid_records": 5,
  "data_container": "Product",
  "data_model": "Product"
}

Exemple de réponse au format XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<staging>
  <data_container>Product</data_container>
  <data_model>Product</data_model>
  <invalid_records>5</invalid_records>
  <total_records>100</total_records>
  <valid_records>80</valid_records>
  <waiting_validation_records>15</waiting_validation_records>
</staging>

Démarrer une nouvelle tâche de validation pour le conteneur courant

Démarre une nouvelle tâche de validation pour le conteneur courant et retourne son identifiant.
Requête
POST /services/rest/tasks/staging
En-têtes
  • Accept: text/plain
  • Authorization : schéma d'authentification basique
Réponse L'identifiant de la nouvelle tâche de validation.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

Cette API REST retourne l'identifiant d'une nouvelle tâche de validation, comme suit :
2ff91416-b25b-4cbb-8fb1-45bc12f34806

Obtenir les statistiques de la zone de préparation pour un conteneur

Obtient les statistiques de la zone de préparation pour un conteneur donné, dont le nom du conteneur, du modèle, le nombre total d'enregistrements, d'enregistrements valides, invalides et en attente de validation.
Requête
GET /services/rest/tasks/staging/{container}
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • model : valeur String qui représente le nom du modèle de données MDM.
En-têtes
  • Accept : application/json, application/xml ou text/xml
  • Authorization : schéma d'authentification basique
Réponse Les statistiques de la zone de préparation pour le conteneur spécifié.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse au format JSON

{
  "total_records": 100,
  "waiting_validation_records": 15,
  "valid_records": 80,
  "invalid_records": 5,
  "data_container": "Product",
  "data_model": "Product"
}

Exemple de réponse au format XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<staging>
  <data_container>Product</data_container>
  <data_model>Product</data_model>
  <invalid_records>5</invalid_records>
  <total_records>100</total_records>
  <valid_records>80</valid_records>
  <waiting_validation_records>15</waiting_validation_records>
</staging>

Démarrer une nouvelle tâche de validation pour un conteneur

Démarre une nouvelle tâche de validation pour un conteneur donné et retourne son identifiant.
Requête
POST /services/rest/tasks/staging/{container}
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • model : valeur String qui représente le nom du modèle de données MDM.
En-têtes
  • Accept: text/plain
  • Authorization : schéma d'authentification basique
Réponse L'identifiant de la nouvelle tâche de validation.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

Cette API REST retourne l'identifiant d'une nouvelle tâche de validation, comme suit :
2ff91416-b25b-4cbb-8fb1-45bc12f34806

Lister tous les identifiants de tâches de validation complétées pour un conteneur

Liste les identifiants de toutes les tâches de validation complétées pour un conteneur donné.
Requête
GET /services/rest/tasks/staging/{container}/execs
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • before : valeur String qui représente la date au format yyyy-MM-ddTHH:mm:ss et qui limite la recherche aux tâches de validation commencées avant cette date.
  • start : valeur Integer qui représente l'offset de début de la pagination.
  • size : valeur Integer qui représente la taille de la pagination.
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Liste les identifiants de toutes les tâches de validation complétées pour un conteneur donné.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

{executions:["2ff91416-b25b-4cbb-8fb1-45bc12f34806","a3ca3305-d80c-4594-adf9-bb52ffd50ec5"]}

Obtenir le nombre total de tâches de validation complétées pour un conteneur

Obtient le nombre total de tâches de validation complétées pour un conteneur donné.
Requête
GET /services/rest/tasks/staging/{container}/execs/count
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • before : valeur String qui représente la date au format yyyy-MM-ddTHH:mm:ss et qui limite la recherche aux tâches de validation commencées avant cette date.
En-têtes
  • Authorization : schéma d'authentification basique
Réponse Un entier correspondant au nombre total de tâches de validation complétées pour un conteneur donné.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Obtenir des statistiques de l'exécution de la validation courante pour un conteneur

Obtient des statistiques de l'exécution de la validation pour un conteneur donné, dont l'identifiant d'exécution, le début, la fin et la durée de l'exécution ainsi que le nombre total d'enregistrements, d'enregistrements traités et invalides.
Requête
GET /services/rest/tasks/staging/{container}/execs/current
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • model : valeur String qui représente le nom du modèle de données MDM.
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Les statistiques de l'exécution de la validation courante pour un conteneur spécifié.
Statut
  • 200 OK : opération exécutée avec succès.
  • 204 NO CONTENT : aucune tâche de validation en cours d'exécution pour le conteneur.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

{
    "id": "e5aa900c-ddc4-47e4-a81a-9dc1c863b6a2",
    "start_date": "2019-03-12T03:31:25.755",
    "end_date": "2019-03-12T03:32:00.594",
    "running_time": "9:40:39",
    "total_record": 6,
    "processed_records": 6,
    "invalid_records": 0
}

Annuler l'exécution de la validation courante pour un conteneur

Annule l'exécution de la validation courante pour un conteneur donné.
Requête
DELETE /services/rest/tasks/staging/{container}/execs/current
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • model : valeur String qui représente le nom du modèle de données MDM.
En-têtes
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 200 OK : opération exécutée avec succès.
  • 204 NO CONTENT : aucune tâche de validation en cours d'exécution pour le conteneur.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Obtenir des statistiques d'exécution d'une tâche de validation pour un conteneur

Obtient des statistiques d'exécution d'une tâche de validation pour un conteneur par son identifiant d'exécution, dont l'identifiant d'exécution, le début, la fin et la durée de l'exécution ainsi que le nombre total d'enregistrements, d'enregistrements traités et invalides.
Requête
GET /services/rest/tasks/staging/{container}/execs/{executionId}
Paramètres
  • container : valeur String qui représente le nom du conteneur.
  • model : valeur String qui représente le nom du modèle de données MDM.
  • executionId : valeur String qui représente l'identifiant d'exécution de la tâche de validation.
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Les statistiques d'exécution d'une tâche de validation spécifiée pour un conteneur.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

{
    "id": "e5aa900c-ddc4-47e4-a81a-9dc1c863b6a2",
    "start_date": "2019-03-12T03:31:25.755",
    "end_date": "2019-03-12T03:32:00.594",
    "running_time": "9:40:39",
    "total_record": 6,
    "processed_records": 6,
    "invalid_records": 0
}

Vérifier si un conteneur contient une Staging Area

Vérifier si un conteneur contient une Staging Area
Requête
GET /services/rest/tasks/staging/{container}/hasStaging
Paramètres
  • container : valeur String qui représente le nom du conteneur.
En-têtes
  • Authorization : schéma d'authentification basique
Réponse Retourne true si le conteneur spécifié existe, ou false s'il n'existe pas.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Data Stewardship

Obtenir le nombre de tâches Data Stewardship

Obtient le nombre de tâches Data Stewardship pour l'utilisateur courant.
Requête
GET /services/rest/tds/amount
En-têtes
  • Authorization : schéma d'authentification basique
Réponse Entier représentant le nombre de tâches Data Stewardship pour l'utilisateur courant.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 500 INTERNAL SERVER ERROR : autres erreurs.
  • 503 SERVICE UNAVAILABLE : serveur Talend Data Stewardship indisponible.

Définir les métadonnées Data Stewardship pour un modèle de données

Définit les métadonnées de Talend Data Stewardship pour un modèle de données MDM, avec une ou plusieurs règles de rapprochement liées à ses entités, dont un modèle d'arbitrage de données et une campagne Merging pour chaque entité étant liée à une règle de rapprochement.

Le nouveau modèle d'arbitrage de données est créé avec des attributs correspondant à chaque élément de type simple dans l'entité MDM, et la nouvelle campagne Merging est créée à l'aide du nouveau modèle d'arbitrage de données.

Requête
PUT /services/rest/tds/setup
Paramètres
  • model : valeur String qui représente le nom du modèle de données MDM.
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Réponse JSON contenant le nom et le libellé du modèle de données et de la campagne Merging créés pour chaque entité étant liée à une règle de rapprochement. Le nom est au format tmdm_<mdm_data_model_name>_<mdm_entity_name> et le libellé est au format <mdm_data_model_name> - <mdm_entity_name> - tmdm, le tout en lettres minuscules.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 403 FORBIDDEN : autorisation requise manquante.
  • 420 METHOD FAILURE : échec de la configuration des métadonnées d'arbitrage de données.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

{
  "success": {
    "datamodel": [
      {
        "name": "tmdm_product_product",
        "label": "product - product - tmdm"
      },
      {
        "name": "tmdm_product_store",
        "label": "product - store - tmdm"
      }
    ],
    "campaign": [
      {
        "name": "tmdm-product-product",
        "label": "product - product - tmdm"
      },
      {
        "name": "tmdm-product-store",
        "label": "product - store - tmdm"
      }
    ]
  }
}

Transactions MDM

Récupérer tous les identifiants des transactions actives

Récupère les identifiants de toutes les transactions actives.

Requête
GET /services/rest/transactions
En-têtes
  • Accept : application/xml
  • Authorization : schéma d'authentification basique
Réponse Un tableau JSON qui contient les identifiants de toutes les transactions actives.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

{transactions:["db4655dd-dbae-4dc2-a6f9-5b1b08ca1410","9197782a-3375-427f-9eb5-a77c76e92305"]}

Démarrer une nouvelle transaction

Démarre une nouvelle transaction et retourne son identifiant.

Requête
PUT /services/rest/transactions
En-têtes
  • Accept: text/plain
  • Authorization : schéma d'authentification basique
Réponse L'identifiant de la nouvelle transaction.
Statut
  • 200 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Exemple de réponse

Cette API REST retourne l'identifiant d'une nouvelle transaction, comme suit :
2ff91416-b25b-4cbb-8fb1-45bc12f34806

Commite une transaction

Commite une transaction avec son identifiant.

Requête
POST /services/rest/transactions/{id}
Paramètres
  • id : valeur String qui spécifie l'identifiant de la transaction.
En-têtes
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 204 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Effectuer un rollback

Effectue un rollback sur une transaction avec son identifiant.

Requête
DELETE /services/rest/transactions/{id}
Paramètres
  • id : valeur String qui spécifie l'identifiant de la transaction.
En-têtes
  • Authorization : schéma d'authentification basique
Réponse Aucun contenu.
Statut
  • 204 OK : opération exécutée avec succès.
  • 401 UNAUTHORIZED : échec de l'authentification, identifiant ou mot de passe invalide.
  • 500 INTERNAL SERVER ERROR : autres erreurs.

Langage de requête

Dans les appels de l'API REST, vous pouvez utiliser le langage de requête pour réduire le nombre d'enregistrements de données correspondant à la requête, trier les résultats de requête ou exécuter d'autres fonctions selon vos besoins.

Clauses SELECT

Vous pouvez utiliser des clauses SELECT simples dans les appels de l'API REST.

Sélection de toutes les instances d'une entité

Vous pouvez interroger toutes les instances d'une entité. Par exemple, pour retourner toutes les instances des enregistrements de "Type1", utilisez la requête :

{
  "select": {
    "from": ["Type1"]
  }
}

L'élément "from" constitue un type de tableau, vous permettant de sélectionner plusieurs types. Cela ne signifie pas que la requête peut retourner toutes les instances de Type1 et de Type2. Le tableau est utilisé pour des jointures.

Pagination : début et limite

La pagination peut être nécessaire dans certains cas d'utilisation, tels que la construction d'une table. Elle peut être réalisée à l'aide des éléments "start" et "limit".

Par exemple, pour retourner les résultats commençant avec la première instance de "Type1" (index à 0), ainsi que les 10 instances suivantes, utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "start": 0,
    "limit": 10
  }
}
Prenez en compte les points suivants :
  • L'exécution standard de telles requêtes implique la création d'une liste de limites de taille (limit) côté serveur. Si vous spécifiez une valeur élevée, des problèmes de performances ou une erreur de type OutOfMemoryError peuvent survenir. Par conséquent, assurez-vous d'utiliser la pagination avec des valeurs relativement basses pour l'élément limit.

  • Pour le code MDM, un élément limit ayant pour valeur Integer.MAX_VALUE (2^31 -1) n'indique aucune limite ("no limit"). Assurez-vous d'utiliser une stratégie de streaming plutôt qu'une liste de résultats. Cependant, cela signifie qu'une limite de (2^31 - 2) essayera de créer une liste de cette taille (causant généralement une erreur de type OutOfMemoryError).

Sélection des valeurs de champs

Plutôt que d'interroger l'enregistrement en entier, vous pouvez interroger un seul de ses champs.

Par exemple, pour retourner des valeurs du champ "id" de type "Type1", utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"field": "Type1/id"}
    ]
  }
}

Pour sélectionner plus d'un champ, répétez l'élément "field". Par exemple, pour retourner des valeurs des champs "id", "value1" et "value2" pour chaque enregistrement de "Type1", utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"field": "Type1/id"},
      {"field": "Type1/value1"},
      {"field": "Type1/value2"}
    ]
  }
}

Renommage (aliasing)

Pour des raisons client ou de nommage, vous souhaitez nommer différemment l'élément retourné. Ce type de renommage (aliasing) peut aider à différencier des valeurs en cas de problèmes de noms. Cette action peut être réalisée à l'aide de l'élément "alias".

Par exemple, pour retourner toutes les valeurs du champ "id" de toutes les instances de Type1, mais à la place de mettre des valeurs à l'intérieur d'un élément "id", l'élément entourant est nommé "a", utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"field": "Type1/id"},
      {
        "alias": [
          {"name": "a"},
          {"field": "Type1/id"}
        ]
      }
    ]
  }
}

Par exemple, utilisez la requête suivante pour retourner les résultats de "Type1/containedField1/value1" mis dans "v1" et "Type1/containedField2/value1" mis dans "v2", en évitant ainsi l'éventuel problème de noms. Ce problème aurait été retourné si "Type1/containedField1/value1" et "Type1/containedField2/value1" avaient été mis tous les deux dans un élément "value1" :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {
        "alias": [
          {"name": "v1"},
          {"field": "Type1/containedField1/value1"}
        ]
      },
      {
        "alias": [
          {"name": "v2"},
          {"field": "Type1/containedField2/value1"}
        ]
      }
    ]
  }
}

Valeurs de champs distinctes

Vous pouvez utiliser le mot-clé "distinct" pour obtenir toutes les valeurs distinctes pour le champ d'une entité.

Par exemple :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"distinct": {"field": "Type1/value1"}}
    ]
  }
}

Cette requête retourne toutes les valeurs distinctes pour le champ "value1" dans le type "Type1".

Vous pouvez également nommer différemment un résultat à l'aide de l'élément "alias". Par exemple :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {
        "alias": [
          {"name": "a0"},
          {"distinct": {"field": "Type1/value1"}}
        ]
      }
    ]
  }
}

Cette requête retourne toutes les valeurs distinctes pour le champ "value1", mais à l'intérieur d'un élément nommé "a0".

Compte

Vous pouvez compter le nombre de résultats retournés par une requête.

Par exemple, pour compter le nombre d'instances de Type1 disponibles, utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"count": {}}
    ]
  }
}

Vous pouvez également associer l'opération de compte à des conditions afin de compter le nombre d'instances correspondant aux critères spécifiés.

Par exemple, pour retourner le nombre d'instances de Type1 ayant une valeur supérieure à 1 pour le champ "value1", utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"count": {}}
    ],
    "where": {
      "gt": [
        {"field": "Type1/value1"},
        {"value": "1"}
      ]
    }
  }
}

Le compte peut également être utilisé dans des clauses ORDER_BY.

Maximum et minimum

Vous pouvez sélectionner la valeur maximale et/ou minimale d'un champ dans une entité.

Par exemple, pour récupérer la valeur la plus faible du champ "id" dans l'entité Type1, utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"min": {"field": "Type1/id"}}
    ]
  }
}

Par exemple, pour récupérer la valeur la plus élevée du champ "id" dans l'entité Type1, utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"max": {"field": "Type1/id"}}
    ]
  }
}

Par exemple, pour récupérer la valeur la plus élevée et la plus faible du champ "id" dans Type1, utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"max": {"field": "Type1/id"}},
      {"min": {"field": "Type1/id"}}
    ]
  }
}

Tri par valeur de champ

Vous pouvez utiliser autant de clauses "order_by" que nécessaire dans une requête pour configurer l'ordre de tri dans le résultat retourné, soit par ordre décroissant ou croissant.

Par exemple, pour sélectionner toutes les instances de Type1 et trier les résultats par ID (du plus élevé au plus faible) et par valeur de champ "value1" (du plus faible au plus élevé), utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "order_bys": [
      {
        "order_by": [
          {"field": "Type1/id"},
          {"direction": "DESC"}
        ]
      },
      {
        "order_by": [
          {"field": "Type1/value1"},
          {"direction": "ASC"}
        ]
      }
    ]
  }
}

Tri par occurrence de valeur de champ

Vous pouvez également trier par occurrence de valeur de champ pour retourner la valeur la plus fréquente en premier jusqu'à la valeur la moins fréquente (en cas de tri par ordre décroissant "DESC").

Par exemple, cette requête permet de retourner de la valeur la plus fréquente à la valeur la moins fréquente pour le champ "value1" :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"field": "Type1/value1"},
    ],
    "order_bys": [
      {
        "order_by": [
          {"count": {"field": "Type1/value1"}},
          {"direction": "DESC"}
        ]
      }
    ]
  }
}

Vous pouvez également inclure un champ "limit" dans la requête pour obtenir les N valeurs les plus fréquentes.

Par exemple, cette requête permet d'obtenir les 10 valeurs les plus fréquentes :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"field": "Type1/value1"},
    ],
    "order_bys": [
      {
        "order_by": [
          {"count": {"field": "Type1/value1"}},
          {"direction": "DESC"}
        ]
      }
    ],
    "limit": 10
  }
}
Remarque : Ce type de requête ne fonctionne pas si vous utilisez la base de donnée DB2 ou MS SQL Server, car elles ne supportent pas la clause order by avec la fonction count.

Conditions

Les opérandes suivants peuvent être utilisés :

Opérande du langage de requêtes

Signification

eq

equals

gt / gte

supérieur à/supérieur ou égal à

lt / lte

inférieur à/ inférieur ou égal à

startsWith

commence par

contains

contient

isEmpty

est vide (")

isNull

est null

in spécifie plusieurs valeurs dans une clause WHERE
full_text effectue une recherche plein texte

Prenez en compte les points suivants :

  • La structure est toujours la suivante : "operand": { field, value }.
  • Les opérandes contains et full_text ne peuvent être utilisées avec d'autres opérateurs de recherche. Puisqu'une recherche plein texte couvre en interne toutes les conditions de contains et full_text, ces opérandes ne peuvent être combinées.
  • L'opérande contains ne peut être utilisée avec les autres opérateurs de recherche si vous utilisez une base de données SQL.
  • si le champ est de type numérique (int, short, integer, long, float, double, decimal) et que vous fournissez une valeur numérique pour celui-ci, la valeur peut être interprétée en étant ou non entourée de guillemets doubles. Sinon, la valeur doit être entourée de guillemets doubles. Assurez-vous de faire correspondre la valeur et le type d'élément. Par exemple, "value": "abc" est incorrect si le champ "Type1/id" est de type numérique.
  • Si vous n'avez accès à aucun des champs utilisés dans la condition, la requête ne retournera rien.

Exemple 1 : la requête ci-après, qui utilise l'argument eq, retourne toutes les instances de Types1 où l'élément id est égal à 1.

{
  "select": {
    "from": ["Type1"],
    "where": {
      "eq": [
        {"field": "Type1/id"},
        {"value": "1"}
      ]
    }
  }
}

Exemple 2 : la requête ci-après, qui utilise l'argument isEmpty, retourne toutes les instances de Store où la valeur de l'élément Address est égale à ".

{
  "select": {
    "from": ["Store"],
    "where": {
      "isEmpty": {
        "field": "Store/Address"
      }
    }
  }
}

Exemple 3 : la requête ci-après, qui utilise l'opérateur not et l'argument isNull, retourne toutes les instances de Store où la valeur de l'élément Address n'est pas null.

{
    "select": {
        "from": ["Store"],
        "where": {
            "not": {
                "isNull": {
                    "field": "Store/Address"
                }
            }
        }
    }
}

Condition sur les index

Vous pouvez spécifier un index pour votre condition, si le champ est un élément répétable. L'index vaut 0.

Par exemple, pour retourner toutes les instances de Type1 dont la seconde valeur du champ "list" est égale à "1", utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "eq": [
        {"index": [
          {"field": "Type1/list"},
          1
        ]},
        {"value": "1"}
      ]
    }
  }
}

Conditions entre champs

Vous pouvez utiliser des conditions entre différents champs. Généralement, seul "eq" (EQUALS) est supporté pour de telles comparaisons.

Par exemple, pour retourner les instances de Type1 dont la valeur "id" est égale à "value1", utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "eq": [
        {"field": "Type1/id"},
        {"value": {"field": "Type1/value1"}}
      ]
    }
  }
}

Opérateur in

Vous pouvez utiliser l'opérateur in au sein d'une requête.

Par exemple, pour retourner toutes les instances de Type1 où "id" vaut 1, 2 ou 5, utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "in": [
        {"field": "Type1/id"},
        {"value": ["1","2","5"]}
      ]
    }
  }
}

Prenez en compte les points suivants :

  • si le champ est de type numérique (int, short, integer, long, float, double, decimal) et que vous fournissez une valeur numérique pour celui-ci, la valeur peut être interprétée en étant ou non entourée de guillemets doubles. Sinon, la valeur doit être entourée de guillemets doubles. Assurez-vous de faire correspondre la valeur et le type d'élément. Par exemple, "value": ["a", "b", "c"] est incorrect si le champ "Type1/id" est de type numérique.
  • La valeur "value" est formatée comme un tableau (array) JSON et les valeurs listées doivent être statiques. Par exemple, ["value1", "value2", "value3"...].
  • Seuls des champs de type simple au niveau racine sont supportés. Cependant, les champs obligatoires de clés étrangères multi-occurrence ne sont pas supportés.
  • L'opérateur in ne peut être utilisé avec la recherche plein texte.
  • L'opérateur in peut fonctionner avec l'opérateur not. Pour plus d'informations, consultez la section Opérateur not.

Opérateurs logiques

Pour permettre des requêtes plus complexes, des opérateurs booléens (and/or/not) peuvent être inclus. La structure est similaire à ce qui a été présenté précédemment "operator": { left, right }left et/ou right peuvent également être des opérateurs logiques.

Par exemple, pour retourner toutes les instances de Type1 où "id = 1 OR value1 = 0", utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "or": [
        {
          "eq": [
            {"field": "Type1/id"},
            {"value": "1"}
          ]
        },
        {
          "eq": [
            {"field": "Type1/value1"},
            {"value": "0"}
          ]
        }
      ]
    }
  }
}

Un opérateur logique binaire (and/or) doit forcément avoir deux enfants. Par exemple, vous pouvez écrire une condition avec "a OR b OR c" :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "or": [
        {
          "eq": [
            {"field": "Type1/id"},
            {"value": "1"}
          ]
        },
        {
          "or": [
            {
              "eq": [
                {"field": "Type1/id"},
                {"value": "2"}
              ]
            },
            {
              "eq": [
                {"field": "Type1/value1"},
                {"value": "4"}
              ]
            }
          ]
        }
      ]
    }
  }
}

Vous pouvez également mélanger les opérateurs logiques. Il n'existe aucune ambiguïté dans l'ordre d'évaluation des conditions.

Par exemple, pour retourner toutes les instances de Type1 où "(id = 1 OR (id = 2 and value1 = 4))", utilisez la requête qui mélange and et or :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "or": [
        {
          "eq": [
            {"field": "Type1/id"},
            {"value": "1"}
          ]
        },
        {
          "and": [
            {
              "eq": [
                {"field": "Type1/id"},
                {"value": "2"}
              ]
            },
            {
              "eq": [
                {"field": "Type1/value1"},
                {"value": "4"}
              ]
            }
          ]
        }
      ]
    }
  }
}  

Opérateur not

L'opérateur not est supporté et suit la structure suivante : "not": { condition }.

Par exemple, pour retourner toutes les instances de Type1 où la valeur "id" n'est pas égale à 1, utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "not": {
        "eq": [
          {"field": "Type1/id"},
          {"value": "1"}
        ]
      }
    }
  }
}

Vous pouvez également utiliser l'opérateur not dans une condition plus complexe. Par exemple :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "not": {
        "or": [
          {
            "eq": [
              {"field": "Type1/id"},
              {"value": "2"}
            ]
          },
          {
            "eq": [
              {"field": "Type1/id"},
              {"value": "4"}
            ]
          }
        ]
      }
    }
  }
}

Vous pouvez utiliser l'opérateur not avec l'opérateur in. Le résultat de la requête n'inclut pas les instances où le champ spécifié a une valeur nulle.

Par exemple :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "not": {
        "in": [
            {"field": "Type1/id"},
            {"value": ["1","3","4","5"]}        
            ]
      }
    }
  }
}

Cela retourne toutes les instances de Type1 où "id" ne vaut aucune des valeurs listées, à savoir 1, 3, 4 et 5.

Plein texte (dans le cadre du champ)

Le langage de requêtes inclut un support pour la recherche en plein texte.

Remarque : La requête plein texte ne peut être utilisée avec les autres opérateurs de recherche si vous utilisez une base de données SQL.

Par exemple, pour réaliser une recherche en plein texte sur le champ "Type1/id" avec la valeur "1", utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "full_text": [
        {"field": "Type1/id"},
        {"value": "1"}
      ]
    }
  }
}

La requête en plein texte fonctionne également sur les sous-éléments. Par exemple, si vous avez la structure type suivante :

Type1
  * id
  * element
    * value1
    * value2

Puis la requête :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "full_text": [
        {"field": "Type1/element"},
        {"value": "1"}
      ]
    }
  }
}

Équivaut à :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "or": [
        {
          "full_text": [
            {"field": "Type1/element/value1"},
            {"value": "1"}
          ]
        },
        {
          "full_text": [
            {"field": "Type1/element/value2"},
            {"value": "1"}
          ]
        }
      ]
    }
  }
}

Plein texte (dans le cadre de l'entité)

Si vous ne souhaitez spécifier aucun champ, mais que vous recherchez une valeur dans l'entité, la requête suivante vous montre comment le faire :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "full_text": [
        {"value": "1"}
      ]
    }
  }
}

Si vous omettez de préciser le champ, MDM effectue la recherche en plein texte sur tous les champs de Type1.

Champs de métadonnées

MDM ajoute des champs "metadata" pour les enregistrements qu'il gère. Ces champs ne sont pas présents dans le modèle de données utilisateur, mais peuvent être utilisés dans la requête.

Les champs de métadonnées supportés sont :

  • taskId (aussi connu comme groupId)
  • timestamp (dernière date de modification)
  • groupSize

Pour le stockage de préparation (staging), des champs de métadonnées supplémentaires existent :

  • Erreur (Staging error)
  • Source (Staging source)
  • Statut (Staging status)
  • Clé de bloc (Staging block key)
  • Tâches (Staging has task)

    Notez que le champ "Staging has task" indique si une tâche Talend Data Stewardship est liée à l'enregistrement.

Si la requête contient des champs "staging_" uniquement, vous pouvez rencontrer une erreur qui indique les expressions incompatibles. Les expressions incompatibles sont vérifiées dans les champs, les conditions, les expressions de tri et de jointure sélectionnés.

Obtention de valeurs de champs de métadonnées

Pour obtenir un champ de métadonnées, utilisez l'élément "metadata" plutôt que "field" dans les champs sélectionnés, comme l'exemple suivant le montre :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"metadata": "timestamp"},
      {"metadata": "task_id"},
      {"metadata": "group_size"},
      {"metadata": "staging_error"},
      {"metadata": "staging_source"},
      {"metadata": "staging_status"},
      {"metadata": "staging_blockkey"},
      {"metadata": "staging_hastask"}
    ]
  }
}

Vous pouvez également mélanger les champs de l'entité et ceux de l'enregistrement :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"metadata": "timestamp"},
      {"metadata": "task_id"},
      {"field": "Type1/id"}
    ]
  }
}

Vous pouvez utiliser le mot-clé "distinct" pour les champs de métadonnées. Par exemple, pour retourner toutes les valeurs distinctes de "taskId" mises dans un élément nommé "distinctTaskId", utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {
        "alias": [
          {"name": "distinctTaskId"},
          {"distinct": {"metadata": "task_id"}}
        ]
      }
    ]
  }
}

Conditions incluant des champs de métadonnées

Vous pouvez inclure des champs de métadonnées dans des conditions. Quant aux champs sélectionnés, utilisez simplement l'élément "metadata" plutôt que "field". Par exemple :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "eq": [
        {"metadata": "task_id"},
        {"value": "1"}
      ]
    }
  }
}

Mise en cache

MDM peut mettre en cache les résultats de la requête. Dans ce cas, il garde la requête en cache et remet le résultat mis en cache chaque fois que cette requête est exécutée.

Par exemple, pour mettre en cache le résultat d'une requête, utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "eq": [
        {"field": "Type1/id"},
        {"value": "1"}
      ]
    },
    "cache": true
  }
}

Par défaut, la valeur de l'élément "cache" est false, mais la requête est toujours valide :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "eq": [
        {"field": "Type1/id"},
        {"value": "1"}
      ]
    },
    "cache": false
  }
}

Un résultat mis en cache peut contenir au maximum 50 enregistrements. When the query yields too many results, the following log will appear in the MDM log at DEBUG level: Query is yielding more results than cache is allowed to keep, bypassing cache for query.

Jointure entre différents types

Les jointures sont un moyen de récupérer des données d'un autre type suivant les clés étrangères.

Par exemple, vous pouvez récupérer l'élément "Address's street" en suivant la clé étrangère entre les types Person et Address.

Voici un exemple de jointure simple :

{
  "select": {
    "from": [
      "Type1",
      "Type2",
    ],
    "fields": [
      {"field": "Type1/id"},
      {"field": "Type2/value1"}
    ],
    "joins": [
      {
        "from": "Type1/fk2",
        "on": "Type2/id"
      }
    ]
  }
}

Cette requête retourne tous les éléments "id" de Type1 ainsi que les éléments "value1" situés dans Type2. La jointure s'effectue en utilisant l'élément "fk2" dans Type1.

Vous pouvez également effectuer plusieurs jointures dans la requête. Par exemple :

{
  "select": {
    "from": [
      "Type1",
      "Type2",
      "Type3"
    ],
    "fields": [
      {"field": "Type1/id"},
      {"field": "Type2/value1"},
      {"field": "Type3/value2"}
    ],
    "joins": [
      {
        "from": "Type1/fk2",
        "on": "Type2/id"
      },
      {
        "from": "Type2/fk3",
        "on": "Type3/id"
      }
    ]
  }
}

Cette requête affiche la valeur "id" de Type1, la valeur "value1" de Type2 et la valeur "value1" de Type3. La valeur "value1" de Type3 est obtenue via une jointure entre Type1, Type2 et Type3.

Remarque : Il est impossible qu'il y ait plus d'une jointure sur la même entité dans une seule requête.

Opérateurs liés à l'historique - opérateur “as of"

L'opérateur "as_of" vous permet de récupérer un enregistrement tel qu'il était à une date donnée.

Par exemple :

{
  "select": {
    "from": ["Type1"],
    "as_of": {
      "date": "1000"
    }
  }
}

L'opérateur "as of" n'échoue pas si aucun historique n'est disponible. À la place, il retourne l'enregistrement à son état actuel.

La navigation dans l'historique dépend du journal. Si vous insérez des données directement dans la base de données SQL ou si vous désactivez la création d'événements pour les composants tMDMOutput/tMDMDelete, vous n'aurez qu'un historique partiel.

MDM peut uniqument construire un historique des enregistrements basé sur les informations qu'il a stocké au niveau des mises à jour : si vous désactivez le journal pour des mises à jour, l'historique ne peut être complet et précis.

Par exemple, pour retourner toutes les instances de Type1 ayant comme valeur celle qu'elles avaient une seconde après le 1er janvier 1970 (1 000 ms après EPOCH), utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "as_of": {
      "date": "1970-01-01T00:00:01"
    }
  }
}

Raccourcis de navigation dans l'historique

Les éléments "date" pour les éléments "as_of" supportent des raccourcis utiles :

  • yesterday : il y a 24 heures.
  • creation : date de création de l'enregistrement. Lorsque vous utilisez l'élément "creation", vous ne pouvez pas utiliser le paramètre "swing". Autrement, vous devez vous attendre à ce qu'une erreur survienne.
  • now : date actuelle.

Par exemple, pour retourner toutes les instances de Type1 comme elles étaient hier (il y a 24 heures), utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "as_of": {
      "date": "yesterday"
    }
  }
}

Filtrage de l'historique (par ID)

Vous souhaitez filtrer les enregistrements de l'historique au lieu d'obtenir toutes les instances.

Par exemple, pour retourner l'instance de Type1 ayant comme valeur "id = 1", comme elle l'était au 1er janvier 1970, utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "eq": [
        {"field": "Type1/id"},
        {"value": "1"}
      ]
    },
    "as_of": {
      "date": "1000"
    }
  }
}

Vous pouvez améliorer cette requête en utilisant toutes les conditions avec "as_of", vous permettant d'interroger les valeurs précédentes. Les conditions n'ont pas besoin d'être uniquement sur des éléments "id".

Par exemple, pour retourner l'instance de Type1 qui contenait "text" au 1er janvier 1970, utilisez la requête :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "contains": [
        {"field": "Type1/value"},
        {"value": "text"}
      ]
    },
    "as_of": {
      "date": "1000"
    }
  }
}

Cependant, cette requête rencontre des problèmes d'extensibilité, puisqu'elle peut forcer MDM à construire un jeu complet d'instances de Type1. Cela mène alors à des problèmes de mémoire, si des états sont calculés en mémoire.

Utilisation de jointure avec as_of

Vous pouvez utiliser l'élément "joins" dans une requête avec l'opérateur "as_of".

Par exemple, utilisez la requête ci-dessous pour retourner trois champs ("id", "value1", "value2") venant de deux types ("Type1", "Type2") :

{
  "select": {
    "from": [
      "Type1",
      "Type2"
    ],
    "fields": [
      {"field": "Type1/id"},
      {"field": "Type1/value1"},
      {"field": "Type2/value2"}
    ],
    "joins": [
      {
        "from": "Type1/fk2",
        "on": "Type2/id"
      }
    ],
    "as_of": {
      "date": "1000"
    }
  }
}

Les valeurs retournées ont les caractéristiques ci-dessous :

  • L'élément "as_of" retourne les valeurs de "Type1" comme elles étaient au 01/01/1970.
  • La valeur de la clé étrangère utilisée pour Type2 est la valeur de la clé étrangère au 01/01/1970.
  • Les valeurs pour Type2 sont celles au 01/01/1970.

Sécurité et rôles utilisateur

Rappelez-vous que la requête transmise au service n'est pas toujours celle que MDM exécute. Avant l'exécution de la requête, MDM réduit tous les éléments auxquels l'utilisateur connecté ne peut avoir accès, à savoir les champs, les conditions et les ordres de tri sélectionnés. Tous les éléments masqués aux utilisateurs sont retirés de la requête sans reporter d'erreur.

Par exemple :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"field": "Type1/id"},
	  {"field": "Type1/secret_field"}
    ]
  }
}

Dans cet exemple, MDM retire automatiquement l'élément "secret_field" de la requête si l'utilisateur actuel (étant l'utilisateur connecté à l'API REST) n'a pas accès à l'élément "secret_field". Cependant, la requête exécutée actuellement est la suivante :

{
  "select": {
    "from": ["Type1"],
    "fields": [
      {"field": "Type1/id"}
    ]
  }
}

Autre exemple de ce genre de requêtes :

{
  "select": {
    "from": ["Type1"],
    "where": {
      "gt": [
        {"field": "Type1/secret_field"},
        {"value": "1"}
      ]
    }
  }
}

Cette requête est lue de la manière suivante "retourne toutes les instances de Type1 où la valeur secret_field de Type1 est supérieure à 1". Le résultat retourné doit être les instances de Type1 où secret_field > 1.

Cependant, si les rôles de l'utilisateur actuel ne lui donnent pas accès à l'élément "secret_field", la requête actuelle devient :

{
  "select": {
    "from": ["Type1"]
  }
}

Cette requête est lue de la manière suivante "retourne toutes les instances de Type1". Le résultat retourné doit être toutes les instances de Type1 car l'utilisateur actuel n'a pas accès à l'élément "secret_field".

Ceci empêche les utilisateurs dépourvus de droits d'accès de deviner indirectement les valeurs de l'élément "secret_field", en utilisant des conditions de valeurs sur ce champ.

Exemple d'exécution d'une opération GET HTTP avec l'API REST MDM dans Talend MDM Web UI

Dans Talend MDM Web UI, les utilisateurs ayant les droits d'accès peuvent utiliser le menu Tools pour accéder à la page de la documentation de l'API REST MDM basée sur Swagger et tester les opérations de l'API REST sur cette page, si nécessaire.

L'exemple suivant vous montre comment exécuter une opération HTTP GET avec l'API REST MDM pour lister toutes les clés primaires des enregistrements de données maître dans un conteneur sur le serveur MDM.

Avant de commencer

Assurez-vous d'avoir importé au préalable le projet démo MDM et créé plusieurs enregistrements de données maître pour l'entité Product du conteneur Product.

Procédure

  1. Ouvrez la page de la documentation de l'API REST dans Talend MDM Web UI.
  2. Dans la liste des opérations, sous la catégorie User data management, cliquez sur le lien GET, suivi par /data/{containerName}/{type} pour en afficher les détails. Vous pouvez également cliquer sur Lists all primary keys for container and type pour afficher les détails de l'opération.
  3. Sélectionnez Master dans la liste Container.
  4. Saisissez Product dans le champ containerName.
  5. Saisissez Product dans le champ type.
  6. Cliquez sur Execute pour exécuter l'opération GET.

    L'URL de la requête HTTP, le corps, le code ainsi que les en-têtes de la réponse s'affichent. Dans cet exemple, toutes les clés primaires du conteneur Product sont listées.

  7. Pour vérifier le résultat d'exécution de cette opération GET, allez sur la page Master Data Browser. Recherchez ensuite les enregistrements de données maître du conteneur Product, puis confirmez que le résultat de l'exécution correspond au résultat de la recherche.

Intégration de l'API pour les transactions

L'API pour les transactions peut être intégrée à l'API pour les données.

Pour plus d'informations concernant les transactions MDM, consultez Transactions MDM.

Ajouter une requête REST à une transaction existante

Les modifications effectuées via l'API REST pour les données peuvent être ajoutées à une transaction créée via l'API pour les transactions.

Pour ajouter une requête REST à une transaction existante, configurez la valeur de l'en-tête HTTP personnalisé "transaction-id" avec l'identifiant de la transaction. Si l'identifiant de transaction fourni n'existe pas, il doit être créé.

Par exemple :
PUT /talendmdm/services/rest/transactions, creates a new transaction and returns its id
POST /talendmdm/services/rest/data/Product (with transaction-id set to the id returned at step1), creates a new product but does not commit changes to the database
POST /talendmdm/services/rest/transactions/<id> commits the transactions and thus changes made at step 2

Cette fonctionnalité fonctionne également avec l'opération Insert de données par lots (/talendmdm/services/rest/data/Product/batch).