Création de règles à partir de l'API REST
Vous pouvez utiliser l'outil HTTP REST API pour créer et configurer des règles. Utilisez ces règles pour envoyer des notifications contrôlées par des événements et déclencher des actions.
Pour utiliser l'API REST HTTP, vous devez connaître les informations suivantes :
- Votre identifiant d'organisation.
Lorsque vous vous inscrivez à l'outil, vous recevez un identifiant d'organisation qui est un identifiant unique de six caractères pour votre compte. - Votre clé d'API et votre jeton d'authentification.
Vous pouvez générer une clé d'API et un jeton d'authentification à l'aide du tableau de bord. Pour plus d'informations sur les clés et les jetons d'API, voir Connexion de clé d'API. - Identificateur d'interface logique auquel vous souhaitez associer la règle rule.To trouver un identificateur d'interface logique, utilisez l'API REST HTTP suivante:
GET /draft/logicalinterfaces
L'exemple suivant montre comment utiliser CURL pour extraire des informations relatives à une interface logique :
curl --request GET \
--url https://yourOrgID.{{site.data.keynote.software_base_url}}/api/v0002/draft/logicalinterfaces \
--user '{API Key}:{authorization token}'
L'exemple suivant illustre une réponse à la méthode GET :
{
"results": [
{
"id": "5846ed076522050001db0e12",
"name": "Thermometer Interface",
"alias": "IThermometer",
"description": "Thermometer Logical Interface",
"schemaId": "5846ec826522050001db0e11",
"version": "draft",
"created": "2017-06-16T15:41:49Z",
"createdBy": "a-8x7nmj-9iqt56kfil",
"updated": "2017-06-16T15:41:49Z",
"updatedBy": "a-8x7nmj-9iqt56kfil",
"refs": {
"schema": "/api/v0002/draft/schemas/5846ec826522050001db0e11",
"rules": "/api/v0002/draft/logicalinterfaces/5846ed076522050001db0e12/rules"
}
}
],
"meta": {
"total_rows": 1
}
}
Dans cet exemple, l'identificateur d'interface logique est 5846ed076522050001db0e12.
Configuration de règles - scénario
Ce scénario explique comment créer deux règles et est basé sur la configuration créée dans Scénario : Configuration d'une interface logique commune.
La première règle, appelée tempRuleMax, est déclenchée lorsqu'un événement de température est reçu par l'outil et que la propriété de température de l'état de l'appareil dépasse 44 degrés Celsius. La deuxième règle, appelée tempRuleMin, est déclenchée lorsque l'outil reçoit un événement de température qui fait passer la propriété de température de l'état de l'appareil en dessous de 10 degrés Celsius.
Toutefois, nous ne voulons pas coder en dur les seuils de température dans ces conditions pour les règles car cela ne permet pas aux seuils de varier par instance de terminal. A la place, les seuils de température sont définis en tant que propriétés sur les métadonnées de l'unité et les conditions de la règle font référence à ces propriétés à l'aide de la variable $instance. Ce scénario utilise l'unité TSensor qui a été créée dans le cadre de Scénario : Configuration d'une interface logique commune. Ce terminal publie des événements de température qui sont mesurés en degrés Celsius. Les métadonnées suivantes sont associées à l'instance d'unité TSensor :
{
"tempThresholdMax": 44,
"tempThresholdMin": 10
}Les métadonnées Conseil : peuvent être ajoutées ou mises à jour à une instance d'unité une fois qu'elle a été créée à partir de la page Informations sur l'unité du tableau de bord.
Effectuez les opérations suivantes pour configurer les deux règles :
- Sélectionnez l'interface logique que vous souhaitez associer à votre règle. Dans ce scénario, nous utilisons l'interface logique avec l'identificateur 5846ed076522050001db0e12.
- Affichez les règles en cours qui sont associées à l'interface logique à l'aide de l'API suivante:
GET /draft/logicalinterfaces/5846ed076522050001db0e12/rules
Etant donné qu'aucune règle n'est actuellement associée à l'interface logique 5846ed076522050001db0e12, une liste vide est renvoyée. - Ajoutez une règle appelée tempRuleMax en utilisant l'API suivante :
POST /draft/logicalinterfaces/5846ed076522050001db0e12/rules
Inclure le nom de la règle, un paramètre de condition et un paramètre de stratégie de notification dans le corps de la requête :
L'exemple suivant montre la réponse à la méthode POST :{ "name" : "tempRuleMax", "condition" : "$state.temperature > $instance.metadata.tempThresholdMax", "notificationStrategy": { "when": "every-time" } }
La règle TempRuleMax est déclenchée si la propriété Température de l'état de l'unité dépasse la valeur spécifiée dans la propriété TempThresholdMax sur les métadonnées de l'instance d'unité TSensor. Dans notre exemple, la valeur est de 44 degrés Celsius.{ "name": "tempRuleMax", "id": "5a71991e59080100328710e9", "logicalInterfaceId": "5846ed076522050001db0e12", "condition": "$state.temperature > $instance.metadata.tempThresholdMax", "notificationStrategy": { "when": "every-time" }, "version": "draft", "created": "2018-01-31T10:23:26Z", "createdBy": "a-7p9t2v-zsrcacabpa", "updated": "2018-01-31T10:23:26Z", "updatedBy": "a-7p9t2v-zsrcacabpa", "refs": { "logicalInterface": "/api/v0002/draft/logicalinterfaces/5846ed076522050001db0e12" } } - Ajoutez une règle appelée tempRuleMin en utilisant l'API suivante :
POST /draft/logicalinterfaces/5846ed076522050001db0e12/rules
Inclure le nom de la règle, un paramètre de condition et un paramètre de stratégie de notification dans le corps de la requête :
L'exemple suivant montre la réponse à la méthode POST :{ "name" : "tempRuleMin", "condition" : "$state.temperature < $instance.metadata.tempThresholdMin", "notificationStrategy": { "when": "every-time" } }
La règle TempRuleMin est déclenchée si la propriété Température de l'état de l'unité est inférieure à la valeur spécifiée dans la propriété TempThresholdMin sur les métadonnées de l'instance d'unité TSensor. Dans notre exemple, la valeur est de 10 degrés Celsius.{ "name": "tempRuleMin", "id": "5a71991e59080100328710e10", "logicalInterfaceId": "5846ed076522050001db0e12", "condition": "$state.temperature < $instance.metadata.tempThresholdMin", "notificationStrategy": { "when": "every-time" }, "version": "draft", "created": "2018-01-31T10:23:26Z", "createdBy": "a-7p9t2v-zsrcacabpa", "updated": "2018-01-31T10:23:26Z", "updatedBy": "a-7p9t2v-zsrcacabpa", "refs": { "logicalInterface": "/api/v0002/draft/logicalinterfaces/5846ed076522050001db0e12" } } - Validez et activez votre configuration à l'aide de l'opération activate-configuration .
Vous devez activer votre configuration après avoir ajouté une règle, car l'action d'ajout de la règle entraîne une modification du modèle brouillon. L'opération Activer-configuration peut être effectuée sur la version brouillon du type d'unité ou de l'interface logique. L'exemple suivant illustre une demande PATCH où une opération activate-configuration est effectuée sur une version brouillon d'un type de dispositif :
où le corps PATCH contient le contenu suivant :PATCH /draft/device/types/{typeId}{ "operation": "activate-configuration" } - Affichez les règles en cours sur l'interface logique active à l'aide de l'API suivante:
GET /logicalinterfaces/5846ed076522050001db0e12/rules
L'exemple suivant illustre une réponse à la méthode GET:
Pour plus de détails sur l'utilisation de l'API, voir l'outil HTTP REST API dans la documentation de votre API locale. Pour plus d'informations sur l'accès à la documentation locale, voir API.[ { "name": "tempRuleMax", "id": "5a71991e59080100328710e9", "logicalInterfaceId": "5846ed076522050001db0e12", "condition": "$state.temperature > $instance.metadata.tempThresholdMax", "notificationStrategy": { "when": "every-time" }, "version": "active", "created": "2018-01-31T10:23:26Z", "createdBy": "a-7p9t2v-zsrcacabpa", "updated": "2018-01-31T10:23:26Z", "updatedBy": "a-7p9t2v-zsrcacabpa", "refs": { "logicalInterface": "/api/v0002/logicalinterfaces/5846ed076522050001db0e12" } }, { "name": "tempRuleMin", "id": "5a71561e59055500328710e10", "logicalInterfaceId": "5846ed076522050001db0e12", "condition": "$state.temperature < $instance.metadata.tempThresholdMin", "notificationStrategy": { "when": "every-time" }, "version": "active", "created": "2018-01-31T10:23:26Z", "createdBy": "a-7p9t2v-zsrcacabpa", "updated": "2018-01-31T10:23:26Z", "updatedBy": "a-7p9t2v-zsrcacabpa", "refs": { "logicalInterface": "/api/v0002/logicalinterfaces/5846ed076522050001db0e12" } } ] - Consommation des notifications de règle. Vous pouvez désormais définir des actions ou configurer vos applications externes pour qu'elles consomment la sortie de votre règle. Pour plus d'informations, voir Consommation de notifications de règle.