datadog_api_client 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.apigentools-info +4 -4
  3. data/.generator/poetry.lock +21 -14
  4. data/.generator/pyproject.toml +1 -1
  5. data/.generator/schemas/v1/openapi.yaml +558 -8
  6. data/.generator/schemas/v2/openapi.yaml +973 -253
  7. data/.generator/src/generator/templates/api_client.j2 +5 -1
  8. data/.generator/src/generator/templates/configuration.j2 +17 -0
  9. data/.github/workflows/test.yml +3 -0
  10. data/.pre-commit-config.yaml +1 -1
  11. data/CHANGELOG.md +26 -0
  12. data/README.md +11 -0
  13. data/examples/v1/dashboards/CreateDashboard_1423904722.rb +38 -0
  14. data/examples/v1/dashboards/CreateDashboard_2652180930.rb +43 -0
  15. data/examples/v1/dashboards/CreateDashboard_2850365602.rb +55 -0
  16. data/examples/v1/dashboards/CreateDashboard_3117424216.rb +33 -0
  17. data/examples/v1/dashboards/CreateDashboard_3669695268.rb +50 -0
  18. data/examples/v1/dashboards/CreateDashboard_858397694.rb +41 -0
  19. data/examples/v1/synthetics/CreateGlobalVariable_1068962881.rb +1 -1
  20. data/examples/v2/incidents/ListIncidentAttachments.rb +8 -0
  21. data/examples/v2/incidents/ListIncidentAttachments_2457735435.rb +11 -0
  22. data/examples/v2/incidents/UpdateIncidentAttachments.rb +38 -0
  23. data/examples/v2/incidents/UpdateIncidentAttachments_3881702075.rb +26 -0
  24. data/examples/v2/metrics/ListActiveMetricConfigurations.rb +5 -0
  25. data/examples/v2/metrics/ListTagConfigurations.rb +1 -1
  26. data/examples/v2/metrics/ListTagConfigurations_265033704.rb +8 -0
  27. data/examples/v2/metrics/{ListTagConfigurations_103226315.rb → ListTagConfigurations_2739018321.rb} +1 -1
  28. data/examples/v2/security-monitoring/CreateSecurityMonitoringRule.rb +3 -2
  29. data/examples/v2/security-monitoring/CreateSecurityMonitoringRule_461183901.rb +2 -2
  30. data/examples/v2/security-monitoring/CreateSecurityMonitoringRule_498211763.rb +2 -2
  31. data/examples/v2/security-monitoring/CreateSecurityMonitoringRule_914562040.rb +50 -0
  32. data/examples/v2/security-monitoring/GetSecurityMonitoringSignal.rb +5 -0
  33. data/examples/v2/security-monitoring/UpdateSecurityMonitoringRule.rb +2 -1
  34. data/examples/v2/usage-metering/GetEstimatedCostByOrg.rb +1 -4
  35. data/examples/v2/usage-metering/GetEstimatedCostByOrg_2734954020.rb +2 -4
  36. data/examples/v2/usage-metering/GetEstimatedCostByOrg_3186693804.rb +2 -4
  37. data/examples/v2/usage-metering/GetHistoricalCostByOrg.rb +8 -0
  38. data/generate.sh +30 -0
  39. data/lib/datadog_api_client/api_client.rb +5 -1
  40. data/lib/datadog_api_client/configuration.rb +20 -1
  41. data/lib/datadog_api_client/inflector.rb +51 -1
  42. data/lib/datadog_api_client/v1/api/service_level_objectives_api.rb +3 -1
  43. data/lib/datadog_api_client/v1/api/usage_metering_api.rb +5 -5
  44. data/lib/datadog_api_client/v1/models/dashboard_template_variable.rb +14 -2
  45. data/lib/datadog_api_client/v1/models/dashboard_template_variable_preset_value.rb +28 -5
  46. data/lib/datadog_api_client/v1/models/formula_and_function_event_query_definition.rb +14 -4
  47. data/lib/datadog_api_client/v1/models/hourly_usage_attribution_usage_type.rb +1 -0
  48. data/lib/datadog_api_client/v1/models/list_stream_query.rb +14 -4
  49. data/lib/datadog_api_client/v1/models/monthly_usage_attribution_supported_metrics.rb +2 -0
  50. data/lib/datadog_api_client/v1/models/monthly_usage_attribution_values.rb +21 -1
  51. data/lib/datadog_api_client/v1/models/search_service_level_objective.rb +111 -0
  52. data/lib/datadog_api_client/v1/models/search_service_level_objective_attributes.rb +286 -0
  53. data/lib/datadog_api_client/v1/models/search_service_level_objective_data.rb +134 -0
  54. data/lib/datadog_api_client/v1/models/search_slo_query.rb +137 -0
  55. data/lib/datadog_api_client/v1/models/search_slo_response_data_attributes.rb +8 -8
  56. data/lib/datadog_api_client/v1/models/search_slo_response_links.rb +2 -0
  57. data/lib/datadog_api_client/v1/models/search_slo_threshold.rb +184 -0
  58. data/lib/datadog_api_client/v1/models/search_slo_timeframe.rb +28 -0
  59. data/lib/datadog_api_client/v1/models/slo_creator.rb +131 -0
  60. data/lib/datadog_api_client/v1/models/slo_list_widget_definition.rb +185 -0
  61. data/lib/datadog_api_client/v1/models/slo_list_widget_definition_type.rb +26 -0
  62. data/lib/datadog_api_client/v1/models/slo_list_widget_query.rb +149 -0
  63. data/lib/datadog_api_client/v1/models/slo_list_widget_request.rb +143 -0
  64. data/lib/datadog_api_client/v1/models/slo_list_widget_request_type.rb +26 -0
  65. data/lib/datadog_api_client/v1/models/slo_overall_statuses.rb +174 -0
  66. data/lib/datadog_api_client/v1/models/slo_raw_error_budget_remaining.rb +121 -0
  67. data/lib/datadog_api_client/v1/models/synthetics_assertion_operator.rb +1 -0
  68. data/lib/datadog_api_client/v1/models/topology_map_widget_definition.rb +193 -0
  69. data/lib/datadog_api_client/v1/models/topology_map_widget_definition_type.rb +26 -0
  70. data/lib/datadog_api_client/v1/models/topology_query.rb +144 -0
  71. data/lib/datadog_api_client/v1/models/topology_query_data_source.rb +27 -0
  72. data/lib/datadog_api_client/v1/models/topology_request.rb +121 -0
  73. data/lib/datadog_api_client/v1/models/topology_request_type.rb +26 -0
  74. data/lib/datadog_api_client/v1/models/usage_attribution_sort.rb +2 -0
  75. data/lib/datadog_api_client/v1/models/usage_attribution_supported_metrics.rb +2 -0
  76. data/lib/datadog_api_client/v1/models/usage_attribution_values.rb +21 -1
  77. data/lib/datadog_api_client/v1/models/usage_fargate_hour.rb +11 -1
  78. data/lib/datadog_api_client/v1/models/usage_summary_date.rb +11 -1
  79. data/lib/datadog_api_client/v1/models/usage_summary_date_org.rb +11 -1
  80. data/lib/datadog_api_client/v1/models/usage_summary_response.rb +11 -1
  81. data/lib/datadog_api_client/v1/models/widget_definition.rb +3 -1
  82. data/lib/datadog_api_client/v2/api/incident_services_api.rb +2 -2
  83. data/lib/datadog_api_client/v2/api/incident_teams_api.rb +2 -2
  84. data/lib/datadog_api_client/v2/api/incidents_api.rb +155 -0
  85. data/lib/datadog_api_client/v2/api/metrics_api.rb +76 -8
  86. data/lib/datadog_api_client/v2/api/security_monitoring_api.rb +65 -0
  87. data/lib/datadog_api_client/v2/api/usage_metering_api.rb +83 -17
  88. data/lib/datadog_api_client/v2/models/incident_attachment_attachment_type.rb +27 -0
  89. data/lib/datadog_api_client/v2/models/incident_attachment_attributes.rb +63 -0
  90. data/lib/datadog_api_client/v2/models/incident_attachment_data.rb +187 -0
  91. data/lib/datadog_api_client/v2/models/incident_attachment_link_attachment_type.rb +26 -0
  92. data/lib/datadog_api_client/v2/models/incident_attachment_link_attributes.rb +145 -0
  93. data/lib/datadog_api_client/v2/models/incident_attachment_link_attributes_attachment_object.rb +143 -0
  94. data/lib/datadog_api_client/v2/models/incident_attachment_postmortem_attachment_type.rb +26 -0
  95. data/lib/datadog_api_client/v2/models/incident_attachment_postmortem_attributes.rb +145 -0
  96. data/lib/datadog_api_client/v2/models/incident_attachment_related_object.rb +26 -0
  97. data/lib/datadog_api_client/v2/models/incident_attachment_relationships.rb +111 -0
  98. data/lib/datadog_api_client/v2/models/incident_attachment_type.rb +26 -0
  99. data/lib/datadog_api_client/v2/models/incident_attachment_update_attributes.rb +63 -0
  100. data/lib/datadog_api_client/v2/models/incident_attachment_update_data.rb +144 -0
  101. data/lib/datadog_api_client/v2/models/incident_attachment_update_request.rb +127 -0
  102. data/lib/datadog_api_client/v2/models/incident_attachment_update_response.rb +137 -0
  103. data/lib/datadog_api_client/v2/models/incident_attachments_postmortem_attributes_attachment_object.rb +143 -0
  104. data/lib/datadog_api_client/v2/models/incident_attachments_response.rb +136 -0
  105. data/lib/datadog_api_client/v2/models/incident_attachments_response_included_item.rb +62 -0
  106. data/lib/datadog_api_client/v2/models/incident_related_object.rb +1 -0
  107. data/lib/datadog_api_client/v2/models/incident_response_attributes.rb +1 -11
  108. data/lib/datadog_api_client/v2/models/incident_response_included_item.rb +2 -1
  109. data/lib/datadog_api_client/v2/models/incident_response_relationships.rb +14 -14
  110. data/lib/datadog_api_client/v2/models/metric_active_configuration_type.rb +26 -0
  111. data/lib/datadog_api_client/v2/models/metric_suggested_tags_and_aggregations.rb +133 -0
  112. data/lib/datadog_api_client/v2/models/metric_suggested_tags_and_aggregations_response.rb +111 -0
  113. data/lib/datadog_api_client/v2/models/metric_suggested_tags_attributes.rb +125 -0
  114. data/lib/datadog_api_client/v2/models/relationship_to_incident_attachment.rb +124 -0
  115. data/lib/datadog_api_client/v2/models/relationship_to_incident_attachment_data.rb +145 -0
  116. data/lib/datadog_api_client/v2/models/security_monitoring_rule_create_payload.rb +36 -248
  117. data/lib/datadog_api_client/v2/models/security_monitoring_rule_query.rb +36 -151
  118. data/lib/datadog_api_client/v2/models/security_monitoring_rule_query_aggregation.rb +1 -0
  119. data/lib/datadog_api_client/v2/models/security_monitoring_rule_response.rb +37 -253
  120. data/lib/datadog_api_client/v2/models/security_monitoring_signal_rule_create_payload.rb +275 -0
  121. data/lib/datadog_api_client/v2/models/security_monitoring_signal_rule_query.rb +187 -0
  122. data/lib/datadog_api_client/v2/models/security_monitoring_signal_rule_response.rb +279 -0
  123. data/lib/datadog_api_client/v2/models/security_monitoring_signal_rule_type.rb +26 -0
  124. data/lib/datadog_api_client/v2/models/security_monitoring_standard_rule_create_payload.rb +275 -0
  125. data/lib/datadog_api_client/v2/models/{security_monitoring_rule_query_create.rb → security_monitoring_standard_rule_query.rb} +3 -3
  126. data/lib/datadog_api_client/v2/models/security_monitoring_standard_rule_response.rb +279 -0
  127. data/lib/datadog_api_client/version.rb +1 -1
  128. metadata +70 -6
  129. data/Makefile +0 -7
  130. data/examples/v2/metrics/ListTagConfigurations_1799362914.rb +0 -8
@@ -0,0 +1,145 @@
1
+ =begin
2
+ #Datadog API V2 Collection
3
+
4
+ #Collection of all Datadog Public endpoints.
5
+
6
+ The version of the OpenAPI document: 1.0
7
+ Contact: support@datadoghq.com
8
+ Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator
9
+
10
+ Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
11
+ This product includes software developed at Datadog (https://www.datadoghq.com/).
12
+ Copyright 2020-Present Datadog, Inc.
13
+
14
+ =end
15
+
16
+ require 'date'
17
+ require 'time'
18
+
19
+ module DatadogAPIClient::V2
20
+ # The attachment relationship data.
21
+ class RelationshipToIncidentAttachmentData
22
+ include BaseGenericModel
23
+
24
+ # Whether the object has unparsed attributes
25
+ # @!visibility private
26
+ attr_accessor :_unparsed
27
+
28
+ # A unique identifier that represents the attachment.
29
+ attr_accessor :id
30
+
31
+ # The incident attachment resource type.
32
+ attr_accessor :type
33
+
34
+ # Attribute mapping from ruby-style variable name to JSON key.
35
+ # @!visibility private
36
+ def self.attribute_map
37
+ {
38
+ :'id' => :'id',
39
+ :'type' => :'type'
40
+ }
41
+ end
42
+
43
+ # Returns all the JSON keys this model knows about
44
+ # @!visibility private
45
+ def self.acceptable_attributes
46
+ attribute_map.values
47
+ end
48
+
49
+ # Attribute type mapping.
50
+ # @!visibility private
51
+ def self.openapi_types
52
+ {
53
+ :'id' => :'String',
54
+ :'type' => :'IncidentAttachmentType'
55
+ }
56
+ end
57
+
58
+ # List of attributes with nullable: true
59
+ # @!visibility private
60
+ def self.openapi_nullable
61
+ Set.new([
62
+ ])
63
+ end
64
+
65
+ # Initializes the object
66
+ # @param attributes [Hash] Model attributes in the form of hash
67
+ # @!visibility private
68
+ def initialize(attributes = {})
69
+ if (!attributes.is_a?(Hash))
70
+ fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::RelationshipToIncidentAttachmentData` initialize method"
71
+ end
72
+
73
+ # check to see if the attribute exists and convert string to symbol for hash key
74
+ attributes = attributes.each_with_object({}) { |(k, v), h|
75
+ if (!self.class.attribute_map.key?(k.to_sym))
76
+ fail ArgumentError, "`#{k}` is not a valid attribute in `DatadogAPIClient::V2::RelationshipToIncidentAttachmentData`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
77
+ end
78
+ h[k.to_sym] = v
79
+ }
80
+
81
+ if attributes.key?(:'id')
82
+ self.id = attributes[:'id']
83
+ end
84
+
85
+ if attributes.key?(:'type')
86
+ self.type = attributes[:'type']
87
+ else
88
+ self.type = 'incident_attachments'
89
+ end
90
+ end
91
+
92
+ # Check to see if the all the properties in the model are valid
93
+ # @return true if the model is valid
94
+ # @!visibility private
95
+ def valid?
96
+ return false if @id.nil?
97
+ return false if @type.nil?
98
+ true
99
+ end
100
+
101
+ # Custom attribute writer method with validation
102
+ # @param id [Object] Object to be assigned
103
+ # @!visibility private
104
+ def id=(id)
105
+ if id.nil?
106
+ fail ArgumentError, 'invalid value for "id", id cannot be nil.'
107
+ end
108
+ @id = id
109
+ end
110
+
111
+ # Custom attribute writer method with validation
112
+ # @param type [Object] Object to be assigned
113
+ # @!visibility private
114
+ def type=(type)
115
+ if type.nil?
116
+ fail ArgumentError, 'invalid value for "type", type cannot be nil.'
117
+ end
118
+ @type = type
119
+ end
120
+
121
+ # Checks equality by comparing each attribute.
122
+ # @param o [Object] Object to be compared
123
+ # @!visibility private
124
+ def ==(o)
125
+ return true if self.equal?(o)
126
+ self.class == o.class &&
127
+ id == o.id &&
128
+ type == o.type
129
+ end
130
+
131
+ # @see the `==` method
132
+ # @param o [Object] Object to be compared
133
+ # @!visibility private
134
+ def eql?(o)
135
+ self == o
136
+ end
137
+
138
+ # Calculates hash code according to all attributes.
139
+ # @return [Integer] Hash code
140
+ # @!visibility private
141
+ def hash
142
+ [id, type].hash
143
+ end
144
+ end
145
+ end
@@ -18,258 +18,46 @@ require 'time'
18
18
 
19
19
  module DatadogAPIClient::V2
20
20
  # Create a new rule.
21
- class SecurityMonitoringRuleCreatePayload
22
- include BaseGenericModel
23
-
24
- # Whether the object has unparsed attributes
25
- # @!visibility private
26
- attr_accessor :_unparsed
27
-
28
- # Cases for generating signals.
29
- attr_accessor :cases
30
-
31
- # Additional queries to filter matched events before they are processed.
32
- attr_accessor :filters
33
-
34
- # Whether the notifications include the triggering group-by values in their title.
35
- attr_accessor :has_extended_title
36
-
37
- # Whether the rule is enabled.
38
- attr_accessor :is_enabled
39
-
40
- # Message for generated signals.
41
- attr_accessor :message
42
-
43
- # The name of the rule.
44
- attr_accessor :name
45
-
46
- # Options on rules.
47
- attr_accessor :options
48
-
49
- # Queries for selecting logs which are part of the rule.
50
- attr_accessor :queries
51
-
52
- # Tags for generated signals.
53
- attr_accessor :tags
54
-
55
- # The rule type.
56
- attr_accessor :type
57
-
58
- # Attribute mapping from ruby-style variable name to JSON key.
59
- # @!visibility private
60
- def self.attribute_map
61
- {
62
- :'cases' => :'cases',
63
- :'filters' => :'filters',
64
- :'has_extended_title' => :'hasExtendedTitle',
65
- :'is_enabled' => :'isEnabled',
66
- :'message' => :'message',
67
- :'name' => :'name',
68
- :'options' => :'options',
69
- :'queries' => :'queries',
70
- :'tags' => :'tags',
71
- :'type' => :'type'
72
- }
73
- end
74
-
75
- # Returns all the JSON keys this model knows about
76
- # @!visibility private
77
- def self.acceptable_attributes
78
- attribute_map.values
79
- end
80
-
81
- # Attribute type mapping.
82
- # @!visibility private
83
- def self.openapi_types
84
- {
85
- :'cases' => :'Array<SecurityMonitoringRuleCaseCreate>',
86
- :'filters' => :'Array<SecurityMonitoringFilter>',
87
- :'has_extended_title' => :'Boolean',
88
- :'is_enabled' => :'Boolean',
89
- :'message' => :'String',
90
- :'name' => :'String',
91
- :'options' => :'SecurityMonitoringRuleOptions',
92
- :'queries' => :'Array<SecurityMonitoringRuleQueryCreate>',
93
- :'tags' => :'Array<String>',
94
- :'type' => :'SecurityMonitoringRuleTypeCreate'
95
- }
96
- end
97
-
98
- # List of attributes with nullable: true
99
- # @!visibility private
100
- def self.openapi_nullable
101
- Set.new([
102
- ])
103
- end
104
-
105
- # Initializes the object
106
- # @param attributes [Hash] Model attributes in the form of hash
107
- # @!visibility private
108
- def initialize(attributes = {})
109
- if (!attributes.is_a?(Hash))
110
- fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::SecurityMonitoringRuleCreatePayload` initialize method"
111
- end
112
-
113
- # check to see if the attribute exists and convert string to symbol for hash key
114
- attributes = attributes.each_with_object({}) { |(k, v), h|
115
- if (!self.class.attribute_map.key?(k.to_sym))
116
- fail ArgumentError, "`#{k}` is not a valid attribute in `DatadogAPIClient::V2::SecurityMonitoringRuleCreatePayload`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
21
+ module SecurityMonitoringRuleCreatePayload
22
+ class << self
23
+ include BaseOneOfModel
24
+ include BaseOneOfModelNoDiscriminator
25
+
26
+ # List of class defined in oneOf (OpenAPI v3)
27
+ def openapi_one_of
28
+ [
29
+ :'SecurityMonitoringStandardRuleCreatePayload',
30
+ :'SecurityMonitoringSignalRuleCreatePayload'
31
+ ]
32
+ end
33
+ # Builds the object
34
+ # @param [Mixed] Data to be matched against the list of oneOf items
35
+ # @return [Object] Returns the model or the data itself
36
+ def build(data)
37
+ # Go through the list of oneOf items and attempt to identify the appropriate one.
38
+ # Note:
39
+ # - We do not attempt to check whether exactly one item matches.
40
+ # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 })
41
+ # due to the way the deserialization is made in the base_object template (it just casts without verifying).
42
+ # - TODO: scalar values are de facto behaving as if they were nullable.
43
+ # - TODO: logging when debugging is set.
44
+ openapi_one_of.each do |klass|
45
+ begin
46
+ next if klass == :AnyType # "nullable: true"
47
+ typed_data = find_and_cast_into_type(klass, data)
48
+ next if typed_data._unparsed
49
+ return typed_data if typed_data
50
+ rescue # rescue all errors so we keep iterating even if the current item lookup raises
51
+ end
117
52
  end
118
- h[k.to_sym] = v
119
- }
120
53
 
121
- if attributes.key?(:'cases')
122
- if (value = attributes[:'cases']).is_a?(Array)
123
- self.cases = value
54
+ if openapi_one_of.include?(:AnyType)
55
+ data
56
+ else
57
+ self._unparsed = true
58
+ DatadogAPIClient::UnparsedObject.new(data)
124
59
  end
125
60
  end
126
-
127
- if attributes.key?(:'filters')
128
- if (value = attributes[:'filters']).is_a?(Array)
129
- self.filters = value
130
- end
131
- end
132
-
133
- if attributes.key?(:'has_extended_title')
134
- self.has_extended_title = attributes[:'has_extended_title']
135
- end
136
-
137
- if attributes.key?(:'is_enabled')
138
- self.is_enabled = attributes[:'is_enabled']
139
- end
140
-
141
- if attributes.key?(:'message')
142
- self.message = attributes[:'message']
143
- end
144
-
145
- if attributes.key?(:'name')
146
- self.name = attributes[:'name']
147
- end
148
-
149
- if attributes.key?(:'options')
150
- self.options = attributes[:'options']
151
- end
152
-
153
- if attributes.key?(:'queries')
154
- if (value = attributes[:'queries']).is_a?(Array)
155
- self.queries = value
156
- end
157
- end
158
-
159
- if attributes.key?(:'tags')
160
- if (value = attributes[:'tags']).is_a?(Array)
161
- self.tags = value
162
- end
163
- end
164
-
165
- if attributes.key?(:'type')
166
- self.type = attributes[:'type']
167
- end
168
- end
169
-
170
- # Check to see if the all the properties in the model are valid
171
- # @return true if the model is valid
172
- # @!visibility private
173
- def valid?
174
- return false if @cases.nil?
175
- return false if @is_enabled.nil?
176
- return false if @message.nil?
177
- return false if @name.nil?
178
- return false if @options.nil?
179
- return false if @queries.nil?
180
- true
181
- end
182
-
183
- # Custom attribute writer method with validation
184
- # @param cases [Object] Object to be assigned
185
- # @!visibility private
186
- def cases=(cases)
187
- if cases.nil?
188
- fail ArgumentError, 'invalid value for "cases", cases cannot be nil.'
189
- end
190
- @cases = cases
191
- end
192
-
193
- # Custom attribute writer method with validation
194
- # @param is_enabled [Object] Object to be assigned
195
- # @!visibility private
196
- def is_enabled=(is_enabled)
197
- if is_enabled.nil?
198
- fail ArgumentError, 'invalid value for "is_enabled", is_enabled cannot be nil.'
199
- end
200
- @is_enabled = is_enabled
201
- end
202
-
203
- # Custom attribute writer method with validation
204
- # @param message [Object] Object to be assigned
205
- # @!visibility private
206
- def message=(message)
207
- if message.nil?
208
- fail ArgumentError, 'invalid value for "message", message cannot be nil.'
209
- end
210
- @message = message
211
- end
212
-
213
- # Custom attribute writer method with validation
214
- # @param name [Object] Object to be assigned
215
- # @!visibility private
216
- def name=(name)
217
- if name.nil?
218
- fail ArgumentError, 'invalid value for "name", name cannot be nil.'
219
- end
220
- @name = name
221
- end
222
-
223
- # Custom attribute writer method with validation
224
- # @param options [Object] Object to be assigned
225
- # @!visibility private
226
- def options=(options)
227
- if options.nil?
228
- fail ArgumentError, 'invalid value for "options", options cannot be nil.'
229
- end
230
- @options = options
231
- end
232
-
233
- # Custom attribute writer method with validation
234
- # @param queries [Object] Object to be assigned
235
- # @!visibility private
236
- def queries=(queries)
237
- if queries.nil?
238
- fail ArgumentError, 'invalid value for "queries", queries cannot be nil.'
239
- end
240
- @queries = queries
241
- end
242
-
243
- # Checks equality by comparing each attribute.
244
- # @param o [Object] Object to be compared
245
- # @!visibility private
246
- def ==(o)
247
- return true if self.equal?(o)
248
- self.class == o.class &&
249
- cases == o.cases &&
250
- filters == o.filters &&
251
- has_extended_title == o.has_extended_title &&
252
- is_enabled == o.is_enabled &&
253
- message == o.message &&
254
- name == o.name &&
255
- options == o.options &&
256
- queries == o.queries &&
257
- tags == o.tags &&
258
- type == o.type
259
- end
260
-
261
- # @see the `==` method
262
- # @param o [Object] Object to be compared
263
- # @!visibility private
264
- def eql?(o)
265
- self == o
266
- end
267
-
268
- # Calculates hash code according to all attributes.
269
- # @return [Integer] Hash code
270
- # @!visibility private
271
- def hash
272
- [cases, filters, has_extended_title, is_enabled, message, name, options, queries, tags, type].hash
273
61
  end
274
62
  end
275
63
  end
@@ -18,161 +18,46 @@ require 'time'
18
18
 
19
19
  module DatadogAPIClient::V2
20
20
  # Query for matching rule.
21
- class SecurityMonitoringRuleQuery
22
- include BaseGenericModel
23
-
24
- # Whether the object has unparsed attributes
25
- # @!visibility private
26
- attr_accessor :_unparsed
27
-
28
- # The aggregation type.
29
- attr_accessor :aggregation
30
-
31
- # Field for which the cardinality is measured. Sent as an array.
32
- attr_accessor :distinct_fields
33
-
34
- # Fields to group by.
35
- attr_accessor :group_by_fields
36
-
37
- # The target field to aggregate over when using the sum or max
38
- # aggregations.
39
- attr_accessor :metric
40
-
41
- # Group of target fields to aggregate over when using the new value aggregations.
42
- attr_accessor :metrics
43
-
44
- # Name of the query.
45
- attr_accessor :name
46
-
47
- # Query to run on logs.
48
- attr_accessor :query
49
-
50
- # Attribute mapping from ruby-style variable name to JSON key.
51
- # @!visibility private
52
- def self.attribute_map
53
- {
54
- :'aggregation' => :'aggregation',
55
- :'distinct_fields' => :'distinctFields',
56
- :'group_by_fields' => :'groupByFields',
57
- :'metric' => :'metric',
58
- :'metrics' => :'metrics',
59
- :'name' => :'name',
60
- :'query' => :'query'
61
- }
62
- end
63
-
64
- # Returns all the JSON keys this model knows about
65
- # @!visibility private
66
- def self.acceptable_attributes
67
- attribute_map.values
68
- end
69
-
70
- # Attribute type mapping.
71
- # @!visibility private
72
- def self.openapi_types
73
- {
74
- :'aggregation' => :'SecurityMonitoringRuleQueryAggregation',
75
- :'distinct_fields' => :'Array<String>',
76
- :'group_by_fields' => :'Array<String>',
77
- :'metric' => :'String',
78
- :'metrics' => :'Array<String>',
79
- :'name' => :'String',
80
- :'query' => :'String'
81
- }
82
- end
83
-
84
- # List of attributes with nullable: true
85
- # @!visibility private
86
- def self.openapi_nullable
87
- Set.new([
88
- ])
89
- end
90
-
91
- # Initializes the object
92
- # @param attributes [Hash] Model attributes in the form of hash
93
- # @!visibility private
94
- def initialize(attributes = {})
95
- if (!attributes.is_a?(Hash))
96
- fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::SecurityMonitoringRuleQuery` initialize method"
97
- end
98
-
99
- # check to see if the attribute exists and convert string to symbol for hash key
100
- attributes = attributes.each_with_object({}) { |(k, v), h|
101
- if (!self.class.attribute_map.key?(k.to_sym))
102
- fail ArgumentError, "`#{k}` is not a valid attribute in `DatadogAPIClient::V2::SecurityMonitoringRuleQuery`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
21
+ module SecurityMonitoringRuleQuery
22
+ class << self
23
+ include BaseOneOfModel
24
+ include BaseOneOfModelNoDiscriminator
25
+
26
+ # List of class defined in oneOf (OpenAPI v3)
27
+ def openapi_one_of
28
+ [
29
+ :'SecurityMonitoringStandardRuleQuery',
30
+ :'SecurityMonitoringSignalRuleQuery'
31
+ ]
32
+ end
33
+ # Builds the object
34
+ # @param [Mixed] Data to be matched against the list of oneOf items
35
+ # @return [Object] Returns the model or the data itself
36
+ def build(data)
37
+ # Go through the list of oneOf items and attempt to identify the appropriate one.
38
+ # Note:
39
+ # - We do not attempt to check whether exactly one item matches.
40
+ # - No advanced validation of types in some cases (e.g. "x: { type: string }" will happily match { x: 123 })
41
+ # due to the way the deserialization is made in the base_object template (it just casts without verifying).
42
+ # - TODO: scalar values are de facto behaving as if they were nullable.
43
+ # - TODO: logging when debugging is set.
44
+ openapi_one_of.each do |klass|
45
+ begin
46
+ next if klass == :AnyType # "nullable: true"
47
+ typed_data = find_and_cast_into_type(klass, data)
48
+ next if typed_data._unparsed
49
+ return typed_data if typed_data
50
+ rescue # rescue all errors so we keep iterating even if the current item lookup raises
51
+ end
103
52
  end
104
- h[k.to_sym] = v
105
- }
106
-
107
- if attributes.key?(:'aggregation')
108
- self.aggregation = attributes[:'aggregation']
109
- end
110
53
 
111
- if attributes.key?(:'distinct_fields')
112
- if (value = attributes[:'distinct_fields']).is_a?(Array)
113
- self.distinct_fields = value
54
+ if openapi_one_of.include?(:AnyType)
55
+ data
56
+ else
57
+ self._unparsed = true
58
+ DatadogAPIClient::UnparsedObject.new(data)
114
59
  end
115
60
  end
116
-
117
- if attributes.key?(:'group_by_fields')
118
- if (value = attributes[:'group_by_fields']).is_a?(Array)
119
- self.group_by_fields = value
120
- end
121
- end
122
-
123
- if attributes.key?(:'metric')
124
- self.metric = attributes[:'metric']
125
- end
126
-
127
- if attributes.key?(:'metrics')
128
- if (value = attributes[:'metrics']).is_a?(Array)
129
- self.metrics = value
130
- end
131
- end
132
-
133
- if attributes.key?(:'name')
134
- self.name = attributes[:'name']
135
- end
136
-
137
- if attributes.key?(:'query')
138
- self.query = attributes[:'query']
139
- end
140
- end
141
-
142
- # Check to see if the all the properties in the model are valid
143
- # @return true if the model is valid
144
- # @!visibility private
145
- def valid?
146
- true
147
- end
148
-
149
- # Checks equality by comparing each attribute.
150
- # @param o [Object] Object to be compared
151
- # @!visibility private
152
- def ==(o)
153
- return true if self.equal?(o)
154
- self.class == o.class &&
155
- aggregation == o.aggregation &&
156
- distinct_fields == o.distinct_fields &&
157
- group_by_fields == o.group_by_fields &&
158
- metric == o.metric &&
159
- metrics == o.metrics &&
160
- name == o.name &&
161
- query == o.query
162
- end
163
-
164
- # @see the `==` method
165
- # @param o [Object] Object to be compared
166
- # @!visibility private
167
- def eql?(o)
168
- self == o
169
- end
170
-
171
- # Calculates hash code according to all attributes.
172
- # @return [Integer] Hash code
173
- # @!visibility private
174
- def hash
175
- [aggregation, distinct_fields, group_by_fields, metric, metrics, name, query].hash
176
61
  end
177
62
  end
178
63
  end
@@ -27,5 +27,6 @@ module DatadogAPIClient::V2
27
27
  MAX = "max".freeze
28
28
  NEW_VALUE = "new_value".freeze
29
29
  GEO_DATA = "geo_data".freeze
30
+ EVENT_COUNT = "event_count".freeze
30
31
  end
31
32
  end