Evénements d'API

Tableau de référence et exemples de cas d'utilisation pour les règles d'engagement basées sur les événements de l'API.

Voici quelques exemples de cas d'utilisation des règles d'engagement basées sur les événements de l'API :

  • Un fournisseur d'API peut utiliser Engagement pour être averti :
    • S'il y a plus de 3 erreurs HTTP 500 sur une même API au cours d'une période de 24 heures.
    • Lorsque le temps de réponse moyen d'une API dépasse un certain seuil.
  • Un responsable de la sécurité d'entreprise peut utiliser l'engagement pour recevoir un e-mail si quelqu'un accède à ses API bancaires depuis un pays sous embargo.
  • Un fournisseur d'API d'IA peut utiliser l'engagement pour être averti si le total des jetons d'IA utilisés en une heure dépasse un certain seuil.

Le tableau suivant présente la liste des champs disponibles pour un enregistrement d'événement API. Ces champs sont utilisés comme filtres dans la liste de définition des règles et vous pouvez sélectionner une option basée sur les données utilisées pour déclencher la règle.

Tableau 1. Champs d'enregistrement d'événements API
Nom de zone Type Descriptif
ai_cache_hit Booléen Indique si la réponse AI a été servie à partir du cache.
ai_modèle Chaîne Le nom ou l'identifiant du modèle d'IA utilisé.
ai_request_tokens Nombre Le nombre de tokens dans l'invite d'entrée du modèle d'IA.
jetons_de_réponse_IA Nombre Le nombre de jetons générés dans la réponse de l'IA.
ai_total_tokens Nombre Nombre total de jetons utilisés dans l'interaction avec l'IA, qui comprend à la fois la demande et la réponse.
action_alerte Chaîne Action entreprise en réponse à une alerte.
alerte_description Chaîne Description ou message associé à l'alerte.
source_d'alerte Chaîne Le système ou module source qui a généré l'alerte.
Alert_Type Chaîne Le type ou la catégorie de l'alerte.
api_id Chaîne Identificateur d'API.
api_name Chaîne Nom de l'API.
api_resource_id Chaîne Le format du champ est : api_name:api_version:method:path. Disponible uniquement sur API Gateway v10.5.3 ou version ultérieure.
api_version Chaîne Numéro de version de l'API.
api_type Chaîne Type de l'API. Par exemple, REST, GraphQL, SOAP.
app_id Chaîne Identificateur de l'application enregistrée.
état du cycle de vie de l'application Chaîne Etat du cycle de vie de l'application.
nom_app Chaîne Nom de l'application enregistrée
Remarque : La propriété est définie sur undefined lorsqu'un identifiant client n'est pas utilisé ou n'est pas valide sur l'API. La passerelle a besoin d'un ID client pour déterminer quelle application a appelé l'API. A partir de cette application, la passerelle peut déterminer le plan auquel l'application est abonnée sur le produit qui contient l'API. Sans identifiant client, la passerelle est incapable de déterminer quel plan, produit ou application a été invoqué, car une seule API peut appartenir à plusieurs produits (chacun d'entre eux ayant plusieurs plans et applications qui sont abonnés à ces plans avec des identifiants client).
app_type Chaîne Le type d'application, avec une valeur de Production ou Development.
méthode_du_dossier Chaîne La méthode HTTP utilisée dans la requête du backend.
corps_de_la_demande_de_backend Chaîne Le contenu du corps de la requête du backend.
en-têtes_de_la_requête_du_backend Objet Les en-têtes qui sont envoyés dans la requête du backend.
corps_de_la_réponse Chaîne Le contenu du corps de la réponse du backend.
en-têtes_de_la_réponse_de_la_commande Objet Les en-têtes qui sont reçus dans la réponse du backend.
code_état_du_backend Chaîne Le code d'état HTTP renvoyé par le backend.
demande_de_temps_de_service_du_tour_du_tour_du_tour_du_tour_du_tour_de_tour Nombre Temps en millisecondes pris par le backend pour servir la requête.
url_backend Chaîne Le site URL du service backend invoqué.
bytes_received Nombre Le nombre d'octets reçus du consommateur dans la requête.
bytes_sent Nombre Le nombre d'octets envoyés au consommateur dans la réponse.
réponse_mise_en_cache Booléen Indique si la réponse a été servie à partir d'un cache.
demande de rappel Booléen Indique si la demande était un rappel.
catalog_id Chaîne L'identifiant du catalogue de l'API.
nom_catalogue Chaîne Le nom du catalogue API.
client_geoip.area_code Nombre Indicatif régional du réseau téléphonique public commuté (PSTN) du client, tel qu'identifié à partir de son adresse IP.
client_geoip.city_name Chaîne Nom de la ville du client, tel qu'identifié à partir de son adresse IP.
client_geoip.continent_code Chaîne Code continent à deux lettres du client, tel qu'identifié à partir de son adresse IP.
client_geoip.country_code2 Chaîne Code pays à deux lettres du client, tel qu'identifié à partir de son adresse IP.
client_geoip.country_code3 Chaîne Code pays à trois lettres du client, tel qu'identifié à partir de son adresse IP.
client_geoip.country_name Chaîne Nom du pays du client, tel qu'identifié à partir de son adresse IP.
client_geoip.dma_code Nombre Code DMA (Designated Market Area) du client, tel qu'identifié à partir de son adresse IP.
client_geoip.ip Chaîne Adresse IP du client.
client_geoip.latitude Nombre Latitude de l'emplacement du client, tel qu'identifié à partir de son adresse IP.
client_geoip.location Chaîne Longitude et latitude de l'emplacement du client (séparés par une virgule), tel qu'identifié à partir de son adresse IP.
client_geoip.longitude Nombre Longitude de l'emplacement du client, tel qu'identifié à partir de son adresse IP.
client_geoip.postal_code Chaîne Code postal du client, tel qu'identifié à partir de son adresse IP.
client_geoip.region_code Chaîne Le code régional est basé sur l'IP du client.
client_geoip.region_name Chaîne Forme abrégée de la région qui correspond à l'adresse IP du client.
client_geoip.timezone Chaîne Fuseau horaire du client, tel qu'identifié à partir de son adresse IP.
client_id Chaîne ID unique du client associé à la demande d'API.
client_ip Chaîne Adresse IP du client.
id_de_l'organisation_du_consommateur Chaîne L'identifiant de l'organisation de consommateurs.
nom de l'organisation de consommateurs Chaîne Le nom de l'organisation de consommateurs
titre de l'organisation de consommateurs Chaîne Le titre ou le nom de l'organisation de consommateurs.
données_personnalisées Matrice de correspondance Des données personnalisées peuvent être ajoutées à ce champ.
date-heure Date : Un horodatage qui enregistre le moment où l'API a été invoquée. L'horodatage est toujours indiqué en temps universel coordonné.
developer_org_id Chaîne Identificateur de l'organisation de type consommateur qui est propriétaire de l'application.
developer_org_name Chaîne Nom de l'organisation de type consommateur qui est propriétaire de l'application.
endpoint_url Chaîne Lorsque la demande échoue, endpoint_url identifie le proxy ou invoque la cible URL sur laquelle la demande a échoué. Elle n'est pas incluse avec une requête qui a abouti. Sur une passerelle compatible avec l' V5, ce champ n'est renseigné que lorsque l' URL du serveur backend qui a été invoquée renvoie un code 404 d' HTTP.
description_de_l'erreur Chaîne Une description détaillée de toute erreur rencontrée.
error_message Chaîne Un bref message décrivant l'erreur.
event_type Chaîne Type d'événement.
nom_du_filtre Chaîne Le nom du filtre qui est appliqué lors de la demande.
gateway_geoip.area_code Nombre Indicatif régional du réseau téléphonique public commuté (PSTN) de la passerelle, tel qu'identifié à partir de son adresse IP.
gateway_geoip.city_name Chaîne Nom de la ville de la passerelle, tel qu'identifié à partir de son adresse IP.
gateway_geoip.continent_code Chaîne Code continent à deux lettres de la passerelle, tel qu'identifié à partir de son adresse IP.
gateway_geoip.country_code2 Chaîne Code pays à deux lettres de la passerelle, tel qu'identifié à partir de son adresse IP.
gateway_geoip.country_code3 Chaîne Code pays à trois lettres de la passerelle, tel qu'identifié à partir de son adresse IP.
gateway_geoip.country_name Chaîne Nom du pays de la passerelle, tel qu'identifié à partir de son adresse IP.
gateway_geoip.dma_code Nombre Code DMA (Designated Market Area) de la passerelle, tel qu'identifié à partir de son adresse IP.
gateway_geoip.ip Chaîne Adresse IP de la passerelle.
gateway_geoip.latitude Nombre Latitude de l'emplacement de la passerelle, telle qu'identifiée à partir de son adresse IP.
gateway_geoip.location Chaîne Longitude et latitude de l'emplacement de la passerelle (séparés par une virgule), telles qu'identifiées à partir de son adresse IP.
gateway_geoip.longitude Nombre Longitude de l'emplacement de la passerelle, telle qu'identifiée à partir de son adresse IP.
gateway_geoip.postal_code Chaîne Code postal de la passerelle, tel qu'identifié à partir de son adresse IP.
gateway_geoip.region_name Chaîne Forme abrégée de la région qui correspond à l'adresse IP de la passerelle.
gateway_geoip.timezone Chaîne Fuseau horaire de la passerelle, tel qu'identifié à partir de son adresse IP.
nom_de_l'hôte_de_la_passerelle Chaîne Le nom d'hôte de la passerelle API.
gateway_ip Chaîne Adresse IP de la passerelle.
port_passerelle Nombre Le numéro de port utilisé par la passerelle API.
nom_du_service_de_la_passerelle Chaîne Nom du service de passerelle API d' DataPower. Configuré par l'utilisateur administrateur du cloud lors de l'enregistrement du service de passerelle. Disponible uniquement sur DataPower API Gateway v10.5.3 ou version ultérieure.
demande_de_temps_de_service_de_passerelle Nombre Temps en millisecondes pris par la passerelle pour répondre à la demande.
type de passerelle Chaîne Le type et la version de la passerelle qui a traité l'appel, au format : type / version. Défini par tous les types de passerelle sauf v5c, et disponible uniquement sur v10.0.8.0 ou supérieur.
global_transaction_id Chaîne L'identifiant de transaction global ( DataPower ). Voir https://www.ibm.com/docs/en/datapower-gateway/latest?topic=variables-varserviceglobal-transaction-id-servicevarsglobaltransactionid.
hachage du document GraphQL Chaîne La valeur de hachage du document de la requête GraphQL.
nombre d'erreurs GraphQL Nombre Le nombre d'erreurs rencontrées lors de l'exécution de la requête GraphQL.
nom_de_l'opération_GraphQL Chaîne Le nom de l'opération GraphQL.
type d'opération GraphQL Chaîne Le type d'opération GraphQL.
graphql_request_field_cost Nombre API GraphQL uniquement. Coût maximal de toutes les zones accessibles dans la requête. Le coût de chaque accès de zone est configuré dans le schéma.
graphql_request_max_nesting Nombre API GraphQL uniquement. Profondeur d'imbrication maximale trouvée dans la requête par l'action de validation d'assemblage. La configuration du schéma est utilisée pour déterminer quels types sont imbriqués, cette valeur peut donc être inférieure à la profondeur d'imbrication trouvée par l'action d'analyse de l'assemblage.
graphql_request_top_field_counts Objet API GraphQL uniquement. Nombre maximal de fois qu'une requête peut récupérer chaque champ. Ce nombre correspond au nombre de fois que le programme de résolution doit s'exécuter.

Cette zone est stockée au format JSON et n'est pas indexée ; elle n'est donc pas disponible pour les visualisations. Un nombre limité de demandes et de réponses de requête est stocké pour chaque entrée, en fonction de la quantité de données contenues dans chacune. La quantité maximale de données pouvant être stockées peut être modifiée.

graphql_request_top_type_counts Objet API GraphQL uniquement. Nombre maximal de fois qu'une requête peut récupérer un objet de chaque type.

Cette zone est stockée au format JSON et n'est pas indexée ; elle n'est donc pas disponible pour les visualisations. Un nombre limité de demandes et de réponses de requête est stocké pour chaque entrée, en fonction de la quantité de données contenues dans chacune. La quantité maximale de données pouvant être stockées peut être modifiée.

graphql_request_type_cost Nombre API GraphQL uniquement. Coût maximal de tous les types extraits dans la requête. Le coût de chaque type est configuré dans le schéma.
graphql_response_field_cost Nombre API GraphQL uniquement. Coût de toutes les zones accessibles dans la requête. Le coût de chaque accès de zone est configuré dans le schéma.
graphql_response_max_nesting Nombre API GraphQL uniquement. Profondeur d'imbrication trouvée dans la requête par l'action de validation d'assemblage. La configuration du schéma est utilisée pour déterminer les types qui sont considérés comme imbriqués. Cette valeur peut donc être inférieure à la profondeur d'imbrication trouvée par l'action d'analyse d'assemblage.
graphql_response_top_field_counts Objet API GraphQL uniquement. Le nombre de fois où chaque champ a été récupéré par la requête. Ce nombre correspond au nombre de fois que le programme de résolution doit s'exécuter.

Cette zone est stockée au format JSON et n'est pas indexée ; elle n'est donc pas disponible pour les visualisations. Un nombre limité de demandes et de réponses de requête est stocké pour chaque entrée, en fonction de la quantité de données contenues dans chacune. La quantité maximale de données pouvant être stockées peut être modifiée.

graphql_response_top_type_counts Objet API GraphQL uniquement. Nombre de fois où un objet de chaque type a été récupéré par la requête.

Cette zone est stockée au format JSON et n'est pas indexée ; elle n'est donc pas disponible pour les visualisations. Un nombre limité de demandes et de réponses de requête est stocké pour chaque entrée, en fonction de la quantité de données contenues dans chacune. La quantité maximale de données pouvant être stockées peut être modifiée.

graphql_response_type_cost Nombre API GraphQL uniquement. Coût de tous les types extraits dans la requête. Le coût de chaque type est configuré dans le schéma.
headers. field_ name Chaîne Informations internes liées à l'ingestion d'analyses. headers.field_name n'est pas lié à l'appel API ou à sa réponse, voir request_http_headers pour cette information.
hôte Chaîne Le nom d'hôte ou l'adresse IP du nœud d'ingestion qui a reçu l'événement API.
http_user_agent Chaîne Valeur de l'en-tête de l'agent utilisateur dans la demande entrante
immediate_client_ip Chaîne Adresse IP du client qui se trouve directement devant la passerelle. immediate_client_ip est généralement l'adresse IP d'un équilibreur de charge.
latency_info.started Nombre Le délai (en millisecondes) entre la réception de la requête et le moment où la passerelle a démarré la tâche correspondante. Le démarrage d'une tâche comprend plusieurs étapes pour préparer l'exécution d'une API ; par exemple, l'exécution de l'établissement d'une liaison TCP/TLS, la vérification de l'ID client et de la valeur confidentielle d'une application et la mise en correspondance de l'identificateur URI de la demande avec un catalogue, une API et un plan. Lorsque la passerelle reçoit une requête, la durée « Start » est fixée à 0. La durée de chaque étape de la tâche Début est ensuite additionnée, et le total représente la durée de la tâche Début.
latency_info.task Chaîne Transaction d'API qui a été traitée.
log_policy Chaîne Stratégie de journalisation définie. Les valeurs incluent none, event, headers et payload.
méthode Chaîne La méthode HTTP utilisée dans la demande. Par exemple, GET, POST.
attribut_moniteur Chaîne L'attribut personnalisé utilisé pour la surveillance de l'API.
opentracing_info Objet Les données de traçage distribuées pour la demande.
chemin_opération Chaîne Le chemin d'opération spécifique au sein de l'API.
org_id Chaîne Identificateur de l'organisation de fournisseurs qui est propriétaire de l'API et des produits associés.
org_name Chaîne Nom de l'organisation de fournisseurs qui est propriétaire de l'API et des produits associés.
chemin d'accès Chaîne Le chemin complet de la requête API.
iD du chemin d'accès Chaîne L'identifiant du chemin d'accès à l'API.
plan_id Chaîne Identificateur du plan.
nom_plan Chaîne Nom du plan.
Remarque : La propriété est définie sur undefined lorsqu'un identifiant client n'est pas utilisé ou n'est pas valide sur l'API. La passerelle a besoin d'un ID client pour déterminer quelle application a appelé l'API. A partir de cette application, la passerelle peut déterminer le plan auquel l'application est abonnée sur le produit qui contient l'API. Sans identifiant client, la passerelle est incapable de déterminer quel plan, produit ou application a été invoqué, car une seule API peut appartenir à plusieurs produits (chacun d'entre eux ayant plusieurs plans et applications qui sont abonnés à ces plans avec des identifiants client).
plan_version Chaîne Numéro de version du plan.
product_id Chaîne L'identifiant du produit associé à l'API.
nom_produit Chaîne Nom du produit.
Remarque : La propriété est définie sur undefined lorsqu'un identifiant client n'est pas utilisé ou n'est pas valide sur l'API. La passerelle a besoin d'un ID client pour déterminer quelle application a appelé l'API. A partir de cette application, la passerelle peut déterminer le plan auquel l'application est abonnée sur le produit qui contient l'API. Sans identifiant client, la passerelle est incapable de déterminer quel plan, produit ou application a été invoqué, car une seule API peut appartenir à plusieurs produits (chacun d'entre eux ayant plusieurs plans et applications qui sont abonnés à ces plans avec des identifiants client).
product_title Chaîne Titre du produit.
product_version Chaîne Numéro de version du produit.
query_string Chaîne Valeur de la chaîne de requête d'URL dans la demande entrante
taux_limite Chaîne Nombre maximal de demandes qu'une application est autorisée à envoyer à l'API au cours d'une fenêtre de temps spécifiée.
rate_limit.count Nombre Le nombre d'appels API restants dans la fenêtre de temps de limite de débit spécifiée.
rate_limit.interval Nombre La fenêtre de temps totale pendant laquelle un certain nombre d'appels API sont autorisés.
rate_limit.limit Nombre Nombre maximal de demandes qu'une application est autorisée à envoyer à l'API au cours d'une fenêtre de temps spécifiée.
rate_limit.period Nombre Fenêtre de temps utilisée pour définir une limite de débit pour les appels API.
rate_limit.reject Chaîne Une indication du rejet des appels qui dépassent le plafond tarifaire spécifié. Si c'est le cas, l'appel API est rejeté avec un code d'état 429. Si la valeur est false, un enregistrement est créé dans le journal d'activité.
rate_limit.shared Chaîne Indication comme quoi la limite de débit est partagée au niveau d'un plan par toutes les opérations ou une limite de débit est spécifiée pour chaque opération.
rate_limit.unit Nombre Unité de temps utilisée pour calculer la limite de débit.
Remarque : Les valeurs autorisées sont les suivantes : seconde, minute, heure, jour et semaine
request_body Chaîne Corps de la demande entrante
request _http_headers.field_name Chaîne Composant de la section d'en-tête HTTP de la demande entrante ; par exemple, les codages admis, la chaîne d'identification de l'agent utilisateur ou les proxys par l'intermédiaire desquels la demande a été envoyée.
Remarque : les types d'en-têtes suivants sont considérés comme sensibles et ne sont pas affichés dans les données analytiques pour des raisons de sécurité :
  • Toute clé secrète configurée dans la sécurité de l'API
  • Tout en-tête contenant secret
  • Tout en-tête contenant Authorization
request_method Chaîne Méthode de la demande entrante
request_protocol Chaîne Protocole de la demande entrante
ressource Chaîne Nom de l'opération.
resource_id Chaîne Identificateur de l'opération.
resource_path Chaîne Chemin de l'opération.
response_body Chaîne Corps de la réponse sortante
response_ http_headers.field_name Chaîne Composant de la section d'en-tête HTTP de la réponse sortante ; par exemple, le type MIME du contenu ou la date et l'heure auxquelles le message é été envoyé.
nom_de_la_règle Chaîne Nom de la règle appliquée à la demande.
portée Chaîne Non utilisé pour l' DataPower® API Gateway, ou DataPower Gateway.
space_id Chaîne L'identifiant de l'espace sous lequel l'appel à l'API a été effectué.
nom_espace Chaîne Nom de l'espace.
status_code Chaîne Code de statut défini dans la réponse sortante
time_to_serve_request Nombre Le temps écoulé (en millisecondes) entre le moment où la passerelle a reçu la requête et celui où elle a envoyé une réponse.
transaction_id Chaîne Identificateur de la transaction d'API. Voir https://www.ibm.com/docs/en/datapower-gateway/latest?topic=variables-varservicetransaction-id-servicevarstransactionid.
uri_path Chaîne Chemin d'identificateur URI dans la demande entrante
agent utilisateur Objet Le contenu analysé du champ « http_user_agent », qui contient des informations sur l'utilisateur qui a effectué l'appel de l'API.
user_agent.device Chaîne Nom du périphérique.
user_agent.major Chaîne Numéro de version majeure de l'agent utilisateur.
user_agent.minor Chaîne Numéro de version mineure de l'agent utilisateur.
user_agent.name Chaîne Nom de l'agent utilisateur.
user_agent.os_full Chaîne Nom complet du système d'exploitation détecté.
user_agent.os_major Chaîne Numéro de version majeure du système d'exploitation détecté.
user_agent.os_minor Chaîne Numéro de version mineure du système d'exploitation détecté.
user_agent.os_name Chaîne Nom du système d'exploitation détecté.
user_agent.os_patch Chaîne Version du correctif du système d'exploitation détecté.
user_agent.os_version Chaîne Version du système d'exploitation détectée.
user_agent.patch Chaîne Version du correctif de l'agent utilisateur.
user_agent.version Chaîne Version de l'agent utilisateur détectée.
type_de_message_de_la_socket Chaîne Le type de message WebSocket.
websocket_origin Chaîne L'en-tête d'origine de la connexion WebSocket.