GraphQL Examples

Here are some of the query examples to get you started.

You can use an external GraphQL explorer service like Cloud Hasuras GraphQL explorer to run these queries or install and run a service like GraphiQL locally.

You will need to make requests to the following URL:

Shell
https://appsignal.com/graphql?token=your-personal-api-token

You can find your API token in the personal settings screen in AppSignal.

You will also need your app ID. This can be found in your app's settings screen.

Fetch deployments

Query

GraphQL
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 } }

Query variables

GraphQL
{ "appId": "YOUR-APP-ID", "limit": 25 }

Fetch incidents by deployments

Query

GraphQL
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 }

Query variables

GraphQL
{ "appId": "YOUR-APP-ID", "markerId": "YOUR-DEPLOY-MARKER-ID", "limit": 200 }

Search incidents by tag

Query

GraphQL
uery 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 } } } } }

Query variables

GraphQL
{ "organizationSlug":"APPLICATION-SLUG" // taken from the URL of the application, "sampleType":"EXCEPTION", "query": "tag:value" // replace the word value with the values you are searching for }

Fetch error count

Query

GraphQL
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 } } } } } }

Query variables

GraphQL
{ "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" }] } ] }

Fetch Mean (timeseries)

Query

GraphQL
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 } } } } } }

Query variables

GraphQL
{ "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" } ] } ] }

Fetch Mean (aggregated)

Query

GraphQL
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 } } } } } }

Query variables

GraphQL
{ "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"} ] } ] }

Fetch incident with sample

Query

GraphQL
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 }

Query variables

GraphQL
{ "appId": "YOUR-APP-ID", "incidentNumber": ID-OF-INCIDENT, "sampleId": "SAMPLE-ID-STRING", // this is optional "timestamp": "SAMPLE-TIME-STAMP", // this is optional "timerange": "SAMPLE-TIME-RANGE", // this is optional }

Fetch uptime monitors and their alerts

Query

GraphQL
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 }

Query variables

GraphQL
{ "appId": "YOUR-APP-ID" }

Fetch uptime monitors status

Query

GraphQL
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 } } } } } }

Query variables

GraphQL
{ "appId": "YOUR-APP-ID", "timeframe": "R1H", // Available option (R1H,R4H,R8H,R12H,,R24H,R48H, R7D,R30D) "query": [ { "name": "uptime_monitor_error_count", "tags": [ { "key": "name", "value": "NAME-OF-UPTIME-MONITOR" }, { "key": "region", "value": "*" // You can filter this to specific region as well. } ], "fields": [ { "field": "COUNTER" } ] } ] }