flowcommerce 0.1.20 → 0.1.21

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  # Generated by apidoc - http://www.apidoc.me
2
2
  # Service version: 0.2.65
3
- # apidoc:0.11.74 http://www.apidoc.me/flow/api/0.2.76/ruby_client
3
+ # apidoc:0.11.74 http://www.apidoc.me/flow/api/0.2.77/ruby_client
4
4
 
5
5
  require 'cgi'
6
6
  require 'net/http'
@@ -25,7 +25,7 @@ module Io
25
25
 
26
26
  BASE_URL = 'https://api.flow.io' unless defined?(Constants::BASE_URL)
27
27
  NAMESPACE = 'io.flow.v0' unless defined?(Constants::NAMESPACE)
28
- USER_AGENT = 'apidoc:0.11.74 http://www.apidoc.me/flow/api/0.2.76/ruby_client' unless defined?(Constants::USER_AGENT)
28
+ USER_AGENT = 'apidoc:0.11.74 http://www.apidoc.me/flow/api/0.2.77/ruby_client' unless defined?(Constants::USER_AGENT)
29
29
  VERSION = '0.2.65' unless defined?(Constants::VERSION)
30
30
  VERSION_MAJOR = 0 unless defined?(VERSION_MAJOR)
31
31
 
@@ -548,44 +548,9 @@ module Io
548
548
  ::Io::Flow::V0::Models::Experience.new(r)
549
549
  end
550
550
 
551
- # Returns information about a specific experience.
552
- def get_by_key(organization, key)
553
- HttpClient::Preconditions.assert_class('organization', organization, String)
554
- HttpClient::Preconditions.assert_class('key', key, String)
555
- r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}").get
556
- ::Io::Flow::V0::Models::Experience.new(r)
557
- end
558
-
559
- # Update experience with the specified key, creating if it does not exist.
560
- def put_by_key(organization, key, experience_form)
561
- HttpClient::Preconditions.assert_class('organization', organization, String)
562
- HttpClient::Preconditions.assert_class('key', key, String)
563
- HttpClient::Preconditions.assert_class('experience_form', experience_form, ::Io::Flow::V0::Models::ExperienceForm)
564
- r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}").with_json(experience_form.to_json).put
565
- ::Io::Flow::V0::Models::Experience.new(r)
566
- end
567
-
568
- # Delete the experience with this key
569
- def delete_by_key(organization, key)
570
- HttpClient::Preconditions.assert_class('organization', organization, String)
571
- HttpClient::Preconditions.assert_class('key', key, String)
572
- r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}").delete
573
- nil
574
- end
575
-
576
- # Returns detailed information on the pricing of this item within this
577
- # experience
578
- def get_items_and_price_by_key_and_number(organization, key, number)
551
+ def get_margins_by_experience_key(organization, experience_key, incoming={})
579
552
  HttpClient::Preconditions.assert_class('organization', organization, String)
580
- HttpClient::Preconditions.assert_class('key', key, String)
581
- HttpClient::Preconditions.assert_class('number', number, String)
582
- r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}/items/#{CGI.escape(number)}/price").get
583
- ::Io::Flow::V0::Models::PriceCheck.new(r)
584
- end
585
-
586
- def get_margins_by_key(organization, key, incoming={})
587
- HttpClient::Preconditions.assert_class('organization', organization, String)
588
- HttpClient::Preconditions.assert_class('key', key, String)
553
+ HttpClient::Preconditions.assert_class('experience_key', experience_key, String)
589
554
  opts = HttpClient::Helper.symbolize_keys(incoming)
590
555
  query = {
591
556
  :id => (x = opts.delete(:id); x.nil? ? nil : HttpClient::Preconditions.assert_class('id', x, Array).map { |v| HttpClient::Preconditions.assert_class('id', v, String) }),
@@ -593,54 +558,46 @@ module Io
593
558
  :offset => HttpClient::Preconditions.assert_class('offset', (x = opts.delete(:offset); x.nil? ? 0 : x), Integer),
594
559
  :sort => HttpClient::Preconditions.assert_class('sort', (x = opts.delete(:sort); x.nil? ? "name" : x), String)
595
560
  }.delete_if { |k, v| v.nil? }
596
- r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}/margins").with_query(query).get
561
+ r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(experience_key)}/margins").with_query(query).get
597
562
  r.map { |x| ::Io::Flow::V0::Models::ItemMargin.new(x) }
598
563
  end
599
564
 
600
- def post_margins_by_key(organization, key, item_margin_form)
565
+ def post_margins_by_experience_key(organization, experience_key, item_margin_post_form)
601
566
  HttpClient::Preconditions.assert_class('organization', organization, String)
602
- HttpClient::Preconditions.assert_class('key', key, String)
603
- HttpClient::Preconditions.assert_class('item_margin_form', item_margin_form, ::Io::Flow::V0::Models::ItemMarginForm)
604
- r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}/margins").with_json(item_margin_form.to_json).post
567
+ HttpClient::Preconditions.assert_class('experience_key', experience_key, String)
568
+ HttpClient::Preconditions.assert_class('item_margin_post_form', item_margin_post_form, ::Io::Flow::V0::Models::ItemMarginPostForm)
569
+ r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(experience_key)}/margins").with_json(item_margin_post_form.to_json).post
605
570
  ::Io::Flow::V0::Models::ItemMargin.new(r)
606
571
  end
607
572
 
608
- def put_margins_by_key(organization, key, item_margins)
573
+ def get_margins_by_experience_key_and_key(organization, experience_key, key)
609
574
  HttpClient::Preconditions.assert_class('organization', organization, String)
575
+ HttpClient::Preconditions.assert_class('experience_key', experience_key, String)
610
576
  HttpClient::Preconditions.assert_class('key', key, String)
611
- HttpClient::Preconditions.assert_collection_of_class('item_margins', item_margins, ::Io::Flow::V0::Models::ItemMargin)
612
- r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}/margins").with_json(item_margins.map { |o| o.to_hash }.to_json).put
613
- r.map { |x| ::Io::Flow::V0::Models::ItemMargin.new(x) }
614
- end
615
-
616
- def get_margins_by_key_and_id(organization, key, id)
617
- HttpClient::Preconditions.assert_class('organization', organization, String)
618
- HttpClient::Preconditions.assert_class('key', key, String)
619
- HttpClient::Preconditions.assert_class('id', id, String)
620
- r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}/margins/#{CGI.escape(id)}").get
577
+ r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(experience_key)}/margins/#{CGI.escape(key)}").get
621
578
  ::Io::Flow::V0::Models::ItemMargin.new(r)
622
579
  end
623
580
 
624
- def put_margins_by_key_and_id(organization, key, id, item_margin_form)
581
+ def put_margins_by_experience_key_and_key(organization, experience_key, key, item_margin_put_form)
625
582
  HttpClient::Preconditions.assert_class('organization', organization, String)
583
+ HttpClient::Preconditions.assert_class('experience_key', experience_key, String)
626
584
  HttpClient::Preconditions.assert_class('key', key, String)
627
- HttpClient::Preconditions.assert_class('id', id, String)
628
- HttpClient::Preconditions.assert_class('item_margin_form', item_margin_form, ::Io::Flow::V0::Models::ItemMarginForm)
629
- r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}/margins/#{CGI.escape(id)}").with_json(item_margin_form.to_json).put
585
+ HttpClient::Preconditions.assert_class('item_margin_put_form', item_margin_put_form, ::Io::Flow::V0::Models::ItemMarginPutForm)
586
+ r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(experience_key)}/margins/#{CGI.escape(key)}").with_json(item_margin_put_form.to_json).put
630
587
  ::Io::Flow::V0::Models::ItemMargin.new(r)
631
588
  end
632
589
 
633
- def delete_margins_by_key_and_id(organization, key, id)
590
+ def delete_margins_by_experience_key_and_key(organization, experience_key, key)
634
591
  HttpClient::Preconditions.assert_class('organization', organization, String)
592
+ HttpClient::Preconditions.assert_class('experience_key', experience_key, String)
635
593
  HttpClient::Preconditions.assert_class('key', key, String)
636
- HttpClient::Preconditions.assert_class('id', id, String)
637
- r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}/margins/#{CGI.escape(id)}").delete
594
+ r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(experience_key)}/margins/#{CGI.escape(key)}").delete
638
595
  nil
639
596
  end
640
597
 
641
- def get_margins_and_versions_by_key(organization, key, incoming={})
598
+ def get_margins_and_versions_by_experience_key(organization, experience_key, incoming={})
642
599
  HttpClient::Preconditions.assert_class('organization', organization, String)
643
- HttpClient::Preconditions.assert_class('key', key, String)
600
+ HttpClient::Preconditions.assert_class('experience_key', experience_key, String)
644
601
  opts = HttpClient::Helper.symbolize_keys(incoming)
645
602
  query = {
646
603
  :id => (x = opts.delete(:id); x.nil? ? nil : HttpClient::Preconditions.assert_class('id', x, Array).map { |v| HttpClient::Preconditions.assert_class('id', v, String) }),
@@ -648,10 +605,45 @@ module Io
648
605
  :offset => HttpClient::Preconditions.assert_class('offset', (x = opts.delete(:offset); x.nil? ? 0 : x), Integer),
649
606
  :sort => HttpClient::Preconditions.assert_class('sort', (x = opts.delete(:sort); x.nil? ? "journal_timestamp" : x), String)
650
607
  }.delete_if { |k, v| v.nil? }
651
- r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}/margins/versions").with_query(query).get
608
+ r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(experience_key)}/margins/versions").with_query(query).get
652
609
  r.map { |x| ::Io::Flow::V0::Models::ItemMarginVersion.new(x) }
653
610
  end
654
611
 
612
+ # Returns information about a specific experience.
613
+ def get_by_key(organization, key)
614
+ HttpClient::Preconditions.assert_class('organization', organization, String)
615
+ HttpClient::Preconditions.assert_class('key', key, String)
616
+ r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}").get
617
+ ::Io::Flow::V0::Models::Experience.new(r)
618
+ end
619
+
620
+ # Update experience with the specified key, creating if it does not exist.
621
+ def put_by_key(organization, key, experience_form)
622
+ HttpClient::Preconditions.assert_class('organization', organization, String)
623
+ HttpClient::Preconditions.assert_class('key', key, String)
624
+ HttpClient::Preconditions.assert_class('experience_form', experience_form, ::Io::Flow::V0::Models::ExperienceForm)
625
+ r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}").with_json(experience_form.to_json).put
626
+ ::Io::Flow::V0::Models::Experience.new(r)
627
+ end
628
+
629
+ # Delete the experience with this key
630
+ def delete_by_key(organization, key)
631
+ HttpClient::Preconditions.assert_class('organization', organization, String)
632
+ HttpClient::Preconditions.assert_class('key', key, String)
633
+ r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}").delete
634
+ nil
635
+ end
636
+
637
+ # Returns detailed information on the pricing of this item within this
638
+ # experience
639
+ def get_items_and_price_by_key_and_number(organization, key, number)
640
+ HttpClient::Preconditions.assert_class('organization', organization, String)
641
+ HttpClient::Preconditions.assert_class('key', key, String)
642
+ HttpClient::Preconditions.assert_class('number', number, String)
643
+ r = @client.request("/#{CGI.escape(organization)}/experiences/#{CGI.escape(key)}/items/#{CGI.escape(number)}/price").get
644
+ ::Io::Flow::V0::Models::PriceCheck.new(r)
645
+ end
646
+
655
647
  # Get the pricing settings for this experience
656
648
  def get_pricing_by_key(organization, key)
657
649
  HttpClient::Preconditions.assert_class('organization', organization, String)
@@ -1029,6 +1021,14 @@ module Io
1029
1021
  ::Io::Flow::V0::Models::OrderIdentifier.new(r)
1030
1022
  end
1031
1023
 
1024
+ def put_by_number(organization, number, order_identifier_put_form)
1025
+ HttpClient::Preconditions.assert_class('organization', organization, String)
1026
+ HttpClient::Preconditions.assert_class('number', number, String)
1027
+ HttpClient::Preconditions.assert_class('order_identifier_put_form', order_identifier_put_form, ::Io::Flow::V0::Models::OrderIdentifierPutForm)
1028
+ r = @client.request("/#{CGI.escape(organization)}/order-identifiers/#{CGI.escape(number)}").with_json(order_identifier_put_form.to_json).put
1029
+ ::Io::Flow::V0::Models::OrderIdentifier.new(r)
1030
+ end
1031
+
1032
1032
  def delete_by_number(organization, number)
1033
1033
  HttpClient::Preconditions.assert_class('organization', organization, String)
1034
1034
  HttpClient::Preconditions.assert_class('number', number, String)
@@ -4241,6 +4241,66 @@ module Io
4241
4241
 
4242
4242
  end
4243
4243
 
4244
+ class AvailablePromotion
4245
+
4246
+ module Types
4247
+ FREE_SHIPPING = 'free_shipping' unless defined?(FREE_SHIPPING)
4248
+ end
4249
+
4250
+ attr_reader :discriminator
4251
+
4252
+ def initialize(incoming={})
4253
+ opts = HttpClient::Helper.symbolize_keys(incoming)
4254
+ HttpClient::Preconditions.require_keys(opts, [:discriminator], 'AvailablePromotion')
4255
+ @discriminator = HttpClient::Preconditions.assert_class('discriminator', opts.delete(:discriminator), String)
4256
+ end
4257
+
4258
+ def subtype_to_hash
4259
+ raise 'Cannot serialize an instance of available_promotion directly - must use one of the specific types: free_shipping'
4260
+ end
4261
+
4262
+ def to_hash
4263
+ subtype_to_hash.merge(:discriminator => @discriminator)
4264
+ end
4265
+
4266
+ def AvailablePromotion.from_json(hash)
4267
+ HttpClient::Preconditions.assert_class('hash', hash, Hash)
4268
+ discriminator = HttpClient::Helper.symbolize_keys(hash)[:discriminator].to_s.strip
4269
+ if discriminator.empty?
4270
+ raise "Union type[available_promotion] requires a field named 'discriminator'"
4271
+ end
4272
+ case discriminator
4273
+ when Types::FREE_SHIPPING; FreeShipping.new(hash)
4274
+ else AvailablePromotionUndefinedType.new(:discriminator => discriminator)
4275
+ end
4276
+ end
4277
+
4278
+ end
4279
+
4280
+ class AvailablePromotionUndefinedType < AvailablePromotion
4281
+
4282
+ attr_reader :name
4283
+
4284
+ def initialize(incoming={})
4285
+ super(:discriminator => 'undefined_type')
4286
+ opts = HttpClient::Helper.symbolize_keys(incoming)
4287
+ @name = HttpClient::Preconditions.assert_class('name', opts.delete(:discriminator), String)
4288
+ end
4289
+
4290
+ def subtype_to_hash
4291
+ raise 'Unable to serialize undefined type to json'
4292
+ end
4293
+
4294
+ def copy(incoming={})
4295
+ raise 'Operation not supported for undefined type'
4296
+ end
4297
+
4298
+ def to_hash
4299
+ raise 'Operation not supported for undefined type'
4300
+ end
4301
+
4302
+ end
4303
+
4244
4304
  # De Minimis describes the country specific rules for exactly how tax and duties
4245
4305
  # are calculated, as well as any exemptions that apply. See
4246
4306
  # https://en.wikipedia.org/wiki/De_minimis for more information.
@@ -4395,6 +4455,8 @@ module Io
4395
4455
  ORDER_IDENTIFIER_UPSERTED = 'order_identifier_upserted' unless defined?(ORDER_IDENTIFIER_UPSERTED)
4396
4456
  PRICING_DELETED = 'pricing_deleted' unless defined?(PRICING_DELETED)
4397
4457
  PRICING_UPSERTED = 'pricing_upserted' unless defined?(PRICING_UPSERTED)
4458
+ TIER_UPSERTED = 'tier_upserted' unless defined?(TIER_UPSERTED)
4459
+ TIER_DELETED = 'tier_deleted' unless defined?(TIER_DELETED)
4398
4460
  HS6_CODE_UPSERTED = 'hs6_code_upserted' unless defined?(HS6_CODE_UPSERTED)
4399
4461
  HS6_CODE_DELETED = 'hs6_code_deleted' unless defined?(HS6_CODE_DELETED)
4400
4462
  HS10_CODE_UPSERTED = 'hs10_code_upserted' unless defined?(HS10_CODE_UPSERTED)
@@ -4437,7 +4499,7 @@ module Io
4437
4499
  end
4438
4500
 
4439
4501
  def subtype_to_hash
4440
- raise 'Cannot serialize an instance of event directly - must use one of the specific types: attribute_upserted, attribute_deleted, catalog_upserted, catalog_deleted, subcatalog_upserted, subcatalog_deleted, catalog_item_upserted, catalog_item_deleted, subcatalog_item_upserted, subcatalog_item_deleted, rate_deleted, rate_upserted, experience_deleted, experience_upserted, item_margin_deleted, item_margin_upserted, label_format_deleted, label_format_upserted, order_deleted, order_upserted, order_identifier_deleted, order_identifier_upserted, pricing_deleted, pricing_upserted, hs6_code_upserted, hs6_code_deleted, hs10_code_upserted, hs10_code_deleted, item_origin_upserted, item_origin_deleted, harmonized_item_upserted, harmonized_item_deleted, snapshot_upserted, snapshot_deleted, label_upserted, notification_upserted, notification_deleted, localized_item_upserted, localized_item_deleted, localized_item_snapshot, membership_upserted, membership_deleted, organization_upserted, organization_deleted, authorization_upserted, authorization_deleted, capture_upserted, card_upserted, card_deleted, refund_upserted, return_upserted, return_deleted, targeting_item_upserted, targeting_item_deleted, tracking_label_event_upserted'
4502
+ raise 'Cannot serialize an instance of event directly - must use one of the specific types: attribute_upserted, attribute_deleted, catalog_upserted, catalog_deleted, subcatalog_upserted, subcatalog_deleted, catalog_item_upserted, catalog_item_deleted, subcatalog_item_upserted, subcatalog_item_deleted, rate_deleted, rate_upserted, experience_deleted, experience_upserted, item_margin_deleted, item_margin_upserted, label_format_deleted, label_format_upserted, order_deleted, order_upserted, order_identifier_deleted, order_identifier_upserted, pricing_deleted, pricing_upserted, tier_upserted, tier_deleted, hs6_code_upserted, hs6_code_deleted, hs10_code_upserted, hs10_code_deleted, item_origin_upserted, item_origin_deleted, harmonized_item_upserted, harmonized_item_deleted, snapshot_upserted, snapshot_deleted, label_upserted, notification_upserted, notification_deleted, localized_item_upserted, localized_item_deleted, localized_item_snapshot, membership_upserted, membership_deleted, organization_upserted, organization_deleted, authorization_upserted, authorization_deleted, capture_upserted, card_upserted, card_deleted, refund_upserted, return_upserted, return_deleted, targeting_item_upserted, targeting_item_deleted, tracking_label_event_upserted'
4441
4503
  end
4442
4504
 
4443
4505
  def to_hash
@@ -4475,6 +4537,8 @@ module Io
4475
4537
  when Types::ORDER_IDENTIFIER_UPSERTED; OrderIdentifierUpserted.new(hash)
4476
4538
  when Types::PRICING_DELETED; PricingDeleted.new(hash)
4477
4539
  when Types::PRICING_UPSERTED; PricingUpserted.new(hash)
4540
+ when Types::TIER_UPSERTED; TierUpserted.new(hash)
4541
+ when Types::TIER_DELETED; TierDeleted.new(hash)
4478
4542
  when Types::HS6_CODE_UPSERTED; Hs6CodeUpserted.new(hash)
4479
4543
  when Types::HS6_CODE_DELETED; Hs6CodeDeleted.new(hash)
4480
4544
  when Types::HS10_CODE_UPSERTED; Hs10CodeUpserted.new(hash)
@@ -5558,6 +5622,44 @@ module Io
5558
5622
 
5559
5623
  end
5560
5624
 
5625
+ class AppliedPromotionType
5626
+
5627
+ attr_reader :value
5628
+
5629
+ def initialize(value)
5630
+ @value = HttpClient::Preconditions.assert_class('value', value, String)
5631
+ end
5632
+
5633
+ # Returns the instance of AppliedPromotionType for this value, creating a new instance for an unknown value
5634
+ def AppliedPromotionType.apply(value)
5635
+ if value.instance_of?(AppliedPromotionType)
5636
+ value
5637
+ else
5638
+ HttpClient::Preconditions.assert_class_or_nil('value', value, String)
5639
+ value.nil? ? nil : (from_string(value) || AppliedPromotionType.new(value))
5640
+ end
5641
+ end
5642
+
5643
+ # Returns the instance of AppliedPromotionType for this value, or nil if not found
5644
+ def AppliedPromotionType.from_string(value)
5645
+ HttpClient::Preconditions.assert_class('value', value, String)
5646
+ AppliedPromotionType.ALL.find { |v| v.value == value }
5647
+ end
5648
+
5649
+ def AppliedPromotionType.ALL
5650
+ @@all ||= [AppliedPromotionType.free_shipping]
5651
+ end
5652
+
5653
+ def AppliedPromotionType.free_shipping
5654
+ @@_free_shipping ||= AppliedPromotionType.new('free_shipping')
5655
+ end
5656
+
5657
+ def to_hash
5658
+ value
5659
+ end
5660
+
5661
+ end
5662
+
5561
5663
  class AttributeDataType
5562
5664
 
5563
5665
  attr_reader :value
@@ -6508,7 +6610,7 @@ module Io
6508
6610
  end
6509
6611
 
6510
6612
  def EventType.ALL
6511
- @@all ||= [EventType.attribute_upserted, EventType.attribute_deleted, EventType.catalog_upserted, EventType.catalog_deleted, EventType.subcatalog_upserted, EventType.subcatalog_deleted, EventType.catalog_item_upserted, EventType.catalog_item_deleted, EventType.subcatalog_item_upserted, EventType.subcatalog_item_deleted, EventType.rate_deleted, EventType.rate_upserted, EventType.experience_deleted, EventType.experience_upserted, EventType.item_margin_deleted, EventType.item_margin_upserted, EventType.label_format_deleted, EventType.label_format_upserted, EventType.order_deleted, EventType.order_upserted, EventType.order_identifier_deleted, EventType.order_identifier_upserted, EventType.pricing_deleted, EventType.pricing_upserted, EventType.hs6_code_upserted, EventType.hs6_code_deleted, EventType.hs10_code_upserted, EventType.hs10_code_deleted, EventType.item_origin_upserted, EventType.item_origin_deleted, EventType.harmonized_item_upserted, EventType.harmonized_item_deleted, EventType.snapshot_upserted, EventType.snapshot_deleted, EventType.label_upserted, EventType.notification_upserted, EventType.notification_deleted, EventType.localized_item_upserted, EventType.localized_item_deleted, EventType.localized_item_snapshot, EventType.membership_upserted, EventType.membership_deleted, EventType.organization_upserted, EventType.organization_deleted, EventType.authorization_upserted, EventType.authorization_deleted, EventType.capture_upserted, EventType.card_upserted, EventType.card_deleted, EventType.refund_upserted, EventType.return_upserted, EventType.return_deleted, EventType.targeting_item_upserted, EventType.targeting_item_deleted, EventType.tracking_label_event_upserted]
6613
+ @@all ||= [EventType.attribute_upserted, EventType.attribute_deleted, EventType.catalog_upserted, EventType.catalog_deleted, EventType.subcatalog_upserted, EventType.subcatalog_deleted, EventType.catalog_item_upserted, EventType.catalog_item_deleted, EventType.subcatalog_item_upserted, EventType.subcatalog_item_deleted, EventType.rate_deleted, EventType.rate_upserted, EventType.experience_deleted, EventType.experience_upserted, EventType.item_margin_deleted, EventType.item_margin_upserted, EventType.label_format_deleted, EventType.label_format_upserted, EventType.order_deleted, EventType.order_upserted, EventType.order_identifier_deleted, EventType.order_identifier_upserted, EventType.pricing_deleted, EventType.pricing_upserted, EventType.tier_upserted, EventType.tier_deleted, EventType.hs6_code_upserted, EventType.hs6_code_deleted, EventType.hs10_code_upserted, EventType.hs10_code_deleted, EventType.item_origin_upserted, EventType.item_origin_deleted, EventType.harmonized_item_upserted, EventType.harmonized_item_deleted, EventType.snapshot_upserted, EventType.snapshot_deleted, EventType.label_upserted, EventType.notification_upserted, EventType.notification_deleted, EventType.localized_item_upserted, EventType.localized_item_deleted, EventType.localized_item_snapshot, EventType.membership_upserted, EventType.membership_deleted, EventType.organization_upserted, EventType.organization_deleted, EventType.authorization_upserted, EventType.authorization_deleted, EventType.capture_upserted, EventType.card_upserted, EventType.card_deleted, EventType.refund_upserted, EventType.return_upserted, EventType.return_deleted, EventType.targeting_item_upserted, EventType.targeting_item_deleted, EventType.tracking_label_event_upserted]
6512
6614
  end
6513
6615
 
6514
6616
  def EventType.attribute_upserted
@@ -6607,6 +6709,14 @@ module Io
6607
6709
  @@_pricing_upserted ||= EventType.new('pricing_upserted')
6608
6710
  end
6609
6711
 
6712
+ def EventType.tier_upserted
6713
+ @@_tier_upserted ||= EventType.new('tier_upserted')
6714
+ end
6715
+
6716
+ def EventType.tier_deleted
6717
+ @@_tier_deleted ||= EventType.new('tier_deleted')
6718
+ end
6719
+
6610
6720
  def EventType.hs6_code_upserted
6611
6721
  @@_hs6_code_upserted ||= EventType.new('hs6_code_upserted')
6612
6722
  end
@@ -7785,6 +7895,44 @@ module Io
7785
7895
 
7786
7896
  end
7787
7897
 
7898
+ class PromotionTriggerType
7899
+
7900
+ attr_reader :value
7901
+
7902
+ def initialize(value)
7903
+ @value = HttpClient::Preconditions.assert_class('value', value, String)
7904
+ end
7905
+
7906
+ # Returns the instance of PromotionTriggerType for this value, creating a new instance for an unknown value
7907
+ def PromotionTriggerType.apply(value)
7908
+ if value.instance_of?(PromotionTriggerType)
7909
+ value
7910
+ else
7911
+ HttpClient::Preconditions.assert_class_or_nil('value', value, String)
7912
+ value.nil? ? nil : (from_string(value) || PromotionTriggerType.new(value))
7913
+ end
7914
+ end
7915
+
7916
+ # Returns the instance of PromotionTriggerType for this value, or nil if not found
7917
+ def PromotionTriggerType.from_string(value)
7918
+ HttpClient::Preconditions.assert_class('value', value, String)
7919
+ PromotionTriggerType.ALL.find { |v| v.value == value }
7920
+ end
7921
+
7922
+ def PromotionTriggerType.ALL
7923
+ @@all ||= [PromotionTriggerType.order_subtotal]
7924
+ end
7925
+
7926
+ def PromotionTriggerType.order_subtotal
7927
+ @@_order_subtotal ||= PromotionTriggerType.new('order_subtotal')
7928
+ end
7929
+
7930
+ def to_hash
7931
+ value
7932
+ end
7933
+
7934
+ end
7935
+
7788
7936
  class QueryType
7789
7937
 
7790
7938
  attr_reader :value
@@ -9316,6 +9464,34 @@ module Io
9316
9464
 
9317
9465
  end
9318
9466
 
9467
+ class AppliedPromotion
9468
+
9469
+ attr_reader :type, :value
9470
+
9471
+ def initialize(incoming={})
9472
+ opts = HttpClient::Helper.symbolize_keys(incoming)
9473
+ HttpClient::Preconditions.require_keys(opts, [:type, :value], 'AppliedPromotion')
9474
+ @type = (x = opts.delete(:type); x.is_a?(::Io::Flow::V0::Models::AppliedPromotionType) ? x : ::Io::Flow::V0::Models::AppliedPromotionType.apply(x))
9475
+ @value = (x = opts.delete(:value); x.is_a?(::Io::Flow::V0::Models::Price) ? x : ::Io::Flow::V0::Models::Price.new(x))
9476
+ end
9477
+
9478
+ def to_json
9479
+ JSON.dump(to_hash)
9480
+ end
9481
+
9482
+ def copy(incoming={})
9483
+ AppliedPromotion.new(to_hash.merge(HttpClient::Helper.symbolize_keys(incoming)))
9484
+ end
9485
+
9486
+ def to_hash
9487
+ {
9488
+ :type => type.value,
9489
+ :value => value.to_hash
9490
+ }
9491
+ end
9492
+
9493
+ end
9494
+
9319
9495
  # Rule outcome where shipping surfaced in quote is actual cost of the service
9320
9496
  class AtCost < TierRuleOutcome
9321
9497
 
@@ -12501,6 +12677,33 @@ module Io
12501
12677
 
12502
12678
  end
12503
12679
 
12680
+ class FreeShipping < AvailablePromotion
12681
+
12682
+ attr_reader :trigger
12683
+
12684
+ def initialize(incoming={})
12685
+ super(:discriminator => AvailablePromotion::Types::FREE_SHIPPING)
12686
+ opts = HttpClient::Helper.symbolize_keys(incoming)
12687
+ HttpClient::Preconditions.require_keys(opts, [:trigger], 'FreeShipping')
12688
+ @trigger = (x = opts.delete(:trigger); x.is_a?(::Io::Flow::V0::Models::PromotionTrigger) ? x : ::Io::Flow::V0::Models::PromotionTrigger.new(x))
12689
+ end
12690
+
12691
+ def to_json
12692
+ JSON.dump(to_hash)
12693
+ end
12694
+
12695
+ def copy(incoming={})
12696
+ FreeShipping.new(subtype_to_hash.merge(HttpClient::Helper.symbolize_keys(incoming)))
12697
+ end
12698
+
12699
+ def subtype_to_hash
12700
+ {
12701
+ :trigger => trigger.to_hash
12702
+ }
12703
+ end
12704
+
12705
+ end
12706
+
12504
12707
  class FulfillmentExperienceReference
12505
12708
 
12506
12709
  attr_reader :id, :currency
@@ -14637,12 +14840,13 @@ module Io
14637
14840
  # Defines a fixed and percent margin to apply to items matching a query.
14638
14841
  class ItemMargin
14639
14842
 
14640
- attr_reader :id, :name, :q, :fixed, :percent, :position
14843
+ attr_reader :id, :key, :name, :q, :fixed, :percent, :position
14641
14844
 
14642
14845
  def initialize(incoming={})
14643
14846
  opts = HttpClient::Helper.symbolize_keys(incoming)
14644
- HttpClient::Preconditions.require_keys(opts, [:id, :name, :q, :fixed, :percent, :position], 'ItemMargin')
14847
+ HttpClient::Preconditions.require_keys(opts, [:id, :key, :name, :q, :fixed, :percent, :position], 'ItemMargin')
14645
14848
  @id = HttpClient::Preconditions.assert_class('id', opts.delete(:id), String)
14849
+ @key = HttpClient::Preconditions.assert_class('key', opts.delete(:key), String)
14646
14850
  @name = HttpClient::Preconditions.assert_class('name', opts.delete(:name), String)
14647
14851
  @q = HttpClient::Preconditions.assert_class('q', opts.delete(:q), String)
14648
14852
  @fixed = HttpClient::Preconditions.assert_class('fixed', HttpClient::Helper.to_big_decimal(opts.delete(:fixed)), BigDecimal)
@@ -14661,6 +14865,7 @@ module Io
14661
14865
  def to_hash
14662
14866
  {
14663
14867
  :id => id,
14868
+ :key => key,
14664
14869
  :name => name,
14665
14870
  :q => q,
14666
14871
  :fixed => fixed,
@@ -14707,13 +14912,50 @@ module Io
14707
14912
  end
14708
14913
 
14709
14914
  # A percent and/or fixed margin to apply to items based on query.
14710
- class ItemMarginForm
14915
+ class ItemMarginPostForm
14916
+
14917
+ attr_reader :name, :q, :key, :fixed, :percent, :position
14918
+
14919
+ def initialize(incoming={})
14920
+ opts = HttpClient::Helper.symbolize_keys(incoming)
14921
+ HttpClient::Preconditions.require_keys(opts, [:name, :q], 'ItemMarginPostForm')
14922
+ @name = HttpClient::Preconditions.assert_class('name', opts.delete(:name), String)
14923
+ @q = HttpClient::Preconditions.assert_class('q', opts.delete(:q), String)
14924
+ @key = (x = opts.delete(:key); x.nil? ? nil : HttpClient::Preconditions.assert_class('key', x, String))
14925
+ @fixed = (x = opts.delete(:fixed); x.nil? ? nil : HttpClient::Preconditions.assert_class('fixed', HttpClient::Helper.to_big_decimal(x), BigDecimal))
14926
+ @percent = (x = opts.delete(:percent); x.nil? ? nil : HttpClient::Preconditions.assert_class('percent', HttpClient::Helper.to_big_decimal(x), BigDecimal))
14927
+ @position = (x = opts.delete(:position); x.nil? ? nil : HttpClient::Preconditions.assert_class('position', x, Integer))
14928
+ end
14929
+
14930
+ def to_json
14931
+ JSON.dump(to_hash)
14932
+ end
14933
+
14934
+ def copy(incoming={})
14935
+ ItemMarginPostForm.new(to_hash.merge(HttpClient::Helper.symbolize_keys(incoming)))
14936
+ end
14937
+
14938
+ def to_hash
14939
+ {
14940
+ :name => name,
14941
+ :q => q,
14942
+ :key => key,
14943
+ :fixed => fixed,
14944
+ :percent => percent,
14945
+ :position => position
14946
+ }
14947
+ end
14948
+
14949
+ end
14950
+
14951
+ # A percent and/or fixed margin to apply to items based on query.
14952
+ class ItemMarginPutForm
14711
14953
 
14712
14954
  attr_reader :name, :q, :fixed, :percent, :position
14713
14955
 
14714
14956
  def initialize(incoming={})
14715
14957
  opts = HttpClient::Helper.symbolize_keys(incoming)
14716
- HttpClient::Preconditions.require_keys(opts, [:name, :q], 'ItemMarginForm')
14958
+ HttpClient::Preconditions.require_keys(opts, [:name, :q], 'ItemMarginPutForm')
14717
14959
  @name = HttpClient::Preconditions.assert_class('name', opts.delete(:name), String)
14718
14960
  @q = HttpClient::Preconditions.assert_class('q', opts.delete(:q), String)
14719
14961
  @fixed = (x = opts.delete(:fixed); x.nil? ? nil : HttpClient::Preconditions.assert_class('fixed', HttpClient::Helper.to_big_decimal(x), BigDecimal))
@@ -14726,7 +14968,7 @@ module Io
14726
14968
  end
14727
14969
 
14728
14970
  def copy(incoming={})
14729
- ItemMarginForm.new(to_hash.merge(HttpClient::Helper.symbolize_keys(incoming)))
14971
+ ItemMarginPutForm.new(to_hash.merge(HttpClient::Helper.symbolize_keys(incoming)))
14730
14972
  end
14731
14973
 
14732
14974
  def to_hash
@@ -16320,7 +16562,7 @@ module Io
16320
16562
  # payment authorization for an order.
16321
16563
  class Order
16322
16564
 
16323
- attr_reader :id, :number, :customer, :destination, :expires_at, :items, :deliveries, :selections, :prices, :total, :attributes, :submitted_at, :lines, :identifiers
16565
+ attr_reader :id, :number, :customer, :destination, :expires_at, :items, :deliveries, :selections, :prices, :total, :attributes, :submitted_at, :lines, :identifiers, :promotions
16324
16566
 
16325
16567
  def initialize(incoming={})
16326
16568
  opts = HttpClient::Helper.symbolize_keys(incoming)
@@ -16339,6 +16581,7 @@ module Io
16339
16581
  @submitted_at = (x = opts.delete(:submitted_at); x.nil? ? nil : HttpClient::Preconditions.assert_class('submitted_at', HttpClient::Helper.to_date_time_iso8601(x), DateTime))
16340
16582
  @lines = (x = opts.delete(:lines); x.nil? ? nil : HttpClient::Preconditions.assert_class('lines', x, Array).map { |v| (x = v; x.is_a?(::Io::Flow::V0::Models::Line) ? x : ::Io::Flow::V0::Models::Line.new(x)) })
16341
16583
  @identifiers = (x = opts.delete(:identifiers); x.nil? ? nil : HttpClient::Preconditions.assert_class('identifiers', x, Array).map { |v| HttpClient::Preconditions.assert_class('identifiers', v, String) })
16584
+ @promotions = (x = opts.delete(:promotions); x.nil? ? nil : (x = x; x.is_a?(::Io::Flow::V0::Models::Promotions) ? x : ::Io::Flow::V0::Models::Promotions.new(x)))
16342
16585
  end
16343
16586
 
16344
16587
  def to_json
@@ -16364,7 +16607,8 @@ module Io
16364
16607
  :attributes => attributes,
16365
16608
  :submitted_at => submitted_at,
16366
16609
  :lines => lines.nil? ? nil : lines.map { |o| o.to_hash },
16367
- :identifiers => identifiers.nil? ? nil : identifiers
16610
+ :identifiers => identifiers.nil? ? nil : identifiers,
16611
+ :promotions => promotions.nil? ? nil : promotions.to_hash
16368
16612
  }
16369
16613
  end
16370
16614
 
@@ -16479,7 +16723,7 @@ module Io
16479
16723
  # duties.
16480
16724
  class OrderEstimate
16481
16725
 
16482
- attr_reader :id, :items, :destination, :deliveries, :prices, :selections, :total, :lines
16726
+ attr_reader :id, :items, :destination, :deliveries, :prices, :selections, :total, :lines, :promotions
16483
16727
 
16484
16728
  def initialize(incoming={})
16485
16729
  opts = HttpClient::Helper.symbolize_keys(incoming)
@@ -16492,6 +16736,7 @@ module Io
16492
16736
  @selections = HttpClient::Preconditions.assert_class('selections', opts.delete(:selections), Array).map { |v| HttpClient::Preconditions.assert_class('selections', v, String) }
16493
16737
  @total = (x = opts.delete(:total); x.is_a?(::Io::Flow::V0::Models::LocalizedTotal) ? x : ::Io::Flow::V0::Models::LocalizedTotal.new(x))
16494
16738
  @lines = (x = opts.delete(:lines); x.nil? ? nil : HttpClient::Preconditions.assert_class('lines', x, Array).map { |v| (x = v; x.is_a?(::Io::Flow::V0::Models::Line) ? x : ::Io::Flow::V0::Models::Line.new(x)) })
16739
+ @promotions = (x = opts.delete(:promotions); x.nil? ? nil : (x = x; x.is_a?(::Io::Flow::V0::Models::Promotions) ? x : ::Io::Flow::V0::Models::Promotions.new(x)))
16495
16740
  end
16496
16741
 
16497
16742
  def to_json
@@ -16511,7 +16756,8 @@ module Io
16511
16756
  :prices => prices.map { |o| o.to_hash },
16512
16757
  :selections => selections,
16513
16758
  :total => total.to_hash,
16514
- :lines => lines.nil? ? nil : lines.map { |o| o.to_hash }
16759
+ :lines => lines.nil? ? nil : lines.map { |o| o.to_hash },
16760
+ :promotions => promotions.nil? ? nil : promotions.to_hash
16515
16761
  }
16516
16762
  end
16517
16763
 
@@ -16715,6 +16961,32 @@ module Io
16715
16961
 
16716
16962
  end
16717
16963
 
16964
+ class OrderIdentifierPutForm
16965
+
16966
+ attr_reader :order
16967
+
16968
+ def initialize(incoming={})
16969
+ opts = HttpClient::Helper.symbolize_keys(incoming)
16970
+ HttpClient::Preconditions.require_keys(opts, [:order], 'OrderIdentifierPutForm')
16971
+ @order = HttpClient::Preconditions.assert_class('order', opts.delete(:order), String)
16972
+ end
16973
+
16974
+ def to_json
16975
+ JSON.dump(to_hash)
16976
+ end
16977
+
16978
+ def copy(incoming={})
16979
+ OrderIdentifierPutForm.new(to_hash.merge(HttpClient::Helper.symbolize_keys(incoming)))
16980
+ end
16981
+
16982
+ def to_hash
16983
+ {
16984
+ :order => order
16985
+ }
16986
+ end
16987
+
16988
+ end
16989
+
16718
16990
  class OrderIdentifierUpserted < Event
16719
16991
 
16720
16992
  attr_reader :event_id, :timestamp, :id, :organization, :number, :order_number
@@ -18234,6 +18506,65 @@ module Io
18234
18506
 
18235
18507
  end
18236
18508
 
18509
+ class PromotionTrigger
18510
+
18511
+ attr_reader :type, :min, :remaining, :max
18512
+
18513
+ def initialize(incoming={})
18514
+ opts = HttpClient::Helper.symbolize_keys(incoming)
18515
+ HttpClient::Preconditions.require_keys(opts, [:type, :min, :remaining], 'PromotionTrigger')
18516
+ @type = (x = opts.delete(:type); x.is_a?(::Io::Flow::V0::Models::PromotionTriggerType) ? x : ::Io::Flow::V0::Models::PromotionTriggerType.apply(x))
18517
+ @min = (x = opts.delete(:min); x.is_a?(::Io::Flow::V0::Models::Price) ? x : ::Io::Flow::V0::Models::Price.new(x))
18518
+ @remaining = (x = opts.delete(:remaining); x.is_a?(::Io::Flow::V0::Models::Price) ? x : ::Io::Flow::V0::Models::Price.new(x))
18519
+ @max = (x = opts.delete(:max); x.nil? ? nil : (x = x; x.is_a?(::Io::Flow::V0::Models::Price) ? x : ::Io::Flow::V0::Models::Price.new(x)))
18520
+ end
18521
+
18522
+ def to_json
18523
+ JSON.dump(to_hash)
18524
+ end
18525
+
18526
+ def copy(incoming={})
18527
+ PromotionTrigger.new(to_hash.merge(HttpClient::Helper.symbolize_keys(incoming)))
18528
+ end
18529
+
18530
+ def to_hash
18531
+ {
18532
+ :type => type.value,
18533
+ :min => min.to_hash,
18534
+ :remaining => remaining.to_hash,
18535
+ :max => max.nil? ? nil : max.to_hash
18536
+ }
18537
+ end
18538
+
18539
+ end
18540
+
18541
+ class Promotions
18542
+
18543
+ attr_reader :applied, :available
18544
+
18545
+ def initialize(incoming={})
18546
+ opts = HttpClient::Helper.symbolize_keys(incoming)
18547
+ @applied = (x = opts.delete(:applied); x.nil? ? nil : HttpClient::Preconditions.assert_class('applied', x, Array).map { |v| (x = v; x.is_a?(::Io::Flow::V0::Models::AppliedPromotion) ? x : ::Io::Flow::V0::Models::AppliedPromotion.new(x)) })
18548
+ @available = (x = opts.delete(:available); x.nil? ? nil : HttpClient::Preconditions.assert_class('available', x, Array).map { |v| (x = v; x.is_a?(::Io::Flow::V0::Models::AvailablePromotion) ? x : ::Io::Flow::V0::Models::AvailablePromotion.from_json(x)) })
18549
+ end
18550
+
18551
+ def to_json
18552
+ JSON.dump(to_hash)
18553
+ end
18554
+
18555
+ def copy(incoming={})
18556
+ Promotions.new(to_hash.merge(HttpClient::Helper.symbolize_keys(incoming)))
18557
+ end
18558
+
18559
+ def to_hash
18560
+ {
18561
+ :applied => applied.nil? ? nil : applied.map { |o| o.to_hash },
18562
+ :available => available.nil? ? nil : available.map { |o| o.to_hash }
18563
+ }
18564
+ end
18565
+
18566
+ end
18567
+
18237
18568
  # A public key is used to encrypt cards client side prior to submitting to the
18238
18569
  # Flow vault.
18239
18570
  class PublicKey
@@ -21185,6 +21516,37 @@ module Io
21185
21516
 
21186
21517
  end
21187
21518
 
21519
+ class TierDeleted < Event
21520
+
21521
+ attr_reader :event_id, :timestamp, :id
21522
+
21523
+ def initialize(incoming={})
21524
+ super(:discriminator => Event::Types::TIER_DELETED)
21525
+ opts = HttpClient::Helper.symbolize_keys(incoming)
21526
+ HttpClient::Preconditions.require_keys(opts, [:event_id, :timestamp, :id], 'TierDeleted')
21527
+ @event_id = HttpClient::Preconditions.assert_class('event_id', opts.delete(:event_id), String)
21528
+ @timestamp = HttpClient::Preconditions.assert_class('timestamp', HttpClient::Helper.to_date_time_iso8601(opts.delete(:timestamp)), DateTime)
21529
+ @id = HttpClient::Preconditions.assert_class('id', opts.delete(:id), String)
21530
+ end
21531
+
21532
+ def to_json
21533
+ JSON.dump(to_hash)
21534
+ end
21535
+
21536
+ def copy(incoming={})
21537
+ TierDeleted.new(subtype_to_hash.merge(HttpClient::Helper.symbolize_keys(incoming)))
21538
+ end
21539
+
21540
+ def subtype_to_hash
21541
+ {
21542
+ :event_id => event_id,
21543
+ :timestamp => timestamp,
21544
+ :id => id
21545
+ }
21546
+ end
21547
+
21548
+ end
21549
+
21188
21550
  # Service shipping tier available in this tier gorup. e.g. Standard tier,
21189
21551
  # Express tier, Economy tier
21190
21552
  class TierForm
@@ -21389,6 +21751,55 @@ module Io
21389
21751
 
21390
21752
  end
21391
21753
 
21754
+ class TierUpserted < Event
21755
+
21756
+ attr_reader :event_id, :timestamp, :organization, :id, :experience_key, :integration, :name, :rules, :services, :strategy, :visibility, :description
21757
+
21758
+ def initialize(incoming={})
21759
+ super(:discriminator => Event::Types::TIER_UPSERTED)
21760
+ opts = HttpClient::Helper.symbolize_keys(incoming)
21761
+ HttpClient::Preconditions.require_keys(opts, [:event_id, :timestamp, :organization, :id, :experience_key, :integration, :name, :rules, :services, :strategy, :visibility], 'TierUpserted')
21762
+ @event_id = HttpClient::Preconditions.assert_class('event_id', opts.delete(:event_id), String)
21763
+ @timestamp = HttpClient::Preconditions.assert_class('timestamp', HttpClient::Helper.to_date_time_iso8601(opts.delete(:timestamp)), DateTime)
21764
+ @organization = HttpClient::Preconditions.assert_class('organization', opts.delete(:organization), String)
21765
+ @id = HttpClient::Preconditions.assert_class('id', opts.delete(:id), String)
21766
+ @experience_key = HttpClient::Preconditions.assert_class('experience_key', opts.delete(:experience_key), String)
21767
+ @integration = HttpClient::Preconditions.assert_class('integration', opts.delete(:integration), String)
21768
+ @name = HttpClient::Preconditions.assert_class('name', opts.delete(:name), String)
21769
+ @rules = HttpClient::Preconditions.assert_class('rules', opts.delete(:rules), Array).map { |v| HttpClient::Preconditions.assert_class('rules', HttpClient::Helper.to_object(v), Hash) }
21770
+ @services = HttpClient::Preconditions.assert_class('services', opts.delete(:services), Array).map { |v| HttpClient::Preconditions.assert_class('services', HttpClient::Helper.to_object(v), Hash) }
21771
+ @strategy = HttpClient::Preconditions.assert_class('strategy', opts.delete(:strategy), String)
21772
+ @visibility = HttpClient::Preconditions.assert_class('visibility', opts.delete(:visibility), String)
21773
+ @description = (x = opts.delete(:description); x.nil? ? nil : HttpClient::Preconditions.assert_class('description', x, String))
21774
+ end
21775
+
21776
+ def to_json
21777
+ JSON.dump(to_hash)
21778
+ end
21779
+
21780
+ def copy(incoming={})
21781
+ TierUpserted.new(subtype_to_hash.merge(HttpClient::Helper.symbolize_keys(incoming)))
21782
+ end
21783
+
21784
+ def subtype_to_hash
21785
+ {
21786
+ :event_id => event_id,
21787
+ :timestamp => timestamp,
21788
+ :organization => organization,
21789
+ :id => id,
21790
+ :experience_key => experience_key,
21791
+ :integration => integration,
21792
+ :name => name,
21793
+ :rules => rules,
21794
+ :services => services,
21795
+ :strategy => strategy,
21796
+ :visibility => visibility,
21797
+ :description => description
21798
+ }
21799
+ end
21800
+
21801
+ end
21802
+
21392
21803
  class TierVersion
21393
21804
 
21394
21805
  attr_reader :id, :timestamp, :type, :tier