svix 1.15.0 → 1.17.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -439,6 +439,7 @@ module Svix
439
439
  # @option opts [Integer] :limit Limit the number of returned items
440
440
  # @option opts [String] :iterator The iterator returned from a prior invocation
441
441
  # @option opts [String] :channel Filter response based on the channel
442
+ # @option opts [String] :tag Filter response based on the message tags
442
443
  # @option opts [MessageStatus] :status Filter response based on the delivery status
443
444
  # @option opts [Time] :before Only include items created before a certain date
444
445
  # @option opts [Time] :after Only include items created after a certain date
@@ -458,6 +459,7 @@ module Svix
458
459
  # @option opts [Integer] :limit Limit the number of returned items
459
460
  # @option opts [String] :iterator The iterator returned from a prior invocation
460
461
  # @option opts [String] :channel Filter response based on the channel
462
+ # @option opts [String] :tag Filter response based on the message tags
461
463
  # @option opts [MessageStatus] :status Filter response based on the delivery status
462
464
  # @option opts [Time] :before Only include items created before a certain date
463
465
  # @option opts [Time] :after Only include items created after a certain date
@@ -519,6 +521,15 @@ module Svix
519
521
  fail ArgumentError, "invalid value for 'opts[:\"channel\"]' when calling MessageAttemptApi.v1_message_attempt_list_attempted_messages, must conform to the pattern #{pattern}."
520
522
  end
521
523
 
524
+ if @api_client.config.client_side_validation && !opts[:'tag'].nil? && opts[:'tag'].to_s.length > 128
525
+ fail ArgumentError, 'invalid value for "opts[:"tag"]" when calling MessageAttemptApi.v1_message_attempt_list_attempted_messages, the character length must be smaller than or equal to 128.'
526
+ end
527
+
528
+ pattern = Regexp.new(/^[a-zA-Z0-9\-_.]+$/)
529
+ if @api_client.config.client_side_validation && !opts[:'tag'].nil? && opts[:'tag'] !~ pattern
530
+ fail ArgumentError, "invalid value for 'opts[:\"tag\"]' when calling MessageAttemptApi.v1_message_attempt_list_attempted_messages, must conform to the pattern #{pattern}."
531
+ end
532
+
522
533
  # resource path
523
534
  local_var_path = '/api/v1/app/{app_id}/endpoint/{endpoint_id}/msg/'.sub('{' + 'app_id' + '}', CGI.escape(app_id.to_s)).sub('{' + 'endpoint_id' + '}', CGI.escape(endpoint_id.to_s))
524
535
 
@@ -527,6 +538,7 @@ module Svix
527
538
  query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
528
539
  query_params[:'iterator'] = opts[:'iterator'] if !opts[:'iterator'].nil?
529
540
  query_params[:'channel'] = opts[:'channel'] if !opts[:'channel'].nil?
541
+ query_params[:'tag'] = opts[:'tag'] if !opts[:'tag'].nil?
530
542
  query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil?
531
543
  query_params[:'before'] = opts[:'before'] if !opts[:'before'].nil?
532
544
  query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
@@ -577,10 +589,11 @@ module Svix
577
589
  # @option opts [MessageStatus] :status Filter response based on the delivery status
578
590
  # @option opts [StatusCodeClass] :status_code_class Filter response based on the HTTP status code
579
591
  # @option opts [String] :channel Filter response based on the channel
592
+ # @option opts [String] :tag Filter response based on the tag
580
593
  # @option opts [Time] :before Only include items created before a certain date
581
594
  # @option opts [Time] :after Only include items created after a certain date
582
595
  # @option opts [Boolean] :with_content When `true` attempt content is included in the response (default to true)
583
- # @option opts [Boolean] :with_msg (default to false)
596
+ # @option opts [Boolean] :with_msg When `true`, the message information is included in the response (default to false)
584
597
  # @option opts [Array<String>] :event_types Filter response based on the event type
585
598
  # @return [ListResponseMessageAttemptOut]
586
599
  def v1_message_attempt_list_by_endpoint(app_id, endpoint_id, opts = {})
@@ -598,10 +611,11 @@ module Svix
598
611
  # @option opts [MessageStatus] :status Filter response based on the delivery status
599
612
  # @option opts [StatusCodeClass] :status_code_class Filter response based on the HTTP status code
600
613
  # @option opts [String] :channel Filter response based on the channel
614
+ # @option opts [String] :tag Filter response based on the tag
601
615
  # @option opts [Time] :before Only include items created before a certain date
602
616
  # @option opts [Time] :after Only include items created after a certain date
603
617
  # @option opts [Boolean] :with_content When &#x60;true&#x60; attempt content is included in the response
604
- # @option opts [Boolean] :with_msg
618
+ # @option opts [Boolean] :with_msg When &#x60;true&#x60;, the message information is included in the response
605
619
  # @option opts [Array<String>] :event_types Filter response based on the event type
606
620
  # @return [Array<(ListResponseMessageAttemptOut, Integer, Hash)>] ListResponseMessageAttemptOut data, response status code and response headers
607
621
  def v1_message_attempt_list_by_endpoint_with_http_info(app_id, endpoint_id, opts = {})
@@ -659,6 +673,15 @@ module Svix
659
673
  fail ArgumentError, "invalid value for 'opts[:\"channel\"]' when calling MessageAttemptApi.v1_message_attempt_list_by_endpoint, must conform to the pattern #{pattern}."
660
674
  end
661
675
 
676
+ if @api_client.config.client_side_validation && !opts[:'tag'].nil? && opts[:'tag'].to_s.length > 128
677
+ fail ArgumentError, 'invalid value for "opts[:"tag"]" when calling MessageAttemptApi.v1_message_attempt_list_by_endpoint, the character length must be smaller than or equal to 128.'
678
+ end
679
+
680
+ pattern = Regexp.new(/^[a-zA-Z0-9\-_.]+$/)
681
+ if @api_client.config.client_side_validation && !opts[:'tag'].nil? && opts[:'tag'] !~ pattern
682
+ fail ArgumentError, "invalid value for 'opts[:\"tag\"]' when calling MessageAttemptApi.v1_message_attempt_list_by_endpoint, must conform to the pattern #{pattern}."
683
+ end
684
+
662
685
  # resource path
663
686
  local_var_path = '/api/v1/app/{app_id}/attempt/endpoint/{endpoint_id}/'.sub('{' + 'app_id' + '}', CGI.escape(app_id.to_s)).sub('{' + 'endpoint_id' + '}', CGI.escape(endpoint_id.to_s))
664
687
 
@@ -669,6 +692,7 @@ module Svix
669
692
  query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil?
670
693
  query_params[:'status_code_class'] = opts[:'status_code_class'] if !opts[:'status_code_class'].nil?
671
694
  query_params[:'channel'] = opts[:'channel'] if !opts[:'channel'].nil?
695
+ query_params[:'tag'] = opts[:'tag'] if !opts[:'tag'].nil?
672
696
  query_params[:'before'] = opts[:'before'] if !opts[:'before'].nil?
673
697
  query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
674
698
  query_params[:'with_content'] = opts[:'with_content'] if !opts[:'with_content'].nil?
@@ -718,6 +742,7 @@ module Svix
718
742
  # @option opts [Integer] :limit Limit the number of returned items
719
743
  # @option opts [String] :iterator The iterator returned from a prior invocation
720
744
  # @option opts [String] :channel Filter response based on the channel
745
+ # @option opts [String] :tag Filter response based on the tag
721
746
  # @option opts [MessageStatus] :status Filter response based on the delivery status
722
747
  # @option opts [Time] :before Only include items created before a certain date
723
748
  # @option opts [Time] :after Only include items created after a certain date
@@ -737,6 +762,7 @@ module Svix
737
762
  # @option opts [Integer] :limit Limit the number of returned items
738
763
  # @option opts [String] :iterator The iterator returned from a prior invocation
739
764
  # @option opts [String] :channel Filter response based on the channel
765
+ # @option opts [String] :tag Filter response based on the tag
740
766
  # @option opts [MessageStatus] :status Filter response based on the delivery status
741
767
  # @option opts [Time] :before Only include items created before a certain date
742
768
  # @option opts [Time] :after Only include items created after a certain date
@@ -814,6 +840,15 @@ module Svix
814
840
  fail ArgumentError, "invalid value for 'opts[:\"channel\"]' when calling MessageAttemptApi.v1_message_attempt_list_by_endpoint_deprecated, must conform to the pattern #{pattern}."
815
841
  end
816
842
 
843
+ if @api_client.config.client_side_validation && !opts[:'tag'].nil? && opts[:'tag'].to_s.length > 128
844
+ fail ArgumentError, 'invalid value for "opts[:"tag"]" when calling MessageAttemptApi.v1_message_attempt_list_by_endpoint_deprecated, the character length must be smaller than or equal to 128.'
845
+ end
846
+
847
+ pattern = Regexp.new(/^[a-zA-Z0-9\-_.]+$/)
848
+ if @api_client.config.client_side_validation && !opts[:'tag'].nil? && opts[:'tag'] !~ pattern
849
+ fail ArgumentError, "invalid value for 'opts[:\"tag\"]' when calling MessageAttemptApi.v1_message_attempt_list_by_endpoint_deprecated, must conform to the pattern #{pattern}."
850
+ end
851
+
817
852
  # resource path
818
853
  local_var_path = '/api/v1/app/{app_id}/msg/{msg_id}/endpoint/{endpoint_id}/attempt/'.sub('{' + 'app_id' + '}', CGI.escape(app_id.to_s)).sub('{' + 'msg_id' + '}', CGI.escape(msg_id.to_s)).sub('{' + 'endpoint_id' + '}', CGI.escape(endpoint_id.to_s))
819
854
 
@@ -822,6 +857,7 @@ module Svix
822
857
  query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
823
858
  query_params[:'iterator'] = opts[:'iterator'] if !opts[:'iterator'].nil?
824
859
  query_params[:'channel'] = opts[:'channel'] if !opts[:'channel'].nil?
860
+ query_params[:'tag'] = opts[:'tag'] if !opts[:'tag'].nil?
825
861
  query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil?
826
862
  query_params[:'before'] = opts[:'before'] if !opts[:'before'].nil?
827
863
  query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
@@ -871,6 +907,7 @@ module Svix
871
907
  # @option opts [MessageStatus] :status Filter response based on the delivery status
872
908
  # @option opts [StatusCodeClass] :status_code_class Filter response based on the HTTP status code
873
909
  # @option opts [String] :channel Filter response based on the channel
910
+ # @option opts [String] :tag Filter response based on the tag
874
911
  # @option opts [String] :endpoint_id Filter the attempts based on the attempted endpoint
875
912
  # @option opts [Time] :before Only include items created before a certain date
876
913
  # @option opts [Time] :after Only include items created after a certain date
@@ -892,6 +929,7 @@ module Svix
892
929
  # @option opts [MessageStatus] :status Filter response based on the delivery status
893
930
  # @option opts [StatusCodeClass] :status_code_class Filter response based on the HTTP status code
894
931
  # @option opts [String] :channel Filter response based on the channel
932
+ # @option opts [String] :tag Filter response based on the tag
895
933
  # @option opts [String] :endpoint_id Filter the attempts based on the attempted endpoint
896
934
  # @option opts [Time] :before Only include items created before a certain date
897
935
  # @option opts [Time] :after Only include items created after a certain date
@@ -953,6 +991,15 @@ module Svix
953
991
  fail ArgumentError, "invalid value for 'opts[:\"channel\"]' when calling MessageAttemptApi.v1_message_attempt_list_by_msg, must conform to the pattern #{pattern}."
954
992
  end
955
993
 
994
+ if @api_client.config.client_side_validation && !opts[:'tag'].nil? && opts[:'tag'].to_s.length > 128
995
+ fail ArgumentError, 'invalid value for "opts[:"tag"]" when calling MessageAttemptApi.v1_message_attempt_list_by_msg, the character length must be smaller than or equal to 128.'
996
+ end
997
+
998
+ pattern = Regexp.new(/^[a-zA-Z0-9\-_.]+$/)
999
+ if @api_client.config.client_side_validation && !opts[:'tag'].nil? && opts[:'tag'] !~ pattern
1000
+ fail ArgumentError, "invalid value for 'opts[:\"tag\"]' when calling MessageAttemptApi.v1_message_attempt_list_by_msg, must conform to the pattern #{pattern}."
1001
+ end
1002
+
956
1003
  if @api_client.config.client_side_validation && !opts[:'endpoint_id'].nil? && opts[:'endpoint_id'].to_s.length > 256
957
1004
  fail ArgumentError, 'invalid value for "opts[:"endpoint_id"]" when calling MessageAttemptApi.v1_message_attempt_list_by_msg, the character length must be smaller than or equal to 256.'
958
1005
  end
@@ -976,6 +1023,7 @@ module Svix
976
1023
  query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil?
977
1024
  query_params[:'status_code_class'] = opts[:'status_code_class'] if !opts[:'status_code_class'].nil?
978
1025
  query_params[:'channel'] = opts[:'channel'] if !opts[:'channel'].nil?
1026
+ query_params[:'tag'] = opts[:'tag'] if !opts[:'tag'].nil?
979
1027
  query_params[:'endpoint_id'] = opts[:'endpoint_id'] if !opts[:'endpoint_id'].nil?
980
1028
  query_params[:'before'] = opts[:'before'] if !opts[:'before'].nil?
981
1029
  query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
@@ -1025,6 +1073,7 @@ module Svix
1025
1073
  # @option opts [String] :iterator The iterator returned from a prior invocation
1026
1074
  # @option opts [String] :endpoint_id Filter the attempts based on the attempted endpoint
1027
1075
  # @option opts [String] :channel Filter response based on the channel
1076
+ # @option opts [String] :tag Filter response based on the tag
1028
1077
  # @option opts [MessageStatus] :status Filter response based on the delivery status
1029
1078
  # @option opts [Time] :before Only include items created before a certain date
1030
1079
  # @option opts [Time] :after Only include items created after a certain date
@@ -1045,6 +1094,7 @@ module Svix
1045
1094
  # @option opts [String] :iterator The iterator returned from a prior invocation
1046
1095
  # @option opts [String] :endpoint_id Filter the attempts based on the attempted endpoint
1047
1096
  # @option opts [String] :channel Filter response based on the channel
1097
+ # @option opts [String] :tag Filter response based on the tag
1048
1098
  # @option opts [MessageStatus] :status Filter response based on the delivery status
1049
1099
  # @option opts [Time] :before Only include items created before a certain date
1050
1100
  # @option opts [Time] :after Only include items created after a certain date
@@ -1119,6 +1169,15 @@ module Svix
1119
1169
  fail ArgumentError, "invalid value for 'opts[:\"channel\"]' when calling MessageAttemptApi.v1_message_attempt_list_by_msg_deprecated, must conform to the pattern #{pattern}."
1120
1170
  end
1121
1171
 
1172
+ if @api_client.config.client_side_validation && !opts[:'tag'].nil? && opts[:'tag'].to_s.length > 128
1173
+ fail ArgumentError, 'invalid value for "opts[:"tag"]" when calling MessageAttemptApi.v1_message_attempt_list_by_msg_deprecated, the character length must be smaller than or equal to 128.'
1174
+ end
1175
+
1176
+ pattern = Regexp.new(/^[a-zA-Z0-9\-_.]+$/)
1177
+ if @api_client.config.client_side_validation && !opts[:'tag'].nil? && opts[:'tag'] !~ pattern
1178
+ fail ArgumentError, "invalid value for 'opts[:\"tag\"]' when calling MessageAttemptApi.v1_message_attempt_list_by_msg_deprecated, must conform to the pattern #{pattern}."
1179
+ end
1180
+
1122
1181
  # resource path
1123
1182
  local_var_path = '/api/v1/app/{app_id}/msg/{msg_id}/attempt/'.sub('{' + 'app_id' + '}', CGI.escape(app_id.to_s)).sub('{' + 'msg_id' + '}', CGI.escape(msg_id.to_s))
1124
1183
 
@@ -1128,6 +1187,7 @@ module Svix
1128
1187
  query_params[:'iterator'] = opts[:'iterator'] if !opts[:'iterator'].nil?
1129
1188
  query_params[:'endpoint_id'] = opts[:'endpoint_id'] if !opts[:'endpoint_id'].nil?
1130
1189
  query_params[:'channel'] = opts[:'channel'] if !opts[:'channel'].nil?
1190
+ query_params[:'tag'] = opts[:'tag'] if !opts[:'tag'].nil?
1131
1191
  query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil?
1132
1192
  query_params[:'before'] = opts[:'before'] if !opts[:'before'].nil?
1133
1193
  query_params[:'after'] = opts[:'after'] if !opts[:'after'].nil?
@@ -150,6 +150,74 @@ module Svix
150
150
  return data, status_code, headers
151
151
  end
152
152
 
153
+ # Generate
154
+ # Use OpenAI's Completion API to generate code for a transformation template
155
+ # @param generate_in [GenerateIn]
156
+ # @param [Hash] opts the optional parameters
157
+ # @option opts [String] :idempotency_key The request&#39;s idempotency key
158
+ # @return [GenerateOut]
159
+ def v1_transformation_template_generate(generate_in, opts = {})
160
+ data, _status_code, _headers = v1_transformation_template_generate_with_http_info(generate_in, opts)
161
+ data
162
+ end
163
+
164
+ # Generate
165
+ # Use OpenAI&#39;s Completion API to generate code for a transformation template
166
+ # @param generate_in [GenerateIn]
167
+ # @param [Hash] opts the optional parameters
168
+ # @option opts [String] :idempotency_key The request&#39;s idempotency key
169
+ # @return [Array<(GenerateOut, Integer, Hash)>] GenerateOut data, response status code and response headers
170
+ def v1_transformation_template_generate_with_http_info(generate_in, opts = {})
171
+ if @api_client.config.debugging
172
+ @api_client.config.logger.debug 'Calling API: TransformationTemplateApi.v1_transformation_template_generate ...'
173
+ end
174
+ # verify the required parameter 'generate_in' is set
175
+ if @api_client.config.client_side_validation && generate_in.nil?
176
+ fail ArgumentError, "Missing the required parameter 'generate_in' when calling TransformationTemplateApi.v1_transformation_template_generate"
177
+ end
178
+ # resource path
179
+ local_var_path = '/api/v1/transformation-template/generate'
180
+
181
+ # query parameters
182
+ query_params = opts[:query_params] || {}
183
+
184
+ # header parameters
185
+ header_params = opts[:header_params] || {}
186
+ # HTTP header 'Accept' (if needed)
187
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
188
+ # HTTP header 'Content-Type'
189
+ header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
190
+ header_params[:'idempotency-key'] = opts[:'idempotency_key'] if !opts[:'idempotency_key'].nil?
191
+
192
+ # form parameters
193
+ form_params = opts[:form_params] || {}
194
+
195
+ # http body (model)
196
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(generate_in)
197
+
198
+ # return_type
199
+ return_type = opts[:debug_return_type] || 'GenerateOut'
200
+
201
+ # auth_names
202
+ auth_names = opts[:debug_auth_names] || ['HTTPBearer']
203
+
204
+ new_options = opts.merge(
205
+ :operation => :"TransformationTemplateApi.v1_transformation_template_generate",
206
+ :header_params => header_params,
207
+ :query_params => query_params,
208
+ :form_params => form_params,
209
+ :body => post_body,
210
+ :auth_names => auth_names,
211
+ :return_type => return_type
212
+ )
213
+
214
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
215
+ if @api_client.config.debugging
216
+ @api_client.config.logger.debug "API called: TransformationTemplateApi#v1_transformation_template_generate\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
217
+ end
218
+ return data, status_code, headers
219
+ end
220
+
153
221
  # Get Transformation Template
154
222
  # Get a transformation template
155
223
  # @param transformation_template_id [String]
@@ -0,0 +1,251 @@
1
+ =begin
2
+ #Svix API
3
+
4
+ #No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5
+
6
+ The version of the OpenAPI document: 1.1.1
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 5.2.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Svix
17
+ class CompletionChoice
18
+ attr_accessor :finish_reason
19
+
20
+ attr_accessor :index
21
+
22
+ attr_accessor :message
23
+
24
+ # Attribute mapping from ruby-style variable name to JSON key.
25
+ def self.attribute_map
26
+ {
27
+ :'finish_reason' => :'finish_reason',
28
+ :'index' => :'index',
29
+ :'message' => :'message'
30
+ }
31
+ end
32
+
33
+ # Returns all the JSON keys this model knows about
34
+ def self.acceptable_attributes
35
+ attribute_map.values
36
+ end
37
+
38
+ # Attribute type mapping.
39
+ def self.openapi_types
40
+ {
41
+ :'finish_reason' => :'String',
42
+ :'index' => :'Integer',
43
+ :'message' => :'CompletionMessage'
44
+ }
45
+ end
46
+
47
+ # List of attributes with nullable: true
48
+ def self.openapi_nullable
49
+ Set.new([
50
+ ])
51
+ end
52
+
53
+ # Initializes the object
54
+ # @param [Hash] attributes Model attributes in the form of hash
55
+ def initialize(attributes = {})
56
+ if (!attributes.is_a?(Hash))
57
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Svix::CompletionChoice` initialize method"
58
+ end
59
+
60
+ # check to see if the attribute exists and convert string to symbol for hash key
61
+ attributes = attributes.each_with_object({}) { |(k, v), h|
62
+ if (!self.class.attribute_map.key?(k.to_sym))
63
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Svix::CompletionChoice`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
64
+ end
65
+ h[k.to_sym] = v
66
+ }
67
+
68
+ if attributes.key?(:'finish_reason')
69
+ self.finish_reason = attributes[:'finish_reason']
70
+ end
71
+
72
+ if attributes.key?(:'index')
73
+ self.index = attributes[:'index']
74
+ end
75
+
76
+ if attributes.key?(:'message')
77
+ self.message = attributes[:'message']
78
+ end
79
+ end
80
+
81
+ # Show invalid properties with the reasons. Usually used together with valid?
82
+ # @return Array for valid properties with the reasons
83
+ def list_invalid_properties
84
+ invalid_properties = Array.new
85
+ if @finish_reason.nil?
86
+ invalid_properties.push('invalid value for "finish_reason", finish_reason cannot be nil.')
87
+ end
88
+
89
+ if @index.nil?
90
+ invalid_properties.push('invalid value for "index", index cannot be nil.')
91
+ end
92
+
93
+ if @message.nil?
94
+ invalid_properties.push('invalid value for "message", message cannot be nil.')
95
+ end
96
+
97
+ invalid_properties
98
+ end
99
+
100
+ # Check to see if the all the properties in the model are valid
101
+ # @return true if the model is valid
102
+ def valid?
103
+ return false if @finish_reason.nil?
104
+ return false if @index.nil?
105
+ return false if @message.nil?
106
+ true
107
+ end
108
+
109
+ # Checks equality by comparing each attribute.
110
+ # @param [Object] Object to be compared
111
+ def ==(o)
112
+ return true if self.equal?(o)
113
+ self.class == o.class &&
114
+ finish_reason == o.finish_reason &&
115
+ index == o.index &&
116
+ message == o.message
117
+ end
118
+
119
+ # @see the `==` method
120
+ # @param [Object] Object to be compared
121
+ def eql?(o)
122
+ self == o
123
+ end
124
+
125
+ # Calculates hash code according to all attributes.
126
+ # @return [Integer] Hash code
127
+ def hash
128
+ [finish_reason, index, message].hash
129
+ end
130
+
131
+ # Builds the object from hash
132
+ # @param [Hash] attributes Model attributes in the form of hash
133
+ # @return [Object] Returns the model itself
134
+ def self.build_from_hash(attributes)
135
+ new.build_from_hash(attributes)
136
+ end
137
+
138
+ # Builds the object from hash
139
+ # @param [Hash] attributes Model attributes in the form of hash
140
+ # @return [Object] Returns the model itself
141
+ def build_from_hash(attributes)
142
+ return nil unless attributes.is_a?(Hash)
143
+ self.class.openapi_types.each_pair do |key, type|
144
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
145
+ self.send("#{key}=", nil)
146
+ elsif type =~ /\AArray<(.*)>/i
147
+ # check to ensure the input is an array given that the attribute
148
+ # is documented as an array but the input is not
149
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
150
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
151
+ end
152
+ elsif !attributes[self.class.attribute_map[key]].nil?
153
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
154
+ end
155
+ end
156
+
157
+ self
158
+ end
159
+
160
+ # Deserializes the data based on type
161
+ # @param string type Data type
162
+ # @param string value Value to be deserialized
163
+ # @return [Object] Deserialized data
164
+ def _deserialize(type, value)
165
+ case type.to_sym
166
+ when :Time
167
+ Time.parse(value)
168
+ when :Date
169
+ Date.parse(value)
170
+ when :String
171
+ value.to_s
172
+ when :Integer
173
+ value.to_i
174
+ when :Float
175
+ value.to_f
176
+ when :Boolean
177
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
178
+ true
179
+ else
180
+ false
181
+ end
182
+ when :Object
183
+ # generic object (usually a Hash), return directly
184
+ value
185
+ when /\AArray<(?<inner_type>.+)>\z/
186
+ inner_type = Regexp.last_match[:inner_type]
187
+ value.map { |v| _deserialize(inner_type, v) }
188
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
189
+ k_type = Regexp.last_match[:k_type]
190
+ v_type = Regexp.last_match[:v_type]
191
+ {}.tap do |hash|
192
+ value.each do |k, v|
193
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
194
+ end
195
+ end
196
+ else # model
197
+ # models (e.g. Pet) or oneOf
198
+ klass = Svix.const_get(type)
199
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
200
+ end
201
+ end
202
+
203
+ # Returns the string representation of the object
204
+ # @return [String] String presentation of the object
205
+ def to_s
206
+ to_hash.to_s
207
+ end
208
+
209
+ # to_body is an alias to to_hash (backward compatibility)
210
+ # @return [Hash] Returns the object in the form of hash
211
+ def to_body
212
+ to_hash
213
+ end
214
+
215
+ # Returns the object in the form of hash
216
+ # @return [Hash] Returns the object in the form of hash
217
+ def to_hash
218
+ hash = {}
219
+ self.class.attribute_map.each_pair do |attr, param|
220
+ value = self.send(attr)
221
+ if value.nil?
222
+ is_nullable = self.class.openapi_nullable.include?(attr)
223
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
224
+ end
225
+
226
+ hash[param] = _to_hash(value)
227
+ end
228
+ hash
229
+ end
230
+
231
+ # Outputs non-array value in the form of hash
232
+ # For object, use to_hash. Otherwise, just return the value
233
+ # @param [Object] value Any valid value
234
+ # @return [Hash] Returns the value in the form of hash
235
+ def _to_hash(value)
236
+ if value.is_a?(Array)
237
+ value.compact.map { |v| _to_hash(v) }
238
+ elsif value.is_a?(Hash)
239
+ {}.tap do |hash|
240
+ value.each { |k, v| hash[k] = _to_hash(v) }
241
+ end
242
+ elsif value.respond_to? :to_hash
243
+ value.to_hash
244
+ else
245
+ value
246
+ end
247
+ end
248
+
249
+ end
250
+
251
+ end