Skip to main content
Chaque route de lecture accepte ses propres paramètres de requête. Une route de la matrice des filtres rejette un paramètre inconnu ou une valeur du mauvais type avec 422 et validation_failed, sauf si la matrice indique autre chose. Les alias pratiques comme project, trace et user ne sont pas des paramètres de requête. Ne reportez pas un filtre d’une route sur une autre.

Construire une requête filtrée

Placez la chaîne de requête après le chemin. Utilisez --data-urlencode pour encoder correctement les caractères réservés. Cette requête lit les logs critiques d’un projet sur les dernières 24 heures :
Ajoutez les filtres dans cet ordre :
  1. Sélectionnez le projet avec project_id ou project_ids.
  2. Ajoutez une période avec since, et éventuellement until.
  3. Ajoutez les filtres de service, de version, d’environnement, de statut ou les filtres propres au signal.
  4. Définissez limit pour obtenir une page plus petite.
  5. Ajoutez les champs de curseur seulement après qu’une réponse paginée par curseur les a renvoyés.
Chaque ligne renvoyée correspond à tous les filtres de la requête. Un filtre omis prend la valeur par défaut de la route. Par exemple, GET /api/logs utilise status=active quand vous omettez status.

Matrice des filtres

Les paramètres de la colonne « Obligatoires » doivent figurer dans la requête. Tous les autres paramètres sont facultatifs. Pour l’investigation d’un problème, selection vaut first, latest ou recommended. Envoyez selection ou occurrence_id, pas les deux. Les deux exigent une response_version de 2 à 13. Avec la version 2 ou une version ultérieure et sans sélecteur, LogBrew utilise recommended. Obtenez un occurrence_id avec GET /api/telemetry/issues/{issue_id}/events. Les routes d’analyse en POST acceptent un corps JSON. Consultez Analyses produit.

Filtres communs et filtres propres à un signal

service_name, release et environment restreignent toutes les listes de télémétrie. Utilisez les valeurs exactes qu’envoie votre SDK. Certains filtres appartiennent à un seul signal :
  • Les logs acceptent search, trace_id, severity et attribute_filters.
  • Les logs acceptent status : active (par défaut), ignored ou all. ignored sélectionne les logs qu’une règle de log masque dans la vue active.
  • Les problèmes acceptent le status de problème : unresolved, resolved ou archived. ignored est un ancien nom de archived et sélectionne les mêmes problèmes.
  • Les problèmes acceptent severity : info, warning, error ou critical.
  • Les problèmes acceptent priority : high, medium ou low.
  • Les problèmes acceptent assignee : me pour les problèmes attribués au compte connecté, none pour les problèmes sans responsable, my_teams pour les problèmes de vos équipes, un ID d’utilisateur ou team:<team_id>.
  • Les actions et les métriques acceptent name.
  • Les actions acceptent distinct_id.
  • Les traces acceptent le status de trace et min_duration_ms.
  • Les déploiements acceptent status : succeeded ou failed.
Les filtres severity des logs et des problèmes comparent la gravité effective. Si une règle a modifié la gravité, le filtre utilise la valeur de la règle. Consultez Valeurs de gravité.

Période

since accepte un nombre entier positif d’heures ou de jours, comme 24h ou 7d, ou un horodatage RFC3339. Une durée compacte est relative à l’heure de chaque requête. until accepte uniquement un horodatage RFC3339. C’est une heure de fin exclusive : une ligne située exactement à until n’est pas dans le résultat. since est inclusif. Par exemple, since=2026-10-01T00:00:00Z et until=2026-10-02T00:00:00Z sélectionnent 1 journée complète. LogBrew compare les heures à la milliseconde près. until doit être postérieur à since. Sinon, ou si until n’est pas un horodatage RFC3339, la requête échoue avec 422 et validation_failed. Pour une lecture sur plusieurs pages, choisissez une heure de début RFC3339 et gardez-la sur chaque page. Gardez aussi le même until sur chaque page. Cette requête lit les logs d’erreur d’une journée :
La liste des déploiements suit d’autres règles de temps. Ses paramètres since et until acceptent uniquement des horodatages RFC3339, et les deux sont inclusifs. Ils portent sur l’heure de fin du déploiement.

Version de la réponse des problèmes

La liste et le détail des problèmes acceptent response_version=1, response_version=2, response_version=3 ou response_version=4. La version 1 est la valeur par défaut. Toute autre valeur échoue avec 422 et validation_failed.
  • La version 1 affiche l’état archivé sous la forme ignored. Elle n’affiche pas la priorité.
  • La version 2 affiche l’état archivé sous la forme archived. Elle ajoute priority et priority_source.
  • La version 3 contient tous les champs de la version 2. Elle ajoute assignee.
  • La version 4 contient tous les champs de la version 3. assignee a un type : user ou team.
Toutes les versions acceptent status=archived, priority et assignee. Consultez la réponse d’un problème.

Filtre de gravité

Utilisez severity=info|warning|error|critical sur GET /api/logs. L’ancien paramètre level est un alias de compatibilité. Les 2 paramètres acceptent les valeurs canoniques et les alias trace, debug, warn et fatal. LogBrew convertit un alias en sa valeur canonique avant de comparer. Si une requête envoie à la fois severity et level, LogBrew normalise d’abord les deux. Des valeurs contradictoires sont rejetées avec :

Filtres de trace

Pour la recherche de traces, status vaut error ou ok. Omettez-le pour inclure les deux. min_duration_ms doit être supérieur ou égal à zéro. Il s’applique uniquement à la recherche de traces. Cette requête trouve les traces en erreur qui ont duré au moins 500 millisecondes :
Pour le détail et le résumé d’une trace, encodez trace_id en pourcentage dans le segment de chemin. Ne l’envoyez pas comme paramètre de requête.

Périmètre de projet

Utilisez project_id=<project-uuid> pour lire un projet. Sur les routes dont la matrice liste project_ids, utilisez project_ids=<uuid>,<uuid> pour un ensemble exact de 2 à 50 projets. Sur ces routes, omettez les 2 paramètres pour lire tous les projets que le compte peut lire. Une route qui exige project_id accepte 1 seul projet.
LogBrew rejette ces sélections avec 422 et validation_failed :
  • Une requête qui contient à la fois project_id et project_ids.
  • Une valeur project_ids avec moins de 2 ou plus de 50 ID.
  • Un ID en double ou un ID qui n’est pas un UUID.
Si un ID de project_ids correspond à un projet que le compte ne peut pas lire, la requête échoue avec 404 et not_found. Ne retirez pas cet ID pour continuer. Demandez à l’utilisateur de choisir un nouvel ensemble. Gardez le même périmètre de projet sur chaque page de curseur. Ne retirez pas le filtre de projet après un résultat vide : cela pose une autre question.

Séries par intervalle

GET /api/telemetry/metrics/series renvoie une métrique sous forme d’intervalles de temps. GET /api/telemetry/summary/volume renvoie le nombre de signaux sous forme d’intervalles de temps. Les 2 routes suivent ces règles :
  • since est obligatoire. until est facultatif et vaut par défaut l’heure de la requête.
  • L’écart entre since et until est de 31 jours au maximum.
  • interval vaut auto, 1m, 5m, 15m, 1h, 6h ou 1d. La valeur par défaut est auto. Une valeur qui produit plus de 500 intervalles échoue.
  • service_name, release et environment sont des filtres exacts.
Pour les séries de métriques, name est le nom exact de la métrique issu de GET /api/telemetry/metrics. group_by vaut none, service_name, release ou environment. series_limit va de 1 à 20. Pour le volume des signaux, until ne doit pas être dans le futur, et response_version accepte uniquement 1.

Filtrer les attributs de log

Utilisez GET /api/logs/attributes pour trouver les chemins et les types d’attributs que vous pouvez rechercher. Envoyez ensuite attribute_filters à GET /api/logs. Les 2 requêtes exigent since.

Lire le catalogue d’attributs

Cette requête trouve, dans un projet, les chemins numériques qui contiennent status :
La réponse est un objet, pas un simple tableau. Cet exemple fictif contient 2 attributs et une page suivante :
type vaut string, number ou boolean. observed_count est le nombre de logs de la période qui ont ce chemin et ce type. last_seen_at est l’heure du plus récent d’entre eux. Un log peut avoir de nombreux chemins. N’additionnez pas les comptages pour obtenir un nombre de logs. coverage indique quels logs un filtre d’attributs peut rechercher : La somme des 3 groupes vaut total_logs. Les paramètres type et search du catalogue et le curseur ne modifient pas la couverture. Une liste attributes vide ne signifie pas que total_logs vaut zéro. Le catalogue n’a pas de paramètre status. Son filtre de gravité compare la gravité capturée, pas la gravité effective. search est une sous-chaîne de chemin de 1 à 128 octets, sans caractères de contrôle. limit définit le nombre d’attributs par page.

Poursuivre le catalogue

Le catalogue n’utilise pas pagination=cursor. Répétez chaque filtre et copiez les 3 champs de next_cursor : Arrêtez-vous quand next_cursor vaut null.

Appliquer un filtre typé

Copiez le chemin et le type depuis le catalogue. Les chemins utilisent la syntaxe JSON Pointer, pas des clés séparées par des points. Gardez tels quels les échappements ~0 ou ~1 du chemin. Cette requête lit les logs dont le statut numérique de réponse est supérieur ou égal à 500 :
attribute_filters est un tableau JSON de 1 à 4 filtres. Un log doit correspondre à chaque filtre. Chaque filtre a path, type, operator et value. Le type JSON de value doit correspondre à type : le nombre 500 n’est pas la chaîne "500". ne correspond uniquement aux logs qui ont le chemin. Un log sans le chemin ne correspond pas à ne. Pour string, case_sensitive est facultatif et vaut false par défaut. LogBrew rejette "case_sensitive": true pour number et boolean. Ces limites s’appliquent :
  • Le tableau JSON fait au maximum 4 096 octets.
  • Une valeur de type chaîne fait au maximum 1 024 octets.
  • contains et starts_with exigent une chaîne non vide.
  • Un nombre doit être fini et compris entre -9 007 199 254 740 992 et 9 007 199 254 740 992.
Un log que l’index ne peut pas rechercher ne correspond pas à un filtre. Il peut quand même apparaître dans une requête sans attribute_filters. Pour la réponse de log, consultez Réponse de log.

Corriger les erreurs d’attributs

Chaque erreur ci-dessous renvoie 422 avec validation_failed : Corrigez la requête avant de réessayer. Ne retirez pas de filtre : cela modifie le résultat.

Pagination par curseur

Le mode curseur est facultatif et doit être activé. Sans lui, les routes de liste renvoient un simple tableau. Pour la première page, envoyez pagination=cursor sans champs de curseur. Pour chaque page suivante, répétez chaque filtre et envoyez l’ensemble complet des champs de curseur : Reportez les champs next_cursor renvoyés dans la requête suivante :
  • next_cursor.time va dans cursor_time.
  • next_cursor.id va dans cursor_id.
  • Pour les traces, next_cursor.trace_id va dans cursor_trace_id.
  • Pour les versions, ajoutez cursor_ devant chaque nom de champ renvoyé. Par exemple, next_cursor.release va dans cursor_release.
Arrêtez-vous quand next_cursor vaut null. Ne calculez pas un curseur à partir de la dernière ligne. Le curseur des versions ne modifie pas les projets sélectionnés. Gardez le project_id ou les project_ids d’origine.
limit définit la taille de la page. Une page peut contenir moins de lignes. Ces routes n’acceptent pas page ni page_number. Sur la plupart des routes, LogBrew ramène au maximum un limit supérieur au maximum. La liste des déploiements rejette un limit hors de l’intervalle 1 à 100 avec 422. La liste des déploiements renvoie toujours un objet de page avec next_cursor, même sans pagination=cursor. LogBrew rejette ces requêtes avec 422 et validation_failed :
  • Une valeur de pagination autre que cursor.
  • Des champs de curseur sans pagination=cursor.
  • Un ensemble incomplet de champs de curseur.
  • Un cursor_time qui n’est pas un horodatage RFC3339.
Un curseur marque une position. Il ne fige pas les données. Recommencez à la première page quand vous avez besoin d’une vue à jour. La CLI utilise les mêmes champs :

Diagnostiquer un résultat vide

Une liste vide signifie qu’aucune ligne ne correspond à tous les filtres. Elle ne dit rien des autres signaux. Vérifiez la requête dans cet ordre :
  1. Vérifiez l’ID du projet.
  2. Retirez les filtres facultatifs un par un.
  3. Élargissez since si le signal attendu est plus ancien. Retirez until ou repoussez-le si le signal attendu est plus récent.
  4. Comparez service_name, release et environment avec les valeurs qu’envoie votre SDK.
  5. Pour les logs, ajoutez status=all si une règle de log peut masquer le log attendu.
  6. Vérifiez que la route accepte chaque filtre.

Corriger une requête rejetée

Une requête rejetée renvoie l’enveloppe d’erreur standard. Un paramètre inconnu ou une valeur du mauvais type renvoie 422 :
Corrections courantes :
  • Remplacez un alias pratique par le paramètre de la matrice des filtres.
  • Envoyez chaque champ de curseur de continuation dont la route a besoin.
  • Retirez les champs de curseur de la requête de la première page.
  • Utilisez un seul sélecteur de projet.
  • Remplacez une gravité ou un statut de trace non pris en charge par une valeur canonique.
Pour les codes d’erreur et la reprise, consultez Erreurs de l’API. Pour les corps de réponse, consultez Formats de réponse.