1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
# frozen_string_literal: true
module Types
module AlertManagement
class AlertType < BaseObject
graphql_name 'AlertManagementAlert'
description "Describes an alert from the project's Alert Management"
present_using ::AlertManagement::AlertPresenter
implements(Types::Notes::NoteableType)
authorize :read_alert_management_alert
field :iid,
GraphQL::ID_TYPE,
null: false,
description: 'Internal ID of the alert'
field :issue_iid,
GraphQL::ID_TYPE,
null: true,
description: 'Internal ID of the GitLab issue attached to the alert'
field :title,
GraphQL::STRING_TYPE,
null: true,
description: 'Title of the alert'
field :description,
GraphQL::STRING_TYPE,
null: true,
description: 'Description of the alert'
field :severity,
AlertManagement::SeverityEnum,
null: true,
description: 'Severity of the alert'
field :status,
AlertManagement::StatusEnum,
null: true,
description: 'Status of the alert'
field :service,
GraphQL::STRING_TYPE,
null: true,
description: 'Service the alert came from'
field :monitoring_tool,
GraphQL::STRING_TYPE,
null: true,
description: 'Monitoring tool the alert came from'
field :hosts,
[GraphQL::STRING_TYPE],
null: true,
description: 'List of hosts the alert came from'
field :started_at,
Types::TimeType,
null: true,
description: 'Timestamp the alert was raised'
field :ended_at,
Types::TimeType,
null: true,
description: 'Timestamp the alert ended'
field :event_count,
GraphQL::INT_TYPE,
null: true,
description: 'Number of events of this alert',
method: :events
field :details, # rubocop:disable Graphql/JSONType
GraphQL::Types::JSON,
null: true,
description: 'Alert details'
field :created_at,
Types::TimeType,
null: true,
description: 'Timestamp the alert was created'
field :updated_at,
Types::TimeType,
null: true,
description: 'Timestamp the alert was last updated'
field :assignees,
Types::UserType.connection_type,
null: true,
description: 'Assignees of the alert'
field :metrics_dashboard_url,
GraphQL::STRING_TYPE,
null: true,
description: 'URL for metrics embed for the alert'
field :runbook,
GraphQL::STRING_TYPE,
null: true,
description: 'Runbook for the alert as defined in alert details'
field :todos,
Types::TodoType.connection_type,
null: true,
description: 'Todos of the current user for the alert',
resolver: Resolvers::TodoResolver
field :details_url,
GraphQL::STRING_TYPE,
null: false,
description: 'The URL of the alert detail page'
field :prometheus_alert,
Types::PrometheusAlertType,
null: true,
description: 'The alert condition for Prometheus'
def notes
object.ordered_notes
end
end
end
end
|