Skip to content

Commit

Permalink
refactor types and examples
Browse files Browse the repository at this point in the history
  • Loading branch information
yacut committed Nov 2, 2020
1 parent 9ea5f8f commit 76a6319
Show file tree
Hide file tree
Showing 15 changed files with 164 additions and 86 deletions.
28 changes: 14 additions & 14 deletions alertsource.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,27 @@ import (

// AlertSource definition
type AlertSource struct {
ID int64 `json:"id"`
ID int64 `json:"id,omitempty"`
Name string `json:"name"`
IconURL string `json:"iconUrl"`
LightIconURL string `json:"lightIconUrl"`
DarkIconURL string `json:"darkIconUrl"`
IconURL string `json:"iconUrl,omitempty"`
LightIconURL string `json:"lightIconUrl,omitempty"`
DarkIconURL string `json:"darkIconUrl,omitempty"`
IntegrationType string `json:"integrationType"`
IntegrationKey string `json:"integrationKey"`
IncidentCreation string `json:"incidentCreation"`
EmailFiltered bool `json:"emailFiltered"`
EmailResolveFiltered bool `json:"emailResolveFiltered"`
Active bool `json:"active"`
Status string `json:"status"`
IntegrationKey string `json:"integrationKey,omitempty"`
IncidentCreation string `json:"incidentCreation,omitempty"`
EmailFiltered bool `json:"emailFiltered,omitempty"`
EmailResolveFiltered bool `json:"emailResolveFiltered,omitempty"`
Active bool `json:"active,omitempty"`
Status string `json:"status,omitempty"`
AutoResolutionTimeout string `json:"autoResolutionTimeout,omitempty"` // e.g. PT4H
EmailPredicates []EmailPredicate `json:"emailPredicates,omitempty"`
EmailResolvePredicates []EmailPredicate `json:"emailResolvePredicates,omitempty"`
ResolveKeyExtractor *EmailPredicate `json:"resolveKeyExtractor,omitempty"`
FilterOperator string `json:"filterOperator"`
ResolveFilterOperator string `json:"resolveFilterOperator"`
IncidentPriorityRule string `json:"incidentPriorityRule"`
FilterOperator string `json:"filterOperator,omitempty"`
ResolveFilterOperator string `json:"resolveFilterOperator,omitempty"`
IncidentPriorityRule string `json:"incidentPriorityRule,omitempty"`
SupportHours *SupportHours `json:"supportHours,omitempty"`
EscalationPolicy *EscalationPolicy `json:"escalationPolicy"`
EscalationPolicy *EscalationPolicy `json:"escalationPolicy,omitempty"`
Metadata map[string]interface{} `json:"metadata,omitempty"`
AutotaskMetadata *AutotaskMetadata `json:"autotaskMetadata,omitempty"`
Heartbeat *Heartbeat `json:"heartbeat,omitempty"`
Expand Down
1 change: 1 addition & 0 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ var apiRoutes = struct {
uptimeMonitors string
users string
}{
alertSources: "/api/v1/alert-sources",
connections: "/api/v1/connections",
connectors: "/api/v1/connectors",
escalationPolicies: "/api/v1/escalation-policies",
Expand Down
8 changes: 5 additions & 3 deletions connection.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ import (

// Connection definition https://api.ilert.com/api-docs/#!/Connections
type Connection struct {
ID string `json:"id"`
ID string `json:"id,omitempty"`
Name string `json:"name"`
AlertSourceIDs []int64 `json:"alertSourceIds"`
ConnectorID string `json:"connectorId"`
ConnectorType string `json:"connectorType"`
TriggerMode string `json:"triggerMode"`
TriggerTypes []string `json:"triggerTypes,omitempty"`
CreatedAt string `json:"createdAt"` // date time string in ISO 8601
UpdatedAt string `json:"updatedAt"` // date time string in ISO 8601
CreatedAt string `json:"createdAt,omitempty"` // date time string in ISO 8601
UpdatedAt string `json:"updatedAt,omitempty"` // date time string in ISO 8601
Params interface{} `json:"params"`
}

Expand All @@ -29,6 +29,8 @@ type ConnectionOutput struct {
ConnectorType string `json:"connectorType"`
TriggerMode string `json:"triggerMode"`
TriggerTypes []string `json:"triggerTypes,omitempty"`
CreatedAt string `json:"createdAt"` // date time string in ISO 8601
UpdatedAt string `json:"updatedAt"` // date time string in ISO 8601
Params *ConnectionOutputParams `json:"params"`
}

Expand Down
27 changes: 14 additions & 13 deletions connector.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import (

// Connector definition
type Connector struct {
ID string `json:"id"`
ID string `json:"id,omitempty"`
Name string `json:"name"`
Type string `json:"type"`
CreatedAt string `json:"createdAt"` // date time string in ISO 8601
UpdatedAt string `json:"updatedAt"` // date time string in ISO 8601
CreatedAt string `json:"createdAt,omitempty"` // date time string in ISO 8601
UpdatedAt string `json:"updatedAt,omitempty"` // date time string in ISO 8601
Params interface{} `json:"params"`
}

Expand All @@ -21,18 +21,19 @@ type ConnectorOutput struct {
ID string `json:"id"`
Name string `json:"name"`
Type string `json:"type"`
CreatedAt string `json:"createdAt"`
UpdatedAt string `json:"updatedAt"`
CreatedAt string `json:"createdAt"` // date time string in ISO 8601
UpdatedAt string `json:"updatedAt"` // date time string in ISO 8601
Params ConnectorOutputParams `json:"params"`
}

// ConnectorOutputParams definition
type ConnectorOutputParams struct {
APIKey string `json:"apiKey,omitempty"` // Datadog or Zendesk or Github or Serverless or Autotask api key
URL string `json:"url,omitempty"` // Jira or Microsoft Teams or Zendesk or Discord or Autotask server url
Email string `json:"email,omitempty"` // Jira or ServiceNow or Zendesk username or email
Username string `json:"username,omitempty"` // TOPdesk or ServiceNow or Autotask username
Password string `json:"password,omitempty"` // Jira or ServiceNow or Autotask user password or api token
APIKey string `json:"apiKey,omitempty"` // Datadog or Zendesk or Github or Serverless or Autotask api key
Authorization string `json:"authorization,omitempty"` // Serverless
URL string `json:"url,omitempty"` // Jira or Microsoft Teams or Zendesk or Discord or Autotask server url
Email string `json:"email,omitempty"` // Jira or ServiceNow or Zendesk username or email
Username string `json:"username,omitempty"` // TOPdesk or ServiceNow or Autotask username
Password string `json:"password,omitempty"` // Jira or ServiceNow or Autotask user password or api token
}

// ConnectorParamsDatadog definition
Expand Down Expand Up @@ -88,17 +89,17 @@ type ConnectorParamsTopdesk struct {

// ConnectorParamsAWSLambda definition
type ConnectorParamsAWSLambda struct {
APIKey string `json:"apiKey"`
Authorization string `json:"authorization,omitempty"`
}

// ConnectorParamsAzureFunction definition
type ConnectorParamsAzureFunction struct {
APIKey string `json:"apiKey"`
Authorization string `json:"authorization,omitempty"`
}

// ConnectorParamsGoogleFunction definition
type ConnectorParamsGoogleFunction struct {
APIKey string `json:"apiKey"`
Authorization string `json:"authorization,omitempty"`
}

// ConnectorParamsSysdig definition
Expand Down
6 changes: 3 additions & 3 deletions escalationpolicy.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import (

// EscalationPolicy definition https://api.ilert.com/api-docs/#!/Escalation_Policies
type EscalationPolicy struct {
ID int64 `json:"id"`
ID int64 `json:"id,omitempty"`
Name string `json:"name"`
EscalationRules []EscalationRule `json:"escalationRules"`
Repeating bool `json:"repeating"`
Frequency int `json:"frequency"`
Repeating bool `json:"repeating,omitempty"`
Frequency int `json:"frequency,omitempty"`
}

// EscalationRule definition
Expand Down
12 changes: 6 additions & 6 deletions event.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,22 @@ type Event struct {
Summary string `json:"summary"`

// Optional. The event details. Will be used as the incident details if a new incident is created.
Details string `json:"details"`
Details string `json:"details,omitempty"`

// Optional. For ALERT events, the incident key can be used to deduplicate or group events. If an open incident with the key already exists, the event will be appended to the incident's event log. Otherwise a new incident will be created. For ACCEPT and RESOLVE events, the incident key is used to reference the open incident which is to be accepted or resolved by this event.
IncidentKey string `json:"incidentKey"`
IncidentKey string `json:"incidentKey,omitempty"`

// Optional. For ALERT events, the incident key can be used to deduplicate or group events. If an open incident with the key already exists, the event will be appended to the incident's event log. Otherwise a new incident will be created. For ACCEPT and RESOLVE events, the incident key is used to reference the open incident which is to be accepted or resolved by this event.
Priority string `json:"priority"`
Priority string `json:"priority,omitempty"`

// Optional. A list of images containing src, href and alt.
Images []IncidentImage `json:"images"`
Images []IncidentImage `json:"images,omitempty"`

// Optional. A list of links, containing href and text.
Links []IncidentLink `json:"links"`
Links []IncidentLink `json:"links,omitempty"`

// Optional. Additional custom details for the event.
CustomDetails map[string]interface{} `json:"customDetails"`
CustomDetails map[string]interface{} `json:"customDetails,omitempty"`
}

// EventTypes defines event types
Expand Down
9 changes: 5 additions & 4 deletions examples/alertsource/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ import (
)

func main() {
var org = "your organization"
var username = "your username"
var password = "your password"
client := ilert.NewClient(ilert.WithBasicAuth(org, username, password))
// set your environment variables:
// ILERT_ORGANIZATION="your organization"
// ILERT_USERNAME="your username"
// ILERT_PASSWORD="your password"
client := ilert.NewClient()
result, err := client.GetAlertSources(&ilert.GetAlertSourcesInput{})
if err != nil {
log.Println(result)
Expand Down
75 changes: 70 additions & 5 deletions examples/connections/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,78 @@ import (

func main() {
client := ilert.NewClient()
result, err := client.GetConnections(&ilert.GetConnectionsInput{})

// result, err := client.GetConnections(&ilert.GetConnectionsInput{})
// if err != nil {
// log.Println(result)
// log.Fatalln("ERROR:", err)
// }
// log.Println(fmt.Sprintf("Found %d connections\n\n ", len(result.Connections)))
// for _, connection := range result.Connections {
// s, _ := json.Marshal(connection)
// log.Println(fmt.Sprintf("%+v\n", string(s)))
// }

// log.Fatalln("STOP")

rep, err := client.GetEscalationPolicies(&ilert.GetEscalationPoliciesInput{})
if err != nil {
log.Println(rep)
log.Fatalln("ERROR:", err)
}
log.Println(fmt.Sprintf("Found %d escalation policies\n\n ", len(rep.EscalationPolicies)))

if len(rep.EscalationPolicies) == 0 {
log.Fatalln("Escalation policy is required for this test")
}

ras, err := client.CreateAlertSource(&ilert.CreateAlertSourceInput{
AlertSource: &ilert.AlertSource{
Name: "Test API Alert Source",
IntegrationType: ilert.AlertSourceIntegrationTypes.API,
EscalationPolicy: &ilert.EscalationPolicy{
ID: rep.EscalationPolicies[0].ID,
},
},
})
if err != nil {
log.Println(ras)
log.Fatalln("ERROR:", err)
}
log.Println(fmt.Sprintf("New alert source is created:\n%+v\n", *ras.AlertSource))

rcr, err := client.CreateConnector(&ilert.CreateConnectorInput{
Connector: &ilert.Connector{
Name: "Test GitHub Connector",
Type: ilert.ConnectorTypes.Github,
Params: &ilert.ConnectorParamsGithub{
APIKey: "my api key",
},
},
})
if err != nil {
log.Println(result)
log.Println(rcr)
log.Fatalln("ERROR:", err)
}
log.Println(fmt.Sprintf("Found %d connections\n\n ", len(result.Connections)))
for _, connection := range result.Connections {
log.Println(fmt.Sprintf("%+v\n", *connection))
log.Println(fmt.Sprintf("New connector is created:\n%+v\n", *rcr.Connector))

rcn, err := client.CreateConnection(&ilert.CreateConnectionInput{
Connection: &ilert.Connection{
Name: "Test GitHub Connection",
ConnectorType: ilert.ConnectorTypes.Github,
ConnectorID: rcr.Connector.ID,
TriggerMode: ilert.ConnectionTriggerModes.Automatic,
TriggerTypes: ilert.ConnectionTriggerTypesAll,
AlertSourceIDs: []int64{ras.AlertSource.ID},
Params: ilert.ConnectionParamsGithub{
Owner: "my-org",
Repository: "my-repo",
},
},
})
if err != nil {
log.Println(rcn)
log.Fatalln("ERROR:", err)
}
log.Println(fmt.Sprintf("New connection is created:\n%+v\n", *rcn.Connection))
}
21 changes: 21 additions & 0 deletions examples/connectors/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package main

import (
"fmt"
"log"

"github.com/iLert/ilert-go"
)

func main() {
client := ilert.NewClient()
result, err := client.GetConnectors(&ilert.GetConnectorsInput{})
if err != nil {
log.Println(result)
log.Fatalln("ERROR:", err)
}
log.Println(fmt.Sprintf("Found %d connectors\n\n ", len(result.Connectors)))
for _, connector := range result.Connectors {
log.Println(fmt.Sprintf("%+v\n", *connector))
}
}
5 changes: 1 addition & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,4 @@ module github.com/iLert/ilert-go

go 1.15

require (
github.com/go-resty/resty/v2 v2.3.0
github.com/rs/zerolog v1.20.0 // indirect
)
require github.com/go-resty/resty/v2 v2.3.0
10 changes: 0 additions & 10 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,18 +1,8 @@
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/go-resty/resty v1.12.0 h1:L1P5qymrXL5H/doXe2pKUr1wxovAI5ilm2LdVLbwThc=
github.com/go-resty/resty/v2 v2.3.0 h1:JOOeAvjSlapTT92p8xiS19Zxev1neGikoHsXJeOq8So=
github.com/go-resty/resty/v2 v2.3.0/go.mod h1:UpN9CgLZNsv4e9XG50UU8xdI0F43UQ4HmxLBDwaroHU=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/zerolog v1.20.0 h1:38k9hgtUBdxFwE34yS8rTHmHBa4eN16E4DJlv177LNs=
github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120 h1:EZ3cVSzKOlJxAd8e8YAJ7no8nNypTxexh/YE/xW3ZEY=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
4 changes: 2 additions & 2 deletions incident.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ type Incident struct {
AcknowledgedByType string `json:"acknowledgedByType,omitempty"`
ResolvedBy *User `json:"resolvedBy,omitempty"`
ResolvedByType string `json:"resolvedByType,omitempty"`
Images []IncidentImage `json:"images"`
Links []IncidentLink `json:"links"`
Images []IncidentImage `json:"images,omitempty"`
Links []IncidentLink `json:"links,omitempty"`
CustomDetails map[string]interface{} `json:"customDetails,omitempty"`
}

Expand Down
6 changes: 3 additions & 3 deletions schedule.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ import (

// Schedule definition https://api.ilert.com/api-docs/#!/Schedules
type Schedule struct {
ID int64 `json:"id"`
ID int64 `json:"id,omitempty"`
Name string `json:"name"`
Timezone string `json:"timezone"`
StartsOn string `json:"startsOn"` // Date time string in ISO format
Timezone string `json:"timezone,omitempty"`
StartsOn string `json:"startsOn,omitempty"` // Date time string in ISO format
CurrentShift Shift `json:"currentShift,omitempty"`
NextShift Shift `json:"nextShift,omitempty"`
}
Expand Down
18 changes: 9 additions & 9 deletions uptimemonitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,20 @@ import (

// UptimeMonitor definition https://api.ilert.com/api-docs/#tag/Uptime-Monitors
type UptimeMonitor struct {
ID int64 `json:"id"`
ID int64 `json:"id,omitempty"`
Name string `json:"name"`
Region string `json:"region"`
CheckType string `json:"checkType"`
CheckParams UptimeMonitorCheckParams `json:"checkParams,omitempty"`
IntervalSec int `json:"intervalSec"` // default: 300
TimeoutMs int `json:"timeoutMs"` // default: 30000
CreateIncidentAfterFailedChecks int `json:"createIncidentAfterFailedChecks"` // default: 1
IntervalSec int `json:"intervalSec,omitempty"` // default: 300
TimeoutMs int `json:"timeoutMs,omitempty"` // default: 30000
CreateIncidentAfterFailedChecks int `json:"createIncidentAfterFailedChecks,omitempty"` // default: 1
EscalationPolicy *EscalationPolicy `json:"escalationPolicy,omitempty"`
Paused bool `json:"paused"` // default: false
EmbedURL string `json:"embedURL"` // read only
ShareURL string `json:"shareURL"` // read only
Status string `json:"status"`
LastStatusChange string `json:"lastStatusChange"` // Date time string in ISO format
Paused bool `json:"paused,omitempty"` // default: false
EmbedURL string `json:"embedURL,omitempty"` // read only
ShareURL string `json:"shareURL,omitempty"` // read only
Status string `json:"status,omitempty"`
LastStatusChange string `json:"lastStatusChange,omitempty"` // Date time string in ISO format
}

// UptimeMonitorCheckParams definition
Expand Down
Loading

0 comments on commit 76a6319

Please sign in to comment.