fastly 17.0.0 → 17.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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +2 -1
  5. data/docs/DomainInspectorMeasurements.md +7 -0
  6. data/docs/ErrorResponse.md +13 -0
  7. data/docs/ErrorResponseErrors.md +12 -0
  8. data/docs/LogError.md +15 -0
  9. data/docs/LogErrorBatch.md +11 -0
  10. data/docs/LoggingDatadogAdditional.md +1 -1
  11. data/docs/LoggingDatadogApi.md +2 -2
  12. data/docs/LoggingDatadogResponse.md +1 -1
  13. data/docs/LoggingEndpointErrorsApi.md +61 -0
  14. data/docs/RealtimeEntryAggregated.md +17 -0
  15. data/docs/RealtimeEntryDatacenter.md +17 -0
  16. data/docs/RealtimeMeasurements.md +17 -0
  17. data/docs/Results.md +17 -0
  18. data/docs/Values.md +7 -0
  19. data/lib/fastly/api/logging_datadog_api.rb +4 -4
  20. data/lib/fastly/api/logging_endpoint_errors_api.rb +92 -0
  21. data/lib/fastly/configuration.rb +6 -0
  22. data/lib/fastly/models/domain_inspector_measurements.rb +74 -4
  23. data/lib/fastly/models/error_response.rb +248 -0
  24. data/lib/fastly/models/error_response_errors.rb +234 -0
  25. data/lib/fastly/models/log_error.rb +267 -0
  26. data/lib/fastly/models/log_error_batch.rb +228 -0
  27. data/lib/fastly/models/logging_datadog_additional.rb +1 -1
  28. data/lib/fastly/models/logging_datadog_response.rb +1 -1
  29. data/lib/fastly/models/realtime_entry_aggregated.rb +174 -4
  30. data/lib/fastly/models/realtime_entry_datacenter.rb +174 -4
  31. data/lib/fastly/models/realtime_measurements.rb +174 -4
  32. data/lib/fastly/models/results.rb +171 -1
  33. data/lib/fastly/models/values.rb +74 -4
  34. data/lib/fastly/version.rb +1 -1
  35. data/lib/fastly.rb +5 -0
  36. data/sig.json +1 -1
  37. metadata +12 -2
@@ -0,0 +1,228 @@
1
+ =begin
2
+ #Fastly API
3
+
4
+ #Via the Fastly API you can perform any of the operations that are possible within the management console, including creating services, domains, and backends, configuring rules or uploading your own application code, as well as account operations such as user administration and billing reports. The API is organized into collections of endpoints that allow manipulation of objects related to Fastly services and accounts. For the most accurate and up-to-date API reference content, visit our [Developer Hub](https://www.fastly.com/documentation/reference/api/)
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: oss@fastly.com
8
+
9
+ =end
10
+
11
+ require 'date'
12
+ require 'time'
13
+
14
+ module Fastly
15
+ class LogErrorBatch
16
+ # Unique identifier for this batch of logs.
17
+ attr_accessor :batch_id
18
+
19
+ attr_accessor :logs
20
+
21
+ # Attribute mapping from ruby-style variable name to JSON key.
22
+ def self.attribute_map
23
+ {
24
+ :'batch_id' => :'batch_id',
25
+ :'logs' => :'logs'
26
+ }
27
+ end
28
+
29
+ # Returns all the JSON keys this model knows about
30
+ def self.acceptable_attributes
31
+ attribute_map.values
32
+ end
33
+
34
+ # Attribute type mapping.
35
+ def self.fastly_types
36
+ {
37
+ :'batch_id' => :'String',
38
+ :'logs' => :'Array<LogError>'
39
+ }
40
+ end
41
+
42
+ # List of attributes with nullable: true
43
+ def self.fastly_nullable
44
+ Set.new([
45
+ ])
46
+ end
47
+
48
+ # Initializes the object
49
+ # @param [Hash] attributes Model attributes in the form of hash
50
+ def initialize(attributes = {})
51
+ if (!attributes.is_a?(Hash))
52
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Fastly::LogErrorBatch` initialize method"
53
+ end
54
+
55
+ # check to see if the attribute exists and convert string to symbol for hash key
56
+ attributes = attributes.each_with_object({}) { |(k, v), h|
57
+ if (!self.class.attribute_map.key?(k.to_sym))
58
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Fastly::LogErrorBatch`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
59
+ end
60
+ h[k.to_sym] = v
61
+ }
62
+
63
+ if attributes.key?(:'batch_id')
64
+ self.batch_id = attributes[:'batch_id']
65
+ end
66
+
67
+ if attributes.key?(:'logs')
68
+ if (value = attributes[:'logs']).is_a?(Array)
69
+ self.logs = value
70
+ end
71
+ end
72
+ end
73
+
74
+ # Show invalid properties with the reasons. Usually used together with valid?
75
+ # @return Array for valid properties with the reasons
76
+ def list_invalid_properties
77
+ invalid_properties = Array.new
78
+ invalid_properties
79
+ end
80
+
81
+ # Check to see if the all the properties in the model are valid
82
+ # @return true if the model is valid
83
+ def valid?
84
+ true
85
+ end
86
+
87
+ # Checks equality by comparing each attribute.
88
+ # @param [Object] Object to be compared
89
+ def ==(o)
90
+ return true if self.equal?(o)
91
+ self.class == o.class &&
92
+ batch_id == o.batch_id &&
93
+ logs == o.logs
94
+ end
95
+
96
+ # @see the `==` method
97
+ # @param [Object] Object to be compared
98
+ def eql?(o)
99
+ self == o
100
+ end
101
+
102
+ # Calculates hash code according to all attributes.
103
+ # @return [Integer] Hash code
104
+ def hash
105
+ [batch_id, logs].hash
106
+ end
107
+
108
+ # Builds the object from hash
109
+ # @param [Hash] attributes Model attributes in the form of hash
110
+ # @return [Object] Returns the model itself
111
+ def self.build_from_hash(attributes)
112
+ new.build_from_hash(attributes)
113
+ end
114
+
115
+ # Builds the object from hash
116
+ # @param [Hash] attributes Model attributes in the form of hash
117
+ # @return [Object] Returns the model itself
118
+ def build_from_hash(attributes)
119
+ return nil unless attributes.is_a?(Hash)
120
+ self.class.fastly_types.each_pair do |key, type|
121
+ if attributes[self.class.attribute_map[key]].nil? && self.class.fastly_nullable.include?(key)
122
+ self.send("#{key}=", nil)
123
+ elsif type =~ /\AArray<(.*)>/i
124
+ # check to ensure the input is an array given that the attribute
125
+ # is documented as an array but the input is not
126
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
127
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
128
+ end
129
+ elsif !attributes[self.class.attribute_map[key]].nil?
130
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
131
+ end
132
+ end
133
+
134
+ self
135
+ end
136
+
137
+ # Deserializes the data based on type
138
+ # @param string type Data type
139
+ # @param string value Value to be deserialized
140
+ # @return [Object] Deserialized data
141
+ def _deserialize(type, value)
142
+ case type.to_sym
143
+ when :Time
144
+ Time.parse(value)
145
+ when :Date
146
+ Date.parse(value)
147
+ when :String
148
+ value.to_s
149
+ when :Integer
150
+ value.to_i
151
+ when :Float
152
+ value.to_f
153
+ when :Boolean
154
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
155
+ true
156
+ else
157
+ false
158
+ end
159
+ when :Object
160
+ # generic object (usually a Hash), return directly
161
+ value
162
+ when /\AArray<(?<inner_type>.+)>\z/
163
+ inner_type = Regexp.last_match[:inner_type]
164
+ value.map { |v| _deserialize(inner_type, v) }
165
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
166
+ k_type = Regexp.last_match[:k_type]
167
+ v_type = Regexp.last_match[:v_type]
168
+ {}.tap do |hash|
169
+ value.each do |k, v|
170
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
171
+ end
172
+ end
173
+ else # model
174
+ # models (e.g. Pet) or oneOf
175
+ klass = Fastly.const_get(type)
176
+ klass.respond_to?(:fastly_one_of) ? klass.build(value) : klass.build_from_hash(value)
177
+ end
178
+ end
179
+
180
+ # Returns the string representation of the object
181
+ # @return [String] String presentation of the object
182
+ def to_s
183
+ to_hash.to_s
184
+ end
185
+
186
+ # to_body is an alias to to_hash (backward compatibility)
187
+ # @return [Hash] Returns the object in the form of hash
188
+ def to_body
189
+ to_hash
190
+ end
191
+
192
+ # Returns the object in the form of hash
193
+ # @return [Hash] Returns the object in the form of hash
194
+ def to_hash
195
+ hash = {}
196
+ self.class.attribute_map.each_pair do |attr, param|
197
+ value = self.send(attr)
198
+ if value.nil?
199
+ is_nullable = self.class.fastly_nullable.include?(attr)
200
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
201
+ end
202
+
203
+ hash[param] = _to_hash(value)
204
+ end
205
+ hash
206
+ end
207
+
208
+ # Outputs non-array value in the form of hash
209
+ # For object, use to_hash. Otherwise, just return the value
210
+ # @param [Object] value Any valid value
211
+ # @return [Hash] Returns the value in the form of hash
212
+ def _to_hash(value)
213
+ if value.is_a?(Array)
214
+ value.compact.map { |v| _to_hash(v) }
215
+ elsif value.is_a?(Hash)
216
+ {}.tap do |hash|
217
+ value.each { |k, v| hash[k] = _to_hash(v) }
218
+ end
219
+ elsif value.respond_to? :to_hash
220
+ value.to_hash
221
+ else
222
+ value
223
+ end
224
+ end
225
+
226
+ end
227
+
228
+ end
@@ -97,7 +97,7 @@ module Fastly
97
97
  if attributes.key?(:'format')
98
98
  self.format = attributes[:'format']
99
99
  else
100
- self.format = '{\"ddsource\":\"fastly\",\"service\":\"%{req.service_id}V\",\"date\":\"%{begin:%Y-%m-%dT%H:%M:%S%Z}t\",\"time_start\":\"%{begin:%Y-%m-%dT%H:%M:%S%Z}t\",\"time_end\":\"%{end:%Y-%m-%dT%H:%M:%S%Z}t\",\"http\":{\"request_time_ms\":\"%D\",\"method\":\"%m\",\"url\":\"%{json.escape(req.url)}V\",\"useragent\":\"%{User-Agent}i\",\"referer\":\"%{Referer}i\",\"protocol\":\"%H\",\"request_x_forwarded_for\":\"%{X-Forwarded-For}i\",\"status_code\":\"%s\"},\"network\":{\"client\":{\"ip\":\"%h\",\"name\":\"%{client.as.name}V\",\"number\":\"%{client.as.number}V\",\"connection_speed\":\"%{client.geo.conn_speed}V\"},\"destination\":{\"ip\":\"%A\"},\"geoip\":{\"geo_city\":\"%{client.geo.city.utf8}V\",\"geo_country_code\":\"%{client.geo.country_code}V\",\"geo_continent_code\":\"%{client.geo.continent_code}V\",\"geo_region\":\"%{client.geo.region}V\"},\"bytes_written\":\"%B\",\"bytes_read\":\"%{req.body_bytes_read}V\"},\"host\":\"%{Fastly-Orig-Host}i\",\"origin_host\":\"%v\",\"is_ipv6\":\"%{if(req.is_ipv6, \\\"true\\\", \\\"false\\\")}V\",\"is_tls\":\"%{if(req.is_ssl, \\\"true\\\", \\\"false\\\")}V\",\"tls_client_protocol\":\"%{json.escape(tls.client.protocol)}V\",\"tls_client_servername\":\"%{json.escape(tls.client.servername)}V\",\"tls_client_cipher\":\"%{json.escape(tls.client.cipher)}V\",\"tls_client_cipher_sha\":\"%{json.escape(tls.client.ciphers_sha)}V\",\"tls_client_tlsexts_sha\":\"%{json.escape(tls.client.tlsexts_sha)}V\",\"is_h2\":\"%{if(fastly_info.is_h2, \\\"true\\\", \\\"false\\\")}V\",\"is_h2_push\":\"%{if(fastly_info.h2.is_push, \\\"true\\\", \\\"false\\\")}V\",\"h2_stream_id\":\"%{fastly_info.h2.stream_id}V\",\"request_accept_content\":\"%{Accept}i\",\"request_accept_language\":\"%{Accept-Language}i\",\"request_accept_encoding\":\"%{Accept-Encoding}i\",\"request_accept_charset\":\"%{Accept-Charset}i\",\"request_connection\":\"%{Connection}i\",\"request_dnt\":\"%{DNT}i\",\"request_forwarded\":\"%{Forwarded}i\",\"request_via\":\"%{Via}i\",\"request_cache_control\":\"%{Cache-Control}i\",\"request_x_requested_with\":\"%{X-Requested-With}i\",\"request_x_att_device_id\":\"%{X-ATT-Device-Id}i\",\"content_type\":\"%{Content-Type}o\",\"is_cacheable\":\"%{if(fastly_info.state~\\\"^(HIT|MISS)$\\\", \\\"true\\\", \\\"false\\\")}V\",\"response_age\":\"%{Age}o\",\"response_cache_control\":\"%{Cache-Control}o\",\"response_expires\":\"%{Expires}o\",\"response_last_modified\":\"%{Last-Modified}o\",\"response_tsv\":\"%{TSV}o\",\"server_datacenter\":\"%{server.datacenter}V\",\"req_header_size\":\"%{req.header_bytes_read}V\",\"resp_header_size\":\"%{resp.header_bytes_written}V\",\"socket_cwnd\":\"%{client.socket.cwnd}V\",\"socket_nexthop\":\"%{client.socket.nexthop}V\",\"socket_tcpi_rcv_mss\":\"%{client.socket.tcpi_rcv_mss}V\",\"socket_tcpi_snd_mss\":\"%{client.socket.tcpi_snd_mss}V\",\"socket_tcpi_rtt\":\"%{client.socket.tcpi_rtt}V\",\"socket_tcpi_rttvar\":\"%{client.socket.tcpi_rttvar}V\",\"socket_tcpi_rcv_rtt\":\"%{client.socket.tcpi_rcv_rtt}V\",\"socket_tcpi_rcv_space\":\"%{client.socket.tcpi_rcv_space}V\",\"socket_tcpi_last_data_sent\":\"%{client.socket.tcpi_last_data_sent}V\",\"socket_tcpi_total_retrans\":\"%{client.socket.tcpi_total_retrans}V\",\"socket_tcpi_delta_retrans\":\"%{client.socket.tcpi_delta_retrans}V\",\"socket_ploss\":\"%{client.socket.ploss}V\"}'
100
+ self.format = '{\"ddsource\":\"fastly\",\"service\":\"%{req.service_id}V\",\"date\":\"%{begin:%Y-%m-%dT%H:%M:%S%Z}t\",\"time_start\":\"%{begin:%Y-%m-%dT%H:%M:%S%Z}t\",\"time_end\":\"%{end:%Y-%m-%dT%H:%M:%S%Z}t\",\"http\":{\"request_time_ms\": %{time.elapsed.msec}V,\"method\":\"%m\",\"url\":\"%{json.escape(req.url)}V\",\"useragent\":\"%{User-Agent}i\",\"referer\":\"%{Referer}i\",\"protocol\":\"%H\",\"request_x_forwarded_for\":\"%{X-Forwarded-For}i\",\"status_code\":\"%s\"},\"network\":{\"client\":{\"ip\":\"%h\",\"name\":\"%{client.as.name}V\",\"number\":\"%{client.as.number}V\",\"connection_speed\":\"%{client.geo.conn_speed}V\"},\"destination\":{\"ip\":\"%A\"},\"geoip\":{\"geo_city\":\"%{client.geo.city.utf8}V\",\"geo_country_code\":\"%{client.geo.country_code}V\",\"geo_continent_code\":\"%{client.geo.continent_code}V\",\"geo_region\":\"%{client.geo.region}V\"},\"bytes_written\":\"%B\",\"bytes_read\":\"%{req.body_bytes_read}V\"},\"host\":\"%{Fastly-Orig-Host}i\",\"origin_host\":\"%v\",\"is_ipv6\":\"%{if(req.is_ipv6, \\\"true\\\", \\\"false\\\")}V\",\"is_tls\":\"%{if(req.is_ssl, \\\"true\\\", \\\"false\\\")}V\",\"tls_client_protocol\":\"%{json.escape(tls.client.protocol)}V\",\"tls_client_servername\":\"%{json.escape(tls.client.servername)}V\",\"tls_client_cipher\":\"%{json.escape(tls.client.cipher)}V\",\"tls_client_cipher_sha\":\"%{json.escape(tls.client.ciphers_sha)}V\",\"tls_client_tlsexts_sha\":\"%{json.escape(tls.client.tlsexts_sha)}V\",\"is_h2\":\"%{if(fastly_info.is_h2, \\\"true\\\", \\\"false\\\")}V\",\"is_h2_push\":\"%{if(fastly_info.h2.is_push, \\\"true\\\", \\\"false\\\")}V\",\"h2_stream_id\":\"%{fastly_info.h2.stream_id}V\",\"request_accept_content\":\"%{Accept}i\",\"request_accept_language\":\"%{Accept-Language}i\",\"request_accept_encoding\":\"%{Accept-Encoding}i\",\"request_accept_charset\":\"%{Accept-Charset}i\",\"request_connection\":\"%{Connection}i\",\"request_dnt\":\"%{DNT}i\",\"request_forwarded\":\"%{Forwarded}i\",\"request_via\":\"%{Via}i\",\"request_cache_control\":\"%{Cache-Control}i\",\"request_x_requested_with\":\"%{X-Requested-With}i\",\"request_x_att_device_id\":\"%{X-ATT-Device-Id}i\",\"content_type\":\"%{Content-Type}o\",\"is_cacheable\":\"%{if(fastly_info.state~\\\"^(HIT|MISS)$\\\", \\\"true\\\", \\\"false\\\")}V\",\"response_age\":\"%{Age}o\",\"response_cache_control\":\"%{Cache-Control}o\",\"response_expires\":\"%{Expires}o\",\"response_last_modified\":\"%{Last-Modified}o\",\"response_tsv\":\"%{TSV}o\",\"server_datacenter\":\"%{server.datacenter}V\",\"req_header_size\":\"%{req.header_bytes_read}V\",\"resp_header_size\":\"%{resp.header_bytes_written}V\",\"socket_cwnd\":\"%{client.socket.cwnd}V\",\"socket_nexthop\":\"%{client.socket.nexthop}V\",\"socket_tcpi_rcv_mss\":\"%{client.socket.tcpi_rcv_mss}V\",\"socket_tcpi_snd_mss\":\"%{client.socket.tcpi_snd_mss}V\",\"socket_tcpi_rtt\":\"%{client.socket.tcpi_rtt}V\",\"socket_tcpi_rttvar\":\"%{client.socket.tcpi_rttvar}V\",\"socket_tcpi_rcv_rtt\":\"%{client.socket.tcpi_rcv_rtt}V\",\"socket_tcpi_rcv_space\":\"%{client.socket.tcpi_rcv_space}V\",\"socket_tcpi_last_data_sent\":\"%{client.socket.tcpi_last_data_sent}V\",\"socket_tcpi_total_retrans\":\"%{client.socket.tcpi_total_retrans}V\",\"socket_tcpi_delta_retrans\":\"%{client.socket.tcpi_delta_retrans}V\",\"socket_ploss\":\"%{client.socket.ploss}V\"}'
101
101
  end
102
102
 
103
103
  if attributes.key?(:'token')
@@ -166,7 +166,7 @@ module Fastly
166
166
  if attributes.key?(:'format')
167
167
  self.format = attributes[:'format']
168
168
  else
169
- self.format = '{\"ddsource\":\"fastly\",\"service\":\"%{req.service_id}V\",\"date\":\"%{begin:%Y-%m-%dT%H:%M:%S%Z}t\",\"time_start\":\"%{begin:%Y-%m-%dT%H:%M:%S%Z}t\",\"time_end\":\"%{end:%Y-%m-%dT%H:%M:%S%Z}t\",\"http\":{\"request_time_ms\":\"%D\",\"method\":\"%m\",\"url\":\"%{json.escape(req.url)}V\",\"useragent\":\"%{User-Agent}i\",\"referer\":\"%{Referer}i\",\"protocol\":\"%H\",\"request_x_forwarded_for\":\"%{X-Forwarded-For}i\",\"status_code\":\"%s\"},\"network\":{\"client\":{\"ip\":\"%h\",\"name\":\"%{client.as.name}V\",\"number\":\"%{client.as.number}V\",\"connection_speed\":\"%{client.geo.conn_speed}V\"},\"destination\":{\"ip\":\"%A\"},\"geoip\":{\"geo_city\":\"%{client.geo.city.utf8}V\",\"geo_country_code\":\"%{client.geo.country_code}V\",\"geo_continent_code\":\"%{client.geo.continent_code}V\",\"geo_region\":\"%{client.geo.region}V\"},\"bytes_written\":\"%B\",\"bytes_read\":\"%{req.body_bytes_read}V\"},\"host\":\"%{Fastly-Orig-Host}i\",\"origin_host\":\"%v\",\"is_ipv6\":\"%{if(req.is_ipv6, \\\"true\\\", \\\"false\\\")}V\",\"is_tls\":\"%{if(req.is_ssl, \\\"true\\\", \\\"false\\\")}V\",\"tls_client_protocol\":\"%{json.escape(tls.client.protocol)}V\",\"tls_client_servername\":\"%{json.escape(tls.client.servername)}V\",\"tls_client_cipher\":\"%{json.escape(tls.client.cipher)}V\",\"tls_client_cipher_sha\":\"%{json.escape(tls.client.ciphers_sha)}V\",\"tls_client_tlsexts_sha\":\"%{json.escape(tls.client.tlsexts_sha)}V\",\"is_h2\":\"%{if(fastly_info.is_h2, \\\"true\\\", \\\"false\\\")}V\",\"is_h2_push\":\"%{if(fastly_info.h2.is_push, \\\"true\\\", \\\"false\\\")}V\",\"h2_stream_id\":\"%{fastly_info.h2.stream_id}V\",\"request_accept_content\":\"%{Accept}i\",\"request_accept_language\":\"%{Accept-Language}i\",\"request_accept_encoding\":\"%{Accept-Encoding}i\",\"request_accept_charset\":\"%{Accept-Charset}i\",\"request_connection\":\"%{Connection}i\",\"request_dnt\":\"%{DNT}i\",\"request_forwarded\":\"%{Forwarded}i\",\"request_via\":\"%{Via}i\",\"request_cache_control\":\"%{Cache-Control}i\",\"request_x_requested_with\":\"%{X-Requested-With}i\",\"request_x_att_device_id\":\"%{X-ATT-Device-Id}i\",\"content_type\":\"%{Content-Type}o\",\"is_cacheable\":\"%{if(fastly_info.state~\\\"^(HIT|MISS)$\\\", \\\"true\\\", \\\"false\\\")}V\",\"response_age\":\"%{Age}o\",\"response_cache_control\":\"%{Cache-Control}o\",\"response_expires\":\"%{Expires}o\",\"response_last_modified\":\"%{Last-Modified}o\",\"response_tsv\":\"%{TSV}o\",\"server_datacenter\":\"%{server.datacenter}V\",\"req_header_size\":\"%{req.header_bytes_read}V\",\"resp_header_size\":\"%{resp.header_bytes_written}V\",\"socket_cwnd\":\"%{client.socket.cwnd}V\",\"socket_nexthop\":\"%{client.socket.nexthop}V\",\"socket_tcpi_rcv_mss\":\"%{client.socket.tcpi_rcv_mss}V\",\"socket_tcpi_snd_mss\":\"%{client.socket.tcpi_snd_mss}V\",\"socket_tcpi_rtt\":\"%{client.socket.tcpi_rtt}V\",\"socket_tcpi_rttvar\":\"%{client.socket.tcpi_rttvar}V\",\"socket_tcpi_rcv_rtt\":\"%{client.socket.tcpi_rcv_rtt}V\",\"socket_tcpi_rcv_space\":\"%{client.socket.tcpi_rcv_space}V\",\"socket_tcpi_last_data_sent\":\"%{client.socket.tcpi_last_data_sent}V\",\"socket_tcpi_total_retrans\":\"%{client.socket.tcpi_total_retrans}V\",\"socket_tcpi_delta_retrans\":\"%{client.socket.tcpi_delta_retrans}V\",\"socket_ploss\":\"%{client.socket.ploss}V\"}'
169
+ self.format = '{\"ddsource\":\"fastly\",\"service\":\"%{req.service_id}V\",\"date\":\"%{begin:%Y-%m-%dT%H:%M:%S%Z}t\",\"time_start\":\"%{begin:%Y-%m-%dT%H:%M:%S%Z}t\",\"time_end\":\"%{end:%Y-%m-%dT%H:%M:%S%Z}t\",\"http\":{\"request_time_ms\": %{time.elapsed.msec}V,\"method\":\"%m\",\"url\":\"%{json.escape(req.url)}V\",\"useragent\":\"%{User-Agent}i\",\"referer\":\"%{Referer}i\",\"protocol\":\"%H\",\"request_x_forwarded_for\":\"%{X-Forwarded-For}i\",\"status_code\":\"%s\"},\"network\":{\"client\":{\"ip\":\"%h\",\"name\":\"%{client.as.name}V\",\"number\":\"%{client.as.number}V\",\"connection_speed\":\"%{client.geo.conn_speed}V\"},\"destination\":{\"ip\":\"%A\"},\"geoip\":{\"geo_city\":\"%{client.geo.city.utf8}V\",\"geo_country_code\":\"%{client.geo.country_code}V\",\"geo_continent_code\":\"%{client.geo.continent_code}V\",\"geo_region\":\"%{client.geo.region}V\"},\"bytes_written\":\"%B\",\"bytes_read\":\"%{req.body_bytes_read}V\"},\"host\":\"%{Fastly-Orig-Host}i\",\"origin_host\":\"%v\",\"is_ipv6\":\"%{if(req.is_ipv6, \\\"true\\\", \\\"false\\\")}V\",\"is_tls\":\"%{if(req.is_ssl, \\\"true\\\", \\\"false\\\")}V\",\"tls_client_protocol\":\"%{json.escape(tls.client.protocol)}V\",\"tls_client_servername\":\"%{json.escape(tls.client.servername)}V\",\"tls_client_cipher\":\"%{json.escape(tls.client.cipher)}V\",\"tls_client_cipher_sha\":\"%{json.escape(tls.client.ciphers_sha)}V\",\"tls_client_tlsexts_sha\":\"%{json.escape(tls.client.tlsexts_sha)}V\",\"is_h2\":\"%{if(fastly_info.is_h2, \\\"true\\\", \\\"false\\\")}V\",\"is_h2_push\":\"%{if(fastly_info.h2.is_push, \\\"true\\\", \\\"false\\\")}V\",\"h2_stream_id\":\"%{fastly_info.h2.stream_id}V\",\"request_accept_content\":\"%{Accept}i\",\"request_accept_language\":\"%{Accept-Language}i\",\"request_accept_encoding\":\"%{Accept-Encoding}i\",\"request_accept_charset\":\"%{Accept-Charset}i\",\"request_connection\":\"%{Connection}i\",\"request_dnt\":\"%{DNT}i\",\"request_forwarded\":\"%{Forwarded}i\",\"request_via\":\"%{Via}i\",\"request_cache_control\":\"%{Cache-Control}i\",\"request_x_requested_with\":\"%{X-Requested-With}i\",\"request_x_att_device_id\":\"%{X-ATT-Device-Id}i\",\"content_type\":\"%{Content-Type}o\",\"is_cacheable\":\"%{if(fastly_info.state~\\\"^(HIT|MISS)$\\\", \\\"true\\\", \\\"false\\\")}V\",\"response_age\":\"%{Age}o\",\"response_cache_control\":\"%{Cache-Control}o\",\"response_expires\":\"%{Expires}o\",\"response_last_modified\":\"%{Last-Modified}o\",\"response_tsv\":\"%{TSV}o\",\"server_datacenter\":\"%{server.datacenter}V\",\"req_header_size\":\"%{req.header_bytes_read}V\",\"resp_header_size\":\"%{resp.header_bytes_written}V\",\"socket_cwnd\":\"%{client.socket.cwnd}V\",\"socket_nexthop\":\"%{client.socket.nexthop}V\",\"socket_tcpi_rcv_mss\":\"%{client.socket.tcpi_rcv_mss}V\",\"socket_tcpi_snd_mss\":\"%{client.socket.tcpi_snd_mss}V\",\"socket_tcpi_rtt\":\"%{client.socket.tcpi_rtt}V\",\"socket_tcpi_rttvar\":\"%{client.socket.tcpi_rttvar}V\",\"socket_tcpi_rcv_rtt\":\"%{client.socket.tcpi_rcv_rtt}V\",\"socket_tcpi_rcv_space\":\"%{client.socket.tcpi_rcv_space}V\",\"socket_tcpi_last_data_sent\":\"%{client.socket.tcpi_last_data_sent}V\",\"socket_tcpi_total_retrans\":\"%{client.socket.tcpi_total_retrans}V\",\"socket_tcpi_delta_retrans\":\"%{client.socket.tcpi_delta_retrans}V\",\"socket_ploss\":\"%{client.socket.ploss}V\"}'
170
170
  end
171
171
 
172
172
  if attributes.key?(:'log_processing_region')
@@ -176,6 +176,12 @@ module Fastly
176
176
  # Total amount of time spent delivering a response from the Fastly On-the-Fly Packaging service for video-on-demand (in seconds).
177
177
  attr_accessor :otfp_deliver_time
178
178
 
179
+ # The total image bytes that would have been delivered if the images had not been transformed by the Fastly Image Optimizer. Bytes are counted once per client request. Byte counts exclude shield traffic and requests where Fastly Image Optimizer proxied a request without attempting to transform it (e.g., file types that are not supported by Image Optimizer).
180
+ attr_accessor :imgopto_input_image_bytes
181
+
182
+ # The total image bytes delivered that have been transformed by the Fastly Image Optimizer. Bytes are counted once per client request. Byte counts exclude shield traffic and requests where Fastly Image Optimizer proxied a request without attempting to transform it (e.g., file types that are not supported by Image Optimizer).
183
+ attr_accessor :imgopto_output_image_bytes
184
+
179
185
  # Total header bytes delivered from the Fastly Image Optimizer service, including shield traffic.
180
186
  attr_accessor :imgopto_resp_header_bytes
181
187
 
@@ -1022,6 +1028,51 @@ module Fastly
1022
1028
  # Number of backend requests from a Compute service that failed at the HTTP protocol level. Sum of `compute_service_bereq_http_proto_v1_error`, `compute_service_bereq_http_proto_v2_error`, `compute_service_bereq_http_incomplete_error`, `compute_service_bereq_http_timeout_error`, and `compute_service_bereq_http_other_error`.
1023
1029
  attr_accessor :compute_service_bereq_http_error
1024
1030
 
1031
+ # Number of Private Access Token challenges issued.
1032
+ attr_accessor :bot_challenges_pats_issued
1033
+
1034
+ # Number of successful Private Access Token challenge solutions processed.
1035
+ attr_accessor :bot_challenges_pats_succeeded
1036
+
1037
+ # Number of edge requests where a headless bot was detected.
1038
+ attr_accessor :bot_edge_requests_headless_count
1039
+
1040
+ # Number of responses sent with status code 499 (Client Disconnected).
1041
+ attr_accessor :status_499
1042
+
1043
+ # Number of requests received by AI Runtime Control.
1044
+ attr_accessor :arc_requests
1045
+
1046
+ # The number of challenge-complete tokens checked while enforcing DDoS protection rules.
1047
+ attr_accessor :ddos_challenge_complete_tokens_checked
1048
+
1049
+ # The number of challenge-complete tokens that passed validation while enforcing DDoS protection rules.
1050
+ attr_accessor :ddos_challenge_complete_tokens_passed
1051
+
1052
+ # The number of challenge-complete tokens that failed validation while enforcing DDoS protection rules.
1053
+ attr_accessor :ddos_challenge_complete_tokens_failed
1054
+
1055
+ # The number of challenge-start tokens created while enforcing DDoS protection rules.
1056
+ attr_accessor :ddos_challenge_starts
1057
+
1058
+ # Number of challenge-complete tokens issued as a result of a DDoS action. For example, issuing a challenge-complete token after a series of CAPTCHA challenges ending in success.
1059
+ attr_accessor :ddos_challenge_complete_tokens_issued
1060
+
1061
+ # Number of challenges issued from a DDoS action.
1062
+ attr_accessor :ddos_challenges_issued
1063
+
1064
+ # Number of successful challenge solutions processed as a result of a DDoS action. For example, a correct CAPTCHA solution.
1065
+ attr_accessor :ddos_challenges_succeeded
1066
+
1067
+ # Number of failed challenge solutions processed as a result of a DDoS action. For example, an incorrect CAPTCHA solution.
1068
+ attr_accessor :ddos_challenges_failed
1069
+
1070
+ # Number of Private Access Token challenges issued as a result of a DDoS action.
1071
+ attr_accessor :ddos_challenges_pats_issued
1072
+
1073
+ # Number of successful Private Access Token challenge solutions processed as a result of a DDoS action.
1074
+ attr_accessor :ddos_challenges_pats_succeeded
1075
+
1025
1076
  # Attribute mapping from ruby-style variable name to JSON key.
1026
1077
  def self.attribute_map
1027
1078
  {
@@ -1079,6 +1130,8 @@ module Fastly
1079
1130
  :'otfp_shield_resp_body_bytes' => :'otfp_shield_resp_body_bytes',
1080
1131
  :'otfp_shield_time' => :'otfp_shield_time',
1081
1132
  :'otfp_deliver_time' => :'otfp_deliver_time',
1133
+ :'imgopto_input_image_bytes' => :'imgopto_input_image_bytes',
1134
+ :'imgopto_output_image_bytes' => :'imgopto_output_image_bytes',
1082
1135
  :'imgopto_resp_header_bytes' => :'imgopto_resp_header_bytes',
1083
1136
  :'imgopto_resp_body_bytes' => :'imgopto_resp_body_bytes',
1084
1137
  :'imgopto_shield_resp_header_bytes' => :'imgopto_shield_resp_header_bytes',
@@ -1360,7 +1413,22 @@ module Fastly
1360
1413
  :'compute_service_bereq_5xx_error' => :'compute_service_bereq_5xx_error',
1361
1414
  :'compute_service_bereq_conn_error' => :'compute_service_bereq_conn_error',
1362
1415
  :'compute_service_bereq_tls_error' => :'compute_service_bereq_tls_error',
1363
- :'compute_service_bereq_http_error' => :'compute_service_bereq_http_error'
1416
+ :'compute_service_bereq_http_error' => :'compute_service_bereq_http_error',
1417
+ :'bot_challenges_pats_issued' => :'bot_challenges_pats_issued',
1418
+ :'bot_challenges_pats_succeeded' => :'bot_challenges_pats_succeeded',
1419
+ :'bot_edge_requests_headless_count' => :'bot_edge_requests_headless_count',
1420
+ :'status_499' => :'status_499',
1421
+ :'arc_requests' => :'arc_requests',
1422
+ :'ddos_challenge_complete_tokens_checked' => :'ddos_challenge_complete_tokens_checked',
1423
+ :'ddos_challenge_complete_tokens_passed' => :'ddos_challenge_complete_tokens_passed',
1424
+ :'ddos_challenge_complete_tokens_failed' => :'ddos_challenge_complete_tokens_failed',
1425
+ :'ddos_challenge_starts' => :'ddos_challenge_starts',
1426
+ :'ddos_challenge_complete_tokens_issued' => :'ddos_challenge_complete_tokens_issued',
1427
+ :'ddos_challenges_issued' => :'ddos_challenges_issued',
1428
+ :'ddos_challenges_succeeded' => :'ddos_challenges_succeeded',
1429
+ :'ddos_challenges_failed' => :'ddos_challenges_failed',
1430
+ :'ddos_challenges_pats_issued' => :'ddos_challenges_pats_issued',
1431
+ :'ddos_challenges_pats_succeeded' => :'ddos_challenges_pats_succeeded'
1364
1432
  }
1365
1433
  end
1366
1434
 
@@ -1426,6 +1494,8 @@ module Fastly
1426
1494
  :'otfp_shield_resp_body_bytes' => :'Integer',
1427
1495
  :'otfp_shield_time' => :'Float',
1428
1496
  :'otfp_deliver_time' => :'Float',
1497
+ :'imgopto_input_image_bytes' => :'Integer',
1498
+ :'imgopto_output_image_bytes' => :'Integer',
1429
1499
  :'imgopto_resp_header_bytes' => :'Integer',
1430
1500
  :'imgopto_resp_body_bytes' => :'Integer',
1431
1501
  :'imgopto_shield_resp_header_bytes' => :'Integer',
@@ -1707,7 +1777,22 @@ module Fastly
1707
1777
  :'compute_service_bereq_5xx_error' => :'Integer',
1708
1778
  :'compute_service_bereq_conn_error' => :'Integer',
1709
1779
  :'compute_service_bereq_tls_error' => :'Integer',
1710
- :'compute_service_bereq_http_error' => :'Integer'
1780
+ :'compute_service_bereq_http_error' => :'Integer',
1781
+ :'bot_challenges_pats_issued' => :'Integer',
1782
+ :'bot_challenges_pats_succeeded' => :'Integer',
1783
+ :'bot_edge_requests_headless_count' => :'Integer',
1784
+ :'status_499' => :'Integer',
1785
+ :'arc_requests' => :'Integer',
1786
+ :'ddos_challenge_complete_tokens_checked' => :'Integer',
1787
+ :'ddos_challenge_complete_tokens_passed' => :'Integer',
1788
+ :'ddos_challenge_complete_tokens_failed' => :'Integer',
1789
+ :'ddos_challenge_starts' => :'Integer',
1790
+ :'ddos_challenge_complete_tokens_issued' => :'Integer',
1791
+ :'ddos_challenges_issued' => :'Integer',
1792
+ :'ddos_challenges_succeeded' => :'Integer',
1793
+ :'ddos_challenges_failed' => :'Integer',
1794
+ :'ddos_challenges_pats_issued' => :'Integer',
1795
+ :'ddos_challenges_pats_succeeded' => :'Integer'
1711
1796
  }
1712
1797
  end
1713
1798
 
@@ -1957,6 +2042,14 @@ module Fastly
1957
2042
  self.otfp_deliver_time = attributes[:'otfp_deliver_time']
1958
2043
  end
1959
2044
 
2045
+ if attributes.key?(:'imgopto_input_image_bytes')
2046
+ self.imgopto_input_image_bytes = attributes[:'imgopto_input_image_bytes']
2047
+ end
2048
+
2049
+ if attributes.key?(:'imgopto_output_image_bytes')
2050
+ self.imgopto_output_image_bytes = attributes[:'imgopto_output_image_bytes']
2051
+ end
2052
+
1960
2053
  if attributes.key?(:'imgopto_resp_header_bytes')
1961
2054
  self.imgopto_resp_header_bytes = attributes[:'imgopto_resp_header_bytes']
1962
2055
  end
@@ -3084,6 +3177,66 @@ module Fastly
3084
3177
  if attributes.key?(:'compute_service_bereq_http_error')
3085
3178
  self.compute_service_bereq_http_error = attributes[:'compute_service_bereq_http_error']
3086
3179
  end
3180
+
3181
+ if attributes.key?(:'bot_challenges_pats_issued')
3182
+ self.bot_challenges_pats_issued = attributes[:'bot_challenges_pats_issued']
3183
+ end
3184
+
3185
+ if attributes.key?(:'bot_challenges_pats_succeeded')
3186
+ self.bot_challenges_pats_succeeded = attributes[:'bot_challenges_pats_succeeded']
3187
+ end
3188
+
3189
+ if attributes.key?(:'bot_edge_requests_headless_count')
3190
+ self.bot_edge_requests_headless_count = attributes[:'bot_edge_requests_headless_count']
3191
+ end
3192
+
3193
+ if attributes.key?(:'status_499')
3194
+ self.status_499 = attributes[:'status_499']
3195
+ end
3196
+
3197
+ if attributes.key?(:'arc_requests')
3198
+ self.arc_requests = attributes[:'arc_requests']
3199
+ end
3200
+
3201
+ if attributes.key?(:'ddos_challenge_complete_tokens_checked')
3202
+ self.ddos_challenge_complete_tokens_checked = attributes[:'ddos_challenge_complete_tokens_checked']
3203
+ end
3204
+
3205
+ if attributes.key?(:'ddos_challenge_complete_tokens_passed')
3206
+ self.ddos_challenge_complete_tokens_passed = attributes[:'ddos_challenge_complete_tokens_passed']
3207
+ end
3208
+
3209
+ if attributes.key?(:'ddos_challenge_complete_tokens_failed')
3210
+ self.ddos_challenge_complete_tokens_failed = attributes[:'ddos_challenge_complete_tokens_failed']
3211
+ end
3212
+
3213
+ if attributes.key?(:'ddos_challenge_starts')
3214
+ self.ddos_challenge_starts = attributes[:'ddos_challenge_starts']
3215
+ end
3216
+
3217
+ if attributes.key?(:'ddos_challenge_complete_tokens_issued')
3218
+ self.ddos_challenge_complete_tokens_issued = attributes[:'ddos_challenge_complete_tokens_issued']
3219
+ end
3220
+
3221
+ if attributes.key?(:'ddos_challenges_issued')
3222
+ self.ddos_challenges_issued = attributes[:'ddos_challenges_issued']
3223
+ end
3224
+
3225
+ if attributes.key?(:'ddos_challenges_succeeded')
3226
+ self.ddos_challenges_succeeded = attributes[:'ddos_challenges_succeeded']
3227
+ end
3228
+
3229
+ if attributes.key?(:'ddos_challenges_failed')
3230
+ self.ddos_challenges_failed = attributes[:'ddos_challenges_failed']
3231
+ end
3232
+
3233
+ if attributes.key?(:'ddos_challenges_pats_issued')
3234
+ self.ddos_challenges_pats_issued = attributes[:'ddos_challenges_pats_issued']
3235
+ end
3236
+
3237
+ if attributes.key?(:'ddos_challenges_pats_succeeded')
3238
+ self.ddos_challenges_pats_succeeded = attributes[:'ddos_challenges_pats_succeeded']
3239
+ end
3087
3240
  end
3088
3241
 
3089
3242
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -3158,6 +3311,8 @@ module Fastly
3158
3311
  otfp_shield_resp_body_bytes == o.otfp_shield_resp_body_bytes &&
3159
3312
  otfp_shield_time == o.otfp_shield_time &&
3160
3313
  otfp_deliver_time == o.otfp_deliver_time &&
3314
+ imgopto_input_image_bytes == o.imgopto_input_image_bytes &&
3315
+ imgopto_output_image_bytes == o.imgopto_output_image_bytes &&
3161
3316
  imgopto_resp_header_bytes == o.imgopto_resp_header_bytes &&
3162
3317
  imgopto_resp_body_bytes == o.imgopto_resp_body_bytes &&
3163
3318
  imgopto_shield_resp_header_bytes == o.imgopto_shield_resp_header_bytes &&
@@ -3439,7 +3594,22 @@ module Fastly
3439
3594
  compute_service_bereq_5xx_error == o.compute_service_bereq_5xx_error &&
3440
3595
  compute_service_bereq_conn_error == o.compute_service_bereq_conn_error &&
3441
3596
  compute_service_bereq_tls_error == o.compute_service_bereq_tls_error &&
3442
- compute_service_bereq_http_error == o.compute_service_bereq_http_error
3597
+ compute_service_bereq_http_error == o.compute_service_bereq_http_error &&
3598
+ bot_challenges_pats_issued == o.bot_challenges_pats_issued &&
3599
+ bot_challenges_pats_succeeded == o.bot_challenges_pats_succeeded &&
3600
+ bot_edge_requests_headless_count == o.bot_edge_requests_headless_count &&
3601
+ status_499 == o.status_499 &&
3602
+ arc_requests == o.arc_requests &&
3603
+ ddos_challenge_complete_tokens_checked == o.ddos_challenge_complete_tokens_checked &&
3604
+ ddos_challenge_complete_tokens_passed == o.ddos_challenge_complete_tokens_passed &&
3605
+ ddos_challenge_complete_tokens_failed == o.ddos_challenge_complete_tokens_failed &&
3606
+ ddos_challenge_starts == o.ddos_challenge_starts &&
3607
+ ddos_challenge_complete_tokens_issued == o.ddos_challenge_complete_tokens_issued &&
3608
+ ddos_challenges_issued == o.ddos_challenges_issued &&
3609
+ ddos_challenges_succeeded == o.ddos_challenges_succeeded &&
3610
+ ddos_challenges_failed == o.ddos_challenges_failed &&
3611
+ ddos_challenges_pats_issued == o.ddos_challenges_pats_issued &&
3612
+ ddos_challenges_pats_succeeded == o.ddos_challenges_pats_succeeded
3443
3613
  end
3444
3614
 
3445
3615
  # @see the `==` method
@@ -3451,7 +3621,7 @@ module Fastly
3451
3621
  # Calculates hash code according to all attributes.
3452
3622
  # @return [Integer] Hash code
3453
3623
  def hash
3454
- [requests, logging, log, resp_header_bytes, header_size, resp_body_bytes, body_size, hits, miss, pass, synth, errors, hits_time, miss_time, miss_histogram, compute_requests, compute_execution_time_ms, compute_ram_used, compute_request_time_ms, compute_request_time_billed_ms, shield, ipv6, imgopto, imgopto_shield, imgopto_transforms, otfp, otfp_shield, otfp_manifests, video, pci, http2, http3, restarts, req_header_bytes, req_body_bytes, bereq_header_bytes, bereq_body_bytes, attack_req_header_bytes, attack_req_body_bytes, attack_resp_synth_bytes, attack_logged_req_header_bytes, attack_logged_req_body_bytes, attack_blocked_req_header_bytes, attack_blocked_req_body_bytes, attack_passed_req_header_bytes, attack_passed_req_body_bytes, shield_resp_header_bytes, shield_resp_body_bytes, otfp_resp_header_bytes, otfp_resp_body_bytes, otfp_shield_resp_header_bytes, otfp_shield_resp_body_bytes, otfp_shield_time, otfp_deliver_time, imgopto_resp_header_bytes, imgopto_resp_body_bytes, imgopto_shield_resp_header_bytes, imgopto_shield_resp_body_bytes, status_1xx, status_2xx, status_3xx, status_4xx, status_5xx, status_200, status_204, status_206, status_301, status_302, status_304, status_400, status_401, status_403, status_404, status_406, status_416, status_429, status_500, status_501, status_502, status_503, status_504, status_505, status_530, uncacheable, pass_time, tls, tls_v10, tls_v11, tls_v12, tls_v13, object_size_1k, object_size_10k, object_size_100k, object_size_1m, object_size_10m, object_size_100m, object_size_1g, object_size_other, recv_sub_time, recv_sub_count, hash_sub_time, hash_sub_count, miss_sub_time, miss_sub_count, fetch_sub_time, fetch_sub_count, pass_sub_time, pass_sub_count, pipe_sub_time, pipe_sub_count, deliver_sub_time, deliver_sub_count, error_sub_time, error_sub_count, hit_sub_time, hit_sub_count, prehash_sub_time, prehash_sub_count, predeliver_sub_time, predeliver_sub_count, hit_resp_body_bytes, miss_resp_body_bytes, pass_resp_body_bytes, compute_req_header_bytes, compute_req_body_bytes, compute_resp_header_bytes, compute_resp_body_bytes, imgvideo, imgvideo_frames, imgvideo_resp_header_bytes, imgvideo_resp_body_bytes, imgvideo_shield, imgvideo_shield_frames, imgvideo_shield_resp_header_bytes, imgvideo_shield_resp_body_bytes, log_bytes, edge_requests, edge_resp_header_bytes, edge_resp_body_bytes, origin_revalidations, origin_fetches, origin_fetch_header_bytes, origin_fetch_body_bytes, origin_fetch_resp_header_bytes, origin_fetch_resp_body_bytes, shield_revalidations, shield_fetches, shield_fetch_header_bytes, shield_fetch_body_bytes, shield_fetch_resp_header_bytes, shield_fetch_resp_body_bytes, segblock_origin_fetches, segblock_shield_fetches, compute_resp_status_1xx, compute_resp_status_2xx, compute_resp_status_3xx, compute_resp_status_4xx, compute_resp_status_5xx, edge_hit_requests, edge_miss_requests, compute_bereq_header_bytes, compute_bereq_body_bytes, compute_beresp_header_bytes, compute_beresp_body_bytes, origin_cache_fetches, shield_cache_fetches, compute_bereqs, compute_bereq_errors, compute_service_bereq_error, compute_resource_limit_exceeded, compute_heap_limit_exceeded, compute_service_memory_exceeded_error, compute_stack_limit_exceeded, compute_globals_limit_exceeded, compute_guest_errors, compute_runtime_errors, edge_hit_resp_body_bytes, edge_hit_resp_header_bytes, edge_miss_resp_body_bytes, edge_miss_resp_header_bytes, origin_cache_fetch_resp_body_bytes, origin_cache_fetch_resp_header_bytes, shield_hit_requests, shield_miss_requests, shield_hit_resp_header_bytes, shield_hit_resp_body_bytes, shield_miss_resp_header_bytes, shield_miss_resp_body_bytes, websocket_req_header_bytes, websocket_req_body_bytes, websocket_resp_header_bytes, websocket_bereq_header_bytes, websocket_bereq_body_bytes, websocket_beresp_header_bytes, websocket_beresp_body_bytes, websocket_conn_time_ms, websocket_resp_body_bytes, fanout_recv_publishes, fanout_send_publishes, kv_store_class_a_operations, kv_store_class_b_operations, object_store_class_a_operations, object_store_class_b_operations, fanout_req_header_bytes, fanout_req_body_bytes, fanout_resp_header_bytes, fanout_resp_body_bytes, fanout_bereq_header_bytes, fanout_bereq_body_bytes, fanout_beresp_header_bytes, fanout_beresp_body_bytes, fanout_conn_time_ms, ddos_action_limit_streams_connections, ddos_action_limit_streams_requests, ddos_action_tarpit_accept, ddos_action_tarpit, ddos_action_close, ddos_action_blackhole, bot_challenge_starts, bot_challenge_complete_tokens_passed, bot_challenge_complete_tokens_failed, bot_challenge_complete_tokens_checked, bot_challenge_complete_tokens_disabled, bot_challenges_issued, bot_challenges_succeeded, bot_challenges_failed, bot_challenge_complete_tokens_issued, ddos_action_downgrade, ddos_action_downgraded_connections, all_hit_requests, all_miss_requests, all_pass_requests, all_error_requests, all_synth_requests, all_edge_hit_requests, all_edge_miss_requests, all_status_1xx, all_status_2xx, all_status_3xx, all_status_4xx, all_status_5xx, origin_offload, request_denied_get_head_body, ddos_protection_requests_detect_count, ddos_protection_requests_mitigate_count, ddos_protection_requests_allow_count, object_storage_class_a_operations_count, object_storage_class_b_operations_count, aia_requests, aia_status_1xx, aia_status_2xx, aia_status_3xx, aia_status_4xx, aia_status_5xx, aia_response_usage_tokens, aia_origin_usage_tokens, aia_estimated_time_saved_ms, request_collapse_usable_count, request_collapse_unusable_count, compute_cache_operations_count, api_discovery_requests_count, compute_resp_status_103, compute_resp_status_200, compute_resp_status_204, compute_resp_status_206, compute_resp_status_301, compute_resp_status_302, compute_resp_status_304, compute_resp_status_400, compute_resp_status_401, compute_resp_status_403, compute_resp_status_404, compute_resp_status_416, compute_resp_status_429, compute_resp_status_500, compute_resp_status_501, compute_resp_status_502, compute_resp_status_503, compute_resp_status_504, compute_resp_status_505, compute_resp_status_530, imgopto_compute_requests, dns_billable_responses_count, dns_nonbillable_responses_count, upgrade, ngwaf_bot_analysis_request_count, imgopto_avif_count, imgopto_jpeg_count, imgopto_png_count, imgopto_gif_count, imgopto_webp_count, imgopto_jpegxl_count, imgopto_svg_count, imgopto_mp4_count, compute_service_resource_limits_error, compute_service_runtime_error, compute_service_chain_error, compute_platform_internal_error, compute_service_timeout_error, compute_service_vcpu_exceeded_error, compute_service_limits_error, compute_platform_invalid_request_error, compute_sandboxes, bot_requests_total_count, bot_edge_requests_analyzed_count, bot_edge_requests_detected_count, bot_edge_requests_verified_count, bot_edge_requests_ai_crawler_count, bot_edge_requests_ai_fetcher_count, bot_edge_requests_accessibility_count, bot_edge_requests_content_fetcher_count, bot_edge_requests_monitoring_count, bot_edge_requests_online_marketing_count, bot_edge_requests_page_preview_count, bot_edge_requests_platform_integrations_count, bot_edge_requests_research_count, bot_edge_requests_search_engine_crawler_count, bot_edge_requests_search_engine_optimization_count, bot_edge_requests_security_tools_count, compute_handoff, compute_service_bereq_dns_error, compute_service_bereq_conn_timeout_error, compute_service_bereq_conn_refused_error, compute_service_bereq_conn_other_error, compute_service_bereq_tls_server_cert_error, compute_service_bereq_tls_other_error, compute_service_bereq_http_proto_v1_error, compute_service_bereq_http_proto_v2_error, compute_service_bereq_http_incomplete_error, compute_service_bereq_http_timeout_error, compute_service_bereq_http_other_error, compute_service_bereq_other_error, compute_service_bereq_5xx_error, compute_service_bereq_conn_error, compute_service_bereq_tls_error, compute_service_bereq_http_error].hash
3624
+ [requests, logging, log, resp_header_bytes, header_size, resp_body_bytes, body_size, hits, miss, pass, synth, errors, hits_time, miss_time, miss_histogram, compute_requests, compute_execution_time_ms, compute_ram_used, compute_request_time_ms, compute_request_time_billed_ms, shield, ipv6, imgopto, imgopto_shield, imgopto_transforms, otfp, otfp_shield, otfp_manifests, video, pci, http2, http3, restarts, req_header_bytes, req_body_bytes, bereq_header_bytes, bereq_body_bytes, attack_req_header_bytes, attack_req_body_bytes, attack_resp_synth_bytes, attack_logged_req_header_bytes, attack_logged_req_body_bytes, attack_blocked_req_header_bytes, attack_blocked_req_body_bytes, attack_passed_req_header_bytes, attack_passed_req_body_bytes, shield_resp_header_bytes, shield_resp_body_bytes, otfp_resp_header_bytes, otfp_resp_body_bytes, otfp_shield_resp_header_bytes, otfp_shield_resp_body_bytes, otfp_shield_time, otfp_deliver_time, imgopto_input_image_bytes, imgopto_output_image_bytes, imgopto_resp_header_bytes, imgopto_resp_body_bytes, imgopto_shield_resp_header_bytes, imgopto_shield_resp_body_bytes, status_1xx, status_2xx, status_3xx, status_4xx, status_5xx, status_200, status_204, status_206, status_301, status_302, status_304, status_400, status_401, status_403, status_404, status_406, status_416, status_429, status_500, status_501, status_502, status_503, status_504, status_505, status_530, uncacheable, pass_time, tls, tls_v10, tls_v11, tls_v12, tls_v13, object_size_1k, object_size_10k, object_size_100k, object_size_1m, object_size_10m, object_size_100m, object_size_1g, object_size_other, recv_sub_time, recv_sub_count, hash_sub_time, hash_sub_count, miss_sub_time, miss_sub_count, fetch_sub_time, fetch_sub_count, pass_sub_time, pass_sub_count, pipe_sub_time, pipe_sub_count, deliver_sub_time, deliver_sub_count, error_sub_time, error_sub_count, hit_sub_time, hit_sub_count, prehash_sub_time, prehash_sub_count, predeliver_sub_time, predeliver_sub_count, hit_resp_body_bytes, miss_resp_body_bytes, pass_resp_body_bytes, compute_req_header_bytes, compute_req_body_bytes, compute_resp_header_bytes, compute_resp_body_bytes, imgvideo, imgvideo_frames, imgvideo_resp_header_bytes, imgvideo_resp_body_bytes, imgvideo_shield, imgvideo_shield_frames, imgvideo_shield_resp_header_bytes, imgvideo_shield_resp_body_bytes, log_bytes, edge_requests, edge_resp_header_bytes, edge_resp_body_bytes, origin_revalidations, origin_fetches, origin_fetch_header_bytes, origin_fetch_body_bytes, origin_fetch_resp_header_bytes, origin_fetch_resp_body_bytes, shield_revalidations, shield_fetches, shield_fetch_header_bytes, shield_fetch_body_bytes, shield_fetch_resp_header_bytes, shield_fetch_resp_body_bytes, segblock_origin_fetches, segblock_shield_fetches, compute_resp_status_1xx, compute_resp_status_2xx, compute_resp_status_3xx, compute_resp_status_4xx, compute_resp_status_5xx, edge_hit_requests, edge_miss_requests, compute_bereq_header_bytes, compute_bereq_body_bytes, compute_beresp_header_bytes, compute_beresp_body_bytes, origin_cache_fetches, shield_cache_fetches, compute_bereqs, compute_bereq_errors, compute_service_bereq_error, compute_resource_limit_exceeded, compute_heap_limit_exceeded, compute_service_memory_exceeded_error, compute_stack_limit_exceeded, compute_globals_limit_exceeded, compute_guest_errors, compute_runtime_errors, edge_hit_resp_body_bytes, edge_hit_resp_header_bytes, edge_miss_resp_body_bytes, edge_miss_resp_header_bytes, origin_cache_fetch_resp_body_bytes, origin_cache_fetch_resp_header_bytes, shield_hit_requests, shield_miss_requests, shield_hit_resp_header_bytes, shield_hit_resp_body_bytes, shield_miss_resp_header_bytes, shield_miss_resp_body_bytes, websocket_req_header_bytes, websocket_req_body_bytes, websocket_resp_header_bytes, websocket_bereq_header_bytes, websocket_bereq_body_bytes, websocket_beresp_header_bytes, websocket_beresp_body_bytes, websocket_conn_time_ms, websocket_resp_body_bytes, fanout_recv_publishes, fanout_send_publishes, kv_store_class_a_operations, kv_store_class_b_operations, object_store_class_a_operations, object_store_class_b_operations, fanout_req_header_bytes, fanout_req_body_bytes, fanout_resp_header_bytes, fanout_resp_body_bytes, fanout_bereq_header_bytes, fanout_bereq_body_bytes, fanout_beresp_header_bytes, fanout_beresp_body_bytes, fanout_conn_time_ms, ddos_action_limit_streams_connections, ddos_action_limit_streams_requests, ddos_action_tarpit_accept, ddos_action_tarpit, ddos_action_close, ddos_action_blackhole, bot_challenge_starts, bot_challenge_complete_tokens_passed, bot_challenge_complete_tokens_failed, bot_challenge_complete_tokens_checked, bot_challenge_complete_tokens_disabled, bot_challenges_issued, bot_challenges_succeeded, bot_challenges_failed, bot_challenge_complete_tokens_issued, ddos_action_downgrade, ddos_action_downgraded_connections, all_hit_requests, all_miss_requests, all_pass_requests, all_error_requests, all_synth_requests, all_edge_hit_requests, all_edge_miss_requests, all_status_1xx, all_status_2xx, all_status_3xx, all_status_4xx, all_status_5xx, origin_offload, request_denied_get_head_body, ddos_protection_requests_detect_count, ddos_protection_requests_mitigate_count, ddos_protection_requests_allow_count, object_storage_class_a_operations_count, object_storage_class_b_operations_count, aia_requests, aia_status_1xx, aia_status_2xx, aia_status_3xx, aia_status_4xx, aia_status_5xx, aia_response_usage_tokens, aia_origin_usage_tokens, aia_estimated_time_saved_ms, request_collapse_usable_count, request_collapse_unusable_count, compute_cache_operations_count, api_discovery_requests_count, compute_resp_status_103, compute_resp_status_200, compute_resp_status_204, compute_resp_status_206, compute_resp_status_301, compute_resp_status_302, compute_resp_status_304, compute_resp_status_400, compute_resp_status_401, compute_resp_status_403, compute_resp_status_404, compute_resp_status_416, compute_resp_status_429, compute_resp_status_500, compute_resp_status_501, compute_resp_status_502, compute_resp_status_503, compute_resp_status_504, compute_resp_status_505, compute_resp_status_530, imgopto_compute_requests, dns_billable_responses_count, dns_nonbillable_responses_count, upgrade, ngwaf_bot_analysis_request_count, imgopto_avif_count, imgopto_jpeg_count, imgopto_png_count, imgopto_gif_count, imgopto_webp_count, imgopto_jpegxl_count, imgopto_svg_count, imgopto_mp4_count, compute_service_resource_limits_error, compute_service_runtime_error, compute_service_chain_error, compute_platform_internal_error, compute_service_timeout_error, compute_service_vcpu_exceeded_error, compute_service_limits_error, compute_platform_invalid_request_error, compute_sandboxes, bot_requests_total_count, bot_edge_requests_analyzed_count, bot_edge_requests_detected_count, bot_edge_requests_verified_count, bot_edge_requests_ai_crawler_count, bot_edge_requests_ai_fetcher_count, bot_edge_requests_accessibility_count, bot_edge_requests_content_fetcher_count, bot_edge_requests_monitoring_count, bot_edge_requests_online_marketing_count, bot_edge_requests_page_preview_count, bot_edge_requests_platform_integrations_count, bot_edge_requests_research_count, bot_edge_requests_search_engine_crawler_count, bot_edge_requests_search_engine_optimization_count, bot_edge_requests_security_tools_count, compute_handoff, compute_service_bereq_dns_error, compute_service_bereq_conn_timeout_error, compute_service_bereq_conn_refused_error, compute_service_bereq_conn_other_error, compute_service_bereq_tls_server_cert_error, compute_service_bereq_tls_other_error, compute_service_bereq_http_proto_v1_error, compute_service_bereq_http_proto_v2_error, compute_service_bereq_http_incomplete_error, compute_service_bereq_http_timeout_error, compute_service_bereq_http_other_error, compute_service_bereq_other_error, compute_service_bereq_5xx_error, compute_service_bereq_conn_error, compute_service_bereq_tls_error, compute_service_bereq_http_error, bot_challenges_pats_issued, bot_challenges_pats_succeeded, bot_edge_requests_headless_count, status_499, arc_requests, ddos_challenge_complete_tokens_checked, ddos_challenge_complete_tokens_passed, ddos_challenge_complete_tokens_failed, ddos_challenge_starts, ddos_challenge_complete_tokens_issued, ddos_challenges_issued, ddos_challenges_succeeded, ddos_challenges_failed, ddos_challenges_pats_issued, ddos_challenges_pats_succeeded].hash
3455
3625
  end
3456
3626
 
3457
3627
  # Builds the object from hash