More connectors

Connectors available today whose live certification is under way, with the settings each one needs.

These connectors are in the product and can be configured in the console today. They pass 3AM's contract tests; their live certification on the real product (as for PagerDuty, Kubernetes and Prometheus) is under way, and each will get a full guide like those when it is certified.

Monitoring

Grafana

Grafana URL and a viewer service-account token. Used for deploy/change annotations and datasource queries.

kind: grafanametrics and queries
SettingWhat to enterRequiredDefault
urlGrafana base URLyes—
datasource_uidDefault datasource UID for queriesno—
bearer_tokensecretBearer token, if requiredno—
usernameBasic-auth user, if requiredno—
passwordsecretBasic-auth passwordno—

Grafana Alloy

The collector's HTTP listen address (/-/healthy and /metrics). Read-only, and 3AM needs no inbound port on the collector itself. 3AM opens an incident when a component stops being healthy, or when Alloy's last configuration load failed. On Alloy v1.x component health comes from the REST API, on older Alloy and Grafana Agent Flow from alloy_component_healthy. Filling in k8s_namespace and k8s_deployment lets 3AM restart Alloy itself when the whole collector goes down (see When a connector stops answering).

kind: alloyalerts in
SettingWhat to enterRequiredDefault
urlAlloy HTTP base URL, e.g. http://alloy:12345yes—
bearer_tokensecretBearer token, if requiredno—
usernameBasic-auth user, if requiredno—
passwordsecretBasic-auth passwordno—
k8s_namespaceKubernetes namespace this Alloy runs in (enables connector.down restart action)no—
k8s_deploymentKubernetes Deployment name for this Alloy (enables connector.down restart action)no—

Splunk

Management URL (port 8089) and an authentication token with search and alert-read rights. k8s_namespace and k8s_deployment let 3AM restart Splunk itself when it goes down (see When a connector stops answering).

kind: splunkalerts inmetrics and queries
SettingWhat to enterRequiredDefault
urlManagement API URL, e.g. https://splunk.bank:8089yes—
tokensecretAuthentication tokenyes—
verify_tlsVerify the TLS certificateyestrue
appApp namespace for alertsno"search"
metrics_indexMetrics index used by check packs (mstats)no"*"
k8s_namespaceKubernetes namespace this Splunk runs in (enables connector.down restart action)no—
k8s_deploymentKubernetes Deployment name for this Splunk (enables connector.down restart action)no—

Datadog

An API key and an application key (read-only scopes are enough: dashboards_read, metrics_read, monitors_read). Pick your Datadog site: EU accounts use datadoghq.eu. 3AM polls monitors in Alert or Warn state as signals, and runs native metric queries for telemetry evidence. Monitors in No Data state are not surfaced as signals; they indicate no agent is reporting, not an active alert.

Filling in k8s_namespace and k8s_deployment lets 3AM restart the Datadog agent deployment itself when the connector goes down (see When a connector stops answering).

kind: datadogalerts inmetrics and queries
SettingWhat to enterRequiredDefault
siteDatadog site, e.g. datadoghq.com or datadoghq.euyes"datadoghq.com"
api_keysecretAPI keyyes—
app_keysecretApplication keyyes—
api_urlOverride API base URL (proxies, tests)no—
k8s_namespaceKubernetes namespace this Datadog runs in (enables connector.down restart action)no—
k8s_deploymentKubernetes Deployment name for this Datadog (enables connector.down restart action)no—

Approvals

Slack

A bot token (xoxb-…) with chat:write, reactions:read, channels:history and users:read.email scopes. Create a Slack app, add those bot scopes, install it to the workspace, and invite the bot to the approval channel before configuring the connector. The channel ID is the C… value in the channel URL.

Approvers react ✅ to approve or ❌ to reject, or reply approve / reject in the message thread. 3AM polls for reactions and replies, so nothing needs to connect in.

Health checks both token validity and channel access. A bad channel ID surfaces as channel_not_found on the health check rather than at approval send time.

Filling in k8s_namespace and k8s_deployment lets 3AM restart the connector itself when it goes down (see When a connector stops answering).

kind: slackapprovals
SettingWhat to enterRequiredDefault
api_urlWeb API base URLyes"https://slack.com/api"
bot_tokensecretBot token (xoxb-…)yes—
channelChannel ID for approvalsyes—
approversSlack user IDs or e-mails allowed to approveno—
k8s_namespaceKubernetes namespace this Slack runs in (enables connector.down restart action)no—
k8s_deploymentKubernetes Deployment name for this Slack (enables connector.down restart action)no—

Symphony

Create a bot service account with an RSA key in the Symphony admin portal, then upload its private key here. Set pod_host, agent_host, and key_manager_host to the hostname only, with no https:// prefix. 3AM adds the scheme itself. Approvers receive a 1:1 message with Approve / Reject buttons; 3AM polls the datafeed for button presses, so nothing needs to connect in.

Filling in k8s_namespace and k8s_deployment lets 3AM restart the connector itself when it goes down (see When a connector stops answering).

kind: symphonyapprovals
SettingWhat to enterRequiredDefault
pod_hostPod host, e.g. bank.symphony.com (hostname only, no https://)yes—
agent_hostAgent host (often the same as the pod; hostname only)no—
key_manager_hostKey manager host (often the same as the pod; hostname only)no—
bot_usernameBot service account usernameyes—
private_keysecretBot RSA private key (PEM file)yes—
approversE-mail addresses of the people who may approveno—
k8s_namespaceKubernetes namespace this Symphony runs in (enables connector.down restart action)no—
k8s_deploymentKubernetes Deployment name for this Symphony (enables connector.down restart action)no—

xMatters

Create a Flow Designer workflow whose form offers Approve and Reject, add an HTTP trigger, and paste that trigger URL here with a REST API user that can read events. xMatters notifies the recipients and escalates through the target group on its own; 3AM only reads the responses back, so it makes outbound connections only. Leave approvers empty to accept a decision from anyone who was notified. The trigger URL carries the workflow's API key, so 3AM treats it as a secret and redacts it from the errors it records.

Filling in k8s_namespace and k8s_deployment lets 3AM restart the connector itself when it goes down (see When a connector stops answering).

kind: xmattersapprovals
SettingWhat to enterRequiredDefault
base_urlInstance URL, e.g. https://acme.xmatters.comyes—
usernameREST API useryes—
passwordsecretREST API passwordyes—
trigger_urlsecretHTTP trigger URL of the approval workflow (contains its API key)yes—
recipientsDefault targets: group or user namesno—
approversUser names allowed to approve (empty = anyone who was notified)no—
k8s_namespaceKubernetes namespace this xMatters runs in (enables connector.down restart action)no—
k8s_deploymentKubernetes Deployment name for this xMatters (enables connector.down restart action)no—

Phone call (Twilio)

Use a Twilio account with a voice-capable number. 3AM creates and maintains its own Studio flow.

kind: twilio-voiceapprovals
SettingWhat to enterRequiredDefault
account_sidAccount SID (AC…)yes—
auth_tokensecretAuth tokenyes—
from_numberTwilio number calls come from, E.164 (+1…)no—
approversPhone numbers that may approve, E.164no—
pin_sha256secretMap of phone number → SHA-256 of that approver's PIN (enables PIN check)no{}

E-mail

Uses your SMTP relay to send and an IMAP mailbox to read replies. Low assurance: not used for high-risk actions.

kind: emailapprovals
SettingWhat to enterRequiredDefault
smtp_hostSMTP hostyes—
smtp_portSMTP portyes587
smtp_starttlsUse STARTTLSyestrue
imap_hostIMAP hostyes—
imap_portIMAP port (SSL)yes993
imap_sslUse SSL for IMAPyestrue
usernameMailbox user (also the From address)yes—
passwordsecretMailbox passwordyes—
approversAddresses allowed to approveno—

Systems

Database (SQL)

Databases have their own guide: Databases.

Servers (SSH)

Servers have their own guide: Servers (SSH).

Webhooks / runbook automation

Requests 3AM may make, e.g. trigger an Ansible Tower job or a Jenkins pipeline: {name: {method, url, body, params, risk, extract}}. risk: "read" marks a request that changes nothing (check packs may use it); extract returns one field of a JSON response.

kind: httpactions
SettingWhat to enterRequiredDefault
requestsRequest templates (JSON)yes—
headerssecretHeaders sent with every request, e.g. an auth headerno{}

Code

GitHub

An organisation (or user) and a read-only token (fine-grained: Contents read, Metadata read). 3AM lists every repository in the organisation and indexes the default branch of each. GitHub's API does not filter by archived status server-side: include_archived: false is enforced client-side after the response is received.

Filling in k8s_namespace and k8s_deployment lets 3AM restart the connector itself when it goes down (see When a connector stops answering).

kind: githubcode
SettingWhat to enterRequiredDefault
ownerOrganisation or useryes—
tokensecretRead-only tokenyes—
api_urlAPI URL (GitHub Enterprise: https://ghe.bank/api/v3)yes"https://api.github.com"
include_archivedInclude archived reposyesfalse
k8s_namespaceKubernetes namespace this GitHub runs in (enables connector.down restart action)no—
k8s_deploymentKubernetes Deployment name for this GitHub (enables connector.down restart action)no—

GitLab

GitLab URL, a group (or empty for everything the token sees) and a read_api + read_repository token. 3AM lists every project in the group (and its subgroups) and indexes the default branch of each. include_archived: false is enforced server-side: GitLab filters it in the API response, so archived projects are never fetched at all.

Language is populated from GitLab's predominant_language field, which GitLab computes asynchronously after a repository is created or pushed to; new repos report unknown until GitLab finishes its scan.

Filling in k8s_namespace and k8s_deployment lets 3AM restart the connector itself when it goes down (see When a connector stops answering).

kind: gitlabcode
SettingWhat to enterRequiredDefault
urlGitLab base URLyes"https://gitlab.com"
groupGroup path (empty: all projects the token can read)no""
tokensecretAccess tokenyes—
include_archivedInclude archived projectsyesfalse
k8s_namespaceKubernetes namespace this GitLab runs in (enables connector.down restart action)no—
k8s_deploymentKubernetes Deployment name for this GitLab (enables connector.down restart action)no—

Bitbucket Cloud

A workspace slug and an Atlassian API token (create at id.atlassian.com → Security → API tokens; grant read:repository:bitbucket and read:workspace:bitbucket scopes). Bitbucket injects a repo-scoped token into HTTPS clone URLs. 3AM strips it before storing the URL so it never reaches the audit log; checkout auth uses the configured token directly.

Bitbucket Cloud has no archive flag on repositories, so include_archived has no effect and can be left at its default.

Filling in k8s_namespace and k8s_deployment lets 3AM restart the connector itself when it goes down (see When a connector stops answering).

kind: bitbucketcode
SettingWhat to enterRequiredDefault
workspaceWorkspace slugyes—
tokensecretAccess tokenyes—
api_urlAPI URLyes"https://api.bitbucket.org/2.0"
k8s_namespaceKubernetes namespace this Bitbucket runs in (enables connector.down restart action)no—
k8s_deploymentKubernetes Deployment name for this Bitbucket (enables connector.down restart action)no—

Git server (any)

For servers without a listing API (Gitea, Gerrit, on-prem mirrors): list the repository URLs.

kind: gitcode
SettingWhat to enterRequiredDefault
reposRepository URLs (https or ssh), one per lineyes—
branchBranch to indexyes"main"
auth_headersecretHTTP auth header for https URLs, if neededno—

Tickets and CMDB

Jira

Jira URL, a project key and credentials (Cloud: e-mail + API token; Data Center: a personal access token).

kind: jiratickets
SettingWhat to enterRequiredDefault
urlJira base URLyes—
projectProject key for incident ticketsyes—
issue_typeIssue typeyes"Task"
emailAccount e-mail (Cloud)no—
tokensecretAPI token (Cloud) or personal access token (Data Center)yes—

ServiceNow

ServiceNow has its own guide: ServiceNow.

On this page