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, &params, &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  }