perka 1.0.pre

Sign up to get free protection for your applications and to get access to all the features.
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