La lecture de données en masse — métriques, journaux et traces — via l’API
GraphQL est obsolète. Utilisez plutôt l’API REST (V2),
comme metrics et recherche de journaux.
L’API GraphQL n’expose pas les lignes de journal. Les exemples de métriques
sur cette page sont conservés pour les intégrations existantes.
Récupérer les déploiements
Requête
query MarkersIndexQuery(
$appId: String!
$limit: Int
$offset: Int
$start: DateTime
$end: DateTime
) {
app(id: $appId) {
id
deployMarkers(limit: $limit, offset: $offset, start: $start, end: $end) {
id
createdAt
shortRevision
revision
gitCompareUrl
user
liveForInWords
liveFor
exceptionCount
exceptionRate
__typename
}
__typename
}
}
Variables de requête
{
"appId": "YOUR-APP-ID",
"limit": 25
}
Récupérer les incidents d’un déploiement
Requête
query ExceptionIncidentsQuery(
$appId: String!
$namespaces: [String]
$markerId: String
$limit: Int
$offset: Int
$state: IncidentStateEnum
$order: IncidentOrderEnum
) {
app(id: $appId) {
id
exceptionIncidents(
namespaces: $namespaces
marker: $markerId
limit: $limit
state: $state
offset: $offset
order: $order
) {
...ExceptionIncidentRow
__typename
}
__typename
}
}
fragment ExceptionIncidentRow on ExceptionIncident {
id
number
count
perMarkerCount(marker: $markerId)
lastOccurredAt
actionNames
exceptionName
state
namespace
firstBacktraceLine
errorGroupingStrategy
severity
}
Variables de requête
{
"appId": "YOUR-APP-ID",
"markerId": "YOUR-DEPLOY-MARKER-ID",
"limit": 200
}
Rechercher des incidents par tag
Requête
query Search(
$organizationSlug: String!
$query: String
$namespace: String
$sampleType: SampleTypeEnum
) {
organization(slug: $organizationSlug) {
search(query: $query, namespace: $namespace, sampleType: $sampleType) {
... on ExceptionSample {
id
time
action
namespace
overview {
key
value
}
exception {
name
message
}
incident {
... on ExceptionIncident {
number
}
}
app {
name
environment
id
}
}
... on PerformanceSample {
id
appId
time
action
namespace
duration
overview {
key
value
}
incident {
... on PerformanceIncident {
number
}
}
app {
name
environment
id
}
}
}
}
}
Variables de requête
{
"organizationSlug": "YOUR-ORGANIZATION-SLUG", // taken from the organization URL
"sampleType": "EXCEPTION",
"query": "tag:value" // replace the word value with the values you are searching for
}
Récupérer le nombre d’erreurs
Cet exemple utilise l’API de métriques GraphQL obsolète. Pour les nouvelles
intégrations, utilisez plutôt le point de terminaison REST metrics
list.
Requête
query MetricsListQuery(
$appId: String!
$start: DateTime
$end: DateTime
$timeframe: TimeframeEnum
$query: [MetricAggregation!]!
) {
app(id: $appId) {
id
metrics {
list(start: $start, end: $end, query: $query, timeframe: $timeframe) {
start
end
rows {
name
tags {
key
value
}
fields {
key
value
}
}
}
}
}
}
Variables de requête
{
"appId": "YOUR-APP-ID",
"start": "2021-06-04T13:00:00.000Z", // change this to the date of your preference
"end": "2021-12-21T14:00:00.000Z", // change this to the date of your preference
"query": [
{
"name": "transaction_exception_count",
"tags": [{ "key": "namespace", "value": "*" }],
"fields": [{ "field": "COUNTER", "aggregate": "SUM" }]
}
]
}
Récupérer la moyenne (séries temporelles)
Cet exemple utilise l’API de métriques GraphQL obsolète. Pour les nouvelles
intégrations, utilisez plutôt le point de terminaison REST metrics
timeseries.
Requête
query MetricTimeseriesQuery(
$appId: String!
$start: DateTime
$end: DateTime
$timeframe: TimeframeEnum
$query: [MetricTimeseries]
) {
app(id: $appId) {
id
metrics {
timeseries(
start: $start
end: $end
timeframe: $timeframe
query: $query
) {
start
end
resolution
keys {
name
fields
tags {
key
value
}
}
points {
timestamp
values {
value
}
}
}
}
}
}
Variables de requête
{
"appId": "YOUR-APP-ID",
"start": "2022-01-10T11:00:00Z", // Start data and time you want to fetch the Mean for
"end": "2022-01-10T11:05:00Z", // End data and time you want to fetch the Mean for
"query": [
{
"name": "transaction_duration",
"tags": [ // You can add more namespaces here, this example just fetches the Mean for web namespace.
{
"key": "namespace",
"value": "web"
}
],
"fields": [
{
"field": "MEAN"
}
]
}
]
}
Récupérer la moyenne (agrégée)
Cet exemple utilise l’API de métriques GraphQL obsolète. Pour les nouvelles
intégrations, utilisez plutôt le point de terminaison REST metrics
list.
Requête
query MetricAggregationQuery(
$appId: String!
$start: DateTime
$end: DateTime
$timeframe: TimeframeEnum
$query: [MetricAggregation!]!
) {
app(id: $appId) {
id
metrics {
list(start: $start, end: $end, timeframe: $timeframe, query: $query) {
start
end
rows {
name
tags {
key
value
}
fields {
key
value
}
}
}
}
}
}
Variables de requête
{
"appId": "YOUR-APP-ID",
"start": "2022-01-10T11:00:00Z", // Start data and time you want to fetch the Mean for
"end": "2022-01-10T11:05:00Z", // End data and time you want to fetch the Mean for
"query": [
{
"name": "transaction_duration",
"tags": [ // You can add more namespaces here, this example just fetches the Mean for web namespace.
{
"key": "namespace",
"value": "web"
}
],
"fields": [
{"field":"mean","aggregate":"AVG"}
]
}
]
}
Récupérer un incident avec un échantillon
Requête
query IncidentQuery(
$appId: String!
$incidentNumber: Int!
$sampleId: String
$timestamp: String
$timerange: [DateTime]
) {
app(id: $appId) {
id
incident(incidentNumber: $incidentNumber) {
... on ExceptionIncident {
...ExceptionIncident
}
... on PerformanceIncident {
...PerformanceIncident
}
}
}
}
fragment ExceptionIncident on ExceptionIncident {
id
number
lastOccurredAt
actionNames
exceptionName
notificationFrequency
state
namespace
firstBacktraceLine
errorGroupingStrategy
sample(id: $sampleId, timestamp: $timestamp, timerange: $timerange) {
...ExceptionSample
}
}
fragment ExceptionSample on ExceptionSample {
id
appId
time
revision
action
namespace
queueDuration
originallyRequested
overview {
key
value
}
params
sessionData
customData
environment {
key
value
}
exception {
name
message
backtrace {
original
line
column
path
method
url
type
code {
line
source
}
error {
class
message
}
}
}
}
fragment PerformanceIncident on PerformanceIncident {
id
number
lastOccurredAt
actionNames
state
notificationFrequency
notificationThreshold
namespace
description
severity
sample(id: $sampleId, timestamp: $timestamp, timerange: $timerange) {
...PerformanceSample
__typename
}
__typename
}
fragment PerformanceSample on PerformanceSample {
id
appId
time
revision
action
namespace
originallyRequested
hasNPlusOne
timelineTruncatedEvents
overview {
key
value
__typename
}
params
sessionData
customData
environment {
key
value
__typename
}
duration
queueDuration
timeline {
...TimelineEvent
__typename
}
version
__typename
}
fragment TimelineEvent on TimelineEvent {
action
duration
childDuration
group
name
payload {
name
body
__typename
}
time
end
digest
count
level
allocationCount
childAllocationCount
__typename
}
Variables de requête
{
"appId": "YOUR-APP-ID",
"incidentNumber": 42,
"sampleId": "SAMPLE-ID-STRING", // optional
"timestamp": "2026-06-22T12:00:00Z", // optional
"timerange": ["2026-06-22T00:00:00Z", "2026-06-22T23:59:59Z"] // optional
}
Récupérer les moniteurs de disponibilité et leurs alertes
Requête
query uptimeMonitorsQuery($appId: String!) {
app(id: $appId) {
id
uptimeMonitors {
...UptimeMonitor
}
}
}
fragment UptimeMonitor on UptimeMonitor {
id
name
url
description
notifierIds
warmupDuration
checkBodyContent
regions
headers {
key
value
}
alerts {
...Alert
}
statusPages {
...StatusPage
}
}
fragment Alert on Alert {
id
state
message
metricDigest
createdAt
openedAt
resolvedAt
closedAt
timeframeStartAt
timeframeEndAt
lastValue
peakValue
mean
tags {
key
value
}
}
fragment StatusPage on StatusPage {
id
title
subdomain
hostname
description
threshold
uptimeMonitorIds
}
Variables de requête
{
"appId": "YOUR-APP-ID"
}
Récupérer l’état d’un moniteur de disponibilité
Cet exemple utilise l’API de métriques GraphQL obsolète. Pour les nouvelles
intégrations, utilisez plutôt le point de terminaison REST metrics
timeseries.
Requête
query MetricTimeseriesQuery(
$appId: String!
$start: DateTime
$end: DateTime
$timeframe: TimeframeEnum
$query: [MetricTimeseries]
) {
app(id: $appId) {
id
metrics {
timeseries(
start: $start
end: $end
timeframe: $timeframe
query: $query
) {
start
end
resolution
keys {
digest
name
fields
tags {
key
value
}
}
points {
timestamp
values {
key
value
}
}
}
}
}
}
Variables de requête
{
"appId": "YOUR-APP-ID",
"timeframe": "R1H", // for example: R1H, R4H, R8H, R12H, R24H, R48H, R7D, or R30D
"query": [
{
"name": "uptime_monitor_error_count",
"tags": [
{
"key": "name",
"value": "NAME-OF-UPTIME-MONITOR"
},
{
"key": "region",
"value": "*" // You can filter this to a specific region.
}
],
"fields": [
{
"field": "COUNTER"
}
]
}
]
}