github.com/newrelic/newrelic-client-go@v1.1.0/pkg/alerts/events.go (about) 1 package alerts 2 3 import ( 4 "context" 5 6 "github.com/newrelic/newrelic-client-go/internal/serialization" 7 ) 8 9 // AlertEvent response struct 10 type AlertEvent struct { 11 ID int `json:"id"` 12 EventType string `json:"event_type"` 13 Product string `json:"product"` 14 EntityType string `json:"entity_type"` 15 EntityGroupID int `json:"entity_group_id"` 16 EntityID int `json:"entity_id"` 17 Priority string `json:"priority"` 18 Description string `json:"description"` 19 Timestamp *serialization.EpochTime `json:"timestamp"` 20 IncidentID int `json:"incident_id"` 21 } 22 23 // ListAlertEventsParams represents a set of filters to be used 24 // when querying New Relic alert events 25 type ListAlertEventsParams struct { 26 Product string `url:"filter[product],omitempty"` 27 EntityType string `url:"filter[entity_type],omitempty"` 28 EntityGroupID int `url:"filter[entity_group_id],omitempty"` 29 EntityID int `url:"filter[entity_id],omitempty"` 30 EventType string `url:"filter[event_type],omitempty"` 31 IncidentID int `url:"filter[incident_id],omitempty"` 32 Page int `url:"page,omitempty"` 33 } 34 35 // ListAlertEvents is used to retrieve New Relic alert events 36 func (a *Alerts) ListAlertEvents(params *ListAlertEventsParams) ([]*AlertEvent, error) { 37 return a.ListAlertEventsWithContext(context.Background(), params) 38 } 39 40 // ListAlertEventsWithContext is used to retrieve New Relic alert events 41 func (a *Alerts) ListAlertEventsWithContext(ctx context.Context, params *ListAlertEventsParams) ([]*AlertEvent, error) { 42 alertEvents := []*AlertEvent{} 43 nextURL := a.config.Region().RestURL("alerts_events.json") 44 45 for nextURL != "" { 46 response := alertEventsResponse{} 47 resp, err := a.client.GetWithContext(ctx, nextURL, ¶ms, &response) 48 49 if err != nil { 50 return nil, err 51 } 52 53 alertEvents = append(alertEvents, response.AlertEvents...) 54 55 paging := a.pager.Parse(resp) 56 nextURL = paging.Next 57 } 58 59 return alertEvents, nil 60 } 61 62 type alertEventsResponse struct { 63 AlertEvents []*AlertEvent `json:"alert_events,omitempty"` 64 }