De GraphQL API van AppSignal ondersteunt zowel mutaties als queries.
Waar een query gegevens leest, schrijft een mutatie ze: u kunt
een custom marker aanmaken, een incident sluiten, een uptime-monitor toevoegen en meer.
Mutaties gebruiken hetzelfde eindpunt en dezelfde persoonlijke API-token als queries. Lees de
GraphQL API-pagina voor details over het eindpunt en authenticatie.
De meeste mutaties zijn app-specifiek en nemen een appId-argument dat de wijziging
beperkt tot één app. U vindt uw app-ID in het instellingenscherm
van uw app. Sommige mutaties zijn organisatiegebonden en nemen in plaats daarvan een
organizationSlug-argument, zoals createApp en createStatusPage.
Deze pagina behandelt de meest voorkomende mutaties. Voor de volledige, automatisch
gegenereerde lijst van elke mutatie en zijn argumenten, zie de GraphQL-schemareferentie.
Mutaties wijzigen gegevens in uw account. Test tegen een niet-productie-app voordat
u een mutatie automatiseert tegen productiedata.
Incidenten
Een incident bijwerken
Wijzig de status, severity, toegewezenen of meldingsinstellingen van een incident. Het
number is het incidentnummer dat in AppSignal wordt getoond.
state accepteert OPEN, WIP of CLOSED. severity accepteert UNTRIAGED,
CRITICAL, HIGH, LOW, NONE of INFORMATIONAL.
mutation UpdateIncident(
$appId: String!
$number: Int!
$state: IncidentStateEnum
$severity: IncidentSeverityEnum
$assigneeIds: [String!]
) {
updateIncident(
appId: $appId
number: $number
state: $state
severity: $severity
assigneeIds: $assigneeIds
) {
... on ExceptionIncident {
id
number
state
severity
}
... on PerformanceIncident {
id
number
state
severity
}
}
}
{
"appId": "YOUR-APP-ID",
"number": 42,
"state": "CLOSED",
"severity": "LOW"
}
Meerdere incidenten in bulk bijwerken
Werk meerdere incidenten bij in één verzoek. In tegenstelling tot updateIncident neemt deze
mutatie incident-ID’s in plaats van incidentnummers.
mutation BulkUpdateIncidents(
$appId: String!
$ids: [String]!
$state: IncidentStateEnum
$severity: IncidentSeverityEnum
) {
bulkUpdateIncidents(
appId: $appId
ids: $ids
state: $state
severity: $severity
) {
... on ExceptionIncident {
id
number
state
}
... on PerformanceIncident {
id
number
state
}
... on AnomalyIncident {
id
number
state
}
... on LogIncident {
id
number
state
}
}
}
{
"appId": "YOUR-APP-ID",
"ids": ["INCIDENT-ID-1", "INCIDENT-ID-2"],
"state": "CLOSED"
}
Een notitie aanmaken op een incident
Voeg een notitie toe aan het logboek van een incident. Dezelfde velden zijn beschikbaar op
performance-, anomalie- en logincidenten.
mutation CreateIncidentNote(
$appId: String!
$incidentNumber: Int!
$content: String!
) {
createIncidentNote(
appId: $appId
incidentNumber: $incidentNumber
content: $content
) {
... on ExceptionIncident {
id
number
logbook {
items {
... on Note {
id
content
createdAt
}
}
}
}
}
}
{
"appId": "YOUR-APP-ID",
"incidentNumber": 42,
"content": "Investigating, deploy reverted."
}
Een issue aanmaken vanuit een incident
Maak een gekoppeld issue aan in een gekoppelde integratie. Dit voorbeeld gebruikt GitHub;
equivalente mutaties bestaan voor andere integraties: createGitlabIssue,
createJiraIssue, createLinearIssue, createShortcutStory, createAsanaTask
en createTrelloCard.
mutation CreateGithubIssue(
$appId: String!
$incidentNumber: Int!
$title: String!
$description: String!
) {
createGithubIssue(
appId: $appId
incidentNumber: $incidentNumber
title: $title
description: $description
) {
... on ExceptionIncident {
id
number
integrations {
... on GitHub {
name
issues {
url
title
}
}
}
}
}
}
{
"appId": "YOUR-APP-ID",
"incidentNumber": 42,
"title": "NoMethodError in OrdersController#create",
"description": "Tracked in AppSignal incident #42."
}
Een integratie verwijderen uit een incident
Verwijder een eerder gekoppeld integratie-issue uit een incident.
mutation RemoveIntegration(
$appId: String!
$incidentNumber: Int!
$id: String!
) {
removeIntegration(
appId: $appId
incidentNumber: $incidentNumber
id: $id
) {
... on ExceptionIncident {
id
number
}
}
}
{
"appId": "YOUR-APP-ID",
"incidentNumber": 42,
"id": "YOUR-INTEGRATION-ID"
}
Markers
Een custom marker aanmaken of bijwerken
Maak een custom marker aan om een tijdstip te annoteren, zoals een configuratiewijziging
of een handmatige actie. Geef een id mee om een bestaande marker bij te werken. Laat id
weg om een nieuwe marker aan te maken.
mutation CreateCustomMarker(
$appId: String!
$id: String
$icon: String!
$message: String
$createdAt: DateTime
) {
createOrUpdateCustomMarker(
appId: $appId
id: $id
icon: $icon
message: $message
createdAt: $createdAt
) {
id
icon
message
createdAt
}
}
{
"appId": "YOUR-APP-ID",
"icon": "🚀",
"message": "Ran database migration"
}
Een custom marker verwijderen
Verwijder een custom marker op ID.
mutation DeleteCustomMarker($appId: String!, $id: String!) {
deleteCustomMarker(appId: $appId, id: $id) {
id
}
}
{
"appId": "YOUR-APP-ID",
"id": "YOUR-MARKER-ID"
}
Alerts en triggers
Een trigger aanmaken
Maak een metric-gebaseerde alert-trigger aan. field accepteert een waarde uit
MetricFieldEnum (zoals MEAN, P90, P95, COUNT, GAUGE of
COUNTER). kind is een string die het triggertype beschrijft. De GraphQL-brondocumentatie
noemt ExceptionRate en Throughput als voorbeelden. De condition stelt de
drempelwaarde in om mee te vergelijken. Om een bestaande trigger te vervangen, geeft u zijn ID mee als
previousTriggerId.
comparisonOperator accepteert LESS_THAN, GREATER_THAN, LESS_THAN_OR_EQUAL,
GREATER_THAN_OR_EQUAL, EQUAL of NOT_EQUAL.
mutation CreateTrigger(
$appId: String!
$previousTriggerId: String
$name: String
$metricName: String!
$kind: String!
$field: MetricFieldEnum!
$condition: ThresholdConditionInput!
$warmupDuration: Int!
$cooldownDuration: Int!
$notifierIds: [String!]
) {
createTrigger(
appId: $appId
previousTriggerId: $previousTriggerId
name: $name
metricName: $metricName
kind: $kind
field: $field
condition: $condition
warmupDuration: $warmupDuration
cooldownDuration: $cooldownDuration
notifierIds: $notifierIds
) {
id
name
metricName
field
thresholdCondition {
value
comparisonOperator
}
warmupDuration
cooldownDuration
}
}
{
"appId": "YOUR-APP-ID",
"name": "High error rate",
"metricName": "transaction_exception_count",
"kind": "ExceptionRate",
"field": "COUNTER",
"condition": { "value": 10, "comparisonOperator": "GREATER_THAN" },
"warmupDuration": 0,
"cooldownDuration": 5,
"notifierIds": ["YOUR-NOTIFIER-ID"]
}
Een trigger archiveren
Archiveer een trigger zodat deze geen metrics meer evalueert of alerts verstuurt.
mutation ArchiveTrigger($appId: String!, $id: String!) {
archiveTrigger(appId: $appId, id: $id) {
id
name
}
}
{
"appId": "YOUR-APP-ID",
"id": "YOUR-TRIGGER-ID"
}
Een alert archiveren
Archiveer een enkele getriggerde alert. Deze mutatie retourneert true bij succes.
mutation ArchiveAlert($appId: String!, $id: String!) {
archiveAlert(appId: $appId, id: $id)
}
{
"appId": "YOUR-APP-ID",
"id": "YOUR-ALERT-ID"
}
De laatste alert voor een anomalie-incident sluiten
Sluit de meest recente openstaande alert voor een anomalie-incident, geïdentificeerd op zijn
incidentnummer.
mutation EndLastAlert($appId: String!, $number: Int!) {
endLastAlert(appId: $appId, number: $number) {
id
number
alertState
}
}
{
"appId": "YOUR-APP-ID",
"number": 42
}
Uptime-monitors
Een uptime-monitor aanmaken
Maak een uptime-monitor aan vanuit een UptimeMonitorInput. regions accepteert een of
meer van EUROPE, NORTH_AMERICA, ASIA_PACIFIC of SOUTH_AMERICA.
mutation CreateUptimeMonitor(
$appId: String!
$uptimeMonitor: UptimeMonitorInput!
) {
createUptimeMonitor(appId: $appId, uptimeMonitor: $uptimeMonitor) {
id
name
url
regions
warmupDuration
}
}
{
"appId": "YOUR-APP-ID",
"uptimeMonitor": {
"name": "Marketing site",
"url": "https://example.com",
"regions": ["EUROPE", "NORTH_AMERICA"],
"warmupDuration": 1,
"notifierIds": ["YOUR-NOTIFIER-ID"]
}
}
Een uptime-monitor bijwerken
Werk een bestaande monitor bij. De uptimeMonitor-input heeft dezelfde vorm als bij
het aanmaken.
mutation UpdateUptimeMonitor(
$appId: String!
$id: String!
$uptimeMonitor: UptimeMonitorInput!
) {
updateUptimeMonitor(
appId: $appId
id: $id
uptimeMonitor: $uptimeMonitor
) {
id
name
url
regions
}
}
{
"appId": "YOUR-APP-ID",
"id": "YOUR-UPTIME-MONITOR-ID",
"uptimeMonitor": {
"name": "Marketing site",
"url": "https://example.com/health",
"regions": ["EUROPE"]
}
}
Een uptime-monitor verwijderen
Verwijder een monitor op ID. Deze mutatie retourneert de verwijderde monitor.
mutation DeleteUptimeMonitor($appId: String!, $id: String!) {
deleteUptimeMonitor(appId: $appId, id: $id) {
id
name
}
}
{
"appId": "YOUR-APP-ID",
"id": "YOUR-UPTIME-MONITOR-ID"
}
Check-ins
Een check-in-trigger aanmaken
Maak een cron- of heartbeat-check-in-trigger aan. kind accepteert CRON of
HEARTBEAT. Stel voor een cron-trigger syntax in op de cron-expressie. Gebruik UTC
voor timezone waar mogelijk.
mutation CreateCheckInTrigger(
$appId: String!
$identifier: String!
$kind: CheckInTriggerKindEnum!
$waitTimeMinutes: Int!
$syntax: String
$timezone: String
$notifierIds: [String!]
) {
createCheckInTrigger(
appId: $appId
identifier: $identifier
kind: $kind
waitTimeMinutes: $waitTimeMinutes
syntax: $syntax
timezone: $timezone
notifierIds: $notifierIds
) {
id
identifier
kind
syntax
timezone
waitTimeMinutes
}
}
{
"appId": "YOUR-APP-ID",
"identifier": "nightly-backup",
"kind": "CRON",
"syntax": "0 2 * * *",
"timezone": "UTC",
"waitTimeMinutes": 5,
"notifierIds": ["YOUR-NOTIFIER-ID"]
}
Een check-in-trigger bijwerken
Werk een bestaande check-in-trigger bij. Alleen de velden die u meegeeft worden gewijzigd.
mutation UpdateCheckInTrigger(
$appId: String!
$id: String!
$syntax: String
$waitTimeMinutes: Int
$notifierIds: [String!]
) {
updateCheckInTrigger(
appId: $appId
id: $id
syntax: $syntax
waitTimeMinutes: $waitTimeMinutes
notifierIds: $notifierIds
) {
id
identifier
syntax
waitTimeMinutes
}
}
{
"appId": "YOUR-APP-ID",
"id": "YOUR-CHECK-IN-TRIGGER-ID",
"syntax": "0 3 * * *",
"waitTimeMinutes": 10
}
Een check-in-trigger verwijderen
Verwijder een check-in-trigger op ID.
mutation DeleteCheckInTrigger($appId: String!, $id: String!) {
deleteCheckInTrigger(appId: $appId, id: $id) {
id
identifier
}
}
{
"appId": "YOUR-APP-ID",
"id": "YOUR-CHECK-IN-TRIGGER-ID"
}
Dashboards
Een dashboard aanmaken
Maak een leeg dashboard aan. Voeg er visuals aan toe met de mutaties createVisualTimeseries
en createVisualNumber, of importeer een compleet dashboard met
importDashboard.
Dashboardvisuals worden ook beheerd via createVisualTimeseries,
createVisualNumber, updateVisualTimeseries, updateVisualNumber,
updateVisualLayouts en deleteVisual. Om een zelfstandige opgeslagen visual aan te maken
voor later ophalen via de REST-eindpunten voor opgeslagen visuals,
gebruikt u createSavedVisual.
mutation CreateDashboard(
$appId: String!
$title: String!
$description: String
) {
createDashboard(appId: $appId, title: $title, description: $description) {
id
title
description
}
}
{
"appId": "YOUR-APP-ID",
"title": "Background jobs",
"description": "Throughput and queue time for worker jobs."
}
Een dashboard bijwerken
Werk de titel of beschrijving van een dashboard bij. De title is verplicht.
mutation UpdateDashboard(
$appId: String!
$id: String!
$title: String!
$description: String
) {
updateDashboard(
appId: $appId
id: $id
title: $title
description: $description
) {
id
title
description
}
}
{
"appId": "YOUR-APP-ID",
"id": "YOUR-DASHBOARD-ID",
"title": "Background jobs",
"description": "Updated description."
}
Een dashboard verwijderen
Verwijder een dashboard op ID.
mutation DeleteDashboard($appId: String!, $id: String!) {
deleteDashboard(appId: $appId, id: $id) {
id
title
}
}
{
"appId": "YOUR-APP-ID",
"id": "YOUR-DASHBOARD-ID"
}
Een dashboard importeren
Importeer een dashboard vanuit een JSON-definitie. Het json-argument is een
JSON-gecodeerde string, dus escape deze wanneer u hem als variabele meestuurt.
mutation ImportDashboard($appId: String!, $json: String!) {
importDashboard(appId: $appId, json: $json) {
id
title
}
}
{
"appId": "YOUR-APP-ID",
"json": "{\"title\":\"Imported dashboard\",\"visuals\":[]}"
}
Logs
Een log-trigger aanmaken
Maak een trigger aan die een incident opent wanneer logregels overeenkomen met een query. severities
accepteert log-severityaanduidingen zoals error, warn of info.
mutation CreateLogTrigger(
$appId: String!
$name: String!
$query: String!
$sourceIds: [String!]
$severities: [String!]
$notifierIds: [String!]
) {
createLogTrigger(
appId: $appId
name: $name
query: $query
sourceIds: $sourceIds
severities: $severities
notifierIds: $notifierIds
) {
id
name
query
severities
}
}
{
"appId": "YOUR-APP-ID",
"name": "Payment errors",
"query": "payment failed",
"severities": ["error"],
"notifierIds": ["YOUR-NOTIFIER-ID"]
}
Logs worden ook beheerd via GraphQL, niet alleen via triggers. Gebruik createLogSource,
updateLogSource en deleteLogSource voor bronnen; createLogView,
updateLogView en deleteLogView voor opgeslagen weergaves; createLogLineAction,
updateLogLineAction, deleteLogLineAction en reorderLogLineActions voor
ingestieregels; updateLogTrigger en deleteLogTrigger voor log-triggers; en
createLogExport, updateLogExport en deleteLogExport voor S3-exports.
Organisatiegebonden mutaties
Sommige mutaties werken op een organisatie in plaats van op één app, dus nemen ze een
organizationSlug-argument in plaats van appId. U vindt de slug in de URL
van uw organisatie in AppSignal.
Een app aanmaken
Maak een nieuwe app aan binnen een organisatie.
mutation CreateApp(
$organizationSlug: String!
$name: String!
$environment: String!
) {
createApp(
organizationSlug: $organizationSlug
name: $name
environment: $environment
) {
id
name
environment
}
}
{
"organizationSlug": "YOUR-ORGANIZATION-SLUG",
"name": "My app",
"environment": "production"
}
Een statuspagina aanmaken
Maak een openbare statuspagina aan vanuit een CreateStatusPageInput. title en
hostname zijn verplicht.
mutation CreateStatusPage(
$organizationSlug: String!
$statusPage: CreateStatusPageInput!
) {
createStatusPage(
organizationSlug: $organizationSlug
statusPage: $statusPage
) {
id
title
hostname
state
}
}
{
"organizationSlug": "YOUR-ORGANIZATION-SLUG",
"statusPage": {
"title": "Service status",
"hostname": "status.example.com",
"uptimeMonitorIds": ["YOUR-UPTIME-MONITOR-ID"],
"threshold": 1
}
}
Statuspagina’s ondersteunen ook createStatusPageUpdate, updateStatusPage,
updateStatusPageUpdate, deleteStatusPage en deleteStatusPageUpdate. Voor
CSV-exports gebruikt u createCsvExport om een export te starten en createCsvExportUrl
om een download-URL te genereren voor een voltooide export.
Meer mutaties
Deze voorbeelden behandelen de meest voorkomende bewerkingen. De API bevat er meer, gegroepeerd
in de schemareferentie onder Core (app- en hosted collector-beheer),
Dashboards (visuals en lay-outs), Logs (bronnen, weergaves en exports), Exports
(CSV), Statuspagina’s (updates) en Gebruikersvoorkeuren. Voor de volledige lijst
mutaties en hun argumenten, zie de GraphQL-schemareferentie.