Naar hoofdinhoud gaan
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.