@@ -128,9 +128,11 @@ var (
128128 // NrqlConditionTypes enumerates the possible NRQL condition type values for NRQL alert conditions.
129129 NrqlConditionTypes = struct {
130130 Baseline NrqlConditionType
131+ Outlier NrqlConditionType
131132 Static NrqlConditionType
132133 }{
133134 Baseline : "BASELINE" ,
135+ Outlier : "OUTLIER" ,
134136 Static : "STATIC" ,
135137 }
136138)
@@ -222,6 +224,23 @@ var (
222224 }
223225)
224226
227+ type NrqlOutlierDbScanConfigurationInput struct {
228+ Epsilon float64 `json:"epsilon"`
229+ MinimumPoints int `json:"minimumPoints"`
230+ EvaluationGroupFacet * string `json:"evaluationGroupFacet,omitempty"`
231+ }
232+
233+ type NrqlOutlierConfigurationInput struct {
234+ DBSCAN NrqlOutlierDbScanConfigurationInput `json:"dbscan"`
235+ }
236+
237+ type NrqlOutlierConfigurationOutput struct {
238+ Algorithm string `json:"algorithm"`
239+ Epsilon float64 `json:"epsilon"`
240+ MinimumPoints int `json:"minimumPoints"`
241+ EvaluationGroupFacet * string `json:"evaluationGroupFacet,omitempty"`
242+ }
243+
225244type NrqlConditionThresholdPrediction struct {
226245 PredictBy int `json:"predictBy,omitempty"`
227246 PreferPredictionViolation bool `json:"preferPredictionViolation"`
@@ -317,6 +336,8 @@ type NrqlConditionCreateInput struct {
317336
318337 // BaselineDirection ONLY applies to NRQL conditions of type BASELINE.
319338 BaselineDirection * NrqlBaselineDirection `json:"baselineDirection,omitempty"`
339+ // OutlierConfiguration ONLY applies to NRQL conditions of type OUTLIER.
340+ OutlierConfiguration * NrqlOutlierConfigurationInput `json:"outlierConfiguration,omitempty"`
320341 // SignalSeasonality ONLY applies to NRQL conditions of type BASELINE.
321342 SignalSeasonality * NrqlSignalSeasonality `json:"signalSeasonality,omitempty"`
322343}
@@ -327,6 +348,8 @@ type NrqlConditionUpdateInput struct {
327348
328349 // BaselineDirection ONLY applies to NRQL conditions of type BASELINE.
329350 BaselineDirection * NrqlBaselineDirection `json:"baselineDirection,omitempty"`
351+ // OutlierConfiguration ONLY applies to NRQL conditions of type OUTLIER.
352+ OutlierConfiguration * NrqlOutlierConfigurationInput `json:"outlierConfiguration,omitempty"`
330353 // SignalSeasonality ONLY applies to NRQL conditions of type BASELINE.
331354 SignalSeasonality * NrqlSignalSeasonality `json:"signalSeasonality,omitempty"`
332355}
@@ -348,6 +371,8 @@ type NrqlAlertCondition struct {
348371
349372 // BaselineDirection exists ONLY for NRQL conditions of type BASELINE.
350373 BaselineDirection * NrqlBaselineDirection `json:"baselineDirection,omitempty"`
374+ // OutlierConfiguration ONLY applies to NRQL conditions of type OUTLIER.
375+ OutlierConfiguration * NrqlOutlierConfigurationOutput `json:"outlierConfiguration,omitempty"`
351376 // SignalSeasonality exists ONLY for NRQL conditions of type BASELINE.
352377 SignalSeasonality * NrqlSignalSeasonality `json:"signalSeasonality,omitempty"`
353378}
@@ -613,6 +638,66 @@ func (a *Alerts) UpdateNrqlConditionBaselineMutationWithContext(
613638 return & resp .AlertsNrqlConditionBaselineUpdate , nil
614639}
615640
641+ // CreateNrqlConditionOutlierMutation creates an outlier NRQL alert condition via New Relic's NerdGraph API.
642+ func (a * Alerts ) CreateNrqlConditionOutlierMutation (
643+ accountID int ,
644+ policyID string ,
645+ nrqlCondition NrqlConditionCreateInput ,
646+ ) (* NrqlAlertCondition , error ) {
647+ return a .CreateNrqlConditionOutlierMutationWithContext (context .Background (), accountID , policyID , nrqlCondition )
648+ }
649+
650+ // CreateNrqlConditionOutlierMutationWithContext creates an outlier NRQL alert condition via New Relic's NerdGraph API.
651+ func (a * Alerts ) CreateNrqlConditionOutlierMutationWithContext (
652+ ctx context.Context ,
653+ accountID int ,
654+ policyID string ,
655+ nrqlCondition NrqlConditionCreateInput ,
656+ ) (* NrqlAlertCondition , error ) {
657+ resp := nrqlConditionOutlierCreateResponse {}
658+ vars := map [string ]interface {}{
659+ "accountId" : accountID ,
660+ "policyId" : policyID ,
661+ "condition" : nrqlCondition ,
662+ }
663+
664+ if err := a .NerdGraphQueryWithContext (ctx , createNrqlConditionOutlierMutation , vars , & resp ); err != nil {
665+ return nil , err
666+ }
667+
668+ return & resp .AlertsNrqlConditionOutlierCreate , nil
669+ }
670+
671+ // UpdateNrqlConditionOutlierMutation updates an outlier NRQL alert condition via New Relic's NerdGraph API.
672+ func (a * Alerts ) UpdateNrqlConditionOutlierMutation (
673+ accountID int ,
674+ conditionID string ,
675+ nrqlCondition NrqlConditionUpdateInput ,
676+ ) (* NrqlAlertCondition , error ) {
677+ return a .UpdateNrqlConditionOutlierMutationWithContext (context .Background (), accountID , conditionID , nrqlCondition )
678+ }
679+
680+ // UpdateNrqlConditionOutlierMutationWithContext updates an outlier NRQL alert condition via New Relic's NerdGraph API.
681+ func (a * Alerts ) UpdateNrqlConditionOutlierMutationWithContext (
682+ ctx context.Context ,
683+ accountID int ,
684+ conditionID string ,
685+ nrqlCondition NrqlConditionUpdateInput ,
686+ ) (* NrqlAlertCondition , error ) {
687+ resp := nrqlConditionOutlierUpdateResponse {}
688+ vars := map [string ]interface {}{
689+ "accountId" : accountID ,
690+ "id" : conditionID ,
691+ "condition" : nrqlCondition ,
692+ }
693+
694+ if err := a .NerdGraphQueryWithContext (ctx , updateNrqlConditionOutlierMutation , vars , & resp ); err != nil {
695+ return nil , err
696+ }
697+
698+ return & resp .AlertsNrqlConditionOutlierUpdate , nil
699+ }
700+
616701// CreateNrqlConditionStaticMutation creates a static NRQL alert condition via New Relic's NerdGraph API.
617702func (a * Alerts ) CreateNrqlConditionStaticMutation (
618703 accountID int ,
@@ -716,6 +801,14 @@ type nrqlConditionBaselineUpdateResponse struct {
716801 AlertsNrqlConditionBaselineUpdate NrqlAlertCondition `json:"alertsNrqlConditionBaselineUpdate"`
717802}
718803
804+ type nrqlConditionOutlierCreateResponse struct {
805+ AlertsNrqlConditionOutlierCreate NrqlAlertCondition `json:"alertsNrqlConditionOutlierCreate"`
806+ }
807+
808+ type nrqlConditionOutlierUpdateResponse struct {
809+ AlertsNrqlConditionOutlierUpdate NrqlAlertCondition `json:"alertsNrqlConditionOutlierUpdate"`
810+ }
811+
719812type nrqlConditionStaticCreateResponse struct {
720813 AlertsNrqlConditionStaticCreate NrqlAlertCondition `json:"alertsNrqlConditionStaticCreate"`
721814}
@@ -800,6 +893,19 @@ const (
800893 }
801894 `
802895
896+ graphqlFragmentNrqlOutlierConditionFields = `
897+ ... on AlertsNrqlOutlierCondition {
898+ outlierConfiguration {
899+ ... on AlertsOutlierDbScanConfiguration {
900+ algorithm
901+ epsilon
902+ minimumPoints
903+ evaluationGroupFacet
904+ }
905+ }
906+ }
907+ `
908+
803909 graphqlFragmentNrqlStaticConditionFields = `
804910 ... on AlertsNrqlStaticCondition {
805911 terms {
@@ -822,6 +928,7 @@ const (
822928 nrqlConditions {` +
823929 graphqlNrqlConditionStructFields +
824930 graphqlFragmentNrqlBaselineConditionFields +
931+ graphqlFragmentNrqlOutlierConditionFields +
825932 graphqlFragmentNrqlStaticConditionFields +
826933 `} } } } } }`
827934
@@ -833,6 +940,7 @@ const (
833940 nrqlCondition(id: $id) {` +
834941 graphqlNrqlConditionStructFields +
835942 graphqlFragmentNrqlBaselineConditionFields +
943+ graphqlFragmentNrqlOutlierConditionFields +
836944 graphqlFragmentNrqlStaticConditionFields +
837945 `} } } } }`
838946
@@ -852,6 +960,22 @@ const (
852960 graphqlFragmentNrqlBaselineConditionFields +
853961 ` } }`
854962
963+ // Outlier
964+ createNrqlConditionOutlierMutation = `
965+ mutation($accountId: Int!, $policyId: ID!, $condition: AlertsNrqlConditionOutlierInput!) {
966+ alertsNrqlConditionOutlierCreate(accountId: $accountId, policyId: $policyId, condition: $condition) {` +
967+ graphqlNrqlConditionStructFields +
968+ graphqlFragmentNrqlOutlierConditionFields +
969+ ` } }`
970+
971+ // Outlier
972+ updateNrqlConditionOutlierMutation = `
973+ mutation($accountId: Int!, $id: ID!, $condition: AlertsNrqlConditionUpdateOutlierInput!) {
974+ alertsNrqlConditionOutlierUpdate(accountId: $accountId, id: $id, condition: $condition) { ` +
975+ graphqlNrqlConditionStructFields +
976+ graphqlFragmentNrqlOutlierConditionFields +
977+ ` } }`
978+
855979 // Static
856980 createNrqlConditionStaticMutation = `
857981 mutation($accountId: Int!, $policyId: ID!, $condition: AlertsNrqlConditionStaticInput!) {
0 commit comments