perka 1.0.pre

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 (79) hide show
  1. data/.gitignore +7 -0
  2. data/Gemfile +12 -0
  3. data/LICENSE.txt +201 -0
  4. data/README.md +17 -0
  5. data/Rakefile +70 -0
  6. data/lib/perka/client_api.rb +260 -0
  7. data/lib/perka/model/abstract_reward_confirmation.rb +15 -0
  8. data/lib/perka/model/abstract_user.rb +37 -0
  9. data/lib/perka/model/api_description.rb +22 -0
  10. data/lib/perka/model/base_entity_global.rb +27 -0
  11. data/lib/perka/model/bounce_back_target.rb +33 -0
  12. data/lib/perka/model/canned_email_outbound_message.rb +14 -0
  13. data/lib/perka/model/clerk.rb +41 -0
  14. data/lib/perka/model/composite_target.rb +22 -0
  15. data/lib/perka/model/console_message.rb +16 -0
  16. data/lib/perka/model/coupon.rb +52 -0
  17. data/lib/perka/model/coupon_campaign.rb +26 -0
  18. data/lib/perka/model/coupon_redemption.rb +26 -0
  19. data/lib/perka/model/coupon_target.rb +30 -0
  20. data/lib/perka/model/coupon_visibility.rb +29 -0
  21. data/lib/perka/model/customer.rb +41 -0
  22. data/lib/perka/model/customer_device.rb +23 -0
  23. data/lib/perka/model/endpoint_description.rb +49 -0
  24. data/lib/perka/model/entity_annotation.rb +33 -0
  25. data/lib/perka/model/entity_description.rb +31 -0
  26. data/lib/perka/model/everybody_target.rb +15 -0
  27. data/lib/perka/model/feedback_item.rb +28 -0
  28. data/lib/perka/model/first_visit_target.rb +16 -0
  29. data/lib/perka/model/idle_customer_target.rb +20 -0
  30. data/lib/perka/model/integrator_user.rb +16 -0
  31. data/lib/perka/model/internal_user.rb +15 -0
  32. data/lib/perka/model/like_to_unlock_target.rb +14 -0
  33. data/lib/perka/model/list_target.rb +17 -0
  34. data/lib/perka/model/merchant.rb +42 -0
  35. data/lib/perka/model/merchant_capability.rb +16 -0
  36. data/lib/perka/model/merchant_device.rb +29 -0
  37. data/lib/perka/model/merchant_location.rb +46 -0
  38. data/lib/perka/model/merchant_user.rb +29 -0
  39. data/lib/perka/model/nobody_target.rb +15 -0
  40. data/lib/perka/model/outbound_message.rb +14 -0
  41. data/lib/perka/model/parameter_description.rb +29 -0
  42. data/lib/perka/model/participation_target.rb +34 -0
  43. data/lib/perka/model/physical_redemption_target.rb +17 -0
  44. data/lib/perka/model/points_activity.rb +34 -0
  45. data/lib/perka/model/points_activity_confirmation.rb +24 -0
  46. data/lib/perka/model/points_catalog_item.rb +41 -0
  47. data/lib/perka/model/program.rb +35 -0
  48. data/lib/perka/model/program_tier.rb +30 -0
  49. data/lib/perka/model/program_type.rb +27 -0
  50. data/lib/perka/model/property.rb +65 -0
  51. data/lib/perka/model/punch_reward_confirmation.rb +43 -0
  52. data/lib/perka/model/push_message.rb +17 -0
  53. data/lib/perka/model/redemption_coupon_confirmation.rb +26 -0
  54. data/lib/perka/model/redemption_reward_confirmation.rb +26 -0
  55. data/lib/perka/model/reward.rb +38 -0
  56. data/lib/perka/model/reward_advancement.rb +30 -0
  57. data/lib/perka/model/reward_grant.rb +37 -0
  58. data/lib/perka/model/sms_message.rb +15 -0
  59. data/lib/perka/model/sms_outbound_message.rb +14 -0
  60. data/lib/perka/model/social_list_target.rb +14 -0
  61. data/lib/perka/model/social_service_subscription.rb +26 -0
  62. data/lib/perka/model/street_address.rb +27 -0
  63. data/lib/perka/model/tier_target.rb +24 -0
  64. data/lib/perka/model/tier_traversal.rb +30 -0
  65. data/lib/perka/model/tier_traversal_confirmation.rb +28 -0
  66. data/lib/perka/model/type.rb +33 -0
  67. data/lib/perka/model/user_credentials.rb +28 -0
  68. data/lib/perka/model/visit.rb +59 -0
  69. data/lib/perka/model/visit_confirmation.rb +47 -0
  70. data/lib/perka/model/weather_target.rb +27 -0
  71. data/lib/perka/model/yield_management_target.rb +23 -0
  72. data/lib/perka/perka_api.rb +89 -0
  73. data/lib/perka/version.rb +3 -0
  74. data/lib/perka.rb +6 -0
  75. data/lib/perka_fast.rb +68 -0
  76. data/perka.gemspec +20 -0
  77. data/spec/api_integrator_spec.rb +210 -0
  78. data/spec/model_spec.rb +24 -0
  79. metadata +178 -0
@@ -0,0 +1,16 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Describes a limitation placed upon a Merchant. This type associates a Merchant,
9
+ # a Type, and a integral count describing the actual limit.
10
+ class MerchantCapability < BaseEntityGlobal
11
+
12
+
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,29 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Represents a device running the Merchant Validator app.
9
+ class MerchantDevice < BaseEntityGlobal
10
+
11
+ PROPERTY_NAMES = [
12
+ :merchant_location,
13
+ :serial_number,
14
+ :make,
15
+ :os_version,
16
+ :platform,
17
+ :model,
18
+ :identifier
19
+ ]
20
+ attr_accessor *PROPERTY_NAMES
21
+
22
+ require 'perka/model/merchant_location'
23
+ TYPE_MAP = {
24
+ :merchant_location => Perka::Model::MerchantLocation
25
+ }
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,46 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Represents a single physical location operated by a Merchant where Customers
9
+ # can participate in a Perka loyalty program.
10
+ class MerchantLocation < BaseEntityGlobal
11
+
12
+ PROPERTY_NAMES = [
13
+ :phone,
14
+ :merchant,
15
+ :timezone,
16
+
17
+ # The named Clerks which are allowed to operate on the MerchantLocation.
18
+ # This relationship is owned by the Clerk object.
19
+ :clerks,
20
+
21
+ # Used to implicitly concatenate the <code>address</code> and <code>address2</code>
22
+ # fields in a friendly format.
23
+ :combined_address,
24
+ :coupon_visibilities,
25
+ :distance_in_meters,
26
+ :latitude,
27
+ :longitude,
28
+ :merchant_devices,
29
+ :neighborhood_name,
30
+ :resolved_facebook_id,
31
+ :sms_id,
32
+ :street_address,
33
+ :geo_location
34
+ ]
35
+ attr_accessor *PROPERTY_NAMES
36
+
37
+ require 'perka/model/street_address'
38
+ require 'perka/model/merchant'
39
+ TYPE_MAP = {
40
+ :street_address => Perka::Model::StreetAddress,
41
+ :merchant => Perka::Model::Merchant
42
+ }
43
+
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,29 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/abstract_user'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Represents a business owner or manager who is allowed to modify the associated
9
+ # <entityReference payloadName='merchant'> Merchant</entityReference> object.
10
+ class MerchantUser < AbstractUser
11
+
12
+ PROPERTY_NAMES = [
13
+ :email,
14
+ :unconfirmed_email,
15
+ :merchant,
16
+ :weekly_email_enabled,
17
+ :sms_messages,
18
+ :outbound_messages
19
+ ]
20
+ attr_accessor *PROPERTY_NAMES
21
+
22
+ require 'perka/model/merchant'
23
+ TYPE_MAP = {
24
+ :merchant => Perka::Model::Merchant
25
+ }
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,15 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/coupon_target'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # A simple target that disallows all customers.
9
+ class NobodyTarget < CouponTarget
10
+
11
+
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ class OutboundMessage < BaseEntityGlobal
9
+
10
+
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,29 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'flatpack_core'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Describes a path or query parameter in <entityReference payloadName='endpointDescription'>
9
+ # EndpointDescription</entityReference>.
10
+ class ParameterDescription < Flatpack::Core::BaseHasUuid
11
+
12
+ PROPERTY_NAMES = [
13
+ :doc_string,
14
+ :endpoint,
15
+ :name,
16
+ :type
17
+ ]
18
+ attr_accessor *PROPERTY_NAMES
19
+
20
+ require 'perka/model/type'
21
+ require 'perka/model/endpoint_description'
22
+ TYPE_MAP = {
23
+ :type => Perka::Model::Type,
24
+ :endpoint => Perka::Model::EndpointDescription
25
+ }
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,34 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/list_target'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Classifies customers based on their performance within the <entityReference
9
+ # payloadName='program'> Program</entityReference> associated with a <entityReference
10
+ # payloadName='programType'> ProgramType</entityReference>.
11
+ class ParticipationTarget < ListTarget
12
+
13
+ PROPERTY_NAMES = [
14
+
15
+ # The program type for which punches should be found.
16
+ :program_type,
17
+ :metric,
18
+
19
+ # The comparison value.
20
+ :threshold,
21
+
22
+ # A moving window used to filter the statistics.
23
+ :window_days
24
+ ]
25
+ attr_accessor *PROPERTY_NAMES
26
+
27
+ require 'perka/model/program_type'
28
+ TYPE_MAP = {
29
+ :program_type => Perka::Model::ProgramType
30
+ }
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,17 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/coupon_target'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # A CouponTarget that is always redeemable, but never visible to the customer.
9
+ # This target exists to allow a merchant to redeem a Perka Coupon if the customer
10
+ # has some kind of physical artifact (e.g. a mailer).
11
+ class PhysicalRedemptionTarget < CouponTarget
12
+
13
+
14
+
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,34 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Represents activity in a points-based loyalty program.
9
+ class PointsActivity < BaseEntityGlobal
10
+
11
+ PROPERTY_NAMES = [
12
+ :visit,
13
+ :credit,
14
+ :current_total,
15
+
16
+ # The number of points that were redeemed
17
+ :charge,
18
+ :next_activity,
19
+ :redeemed
20
+ ]
21
+ attr_accessor *PROPERTY_NAMES
22
+
23
+ require 'perka/model/points_catalog_item'
24
+ require 'perka/model/points_activity'
25
+ require 'perka/model/visit'
26
+ TYPE_MAP = {
27
+ :redeemed => Perka::Model::PointsCatalogItem,
28
+ :next_activity => Perka::Model::PointsActivity,
29
+ :visit => Perka::Model::Visit
30
+ }
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,24 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/abstract_reward_confirmation'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Represents activity in a points-based loyalty program.
9
+ class PointsActivityConfirmation < AbstractRewardConfirmation
10
+
11
+ PROPERTY_NAMES = [
12
+
13
+ # Catalog items that are being redeemed.
14
+ :points_catalog_items,
15
+
16
+ # The total dollar amount spent during the transaction.
17
+ :money_spent
18
+ ]
19
+ attr_accessor *PROPERTY_NAMES
20
+
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,41 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Defines a good or service offered by a merchant using a points-based loyalty
9
+ # program.
10
+ class PointsCatalogItem < BaseEntityGlobal
11
+
12
+ PROPERTY_NAMES = [
13
+
14
+ # The merchant that owns the item.
15
+ :merchant,
16
+
17
+ # A longer text description of the item, including any terms and conditions.
18
+ :terms,
19
+
20
+ # The time at which the catalog item will no longer be available for redemption.
21
+ :expires_at,
22
+
23
+ # The number of points required to redeem the item.
24
+ :points_required,
25
+
26
+ # A short label for describing the item.
27
+ :label,
28
+
29
+ # An optional icon name used when rendering the catalog item.
30
+ :icon
31
+ ]
32
+ attr_accessor *PROPERTY_NAMES
33
+
34
+ require 'perka/model/merchant'
35
+ TYPE_MAP = {
36
+ :merchant => Perka::Model::Merchant
37
+ }
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,35 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Program is a basic buy n(punchesNeeded) of x(purchasedItem), and get a free
9
+ # y(freeItem) when a customer has reached a certain ProgramTier.
10
+ class Program < BaseEntityGlobal
11
+
12
+ PROPERTY_NAMES = [
13
+ :program_tier,
14
+ :program_type,
15
+ :free_item,
16
+ :punches_needed,
17
+ :image_name,
18
+ :perk_id,
19
+ :terms,
20
+ :punches_needed_prefix,
21
+ :punches_needed_suffix,
22
+ :purchased_item
23
+ ]
24
+ attr_accessor *PROPERTY_NAMES
25
+
26
+ require 'perka/model/program_tier'
27
+ require 'perka/model/program_type'
28
+ TYPE_MAP = {
29
+ :program_tier => Perka::Model::ProgramTier,
30
+ :program_type => Perka::Model::ProgramType
31
+ }
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,30 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # A program tier defines additional benefits for customers with a certain minimum
9
+ # visit count.
10
+ class ProgramTier < BaseEntityGlobal
11
+
12
+ PROPERTY_NAMES = [
13
+ :merchant,
14
+ :programs,
15
+ :tier_traversals,
16
+ :additional_perks,
17
+ :points_multiplier,
18
+ :visits_needed,
19
+ :name
20
+ ]
21
+ attr_accessor *PROPERTY_NAMES
22
+
23
+ require 'perka/model/merchant'
24
+ TYPE_MAP = {
25
+ :merchant => Perka::Model::Merchant
26
+ }
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,27 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # A ProgramType defines a single kind of offer made by the Merchant. For example,
9
+ # a Merchant may have two ProgramTypes, one for coffee sales and another for
10
+ # sandwich sales. Because Customers are offered increasingly better perks as
11
+ # they return over time, a single ProgramType is used to aggregate multiple
12
+ # <entityReference payloadName='program'> Program</entityReference> objects
13
+ # that have a fan-out based on <entityReference payloadName='programTier'> ProgramTier</entityReference>.
14
+ class ProgramType < BaseEntityGlobal
15
+
16
+ PROPERTY_NAMES = [
17
+ :expires_at,
18
+ :stamp_id,
19
+ :name,
20
+ :expires_in
21
+ ]
22
+ attr_accessor *PROPERTY_NAMES
23
+
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,65 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'flatpack_core'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # An immutable view of a property that should be serialized.
9
+ class Property < Flatpack::Core::BaseHasUuid
10
+
11
+ PROPERTY_NAMES = [
12
+ :doc_string,
13
+
14
+ # The payload name of the type that defines the property.
15
+ :enclosing_type_name,
16
+
17
+ # Returns the role names that are allowed to get the property. A value containing
18
+ # a single asterisk means that all roles may access the property.
19
+ :getter_role_names,
20
+
21
+ # When a new value is assigned to the current property in some instance,
22
+ # the implied property of the new value should also be updated with the
23
+ # current instance.
24
+ :implied_property,
25
+
26
+ # Return the role names that are allowed to set this property. A value containing
27
+ # a single asterisk means that all roles may set the property.
28
+ :setter_role_names,
29
+
30
+ # Returns <code>true</code> if the Property should be included only during
31
+ # a deep traversal.
32
+ :deep_traversal_only,
33
+
34
+ # Returns <code>true</code> if the referred entity's owner should also be
35
+ # considered an owner of the entity that defines the Property.
36
+ :inherit_principal,
37
+
38
+ # If <code>true</code>, non-null properties that contain the property type's
39
+ # default value will not be serialized. For example, integer properties
40
+ # whose values are <code>0</code> will not be serialized.
41
+ :suppress_default_value,
42
+
43
+ # Returns the json payload name of the Property, which may differ from the
44
+ # bean name if a JsonProperty annotation has been applied to the getter.
45
+ :name,
46
+
47
+ # A simplified description of the property's type.
48
+ :type,
49
+
50
+ # Returns <code>true</code> if an entity Property's properties should be
51
+ # emitted into the owning entity's properties.
52
+ :embedded
53
+ ]
54
+ attr_accessor *PROPERTY_NAMES
55
+
56
+ require 'perka/model/type'
57
+ require 'perka/model/property'
58
+ TYPE_MAP = {
59
+ :type => Perka::Model::Type,
60
+ :implied_property => Perka::Model::Property
61
+ }
62
+
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,43 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/abstract_reward_confirmation'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Represents an award of some number of punches on a punchcard.
9
+ class PunchRewardConfirmation < AbstractRewardConfirmation
10
+
11
+ PROPERTY_NAMES = [
12
+
13
+ # An instance of a <entityReference payloadName='program'> Program</entityReference>
14
+ # that the punches should be applied to.
15
+ :program,
16
+ :program_type,
17
+
18
+ # The number of punches to be applied to the punchcard.
19
+ :punches_earned,
20
+
21
+ # This property is only present when a <entityReference payloadName='punchRewardConfirmation'>
22
+ # PunchRewardConfirmation</entityReference> is returned by the server to
23
+ # represent past customer interactions. Normally, a <entityReference payloadName='punchRewardConfirmation'>
24
+ # PunchRewardConfirmation</entityReference> is a member of a <entityReference
25
+ # payloadName='rewardGrant'> RewardGrant</entityReference> or <entityReference
26
+ # payloadName='visitConfirmation'> VisitConfirmation</entityReference> which
27
+ # will provide a contextual <entityReference payloadName='visit'> Visit</entityReference>.
28
+ :visit
29
+ ]
30
+ attr_accessor *PROPERTY_NAMES
31
+
32
+ require 'perka/model/program'
33
+ require 'perka/model/visit'
34
+ require 'perka/model/program_type'
35
+ TYPE_MAP = {
36
+ :program => Perka::Model::Program,
37
+ :visit => Perka::Model::Visit,
38
+ :program_type => Perka::Model::ProgramType
39
+ }
40
+
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,17 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/outbound_message'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # An implementation of outbound message corresponding to a message being sent
9
+ # over a platform push notification system (e.g. C2DM for Android or APS for
10
+ # iOS)
11
+ class PushMessage < OutboundMessage
12
+
13
+
14
+
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,26 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/abstract_reward_confirmation'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Represents the redemption of a <entityReference payloadName='coupon'> Coupon</entityReference>.
9
+ class RedemptionCouponConfirmation < AbstractRewardConfirmation
10
+
11
+ PROPERTY_NAMES = [
12
+
13
+ # The coupon that is being redeemed during the associated <entityReference
14
+ # payloadName='visit'> Visit</entityReference>.
15
+ :coupon
16
+ ]
17
+ attr_accessor *PROPERTY_NAMES
18
+
19
+ require 'perka/model/coupon'
20
+ TYPE_MAP = {
21
+ :coupon => Perka::Model::Coupon
22
+ }
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/abstract_reward_confirmation'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Represents the redemption of a completed punchcard.
9
+ class RedemptionRewardConfirmation < AbstractRewardConfirmation
10
+
11
+ PROPERTY_NAMES = [
12
+
13
+ # The <entityReference payloadName='reward'> Reward</entityReference> that
14
+ # represents a specific instance of a completed punchcard.
15
+ :reward
16
+ ]
17
+ attr_accessor *PROPERTY_NAMES
18
+
19
+ require 'perka/model/reward'
20
+ TYPE_MAP = {
21
+ :reward => Perka::Model::Reward
22
+ }
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,38 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # A punchcard that a customer has filled or is in the process of filling. These
9
+ # objects represent an aggregated view of the effects of applying <entityReference
10
+ # payloadName='punchRewardConfirmation'> PunchRewardConfirmation</entityReference>.
11
+ # A Reward may be redeemed once it has been activated.
12
+ class Reward < BaseEntityGlobal
13
+
14
+ PROPERTY_NAMES = [
15
+ :customer,
16
+ :merchant,
17
+ :program,
18
+ :punches_earned,
19
+ :reward_advancements,
20
+ :activated_at,
21
+ :redeemed_at,
22
+ :transferred_at,
23
+ :type
24
+ ]
25
+ attr_accessor *PROPERTY_NAMES
26
+
27
+ require 'perka/model/merchant'
28
+ require 'perka/model/program'
29
+ require 'perka/model/customer'
30
+ TYPE_MAP = {
31
+ :merchant => Perka::Model::Merchant,
32
+ :program => Perka::Model::Program,
33
+ :customer => Perka::Model::Customer
34
+ }
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,30 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Represents partial progress towards completing a Reward (i.e. some number
9
+ # of punches). These objects represent the aggregated effects of applying a
10
+ # <entityReference payloadName='punchRewardConfirmation'> PunchRewardConfirmation</entityReference>.
11
+ class RewardAdvancement < BaseEntityGlobal
12
+
13
+ PROPERTY_NAMES = [
14
+ :punches_earned,
15
+ :reward,
16
+ :visit,
17
+ :transfer
18
+ ]
19
+ attr_accessor *PROPERTY_NAMES
20
+
21
+ require 'perka/model/reward'
22
+ require 'perka/model/visit'
23
+ TYPE_MAP = {
24
+ :reward => Perka::Model::Reward,
25
+ :visit => Perka::Model::Visit
26
+ }
27
+
28
+ end
29
+ end
30
+ end