snaptrade 2.0.95 → 2.0.96

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +91 -12
  4. data/lib/snaptrade/api/options_api.rb +2 -2
  5. data/lib/snaptrade/api/trading_api.rb +148 -8
  6. data/lib/snaptrade/models/manual_trade.rb +1 -1
  7. data/lib/snaptrade/models/manual_trade_form.rb +1 -1
  8. data/lib/snaptrade/models/manual_trade_form_bracket.rb +1 -1
  9. data/lib/snaptrade/models/manual_trade_form_with_options.rb +1 -1
  10. data/lib/snaptrade/models/manual_trade_replace_form.rb +1 -1
  11. data/lib/snaptrade/models/mleg_action_strict.rb +41 -0
  12. data/lib/snaptrade/models/mleg_leg.rb +251 -0
  13. data/lib/snaptrade/models/mleg_order_request_body_type.rb +39 -0
  14. data/lib/snaptrade/models/mleg_order_response.rb +238 -0
  15. data/lib/snaptrade/models/mleg_trading_instrument.rb +237 -0
  16. data/lib/snaptrade/models/mleg_trading_instrument_type.rb +37 -0
  17. data/lib/snaptrade/models/options_place_option_strategy_request.rb +1 -1
  18. data/lib/snaptrade/models/time_in_force_strict.rb +2 -1
  19. data/lib/snaptrade/models/trading_place_mleg_order_request.rb +275 -0
  20. data/lib/snaptrade/version.rb +1 -1
  21. data/lib/snaptrade.rb +7 -0
  22. data/spec/api/trading_api_spec.rb +15 -0
  23. data/spec/models/mleg_action_strict_spec.rb +23 -0
  24. data/spec/models/mleg_leg_spec.rb +41 -0
  25. data/spec/models/mleg_order_request_body_type_spec.rb +23 -0
  26. data/spec/models/mleg_order_response_spec.rb +35 -0
  27. data/spec/models/mleg_trading_instrument_spec.rb +35 -0
  28. data/spec/models/mleg_trading_instrument_type_spec.rb +23 -0
  29. data/spec/models/trading_place_mleg_order_request_spec.rb +53 -0
  30. metadata +23 -2
@@ -0,0 +1,237 @@
1
+ =begin
2
+ #SnapTrade
3
+
4
+ #Connect brokerage accounts to your app for live positions and trading
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: api@snaptrade.com
8
+ =end
9
+
10
+ require 'date'
11
+ require 'time'
12
+
13
+ module SnapTrade
14
+ class MlegTradingInstrument
15
+ # The security's trading ticker symbol. This currently supports stock symbols and Options symbols in the 21 character OCC format. For example \"AAPL 131124C00240000\" represents a call option on AAPL expiring on 2024-11-13 with a strike price of $240. For more information on the OCC format, see [here](https://en.wikipedia.org/wiki/Option_symbol#OCC_format)
16
+ attr_accessor :symbol
17
+
18
+ # The instrument's type
19
+ attr_accessor :type
20
+
21
+ # Attribute mapping from ruby-style variable name to JSON key.
22
+ def self.attribute_map
23
+ {
24
+ :'symbol' => :'symbol',
25
+ :'type' => :'type'
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.openapi_types
36
+ {
37
+ :'symbol' => :'String',
38
+ :'type' => :'MlegTradingInstrumentType'
39
+ }
40
+ end
41
+
42
+ # List of attributes with nullable: true
43
+ def self.openapi_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 `SnapTrade::MlegTradingInstrument` 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 `SnapTrade::MlegTradingInstrument`. 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?(:'symbol')
64
+ self.symbol = attributes[:'symbol']
65
+ end
66
+
67
+ if attributes.key?(:'type')
68
+ self.type = attributes[:'type']
69
+ end
70
+ end
71
+
72
+ # Show invalid properties with the reasons. Usually used together with valid?
73
+ # @return Array for valid properties with the reasons
74
+ def list_invalid_properties
75
+ invalid_properties = Array.new
76
+ if @symbol.nil?
77
+ invalid_properties.push('invalid value for "symbol", symbol cannot be nil.')
78
+ end
79
+
80
+ if @type.nil?
81
+ invalid_properties.push('invalid value for "type", type cannot be nil.')
82
+ end
83
+
84
+ invalid_properties
85
+ end
86
+
87
+ # Check to see if the all the properties in the model are valid
88
+ # @return true if the model is valid
89
+ def valid?
90
+ return false if @symbol.nil?
91
+ return false if @type.nil?
92
+ true
93
+ end
94
+
95
+ # Checks equality by comparing each attribute.
96
+ # @param [Object] Object to be compared
97
+ def ==(o)
98
+ return true if self.equal?(o)
99
+ self.class == o.class &&
100
+ symbol == o.symbol &&
101
+ type == o.type
102
+ end
103
+
104
+ # @see the `==` method
105
+ # @param [Object] Object to be compared
106
+ def eql?(o)
107
+ self == o
108
+ end
109
+
110
+ # Calculates hash code according to all attributes.
111
+ # @return [Integer] Hash code
112
+ def hash
113
+ [symbol, type].hash
114
+ end
115
+
116
+ # Builds the object from hash
117
+ # @param [Hash] attributes Model attributes in the form of hash
118
+ # @return [Object] Returns the model itself
119
+ def self.build_from_hash(attributes)
120
+ new.build_from_hash(attributes)
121
+ end
122
+
123
+ # Builds the object from hash
124
+ # @param [Hash] attributes Model attributes in the form of hash
125
+ # @return [Object] Returns the model itself
126
+ def build_from_hash(attributes)
127
+ return nil unless attributes.is_a?(Hash)
128
+ attributes = attributes.transform_keys(&:to_sym)
129
+ self.class.openapi_types.each_pair do |key, type|
130
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
131
+ self.send("#{key}=", nil)
132
+ elsif type =~ /\AArray<(.*)>/i
133
+ # check to ensure the input is an array given that the attribute
134
+ # is documented as an array but the input is not
135
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
136
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
137
+ end
138
+ elsif !attributes[self.class.attribute_map[key]].nil?
139
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
140
+ end
141
+ end
142
+
143
+ self
144
+ end
145
+
146
+ # Deserializes the data based on type
147
+ # @param string type Data type
148
+ # @param string value Value to be deserialized
149
+ # @return [Object] Deserialized data
150
+ def _deserialize(type, value)
151
+ case type.to_sym
152
+ when :Time
153
+ Time.parse(value)
154
+ when :Date
155
+ Date.parse(value)
156
+ when :String
157
+ value.to_s
158
+ when :Integer
159
+ value.to_i
160
+ when :Float
161
+ value.to_f
162
+ when :Boolean
163
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
164
+ true
165
+ else
166
+ false
167
+ end
168
+ when :Object
169
+ # generic object (usually a Hash), return directly
170
+ value
171
+ when /\AArray<(?<inner_type>.+)>\z/
172
+ inner_type = Regexp.last_match[:inner_type]
173
+ value.map { |v| _deserialize(inner_type, v) }
174
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
175
+ k_type = Regexp.last_match[:k_type]
176
+ v_type = Regexp.last_match[:v_type]
177
+ {}.tap do |hash|
178
+ value.each do |k, v|
179
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
180
+ end
181
+ end
182
+ else # model
183
+ # models (e.g. Pet) or oneOf
184
+ klass = SnapTrade.const_get(type)
185
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
186
+ end
187
+ end
188
+
189
+ # Returns the string representation of the object
190
+ # @return [String] String presentation of the object
191
+ def to_s
192
+ to_hash.to_s
193
+ end
194
+
195
+ # to_body is an alias to to_hash (backward compatibility)
196
+ # @return [Hash] Returns the object in the form of hash
197
+ def to_body
198
+ to_hash
199
+ end
200
+
201
+ # Returns the object in the form of hash
202
+ # @return [Hash] Returns the object in the form of hash
203
+ def to_hash
204
+ hash = {}
205
+ self.class.attribute_map.each_pair do |attr, param|
206
+ value = self.send(attr)
207
+ if value.nil?
208
+ is_nullable = self.class.openapi_nullable.include?(attr)
209
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
210
+ end
211
+
212
+ hash[param] = _to_hash(value)
213
+ end
214
+ hash
215
+ end
216
+
217
+ # Outputs non-array value in the form of hash
218
+ # For object, use to_hash. Otherwise, just return the value
219
+ # @param [Object] value Any valid value
220
+ # @return [Hash] Returns the value in the form of hash
221
+ def _to_hash(value)
222
+ if value.is_a?(Array)
223
+ value.compact.map { |v| _to_hash(v) }
224
+ elsif value.is_a?(Hash)
225
+ {}.tap do |hash|
226
+ value.each { |k, v| hash[k] = _to_hash(v) }
227
+ end
228
+ elsif value.respond_to? :to_hash
229
+ value.to_hash
230
+ else
231
+ value
232
+ end
233
+ end
234
+
235
+ end
236
+
237
+ end
@@ -0,0 +1,37 @@
1
+ =begin
2
+ #SnapTrade
3
+
4
+ #Connect brokerage accounts to your app for live positions and trading
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: api@snaptrade.com
8
+ =end
9
+
10
+ require 'date'
11
+ require 'time'
12
+
13
+ module SnapTrade
14
+ class MlegTradingInstrumentType
15
+ OPTION = "OPTION".freeze
16
+ EQUITY = "EQUITY".freeze
17
+
18
+ def self.all_vars
19
+ @all_vars ||= [OPTION, EQUITY].freeze
20
+ end
21
+
22
+ # Builds the enum from string
23
+ # @param [String] The enum value in the form of the string
24
+ # @return [String] The enum value
25
+ def self.build_from_hash(value)
26
+ new.build_from_hash(value)
27
+ end
28
+
29
+ # Builds the enum from string
30
+ # @param [String] The enum value in the form of the string
31
+ # @return [String] The enum value
32
+ def build_from_hash(value)
33
+ return value if MlegTradingInstrumentType.all_vars.include?(value)
34
+ raise "Invalid ENUM value #{value} for class #MlegTradingInstrumentType"
35
+ end
36
+ end
37
+ end
@@ -15,7 +15,7 @@ module SnapTrade
15
15
  # The type of order to place. - For `Limit` and `StopLimit` orders, the `price` field is required. - For `Stop` and `StopLimit` orders, the `stop` field is required.
16
16
  attr_accessor :order_type
17
17
 
18
- # The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - `Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely.
18
+ # The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - `Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.
19
19
  attr_accessor :time_in_force
20
20
 
21
21
  # Trade Price if limit or stop limit order
@@ -15,9 +15,10 @@ module SnapTrade
15
15
  FOK = "FOK".freeze
16
16
  DAY = "Day".freeze
17
17
  GTC = "GTC".freeze
18
+ IOC = "IOC".freeze
18
19
 
19
20
  def self.all_vars
20
- @all_vars ||= [FOK, DAY, GTC].freeze
21
+ @all_vars ||= [FOK, DAY, GTC, IOC].freeze
21
22
  end
22
23
 
23
24
  # Builds the enum from string
@@ -0,0 +1,275 @@
1
+ =begin
2
+ #SnapTrade
3
+
4
+ #Connect brokerage accounts to your app for live positions and trading
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: api@snaptrade.com
8
+ =end
9
+
10
+ require 'date'
11
+ require 'time'
12
+
13
+ module SnapTrade
14
+ class TradingPlaceMlegOrderRequest
15
+ # The type of order to place.
16
+ attr_accessor :type
17
+
18
+ # The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - `Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.
19
+ attr_accessor :time_in_force
20
+
21
+ # The limit price. Required if the order type is LIMIT, STOP_LOSS_LIMIT.
22
+ attr_accessor :limit_price
23
+
24
+ # The stop price. Required if the order type is STOP_LOSS_MARKET, STOP_LOSS_LIMIT.
25
+ attr_accessor :stop_price
26
+
27
+ attr_accessor :legs
28
+
29
+ # Attribute mapping from ruby-style variable name to JSON key.
30
+ def self.attribute_map
31
+ {
32
+ :'type' => :'type',
33
+ :'time_in_force' => :'time_in_force',
34
+ :'limit_price' => :'limit_price',
35
+ :'stop_price' => :'stop_price',
36
+ :'legs' => :'legs'
37
+ }
38
+ end
39
+
40
+ # Returns all the JSON keys this model knows about
41
+ def self.acceptable_attributes
42
+ attribute_map.values
43
+ end
44
+
45
+ # Attribute type mapping.
46
+ def self.openapi_types
47
+ {
48
+ :'type' => :'MlegOrderRequestBodyType',
49
+ :'time_in_force' => :'TimeInForceStrict',
50
+ :'limit_price' => :'Float',
51
+ :'stop_price' => :'Float',
52
+ :'legs' => :'Array<MlegLeg>'
53
+ }
54
+ end
55
+
56
+ # List of attributes with nullable: true
57
+ def self.openapi_nullable
58
+ Set.new([
59
+ :'limit_price',
60
+ :'stop_price',
61
+ ])
62
+ end
63
+
64
+ # Initializes the object
65
+ # @param [Hash] attributes Model attributes in the form of hash
66
+ def initialize(attributes = {})
67
+ if (!attributes.is_a?(Hash))
68
+ fail ArgumentError, "The input argument (attributes) must be a hash in `SnapTrade::TradingPlaceMlegOrderRequest` initialize method"
69
+ end
70
+
71
+ # check to see if the attribute exists and convert string to symbol for hash key
72
+ attributes = attributes.each_with_object({}) { |(k, v), h|
73
+ if (!self.class.attribute_map.key?(k.to_sym))
74
+ fail ArgumentError, "`#{k}` is not a valid attribute in `SnapTrade::TradingPlaceMlegOrderRequest`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
75
+ end
76
+ h[k.to_sym] = v
77
+ }
78
+
79
+ if attributes.key?(:'type')
80
+ self.type = attributes[:'type']
81
+ end
82
+
83
+ if attributes.key?(:'time_in_force')
84
+ self.time_in_force = attributes[:'time_in_force']
85
+ end
86
+
87
+ if attributes.key?(:'limit_price')
88
+ self.limit_price = attributes[:'limit_price']
89
+ end
90
+
91
+ if attributes.key?(:'stop_price')
92
+ self.stop_price = attributes[:'stop_price']
93
+ end
94
+
95
+ if attributes.key?(:'legs')
96
+ if (value = attributes[:'legs']).is_a?(Array)
97
+ self.legs = value
98
+ end
99
+ end
100
+ end
101
+
102
+ # Show invalid properties with the reasons. Usually used together with valid?
103
+ # @return Array for valid properties with the reasons
104
+ def list_invalid_properties
105
+ invalid_properties = Array.new
106
+ if @type.nil?
107
+ invalid_properties.push('invalid value for "type", type cannot be nil.')
108
+ end
109
+
110
+ if @time_in_force.nil?
111
+ invalid_properties.push('invalid value for "time_in_force", time_in_force cannot be nil.')
112
+ end
113
+
114
+ if @legs.nil?
115
+ invalid_properties.push('invalid value for "legs", legs cannot be nil.')
116
+ end
117
+
118
+ invalid_properties
119
+ end
120
+
121
+ # Check to see if the all the properties in the model are valid
122
+ # @return true if the model is valid
123
+ def valid?
124
+ return false if @type.nil?
125
+ return false if @time_in_force.nil?
126
+ return false if @legs.nil?
127
+ true
128
+ end
129
+
130
+ # Checks equality by comparing each attribute.
131
+ # @param [Object] Object to be compared
132
+ def ==(o)
133
+ return true if self.equal?(o)
134
+ self.class == o.class &&
135
+ type == o.type &&
136
+ time_in_force == o.time_in_force &&
137
+ limit_price == o.limit_price &&
138
+ stop_price == o.stop_price &&
139
+ legs == o.legs
140
+ end
141
+
142
+ # @see the `==` method
143
+ # @param [Object] Object to be compared
144
+ def eql?(o)
145
+ self == o
146
+ end
147
+
148
+ # Calculates hash code according to all attributes.
149
+ # @return [Integer] Hash code
150
+ def hash
151
+ [type, time_in_force, limit_price, stop_price, legs].hash
152
+ end
153
+
154
+ # Builds the object from hash
155
+ # @param [Hash] attributes Model attributes in the form of hash
156
+ # @return [Object] Returns the model itself
157
+ def self.build_from_hash(attributes)
158
+ new.build_from_hash(attributes)
159
+ end
160
+
161
+ # Builds the object from hash
162
+ # @param [Hash] attributes Model attributes in the form of hash
163
+ # @return [Object] Returns the model itself
164
+ def build_from_hash(attributes)
165
+ return nil unless attributes.is_a?(Hash)
166
+ attributes = attributes.transform_keys(&:to_sym)
167
+ self.class.openapi_types.each_pair do |key, type|
168
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
169
+ self.send("#{key}=", nil)
170
+ elsif type =~ /\AArray<(.*)>/i
171
+ # check to ensure the input is an array given that the attribute
172
+ # is documented as an array but the input is not
173
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
174
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
175
+ end
176
+ elsif !attributes[self.class.attribute_map[key]].nil?
177
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
178
+ end
179
+ end
180
+
181
+ self
182
+ end
183
+
184
+ # Deserializes the data based on type
185
+ # @param string type Data type
186
+ # @param string value Value to be deserialized
187
+ # @return [Object] Deserialized data
188
+ def _deserialize(type, value)
189
+ case type.to_sym
190
+ when :Time
191
+ Time.parse(value)
192
+ when :Date
193
+ Date.parse(value)
194
+ when :String
195
+ value.to_s
196
+ when :Integer
197
+ value.to_i
198
+ when :Float
199
+ value.to_f
200
+ when :Boolean
201
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
202
+ true
203
+ else
204
+ false
205
+ end
206
+ when :Object
207
+ # generic object (usually a Hash), return directly
208
+ value
209
+ when /\AArray<(?<inner_type>.+)>\z/
210
+ inner_type = Regexp.last_match[:inner_type]
211
+ value.map { |v| _deserialize(inner_type, v) }
212
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
213
+ k_type = Regexp.last_match[:k_type]
214
+ v_type = Regexp.last_match[:v_type]
215
+ {}.tap do |hash|
216
+ value.each do |k, v|
217
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
218
+ end
219
+ end
220
+ else # model
221
+ # models (e.g. Pet) or oneOf
222
+ klass = SnapTrade.const_get(type)
223
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
224
+ end
225
+ end
226
+
227
+ # Returns the string representation of the object
228
+ # @return [String] String presentation of the object
229
+ def to_s
230
+ to_hash.to_s
231
+ end
232
+
233
+ # to_body is an alias to to_hash (backward compatibility)
234
+ # @return [Hash] Returns the object in the form of hash
235
+ def to_body
236
+ to_hash
237
+ end
238
+
239
+ # Returns the object in the form of hash
240
+ # @return [Hash] Returns the object in the form of hash
241
+ def to_hash
242
+ hash = {}
243
+ self.class.attribute_map.each_pair do |attr, param|
244
+ value = self.send(attr)
245
+ if value.nil?
246
+ is_nullable = self.class.openapi_nullable.include?(attr)
247
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
248
+ end
249
+
250
+ hash[param] = _to_hash(value)
251
+ end
252
+ hash
253
+ end
254
+
255
+ # Outputs non-array value in the form of hash
256
+ # For object, use to_hash. Otherwise, just return the value
257
+ # @param [Object] value Any valid value
258
+ # @return [Hash] Returns the value in the form of hash
259
+ def _to_hash(value)
260
+ if value.is_a?(Array)
261
+ value.compact.map { |v| _to_hash(v) }
262
+ elsif value.is_a?(Hash)
263
+ {}.tap do |hash|
264
+ value.each { |k, v| hash[k] = _to_hash(v) }
265
+ end
266
+ elsif value.respond_to? :to_hash
267
+ value.to_hash
268
+ else
269
+ value
270
+ end
271
+ end
272
+
273
+ end
274
+
275
+ end
@@ -8,5 +8,5 @@ Contact: api@snaptrade.com
8
8
  =end
9
9
 
10
10
  module SnapTrade
11
- VERSION = '2.0.95'
11
+ VERSION = '2.0.96'
12
12
  end
data/lib/snaptrade.rb CHANGED
@@ -74,6 +74,12 @@ require 'snaptrade/models/manual_trade_form_with_options'
74
74
  require 'snaptrade/models/manual_trade_impact'
75
75
  require 'snaptrade/models/manual_trade_replace_form'
76
76
  require 'snaptrade/models/manual_trade_symbol'
77
+ require 'snaptrade/models/mleg_action_strict'
78
+ require 'snaptrade/models/mleg_leg'
79
+ require 'snaptrade/models/mleg_order_request_body_type'
80
+ require 'snaptrade/models/mleg_order_response'
81
+ require 'snaptrade/models/mleg_trading_instrument'
82
+ require 'snaptrade/models/mleg_trading_instrument_type'
77
83
  require 'snaptrade/models/model400_failed_request_response'
78
84
  require 'snaptrade/models/model401_failed_request_response'
79
85
  require 'snaptrade/models/model402_brokerage_auth_already_disabled_exception'
@@ -143,6 +149,7 @@ require 'snaptrade/models/timeframe'
143
149
  require 'snaptrade/models/trading_cancel_user_account_order_request'
144
150
  require 'snaptrade/models/trading_instrument'
145
151
  require 'snaptrade/models/trading_instrument_type'
152
+ require 'snaptrade/models/trading_place_mleg_order_request'
146
153
  require 'snaptrade/models/trading_place_simple_order_request'
147
154
  require 'snaptrade/models/trading_search_cryptocurrency_pair_instruments200_response'
148
155
  require 'snaptrade/models/transactions_status'
@@ -131,6 +131,21 @@ describe 'TradingApi' do
131
131
  end
132
132
  end
133
133
 
134
+ # unit tests for place_mleg_order
135
+ # Place multi-leg option order
136
+ # Places a multi-leg option order. Only supported on certain option trading brokerages. https://snaptrade.notion.site/brokerages has information on brokerage trading support
137
+ # @param user_id
138
+ # @param user_secret
139
+ # @param account_id
140
+ # @param trading_place_mleg_order_request
141
+ # @param [Hash] opts the optional parameters
142
+ # @return [MlegOrderResponse]
143
+ describe 'place_mleg_order test' do
144
+ it 'should work' do
145
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
146
+ end
147
+ end
148
+
134
149
  # unit tests for place_order
135
150
  # Place checked order
136
151
  # Places the previously checked order with the brokerage. The &#x60;tradeId&#x60; is obtained from the [check order impact endpoint](/reference/Trading/Trading_getOrderImpact). If you prefer to place the order without checking for impact first, you can use the [place order endpoint](/reference/Trading/Trading_placeForceOrder). It&#39;s recommended to trigger a manual refresh of the account after placing an order to ensure the account is up to date. You can use the [manual refresh](/reference/Connections/Connections_refreshBrokerageAuthorization) endpoint for this.
@@ -0,0 +1,23 @@
1
+ =begin
2
+ #SnapTrade
3
+
4
+ #Connect brokerage accounts to your app for live positions and trading
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: api@snaptrade.com
8
+ =end
9
+
10
+ require 'spec_helper'
11
+ require 'json'
12
+ require 'date'
13
+
14
+ # Unit tests for SnapTrade::MlegActionStrict
15
+ describe SnapTrade::MlegActionStrict do
16
+ let(:instance) { SnapTrade::MlegActionStrict.new }
17
+
18
+ describe 'test an instance of MlegActionStrict' do
19
+ it 'should create an instance of MlegActionStrict' do
20
+ expect(instance).to be_instance_of(SnapTrade::MlegActionStrict)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,41 @@
1
+ =begin
2
+ #SnapTrade
3
+
4
+ #Connect brokerage accounts to your app for live positions and trading
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: api@snaptrade.com
8
+ =end
9
+
10
+ require 'spec_helper'
11
+ require 'json'
12
+ require 'date'
13
+
14
+ # Unit tests for SnapTrade::MlegLeg
15
+ describe SnapTrade::MlegLeg do
16
+ let(:instance) { SnapTrade::MlegLeg.new }
17
+
18
+ describe 'test an instance of MlegLeg' do
19
+ it 'should create an instance of MlegLeg' do
20
+ expect(instance).to be_instance_of(SnapTrade::MlegLeg)
21
+ end
22
+ end
23
+ describe 'test attribute "instrument"' do
24
+ it 'should work' do
25
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
26
+ end
27
+ end
28
+
29
+ describe 'test attribute "action"' do
30
+ it 'should work' do
31
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
32
+ end
33
+ end
34
+
35
+ describe 'test attribute "units"' do
36
+ it 'should work' do
37
+ # assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
38
+ end
39
+ end
40
+
41
+ end