A consulta notificationChannels permite que você navegue por todos os seus canais de notificação de alertas por conta. Você também pode usar a consulta notificationChannel para obter um canal de notificação específico por seu ID.
Dica
Observe que determinados campos secretos (por exemplo, senhas ou chave de API) ficam ofuscados nos campos retornados.
Este exemplo retorna todos os campos de cada canal de notificação no ID da conta fornecido, até o limite de páginas de 200. Observe como usamos [fragmentos inline][fragmentos inline] para nos referirmos aos campos específicos nos tipos concretos que implementam a interface AlertsNotificationChannel .
{
actor{
account(id:YOUR_ACCOUNT_ID){
alerts{
notificationChannels{
channels{
id
name
type
...onAlertsXMattersNotificationChannel{
config{
integrationUrl
}
}
...onAlertsWebhookNotificationChannel{
config{
baseUrl
basicAuth{
password
username
}
customHttpHeaders{
name
value
}
customPayloadBody
customPayloadType
}
}
...onAlertsVictorOpsNotificationChannel{
config{
key
routeKey
}
}
...onAlertsUserNotificationChannel{
config{
userId
}
}
...onAlertsSlackNotificationChannel{
config{
teamChannel
url
}
}
...onAlertsPagerDutyNotificationChannel{
config{
apiKey
}
}
...onAlertsOpsGenieNotificationChannel{
config{
apiKey
dataCenterRegion
recipients
tags
teams
}
}
...onAlertsHipChatNotificationChannel{
config{
authToken
baseUrl
roomId
}
}
...onAlertsEmailNotificationChannel{
config{
emails
includeJson
}
}
...onAlertsCampfireNotificationChannel{
config{
room
subdomain
token
}
}
}
totalCount
nextCursor
}
}
}
}
}
Se a lista de canais de notificação de uma determinada conta exceder o limite de 200 páginas de canais, você poderá usar o cursor de paginação para recuperar páginas adicionais.
Com a paginação do cursor, você continua solicitando páginas adicionais usando nextCursor até que o campo retorne vazio na resposta. Um nextCursor vazio indica que você atingiu o final do conjunto de resultados.
Aqui está um exemplo:
{
actor{
account(id:YOUR_ACCOUNT_ID){
alerts{
notificationChannels{
channels{
id
name
type
}
totalCount
nextCursor
}
}
}
}
}
O código acima retorna um conjunto de resultados como este:
Na sua próxima solicitação, forneça o cursor assim, atualizando cada solicitação subsequente para retornar o cursor atualizado, até que o cursor esteja vazio:
Se você tiver o ID de um canal de notificação específico, a API permitirá que você o procure diretamente. Observe que, como o canal específico é um tipo concreto que implementa a interface AlertsNotificationChannel , pode ser necessário especificar determinados campos usando a sintaxe ... on para [fragmentos inline][fragmentos inline].
Neste exemplo, estamos recuperando um canal do Slack:
{
actor{
account(id:YOUR_ACCOUNT_ID){
alerts{
notificationChannel(id:YOUR_CHANNEL_ID){
id
name
type
...onAlertsSlackNotificationChannel{
config{
teamChannel
url
}
}
}
}
}
}
}
Este exemplo retorna o ID, o nome e o tipo de cada canal de notificação no ID da conta fornecido, bem como uma lista de todas as políticas associadas a esse canal.
{
actor{
account(id:YOUR_ACCOUNT_ID){
alerts{
notificationChannels{
channels{
id
name
type
associatedPolicies{
policies{
id
name
}
totalCount
}
}
nextCursor
totalCount
}
}
}
}
}
Crie um canal de notificação
Para criar um canal de notificação de alerta, você precisa saber o tipo específico de canal de notificação que deseja criar (por exemplo email, Slack, etc.), bem como os detalhes necessários para configurá-lo (que dependerão de o tipo de canal). Uma vez criado um canal de notificação, este pode ser associado a uma ou mais [política de alertas][política de alertas]. Uma vez associados, esses canais receberão notificações dessas políticas quando as condições forem violadas.
Cuidado
Embora você possa consultar qualquer tipo de canal de notificação existente, você só pode criar um subconjunto deles. Especificamente, o tipo de canal user não tem campos editáveis e os tipos de canal Campfire e HipChat estão obsoletos.
Um exemplo de criação de mutação para um canal de notificação por e-mail:
mutation{
alertsNotificationChannelCreate(
accountId:YOUR_ACCOUNT_ID
notificationChannel:{
email:{
emails:["email@example.com"]
includeJson:true
name:"Some Name <email@example.com>"
}
}
){
notificationChannel{
...onAlertsEmailNotificationChannel{
id
name
type
config{
emails
includeJson
}
}
}
error{
description
errorType
}
}
}
Um exemplo de criação de mutação para um canal de notificação do OpsGenie:
mutation{
alertsNotificationChannelCreate(
accountId:YOUR_ACCOUNT_ID
notificationChannel:{
opsGenie:{
apiKey:"api-key-from-opsgenie"
dataCenterRegion:US
name:"OpsGenie notification channel name"
recipients:["user@example.com"]
tags:["tag1","tag2"]
teams:["team1","team2"]
}
}
){
notificationChannel{
...onAlertsOpsGenieNotificationChannel{
id
name
type
config{
apiKey
teams
tags
recipients
dataCenterRegion
}
}
}
error{
description
errorType
}
}
}
Um exemplo de criação de mutação para um canal de notificação do PagerDuty:
mutation{
alertsNotificationChannelCreate(
accountId:YOUR_ACCOUNT_ID
notificationChannel:{
pagerDuty:{
name:"PagerDuty notification channel name"
apiKey:"api-key-from-pagerduty"
}
}
){
notificationChannel{
...onAlertsPagerDutyNotificationChannel{
id
name
type
config{
apiKey
}
}
}
error{
description
errorType
}
}
}
Um exemplo de criação de mutação para um canal de notificação do Slack:
Para atualizar um canal de notificação de alerta, você precisa saber o tipo específico de canal de notificação que deseja alterar (por exemplo e-mail, Slack, etc.), bem como os detalhes necessários para configurá-lo (que dependerá do canal tipo). Consistente com outras API GraphQL, você pode atualizar um único campo no canal sem saber nada além do ID do canal.
Cuidado
Embora você possa consultar qualquer tipo de canal de notificação existente, você só pode atualizar um subconjunto deles. Especificamente, o tipo de canal user não tem campos editáveis e os tipos de canal Campfire e HipChat estão obsoletos.
Um exemplo de mutação de atualização para um canal de notificação por e-mail onde atualizamos apenas o nome:
mutation{
alertsNotificationChannelUpdate(
accountId:YOUR_ACCOUNT_ID
id:YOUR_CHANNEL_ID
notificationChannel:{email:{name:"Updated Name <email@example.com>"}}
){
notificationChannel{
...onAlertsEmailNotificationChannel{
id
name
type
}
}
error{
description
errorType
notificationChannelId
}
}
}
Um exemplo de mutação de atualização para um canal de notificação do OpsGenie onde estamos atualizando apenas o nome:
Você pode excluir um canal de notificação apenas com o ID da conta e o ID do canal. Observe que a exclusão de um canal o dissocia de todas as políticas, o que significa que nenhuma notificação adicional será enviada a esse canal.
mutation{
alertsNotificationChannelDelete(
accountId:YOUR_ACCOUNT_ID
id:YOUR_CHANNEL_ID
){
id
error{
description
errorType
notificationChannelId
}
}
}
Associar canais a uma política
Não basta criar um canal de notificação de alerta: uma vez criado o canal, é necessário que ele esteja associado a uma ou mais [políticas][política de alertas]. Uma vez associado a uma política, o canal pode receber notificação de alerta quando as condições dessa política excederem o limite.
Neste exemplo, associamos dois canais a uma política:
Nos casos em que um canal de notificação perdeu a sua utilidade (por exemplo, uma lista de e-mails que foi retirada), é chegado o momento de dissociar esse canal da [política][política de alertas] (ou políticas) que estão enviando alerta de notificação para ele. Essa chamada de API deixa o canal intacto, mas o remove da política especificada.
Neste exemplo, estamos removendo dois canais de uma política (deixando todos os outros em vigor) e recebendo a confirmação de que esses dois IDs de canal foram removidos:
A remoção de um canal de notificação de alerta de uma política does not exclui o canal porque ele pode ser usado por outras políticas. Por outro lado, a exclusão de um canal fará com que todas as políticas associadas parem de enviar notificação de alerta para esse canal.