fastly 5.2.2 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +3 -3
  5. data/docs/AutomationTokenCreateResponse.md +3 -3
  6. data/docs/AutomationTokenCreateResponseAllOf.md +3 -3
  7. data/docs/AutomationTokenResponse.md +2 -2
  8. data/docs/AutomationTokenResponseAllOf.md +2 -2
  9. data/docs/AutomationTokensApi.md +4 -3
  10. data/docs/ErrorResponse.md +13 -0
  11. data/docs/HistoricalFieldResultsAttributes.md +1 -1
  12. data/docs/HistoricalFieldResultsAttributesAllOf.md +1 -1
  13. data/docs/RateLimiter.md +1 -1
  14. data/docs/RateLimiterApi.md +122 -0
  15. data/docs/RateLimiterResponse.md +1 -1
  16. data/docs/ReadOnlyCustomerId.md +9 -0
  17. data/docs/ReadOnlyId.md +9 -0
  18. data/docs/ReadOnlyIdService.md +9 -0
  19. data/docs/ReadOnlyUserId.md +9 -0
  20. data/lib/fastly/api/automation_tokens_api.rb +5 -5
  21. data/lib/fastly/api/rate_limiter_api.rb +345 -0
  22. data/lib/fastly/configuration.rb +12 -0
  23. data/lib/fastly/models/automation_token_create_request_attributes.rb +0 -1
  24. data/lib/fastly/models/automation_token_create_response.rb +3 -6
  25. data/lib/fastly/models/automation_token_create_response_all_of.rb +3 -6
  26. data/lib/fastly/models/automation_token_response.rb +2 -4
  27. data/lib/fastly/models/automation_token_response_all_of.rb +2 -4
  28. data/lib/fastly/models/{rate_limiter_response1.rb → error_response.rb} +30 -77
  29. data/lib/fastly/models/historical_field_results_attributes.rb +1 -2
  30. data/lib/fastly/models/historical_field_results_attributes_all_of.rb +1 -2
  31. data/lib/fastly/models/rate_limiter.rb +5 -2
  32. data/lib/fastly/models/rate_limiter_response.rb +5 -2
  33. data/lib/fastly/models/read_only_customer_id.rb +207 -0
  34. data/lib/fastly/models/read_only_id.rb +207 -0
  35. data/lib/fastly/models/read_only_id_service.rb +207 -0
  36. data/lib/fastly/models/read_only_user_id.rb +207 -0
  37. data/lib/fastly/version.rb +1 -1
  38. data/lib/fastly.rb +5 -1
  39. data/sig.json +1 -1
  40. metadata +12 -4
  41. data/docs/RateLimiterResponse1.md +0 -12
@@ -17,6 +17,182 @@ module Fastly
17
17
  def initialize(api_client = ApiClient.default)
18
18
  @api_client = api_client
19
19
  end
20
+ # Create a rate limiter
21
+ # Create a rate limiter for a particular service and version.
22
+ # @option opts [String] :service_id Alphanumeric string identifying the service. (required)
23
+ # @option opts [Integer] :version_id Integer identifying a service version. (required)
24
+ # @option opts [String] :name A human readable name for the rate limiting rule.
25
+ # @option opts [String] :uri_dictionary_name The name of an Edge Dictionary containing URIs as keys. If not defined or `null`, all origin URIs will be rate limited.
26
+ # @option opts [Array<String>] :http_methods Array of HTTP methods to apply rate limiting to.
27
+ # @option opts [Integer] :rps_limit Upper limit of requests per second allowed by the rate limiter.
28
+ # @option opts [Integer] :window_size Number of seconds during which the RPS limit must be exceeded in order to trigger a violation.
29
+ # @option opts [Array<String>] :client_key Array of VCL variables used to generate a counter key to identify a client. Example variables include &#x60;req.http.Fastly-Client-IP&#x60;, &#x60;req.http.User-Agent&#x60;, or a custom header like &#x60;req.http.API-Key&#x60;.
30
+ # @option opts [Integer] :penalty_box_duration Length of time in minutes that the rate limiter is in effect after the initial violation is detected.
31
+ # @option opts [String] :action The action to take when a rate limiter violation is detected.
32
+ # @option opts [String] :response_object_name Name of existing response object. Required if &#x60;action&#x60; is &#x60;response_object&#x60;. Note that the rate limiter response is only updated to reflect the response object content when saving the rate limiter configuration.
33
+ # @option opts [String] :logger_type Name of the type of logging endpoint to be used when action is &#x60;log_only&#x60;. The logging endpoint type is used to determine the appropriate log format to use when emitting log entries.
34
+ # @option opts [Integer] :feature_revision Revision number of the rate limiting feature implementation. Defaults to the most recent revision.
35
+ # @return [RateLimiterResponse]
36
+ def create_rate_limiter(opts = {})
37
+ data, _status_code, _headers = create_rate_limiter_with_http_info(opts)
38
+ data
39
+ end
40
+
41
+ # Create a rate limiter
42
+ # Create a rate limiter for a particular service and version.
43
+ # @option opts [String] :service_id Alphanumeric string identifying the service. (required)
44
+ # @option opts [Integer] :version_id Integer identifying a service version. (required)
45
+ # @option opts [String] :name A human readable name for the rate limiting rule.
46
+ # @option opts [String] :uri_dictionary_name The name of an Edge Dictionary containing URIs as keys. If not defined or &#x60;null&#x60;, all origin URIs will be rate limited.
47
+ # @option opts [Array<String>] :http_methods Array of HTTP methods to apply rate limiting to.
48
+ # @option opts [Integer] :rps_limit Upper limit of requests per second allowed by the rate limiter.
49
+ # @option opts [Integer] :window_size Number of seconds during which the RPS limit must be exceeded in order to trigger a violation.
50
+ # @option opts [Array<String>] :client_key Array of VCL variables used to generate a counter key to identify a client. Example variables include &#x60;req.http.Fastly-Client-IP&#x60;, &#x60;req.http.User-Agent&#x60;, or a custom header like &#x60;req.http.API-Key&#x60;.
51
+ # @option opts [Integer] :penalty_box_duration Length of time in minutes that the rate limiter is in effect after the initial violation is detected.
52
+ # @option opts [String] :action The action to take when a rate limiter violation is detected.
53
+ # @option opts [String] :response_object_name Name of existing response object. Required if &#x60;action&#x60; is &#x60;response_object&#x60;. Note that the rate limiter response is only updated to reflect the response object content when saving the rate limiter configuration.
54
+ # @option opts [String] :logger_type Name of the type of logging endpoint to be used when action is &#x60;log_only&#x60;. The logging endpoint type is used to determine the appropriate log format to use when emitting log entries.
55
+ # @option opts [Integer] :feature_revision Revision number of the rate limiting feature implementation. Defaults to the most recent revision.
56
+ # @return [Array<(RateLimiterResponse, Integer, Hash)>] RateLimiterResponse data, response status code and response headers
57
+ def create_rate_limiter_with_http_info(opts = {})
58
+ if @api_client.config.debugging
59
+ @api_client.config.logger.debug 'Calling API: RateLimiterApi.create_rate_limiter ...'
60
+ end
61
+ # unbox the parameters from the hash
62
+ service_id = opts[:'service_id']
63
+ version_id = opts[:'version_id']
64
+ # verify the required parameter 'service_id' is set
65
+ if @api_client.config.client_side_validation && service_id.nil?
66
+ fail ArgumentError, "Missing the required parameter 'service_id' when calling RateLimiterApi.create_rate_limiter"
67
+ end
68
+ # verify the required parameter 'version_id' is set
69
+ if @api_client.config.client_side_validation && version_id.nil?
70
+ fail ArgumentError, "Missing the required parameter 'version_id' when calling RateLimiterApi.create_rate_limiter"
71
+ end
72
+ if @api_client.config.client_side_validation && !opts[:'name'].nil? && opts[:'name'].to_s.length > 255
73
+ fail ArgumentError, 'invalid value for "opts[:"name"]" when calling RateLimiterApi.create_rate_limiter, the character length must be smaller than or equal to 255.'
74
+ end
75
+
76
+ if @api_client.config.client_side_validation && !opts[:'name'].nil? && opts[:'name'].to_s.length < 1
77
+ fail ArgumentError, 'invalid value for "opts[:"name"]" when calling RateLimiterApi.create_rate_limiter, the character length must be great than or equal to 1.'
78
+ end
79
+
80
+ if @api_client.config.client_side_validation && !opts[:'uri_dictionary_name'].nil? && opts[:'uri_dictionary_name'].to_s.length > 255
81
+ fail ArgumentError, 'invalid value for "opts[:"uri_dictionary_name"]" when calling RateLimiterApi.create_rate_limiter, the character length must be smaller than or equal to 255.'
82
+ end
83
+
84
+ if @api_client.config.client_side_validation && !opts[:'uri_dictionary_name'].nil? && opts[:'uri_dictionary_name'].to_s.length < 1
85
+ fail ArgumentError, 'invalid value for "opts[:"uri_dictionary_name"]" when calling RateLimiterApi.create_rate_limiter, the character length must be great than or equal to 1.'
86
+ end
87
+
88
+ allowable_values = ["HEAD", "OPTIONS", "GET", "POST", "PUT", "PATCH", "DELETE", "TRACE"]
89
+ if @api_client.config.client_side_validation && opts[:'http_methods'] && !opts[:'http_methods'].all? { |item| allowable_values.include?(item) }
90
+ fail ArgumentError, "invalid value for \"http_methods\", must include one of #{allowable_values}"
91
+ end
92
+ if @api_client.config.client_side_validation && !opts[:'http_methods'].nil? && opts[:'http_methods'].length < 1
93
+ fail ArgumentError, 'invalid value for "opts[:"http_methods"]" when calling RateLimiterApi.create_rate_limiter, number of items must be greater than or equal to 1.'
94
+ end
95
+
96
+ if @api_client.config.client_side_validation && !opts[:'rps_limit'].nil? && opts[:'rps_limit'] > 10000
97
+ fail ArgumentError, 'invalid value for "opts[:"rps_limit"]" when calling RateLimiterApi.create_rate_limiter, must be smaller than or equal to 10000.'
98
+ end
99
+
100
+ if @api_client.config.client_side_validation && !opts[:'rps_limit'].nil? && opts[:'rps_limit'] < 10
101
+ fail ArgumentError, 'invalid value for "opts[:"rps_limit"]" when calling RateLimiterApi.create_rate_limiter, must be greater than or equal to 10.'
102
+ end
103
+
104
+ allowable_values = [1, 10, 60]
105
+ if @api_client.config.client_side_validation && opts[:'window_size'] && !allowable_values.include?(opts[:'window_size'])
106
+ fail ArgumentError, "invalid value for \"window_size\", must be one of #{allowable_values}"
107
+ end
108
+ if @api_client.config.client_side_validation && !opts[:'client_key'].nil? && opts[:'client_key'].length < 1
109
+ fail ArgumentError, 'invalid value for "opts[:"client_key"]" when calling RateLimiterApi.create_rate_limiter, number of items must be greater than or equal to 1.'
110
+ end
111
+
112
+ if @api_client.config.client_side_validation && !opts[:'penalty_box_duration'].nil? && opts[:'penalty_box_duration'] > 60
113
+ fail ArgumentError, 'invalid value for "opts[:"penalty_box_duration"]" when calling RateLimiterApi.create_rate_limiter, must be smaller than or equal to 60.'
114
+ end
115
+
116
+ if @api_client.config.client_side_validation && !opts[:'penalty_box_duration'].nil? && opts[:'penalty_box_duration'] < 1
117
+ fail ArgumentError, 'invalid value for "opts[:"penalty_box_duration"]" when calling RateLimiterApi.create_rate_limiter, must be greater than or equal to 1.'
118
+ end
119
+
120
+ allowable_values = ["response", "response_object", "log_only"]
121
+ if @api_client.config.client_side_validation && opts[:'action'] && !allowable_values.include?(opts[:'action'])
122
+ fail ArgumentError, "invalid value for \"action\", must be one of #{allowable_values}"
123
+ end
124
+ if @api_client.config.client_side_validation && !opts[:'action'].nil? && opts[:'action'].to_s.length < 1
125
+ fail ArgumentError, 'invalid value for "opts[:"action"]" when calling RateLimiterApi.create_rate_limiter, the character length must be great than or equal to 1.'
126
+ end
127
+
128
+ if @api_client.config.client_side_validation && !opts[:'response_object_name'].nil? && opts[:'response_object_name'].to_s.length > 255
129
+ fail ArgumentError, 'invalid value for "opts[:"response_object_name"]" when calling RateLimiterApi.create_rate_limiter, the character length must be smaller than or equal to 255.'
130
+ end
131
+
132
+ if @api_client.config.client_side_validation && !opts[:'response_object_name'].nil? && opts[:'response_object_name'].to_s.length < 1
133
+ fail ArgumentError, 'invalid value for "opts[:"response_object_name"]" when calling RateLimiterApi.create_rate_limiter, the character length must be great than or equal to 1.'
134
+ end
135
+
136
+ allowable_values = ["azureblob", "bigquery", "cloudfiles", "datadog", "digitalocean", "elasticsearch", "ftp", "gcs", "googleanalytics", "heroku", "honeycomb", "http", "https", "kafka", "kinesis", "logentries", "loggly", "logshuttle", "newrelic", "openstack", "papertrail", "pubsub", "s3", "scalyr", "sftp", "splunk", "stackdriver", "sumologic", "syslog"]
137
+ if @api_client.config.client_side_validation && opts[:'logger_type'] && !allowable_values.include?(opts[:'logger_type'])
138
+ fail ArgumentError, "invalid value for \"logger_type\", must be one of #{allowable_values}"
139
+ end
140
+ # resource path
141
+ local_var_path = '/service/{service_id}/version/{version_id}/rate-limiters'.sub('{' + 'service_id' + '}', CGI.escape(service_id.to_s)).sub('{' + 'version_id' + '}', CGI.escape(version_id.to_s))
142
+
143
+ # query parameters
144
+ query_params = opts[:query_params] || {}
145
+
146
+ # header parameters
147
+ header_params = opts[:header_params] || {}
148
+ # HTTP header 'Accept' (if needed)
149
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
150
+ # HTTP header 'Content-Type'
151
+ content_type = @api_client.select_header_content_type(['application/x-www-form-urlencoded'])
152
+ if !content_type.nil?
153
+ header_params['Content-Type'] = content_type
154
+ end
155
+
156
+ # form parameters
157
+ form_params = opts[:form_params] || {}
158
+ form_params['name'] = opts[:'name'] if !opts[:'name'].nil?
159
+ form_params['uri_dictionary_name'] = opts[:'uri_dictionary_name'] if !opts[:'uri_dictionary_name'].nil?
160
+ form_params['http_methods'] = @api_client.build_collection_param(opts[:'http_methods'], :csv) if !opts[:'http_methods'].nil?
161
+ form_params['rps_limit'] = opts[:'rps_limit'] if !opts[:'rps_limit'].nil?
162
+ form_params['window_size'] = opts[:'window_size'] if !opts[:'window_size'].nil?
163
+ form_params['client_key'] = @api_client.build_collection_param(opts[:'client_key'], :csv) if !opts[:'client_key'].nil?
164
+ form_params['penalty_box_duration'] = opts[:'penalty_box_duration'] if !opts[:'penalty_box_duration'].nil?
165
+ form_params['action'] = opts[:'action'] if !opts[:'action'].nil?
166
+ form_params['response_object_name'] = opts[:'response_object_name'] if !opts[:'response_object_name'].nil?
167
+ form_params['logger_type'] = opts[:'logger_type'] if !opts[:'logger_type'].nil?
168
+ form_params['feature_revision'] = opts[:'feature_revision'] if !opts[:'feature_revision'].nil?
169
+
170
+ # http body (model)
171
+ post_body = opts[:debug_body]
172
+
173
+ # return_type
174
+ return_type = opts[:debug_return_type] || 'RateLimiterResponse'
175
+
176
+ # auth_names
177
+ auth_names = opts[:debug_auth_names] || ['token']
178
+
179
+ new_options = opts.merge(
180
+ :operation => :"RateLimiterApi.create_rate_limiter",
181
+ :header_params => header_params,
182
+ :query_params => query_params,
183
+ :form_params => form_params,
184
+ :body => post_body,
185
+ :auth_names => auth_names,
186
+ :return_type => return_type
187
+ )
188
+
189
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
190
+ if @api_client.config.debugging
191
+ @api_client.config.logger.debug "API called: RateLimiterApi#create_rate_limiter\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
192
+ end
193
+ return data, status_code, headers
194
+ end
195
+
20
196
  # Delete a rate limiter
21
197
  # Delete a rate limiter by its ID.
22
198
  # @option opts [String] :rate_limiter_id Alphanumeric string identifying the rate limiter. (required)
@@ -212,5 +388,174 @@ module Fastly
212
388
  end
213
389
  return data, status_code, headers
214
390
  end
391
+
392
+ # Update a rate limiter
393
+ # Update a rate limiter by its ID.
394
+ # @option opts [String] :rate_limiter_id Alphanumeric string identifying the rate limiter. (required)
395
+ # @option opts [String] :name A human readable name for the rate limiting rule.
396
+ # @option opts [String] :uri_dictionary_name The name of an Edge Dictionary containing URIs as keys. If not defined or &#x60;null&#x60;, all origin URIs will be rate limited.
397
+ # @option opts [Array<String>] :http_methods Array of HTTP methods to apply rate limiting to.
398
+ # @option opts [Integer] :rps_limit Upper limit of requests per second allowed by the rate limiter.
399
+ # @option opts [Integer] :window_size Number of seconds during which the RPS limit must be exceeded in order to trigger a violation.
400
+ # @option opts [Array<String>] :client_key Array of VCL variables used to generate a counter key to identify a client. Example variables include &#x60;req.http.Fastly-Client-IP&#x60;, &#x60;req.http.User-Agent&#x60;, or a custom header like &#x60;req.http.API-Key&#x60;.
401
+ # @option opts [Integer] :penalty_box_duration Length of time in minutes that the rate limiter is in effect after the initial violation is detected.
402
+ # @option opts [String] :action The action to take when a rate limiter violation is detected.
403
+ # @option opts [String] :response_object_name Name of existing response object. Required if &#x60;action&#x60; is &#x60;response_object&#x60;. Note that the rate limiter response is only updated to reflect the response object content when saving the rate limiter configuration.
404
+ # @option opts [String] :logger_type Name of the type of logging endpoint to be used when action is &#x60;log_only&#x60;. The logging endpoint type is used to determine the appropriate log format to use when emitting log entries.
405
+ # @option opts [Integer] :feature_revision Revision number of the rate limiting feature implementation. Defaults to the most recent revision.
406
+ # @return [RateLimiterResponse]
407
+ def update_rate_limiter(opts = {})
408
+ data, _status_code, _headers = update_rate_limiter_with_http_info(opts)
409
+ data
410
+ end
411
+
412
+ # Update a rate limiter
413
+ # Update a rate limiter by its ID.
414
+ # @option opts [String] :rate_limiter_id Alphanumeric string identifying the rate limiter. (required)
415
+ # @option opts [String] :name A human readable name for the rate limiting rule.
416
+ # @option opts [String] :uri_dictionary_name The name of an Edge Dictionary containing URIs as keys. If not defined or &#x60;null&#x60;, all origin URIs will be rate limited.
417
+ # @option opts [Array<String>] :http_methods Array of HTTP methods to apply rate limiting to.
418
+ # @option opts [Integer] :rps_limit Upper limit of requests per second allowed by the rate limiter.
419
+ # @option opts [Integer] :window_size Number of seconds during which the RPS limit must be exceeded in order to trigger a violation.
420
+ # @option opts [Array<String>] :client_key Array of VCL variables used to generate a counter key to identify a client. Example variables include &#x60;req.http.Fastly-Client-IP&#x60;, &#x60;req.http.User-Agent&#x60;, or a custom header like &#x60;req.http.API-Key&#x60;.
421
+ # @option opts [Integer] :penalty_box_duration Length of time in minutes that the rate limiter is in effect after the initial violation is detected.
422
+ # @option opts [String] :action The action to take when a rate limiter violation is detected.
423
+ # @option opts [String] :response_object_name Name of existing response object. Required if &#x60;action&#x60; is &#x60;response_object&#x60;. Note that the rate limiter response is only updated to reflect the response object content when saving the rate limiter configuration.
424
+ # @option opts [String] :logger_type Name of the type of logging endpoint to be used when action is &#x60;log_only&#x60;. The logging endpoint type is used to determine the appropriate log format to use when emitting log entries.
425
+ # @option opts [Integer] :feature_revision Revision number of the rate limiting feature implementation. Defaults to the most recent revision.
426
+ # @return [Array<(RateLimiterResponse, Integer, Hash)>] RateLimiterResponse data, response status code and response headers
427
+ def update_rate_limiter_with_http_info(opts = {})
428
+ if @api_client.config.debugging
429
+ @api_client.config.logger.debug 'Calling API: RateLimiterApi.update_rate_limiter ...'
430
+ end
431
+ # unbox the parameters from the hash
432
+ rate_limiter_id = opts[:'rate_limiter_id']
433
+ # verify the required parameter 'rate_limiter_id' is set
434
+ if @api_client.config.client_side_validation && rate_limiter_id.nil?
435
+ fail ArgumentError, "Missing the required parameter 'rate_limiter_id' when calling RateLimiterApi.update_rate_limiter"
436
+ end
437
+ if @api_client.config.client_side_validation && !opts[:'name'].nil? && opts[:'name'].to_s.length > 255
438
+ fail ArgumentError, 'invalid value for "opts[:"name"]" when calling RateLimiterApi.update_rate_limiter, the character length must be smaller than or equal to 255.'
439
+ end
440
+
441
+ if @api_client.config.client_side_validation && !opts[:'name'].nil? && opts[:'name'].to_s.length < 1
442
+ fail ArgumentError, 'invalid value for "opts[:"name"]" when calling RateLimiterApi.update_rate_limiter, the character length must be great than or equal to 1.'
443
+ end
444
+
445
+ if @api_client.config.client_side_validation && !opts[:'uri_dictionary_name'].nil? && opts[:'uri_dictionary_name'].to_s.length > 255
446
+ fail ArgumentError, 'invalid value for "opts[:"uri_dictionary_name"]" when calling RateLimiterApi.update_rate_limiter, the character length must be smaller than or equal to 255.'
447
+ end
448
+
449
+ if @api_client.config.client_side_validation && !opts[:'uri_dictionary_name'].nil? && opts[:'uri_dictionary_name'].to_s.length < 1
450
+ fail ArgumentError, 'invalid value for "opts[:"uri_dictionary_name"]" when calling RateLimiterApi.update_rate_limiter, the character length must be great than or equal to 1.'
451
+ end
452
+
453
+ allowable_values = ["HEAD", "OPTIONS", "GET", "POST", "PUT", "PATCH", "DELETE", "TRACE"]
454
+ if @api_client.config.client_side_validation && opts[:'http_methods'] && !opts[:'http_methods'].all? { |item| allowable_values.include?(item) }
455
+ fail ArgumentError, "invalid value for \"http_methods\", must include one of #{allowable_values}"
456
+ end
457
+ if @api_client.config.client_side_validation && !opts[:'http_methods'].nil? && opts[:'http_methods'].length < 1
458
+ fail ArgumentError, 'invalid value for "opts[:"http_methods"]" when calling RateLimiterApi.update_rate_limiter, number of items must be greater than or equal to 1.'
459
+ end
460
+
461
+ if @api_client.config.client_side_validation && !opts[:'rps_limit'].nil? && opts[:'rps_limit'] > 10000
462
+ fail ArgumentError, 'invalid value for "opts[:"rps_limit"]" when calling RateLimiterApi.update_rate_limiter, must be smaller than or equal to 10000.'
463
+ end
464
+
465
+ if @api_client.config.client_side_validation && !opts[:'rps_limit'].nil? && opts[:'rps_limit'] < 10
466
+ fail ArgumentError, 'invalid value for "opts[:"rps_limit"]" when calling RateLimiterApi.update_rate_limiter, must be greater than or equal to 10.'
467
+ end
468
+
469
+ allowable_values = [1, 10, 60]
470
+ if @api_client.config.client_side_validation && opts[:'window_size'] && !allowable_values.include?(opts[:'window_size'])
471
+ fail ArgumentError, "invalid value for \"window_size\", must be one of #{allowable_values}"
472
+ end
473
+ if @api_client.config.client_side_validation && !opts[:'client_key'].nil? && opts[:'client_key'].length < 1
474
+ fail ArgumentError, 'invalid value for "opts[:"client_key"]" when calling RateLimiterApi.update_rate_limiter, number of items must be greater than or equal to 1.'
475
+ end
476
+
477
+ if @api_client.config.client_side_validation && !opts[:'penalty_box_duration'].nil? && opts[:'penalty_box_duration'] > 60
478
+ fail ArgumentError, 'invalid value for "opts[:"penalty_box_duration"]" when calling RateLimiterApi.update_rate_limiter, must be smaller than or equal to 60.'
479
+ end
480
+
481
+ if @api_client.config.client_side_validation && !opts[:'penalty_box_duration'].nil? && opts[:'penalty_box_duration'] < 1
482
+ fail ArgumentError, 'invalid value for "opts[:"penalty_box_duration"]" when calling RateLimiterApi.update_rate_limiter, must be greater than or equal to 1.'
483
+ end
484
+
485
+ allowable_values = ["response", "response_object", "log_only"]
486
+ if @api_client.config.client_side_validation && opts[:'action'] && !allowable_values.include?(opts[:'action'])
487
+ fail ArgumentError, "invalid value for \"action\", must be one of #{allowable_values}"
488
+ end
489
+ if @api_client.config.client_side_validation && !opts[:'action'].nil? && opts[:'action'].to_s.length < 1
490
+ fail ArgumentError, 'invalid value for "opts[:"action"]" when calling RateLimiterApi.update_rate_limiter, the character length must be great than or equal to 1.'
491
+ end
492
+
493
+ if @api_client.config.client_side_validation && !opts[:'response_object_name'].nil? && opts[:'response_object_name'].to_s.length > 255
494
+ fail ArgumentError, 'invalid value for "opts[:"response_object_name"]" when calling RateLimiterApi.update_rate_limiter, the character length must be smaller than or equal to 255.'
495
+ end
496
+
497
+ if @api_client.config.client_side_validation && !opts[:'response_object_name'].nil? && opts[:'response_object_name'].to_s.length < 1
498
+ fail ArgumentError, 'invalid value for "opts[:"response_object_name"]" when calling RateLimiterApi.update_rate_limiter, the character length must be great than or equal to 1.'
499
+ end
500
+
501
+ allowable_values = ["azureblob", "bigquery", "cloudfiles", "datadog", "digitalocean", "elasticsearch", "ftp", "gcs", "googleanalytics", "heroku", "honeycomb", "http", "https", "kafka", "kinesis", "logentries", "loggly", "logshuttle", "newrelic", "openstack", "papertrail", "pubsub", "s3", "scalyr", "sftp", "splunk", "stackdriver", "sumologic", "syslog"]
502
+ if @api_client.config.client_side_validation && opts[:'logger_type'] && !allowable_values.include?(opts[:'logger_type'])
503
+ fail ArgumentError, "invalid value for \"logger_type\", must be one of #{allowable_values}"
504
+ end
505
+ # resource path
506
+ local_var_path = '/rate-limiters/{rate_limiter_id}'.sub('{' + 'rate_limiter_id' + '}', CGI.escape(rate_limiter_id.to_s))
507
+
508
+ # query parameters
509
+ query_params = opts[:query_params] || {}
510
+
511
+ # header parameters
512
+ header_params = opts[:header_params] || {}
513
+ # HTTP header 'Accept' (if needed)
514
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
515
+ # HTTP header 'Content-Type'
516
+ content_type = @api_client.select_header_content_type(['application/x-www-form-urlencoded'])
517
+ if !content_type.nil?
518
+ header_params['Content-Type'] = content_type
519
+ end
520
+
521
+ # form parameters
522
+ form_params = opts[:form_params] || {}
523
+ form_params['name'] = opts[:'name'] if !opts[:'name'].nil?
524
+ form_params['uri_dictionary_name'] = opts[:'uri_dictionary_name'] if !opts[:'uri_dictionary_name'].nil?
525
+ form_params['http_methods'] = @api_client.build_collection_param(opts[:'http_methods'], :csv) if !opts[:'http_methods'].nil?
526
+ form_params['rps_limit'] = opts[:'rps_limit'] if !opts[:'rps_limit'].nil?
527
+ form_params['window_size'] = opts[:'window_size'] if !opts[:'window_size'].nil?
528
+ form_params['client_key'] = @api_client.build_collection_param(opts[:'client_key'], :csv) if !opts[:'client_key'].nil?
529
+ form_params['penalty_box_duration'] = opts[:'penalty_box_duration'] if !opts[:'penalty_box_duration'].nil?
530
+ form_params['action'] = opts[:'action'] if !opts[:'action'].nil?
531
+ form_params['response_object_name'] = opts[:'response_object_name'] if !opts[:'response_object_name'].nil?
532
+ form_params['logger_type'] = opts[:'logger_type'] if !opts[:'logger_type'].nil?
533
+ form_params['feature_revision'] = opts[:'feature_revision'] if !opts[:'feature_revision'].nil?
534
+
535
+ # http body (model)
536
+ post_body = opts[:debug_body]
537
+
538
+ # return_type
539
+ return_type = opts[:debug_return_type] || 'RateLimiterResponse'
540
+
541
+ # auth_names
542
+ auth_names = opts[:debug_auth_names] || ['token']
543
+
544
+ new_options = opts.merge(
545
+ :operation => :"RateLimiterApi.update_rate_limiter",
546
+ :header_params => header_params,
547
+ :query_params => query_params,
548
+ :form_params => form_params,
549
+ :body => post_body,
550
+ :auth_names => auth_names,
551
+ :return_type => return_type
552
+ )
553
+
554
+ data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options)
555
+ if @api_client.config.debugging
556
+ @api_client.config.logger.debug "API called: RateLimiterApi#update_rate_limiter\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
557
+ end
558
+ return data, status_code, headers
559
+ end
215
560
  end
216
561
  end
@@ -2036,6 +2036,12 @@ module Fastly
2036
2036
  description: "No description provided",
2037
2037
  }
2038
2038
  ],
2039
+ "RateLimiterApi.create_rate_limiter": [
2040
+ {
2041
+ url: "https://api.fastly.com",
2042
+ description: "No description provided",
2043
+ }
2044
+ ],
2039
2045
  "RateLimiterApi.delete_rate_limiter": [
2040
2046
  {
2041
2047
  url: "https://api.fastly.com",
@@ -2054,6 +2060,12 @@ module Fastly
2054
2060
  description: "No description provided",
2055
2061
  }
2056
2062
  ],
2063
+ "RateLimiterApi.update_rate_limiter": [
2064
+ {
2065
+ url: "https://api.fastly.com",
2066
+ description: "No description provided",
2067
+ }
2068
+ ],
2057
2069
  "RealtimeApi.get_stats_last120_seconds": [
2058
2070
  {
2059
2071
  url: "https://rt.fastly.com",
@@ -83,7 +83,6 @@ module Fastly
83
83
  # List of attributes with nullable: true
84
84
  def self.fastly_nullable
85
85
  Set.new([
86
- :'scope',
87
86
  :'expires_at',
88
87
  ])
89
88
  end
@@ -112,9 +112,9 @@ module Fastly
112
112
  :'created_at' => :'Time',
113
113
  :'deleted_at' => :'Time',
114
114
  :'updated_at' => :'Time',
115
- :'id' => :'String',
116
- :'user_id' => :'String',
117
- :'customer_id' => :'String',
115
+ :'id' => :'ReadOnlyId',
116
+ :'user_id' => :'ReadOnlyUserId',
117
+ :'customer_id' => :'ReadOnlyCustomerId',
118
118
  :'sudo_expires_at' => :'Time',
119
119
  :'access_token' => :'String',
120
120
  :'last_used_at' => :'Time',
@@ -127,9 +127,6 @@ module Fastly
127
127
  Set.new([
128
128
  :'deleted_at',
129
129
  :'updated_at',
130
- :'id',
131
- :'user_id',
132
- :'customer_id',
133
130
  ])
134
131
  end
135
132
 
@@ -54,9 +54,9 @@ module Fastly
54
54
  # Attribute type mapping.
55
55
  def self.fastly_types
56
56
  {
57
- :'id' => :'String',
58
- :'user_id' => :'String',
59
- :'customer_id' => :'String',
57
+ :'id' => :'ReadOnlyId',
58
+ :'user_id' => :'ReadOnlyUserId',
59
+ :'customer_id' => :'ReadOnlyCustomerId',
60
60
  :'sudo_expires_at' => :'Time',
61
61
  :'created_at' => :'Time',
62
62
  :'access_token' => :'String',
@@ -68,9 +68,6 @@ module Fastly
68
68
  # List of attributes with nullable: true
69
69
  def self.fastly_nullable
70
70
  Set.new([
71
- :'id',
72
- :'user_id',
73
- :'customer_id',
74
71
  ])
75
72
  end
76
73
 
@@ -109,8 +109,8 @@ module Fastly
109
109
  :'created_at' => :'String',
110
110
  :'deleted_at' => :'Time',
111
111
  :'updated_at' => :'Time',
112
- :'id' => :'String',
113
- :'customer_id' => :'String',
112
+ :'id' => :'ReadOnlyId',
113
+ :'customer_id' => :'ReadOnlyCustomerId',
114
114
  :'ip' => :'String',
115
115
  :'user_agent' => :'String',
116
116
  :'sudo_expires_at' => :'String',
@@ -123,8 +123,6 @@ module Fastly
123
123
  Set.new([
124
124
  :'deleted_at',
125
125
  :'updated_at',
126
- :'id',
127
- :'customer_id',
128
126
  ])
129
127
  end
130
128
 
@@ -59,8 +59,8 @@ module Fastly
59
59
  # Attribute type mapping.
60
60
  def self.fastly_types
61
61
  {
62
- :'id' => :'String',
63
- :'customer_id' => :'String',
62
+ :'id' => :'ReadOnlyId',
63
+ :'customer_id' => :'ReadOnlyCustomerId',
64
64
  :'role' => :'String',
65
65
  :'ip' => :'String',
66
66
  :'user_agent' => :'String',
@@ -74,8 +74,6 @@ module Fastly
74
74
  # List of attributes with nullable: true
75
75
  def self.fastly_nullable
76
76
  Set.new([
77
- :'id',
78
- :'customer_id',
79
77
  ])
80
78
  end
81
79