mints 0.0.28 → 0.0.30

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 (114) hide show
  1. checksums.yaml +4 -4
  2. data/lib/client.rb +287 -385
  3. data/lib/contact/config/appointments.rb +201 -0
  4. data/lib/contact/config/config.rb +7 -0
  5. data/lib/contact/content/content.rb +7 -0
  6. data/lib/contact/content/conversations.rb +121 -0
  7. data/lib/contact/ecommerce/ecommerce.rb +14 -0
  8. data/lib/contact/ecommerce/order_items.rb +19 -0
  9. data/lib/contact/ecommerce/order_items_groups.rb +95 -0
  10. data/lib/contact/ecommerce/orders.rb +132 -0
  11. data/lib/contact/ecommerce/vouchers.rb +18 -0
  12. data/lib/contact.rb +54 -603
  13. data/lib/errors.rb +4 -2
  14. data/lib/generators/mints_assets_controller.rb +4 -1
  15. data/lib/generators/mints_contact_controller.rb +4 -1
  16. data/lib/generators/mints_files_generator.rb +16 -13
  17. data/lib/generators/mints_link.rb +7 -4
  18. data/lib/generators/mints_public_controller.rb +4 -1
  19. data/lib/generators/mints_user_controller.rb +3 -0
  20. data/lib/generators/short_link_controller.rb +4 -1
  21. data/lib/mints/controllers/admin_base_controller.rb +5 -3
  22. data/lib/mints/controllers/base_api_controller.rb +6 -4
  23. data/lib/mints/controllers/base_controller.rb +5 -3
  24. data/lib/mints/controllers/concerns/mints_clients.rb +4 -2
  25. data/lib/mints/controllers/concerns/read_config_file.rb +3 -1
  26. data/lib/mints/controllers/contact_api_controller.rb +12 -10
  27. data/lib/mints/controllers/public_api_controller.rb +10 -8
  28. data/lib/mints/controllers/user_api_controller.rb +11 -9
  29. data/lib/mints/helpers/contact_auth_helper.rb +5 -3
  30. data/lib/mints/helpers/mints_helper.rb +39 -38
  31. data/lib/mints/helpers/proxy_controllers_methods.rb +24 -24
  32. data/lib/mints/helpers/user_auth_helper.rb +5 -3
  33. data/lib/mints.rb +12 -10
  34. data/lib/pub/config/attributes.rb +13 -0
  35. data/lib/pub/config/config.rb +15 -0
  36. data/lib/pub/config/public_folders.rb +51 -0
  37. data/lib/pub/config/tags.rb +42 -0
  38. data/lib/pub/config/taxonomies.rb +49 -0
  39. data/lib/pub/content/assets.rb +16 -0
  40. data/lib/pub/content/content.rb +22 -0
  41. data/lib/pub/content/content_bundles.rb +40 -0
  42. data/lib/pub/content/content_instance_versions.rb +56 -0
  43. data/lib/pub/content/content_instances.rb +37 -0
  44. data/lib/pub/content/forms.rb +47 -0
  45. data/lib/pub/content/stories.rb +44 -0
  46. data/lib/pub/content/story_versions.rb +46 -0
  47. data/lib/pub/ecommerce/ecommerce.rb +14 -0
  48. data/lib/pub/ecommerce/locations.rb +25 -0
  49. data/lib/pub/ecommerce/orders.rb +31 -0
  50. data/lib/pub/ecommerce/products.rb +45 -0
  51. data/lib/pub.rb +22 -461
  52. data/lib/user/config/api_keys.rb +63 -61
  53. data/lib/user/config/appointments.rb +217 -215
  54. data/lib/user/config/attribute_groups.rb +74 -72
  55. data/lib/user/config/attributes.rb +83 -81
  56. data/lib/user/config/calendars.rb +88 -86
  57. data/lib/user/config/config.rb +31 -63
  58. data/lib/user/config/public_folders.rb +105 -104
  59. data/lib/user/config/relationships.rb +135 -132
  60. data/lib/user/config/roles.rb +76 -79
  61. data/lib/user/config/seeds.rb +52 -51
  62. data/lib/user/config/system_settings.rb +50 -49
  63. data/lib/user/config/tags.rb +57 -59
  64. data/lib/user/config/taxonomies.rb +115 -119
  65. data/lib/user/config/teams.rb +2 -0
  66. data/lib/user/config/users.rb +2 -0
  67. data/lib/user/contacts/contacts.rb +2 -0
  68. data/lib/user/content/assets.rb +3 -3
  69. data/lib/user/content/content.rb +224 -223
  70. data/lib/user/content/content_instances.rb +4 -2
  71. data/lib/user/content/content_templates.rb +2 -0
  72. data/lib/user/content/conversations.rb +2 -0
  73. data/lib/user/content/dam.rb +2 -0
  74. data/lib/user/content/forms.rb +2 -0
  75. data/lib/user/content/message_templates.rb +2 -0
  76. data/lib/user/content/messages.rb +2 -0
  77. data/lib/user/content/pages.rb +4 -2
  78. data/lib/user/content/stories.rb +3 -3
  79. data/lib/user/content/story_templates.rb +5 -3
  80. data/lib/user/content/story_versions.rb +2 -0
  81. data/lib/user/crm/companies.rb +3 -1
  82. data/lib/user/crm/contacts.rb +2 -0
  83. data/lib/user/crm/crm.rb +2 -0
  84. data/lib/user/crm/deals.rb +2 -0
  85. data/lib/user/crm/favorites.rb +2 -0
  86. data/lib/user/crm/segments.rb +2 -0
  87. data/lib/user/crm/users.rb +2 -0
  88. data/lib/user/crm/workflow_step_objects.rb +2 -0
  89. data/lib/user/crm/workflow_steps.rb +2 -0
  90. data/lib/user/crm/workflows.rb +2 -0
  91. data/lib/user/ecommerce/ecommerce.rb +4 -0
  92. data/lib/user/ecommerce/item_prices.rb +2 -0
  93. data/lib/user/ecommerce/locations.rb +4 -2
  94. data/lib/user/ecommerce/order_items_groups.rb +5 -2
  95. data/lib/user/ecommerce/order_statuses.rb +2 -0
  96. data/lib/user/ecommerce/orders.rb +4 -1
  97. data/lib/user/ecommerce/price_lists.rb +2 -0
  98. data/lib/user/ecommerce/product_templates.rb +3 -1
  99. data/lib/user/ecommerce/product_variations.rb +2 -0
  100. data/lib/user/ecommerce/products.rb +3 -1
  101. data/lib/user/ecommerce/skus.rb +2 -0
  102. data/lib/user/ecommerce/taxes.rb +2 -0
  103. data/lib/user/ecommerce/variant_options.rb +2 -0
  104. data/lib/user/ecommerce/variant_values.rb +2 -0
  105. data/lib/user/ecommerce/vouchers.rb +90 -0
  106. data/lib/user/helpers/helpers.rb +2 -0
  107. data/lib/user/helpers/object_activities.rb +2 -0
  108. data/lib/user/helpers/object_folders.rb +2 -0
  109. data/lib/user/helpers/user_folders.rb +2 -0
  110. data/lib/user/marketing/marketing.rb +2 -0
  111. data/lib/user/profile/profile.rb +2 -0
  112. data/lib/user.rb +32 -41
  113. metadata +42 -16
  114. data/lib/user/config/importers.rb +0 -184
@@ -0,0 +1,201 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Appointments
4
+ # Appointments
5
+
6
+ ##
7
+ # === Get Appointments.
8
+ # Get a collection of appointments.
9
+ #
10
+ # ==== Parameters
11
+ # options:: (Hash) -- List of Resource Collection Options shown above can be used as parameter.
12
+ #
13
+ # ==== First Example
14
+ # @data = @mints_contact.get_appointments
15
+ #
16
+ # ==== Second Example
17
+ # options = {
18
+ # fields: 'id, created_at'
19
+ # }
20
+ # @data = @mints_contact.get_appointments(options)
21
+ def get_appointments(options = nil)
22
+ @client.raw('get', '/contacts/appointments', options)
23
+ end
24
+
25
+ ##
26
+ # === Get Appointment.
27
+ # Get an appointment info.
28
+ #
29
+ # ==== Parameters
30
+ # options:: (Hash) -- List of Resource Collection Options shown above can be used as parameter.
31
+ #
32
+ # ==== First Example
33
+ # @data = @mints_contact.get_appointment(1)
34
+ #
35
+ # ==== Second Example
36
+ # options = {
37
+ # fields: 'id, created_at'
38
+ # }
39
+ # @data = @mints_contact.get_appointment(1, options)
40
+ def get_appointment(id, options = nil)
41
+ @client.raw('get', "/contacts/appointments/#{id}", options)
42
+ end
43
+
44
+ ##
45
+ # === Create Appointment.
46
+ # Create an appointment with data.
47
+ #
48
+ # ==== Parameters
49
+ # data:: (Hash) -- Data to be submitted.
50
+ #
51
+ # ==== Example
52
+ # data = {
53
+ # object_model: 'products',
54
+ # object_id: 1,
55
+ # title: 'New Appointment',
56
+ # start: '2021-11-25T14:15:00+00:00',
57
+ # end: '2022-01-01T13:00:00+00:00'
58
+ # }
59
+ # @data = @mints_contact.create_appointment(data)
60
+ def create_appointment(data)
61
+ @client.raw('post', '/contacts/appointments', nil, data_transform(data))
62
+ end
63
+
64
+ ##
65
+ # === Update Appointment.
66
+ # Update an appointment info.
67
+ #
68
+ # ==== Parameters
69
+ # id:: (Integer) -- Appointment id.
70
+ # data:: (Hash) -- Data to be submitted.
71
+ #
72
+ # ==== Example
73
+ # data = {
74
+ # object_id: 2
75
+ # }
76
+ # @data = @mints_contact.update_appointment(1, data)
77
+ def update_appointment(id, data)
78
+ @client.raw('put', "/contacts/appointments/#{id}", nil, data_transform(data))
79
+ end
80
+
81
+ ##
82
+ # === Scheduled Appointments.
83
+ # Get a collection of appointments filtering by object_type, object_id and dates range.
84
+ #
85
+ # ==== Parameters
86
+ # data:: (Hash) -- Data to be submitted.
87
+ #
88
+ # ==== Example
89
+ # data = {
90
+ # object_model: 'products',
91
+ # object_id: 2,
92
+ # start: '2021-11-25T14:15:00+00:00',
93
+ # end: '2022-01-01T13:00:00+00:00'
94
+ # }
95
+ # @data = @mints_contact.scheduled_appointments(data)
96
+ def scheduled_appointments(data)
97
+ @client.raw('post', '/contacts/appointments/scheduled-appointments', nil, data_transform(data))
98
+ end
99
+
100
+ ##
101
+ # === Attach Invitee.
102
+ # Attach invitee to an appointment.
103
+ #
104
+ # ==== Parameters
105
+ # data:: (Hash) -- Data to be submitted.
106
+ #
107
+ # ==== Example
108
+ # data = {
109
+ # appointment_id: 1,
110
+ # invitee_ids: 1
111
+ # }
112
+ # @data = @mints_contact.attach_invitee(data)
113
+ def attach_invitee(data)
114
+ @client.raw('post', '/contacts/appointments/attach-invitee', nil, data_transform(data))
115
+ end
116
+
117
+ ##
118
+ # === Attach Follower.
119
+ # Attach follower to an appointment.
120
+ #
121
+ # ==== Parameters
122
+ # data:: (Hash) -- Data to be submitted.
123
+ #
124
+ # ==== Example
125
+ # data = {
126
+ # appointment_id: 1,
127
+ # follower_ids: 1
128
+ # }
129
+ # @data = @mints_contact.attach_follower(data)
130
+ def attach_follower(data)
131
+ @client.raw('post', '/contacts/appointments/attach-follower', nil, data_transform(data))
132
+ end
133
+
134
+ ##
135
+ # === Detach Invitee.
136
+ # Detach invitee from an appointment.
137
+ #
138
+ # ==== Parameters
139
+ # data:: (Hash) -- Data to be submitted.
140
+ #
141
+ # ==== Example
142
+ # data = {
143
+ # appointment_id: 1,
144
+ # invitee_ids: 1
145
+ # }
146
+ # @data = @mints_contact.detach_invitee(data)
147
+ def detach_invitee(data)
148
+ @client.raw('post', '/contacts/appointments/detach-invitee', nil, data_transform(data))
149
+ end
150
+
151
+ ##
152
+ # === Detach Follower.
153
+ # Detach follower from an appointment.
154
+ #
155
+ # ==== Parameters
156
+ # data:: (Hash) -- Data to be submitted.
157
+ #
158
+ # ==== Example
159
+ # data = {
160
+ # appointment_id: 1,
161
+ # follower_ids: 1
162
+ # }
163
+ # @data = @mints_contact.detach_follower(data)
164
+ def detach_follower(data)
165
+ @client.raw('post', '/contacts/appointments/detach-follower', nil, data_transform(data))
166
+ end
167
+
168
+ ##
169
+ # === Sync Invitee.
170
+ # Sync an invitee from an appointment.
171
+ #
172
+ # ==== Parameters
173
+ # data:: (Hash) -- Data to be submitted.
174
+ #
175
+ # ==== Example
176
+ # data = {
177
+ # appointment_id: 1,
178
+ # invitee_ids: 1
179
+ # }
180
+ # @data = @mints_contact.sync_invitee(data)
181
+ def sync_invitee(data)
182
+ @client.raw('post', '/contacts/appointments/sync-invitee', nil, data_transform(data))
183
+ end
184
+
185
+ ##
186
+ # === Sync Follower.
187
+ # Sync a follower from an appointment.
188
+ #
189
+ # ==== Parameters
190
+ # data:: (Hash) -- Data to be submitted.
191
+ #
192
+ # ==== Example
193
+ # data = {
194
+ # appointment_id: 1,
195
+ # follower_ids: 1
196
+ # }
197
+ # @data = @mints_contact.sync_follower(data)
198
+ def sync_follower(data)
199
+ @client.raw('post', '/contacts/appointments/sync-follower', nil, data_transform(data))
200
+ end
201
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './appointments'
4
+
5
+ module Config
6
+ include Appointments
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './conversations'
4
+
5
+ module Content
6
+ include Conversations
7
+ end
@@ -0,0 +1,121 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Conversations
4
+ ##
5
+ # === Get Conversations.
6
+ # Get a collection of conversations.
7
+ #
8
+ # ==== Parameters
9
+ # options:: (Hash) -- List of Resource Collection Options shown above can be used as parameter.
10
+ # FIXME: This method doesn't return data.
11
+ def get_conversations(options = nil)
12
+ @client.raw('get', '/content/conversations', options, nil, @contact_v1_url)
13
+ end
14
+
15
+ ##
16
+ # === Get Conversation.
17
+ # Get a conversation info.
18
+ #
19
+ # ==== Parameters
20
+ # id:: (Integer) -- Conversation id.
21
+ # options:: (Hash) -- List of Resource Collection Options shown above can be used as parameter.
22
+ # FIXME: This method doesn't return data.
23
+ def get_conversation(id, options = nil)
24
+ @client.raw('get', "/content/conversations/#{id}", options, nil, @contact_v1_url)
25
+ end
26
+
27
+ ##
28
+ # === Create Conversation.
29
+ # Create a conversation with data.
30
+ #
31
+ # ==== Parameters
32
+ # data:: (Hash) -- Data to be submitted.
33
+ #
34
+ # ==== Example
35
+ # data = {
36
+ # title: 'New Conversation To Test'
37
+ # }
38
+ # @data = @mints_contact.create_conversation(data)
39
+ def create_conversation(data)
40
+ @client.raw('post', '/content/conversations', nil, data_transform(data), @contact_v1_url)
41
+ end
42
+
43
+ ##
44
+ # === Update Conversation.
45
+ # Update a location template info.
46
+ #
47
+ # ==== Parameters
48
+ # id:: (Integer) -- Conversation id.
49
+ # data:: (Hash) -- Data to be submitted.
50
+ # FIXME: This method doesn't locate conversation id to be updated.
51
+ def update_conversation(id, data)
52
+ @client.raw('put', "/content/conversations/#{id}", nil, data_transform(data), @contact_v1_url)
53
+ end
54
+
55
+ ##
56
+ # === Update Conversation Status.
57
+ # Update a conversation status.
58
+ #
59
+ # ==== Parameters
60
+ # id:: (Integer) -- Conversation id.
61
+ # data:: (Hash) -- Data to be submitted.
62
+ # FIXME: This method doesn't locate conversation id to be updated.
63
+ def update_conversation_status(id, data)
64
+ @client.raw('put', "/content/conversations/#{id}/status", nil, data_transform(data), @contact_v1_url)
65
+ end
66
+
67
+ ##
68
+ # === Get Conversation Participants.
69
+ # Update a conversation participants.
70
+ #
71
+ # ==== Parameters
72
+ # id:: (Integer) -- Conversation id.
73
+ # FIXME: This method doesn't locate conversation id to be updated.
74
+ def get_conversation_participants(id)
75
+ #TODO: Test if this method needs data in options.
76
+ @client.raw('get', "/content/conversations/#{id}/participants", nil, nil, @contact_v1_url)
77
+ end
78
+
79
+ ##
80
+ # === Get Messages.
81
+ # Get a collection of messages.
82
+ #
83
+ # ==== Parameters
84
+ # options:: (Hash) -- List of Resource Collection Options shown above can be used as parameter.
85
+ # FIXME: This method doesn't return data.
86
+ def get_messages(options = nil)
87
+ @client.raw('get', '/content/messages', options, nil, @contact_v1_url)
88
+ end
89
+
90
+ ##
91
+ # === Get Message.
92
+ # Get a message info.
93
+ #
94
+ # ==== Parameters
95
+ # id:: (Integer) -- Message id.
96
+ # options:: (Hash) -- List of Resource Collection Options shown above can be used as parameter.
97
+ # FIXME: This method doesn't return data.
98
+ def get_message(id, options = nil)
99
+ @client.raw('get', "/content/messages/#{id}", options, nil, @contact_v1_url)
100
+ end
101
+
102
+ ##
103
+ # === Create Message.
104
+ # Create a message with data.
105
+ #
106
+ # ==== Parameters
107
+ # data:: (Hash) -- Data to be submitted.
108
+ #
109
+ # ==== Example
110
+ # data = {
111
+ # conversation_id: 3,
112
+ # type: 'text',
113
+ # value: {
114
+ # text: 'Message Text'
115
+ # }
116
+ # }
117
+ # @data = @mints_contact.create_message(data)
118
+ def create_message(data)
119
+ @client.raw('post', '/content/messages', nil, data_transform(data), @contact_v1_url)
120
+ end
121
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './order_items_groups'
4
+ require_relative './order_items'
5
+ require_relative './orders'
6
+ require_relative './vouchers'
7
+
8
+ module Ecommerce
9
+ include OrderItemsGroups
10
+ include OrderItems
11
+ include Orders
12
+ include Vouchers
13
+
14
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OrderItems
4
+ ##
5
+ # === Get Order Items.
6
+ # Get a collection of order items.
7
+ #TODO: Find a way to show order items.
8
+ def get_order_items(options = nil)
9
+ @client.raw('get', '/ecommerce/order-items', options, nil, @contact_v1_url)
10
+ end
11
+
12
+ ##
13
+ # === Get Order Item.
14
+ # Get an order item info.
15
+ # TODO: Find a way to show order items.
16
+ def get_order_item(id, options = nil)
17
+ @client.raw('get', "/ecommerce/order-items/#{id}", options, nil, @contact_v1_url)
18
+ end
19
+ end
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OrderItemsGroups
4
+ ##
5
+ # === Get Order Item Groups.
6
+ # Get a collection of order item groups.
7
+ #
8
+ # ==== Parameters
9
+ # options:: (Hash) -- List of Resource Collection Options shown above can be used as parameter.
10
+ #
11
+ # ==== First Example
12
+ # @data = @mints_contact.get_order_item_groups
13
+ #
14
+ # ==== Second Example
15
+ # options = {
16
+ # fields: 'id'
17
+ # }
18
+ # @data = @mints_contact.get_order_item_groups(options)
19
+ def get_order_item_groups(options = nil)
20
+ @client.raw('get', '/ecommerce/order-items-groups', options, nil, @contact_v1_url)
21
+ end
22
+
23
+ ##
24
+ # === Get Order Item Group.
25
+ # Get an order item group info.
26
+ #
27
+ # ==== Parameters
28
+ # id:: (Integer) -- Order Item Group Id.
29
+ # options:: (Hash) -- List of Resource Collection Options shown above can be used as parameter.
30
+ #
31
+ # ==== First Example
32
+ # @data = @mints_contact.get_order_item_group(130)
33
+ #
34
+ # ==== Second Example
35
+ # options = {
36
+ # fields: 'id'
37
+ # }
38
+ # @data = @mints_contact.get_order_item_group(130, options)
39
+ def get_order_item_group(id, options = nil)
40
+ @client.raw('get', "/ecommerce/order-items-groups/#{id}", options, nil, @contact_v1_url)
41
+ end
42
+
43
+ ##
44
+ # === Create Order Item Group.
45
+ # Create an order item group with data if you are related to that order.
46
+ #
47
+ # ==== Parameters
48
+ # data:: (Hash) -- Data to be submitted.
49
+ #
50
+ # ==== First Example
51
+ # data = {
52
+ # name: 'New Order Item Group',
53
+ # quantity: 1,
54
+ # order_id: 1,
55
+ # on_sale_price: 100
56
+ # }
57
+ # @data = @mints_contact.create_order_item_group(data)
58
+ #
59
+ # ==== Second Example
60
+ # data = {
61
+ # name: "",
62
+ # quantity: 1,
63
+ # order_id: 1,
64
+ # sku_id: 1
65
+ # }
66
+ # @data = @mints_contact.create_order_item_group(data)
67
+ def create_order_item_group(data)
68
+ @client.raw('post', '/ecommerce/order-items-groups', nil, data_transform(data), @contact_v1_url)
69
+ end
70
+
71
+ ##
72
+ # === Update Order Item Group.
73
+ # Update an order item group info if you are related to that order.
74
+ #
75
+ # ==== Parameters
76
+ # id:: (Integer) -- Order Item Group Id.
77
+ # data:: (Hash) -- Data to be submitted.
78
+ #
79
+ # ==== First Example
80
+ # data = {
81
+ # name: 'New Order Item Group Name Updated'
82
+ # }
83
+ # @data = @mints_contact.update_order_item_group(130, data)
84
+ def update_order_item_group(id, data)
85
+ @client.raw('put', "/ecommerce/order-items-groups/#{id}", nil, data_transform(data), @contact_v1_url)
86
+ end
87
+
88
+ ##
89
+ # === Delete Order Item Group.
90
+ # Delete an order item group.
91
+ # FIXME: This method doesn't work. Throw no action error.
92
+ def delete_order_item_group(id)
93
+ @client.raw('delete', "/ecommerce/order-items-groups/#{id}", nil, nil, @contact_v1_url)
94
+ end
95
+ end
@@ -0,0 +1,132 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Orders
4
+ ##
5
+ # === Get Orders.
6
+ # Get a collection of orders.
7
+ #
8
+ # ==== Parameters
9
+ # options:: (Hash) -- List of Resource Collection Options shown above can be used as parameter.
10
+ # use_post:: (Boolean) -- Variable to determine if the request is by 'post' or 'get' functions.
11
+ #
12
+ # ==== First Example
13
+ # @data = @mints_pub.get_orders
14
+ #
15
+ # ==== Second Example
16
+ # options = { fields: 'title' }
17
+ # @data = @mints_pub.get_orders(options)
18
+ #
19
+ # ==== Third Example
20
+ # options = { fields: 'title' }
21
+ # @data = @mints_pub.get_orders(options, false)
22
+ def get_orders(options = nil, use_post = true)
23
+ if use_post
24
+ @client.raw('post', '/ecommerce/orders/query', options, nil, @contact_v1_url)
25
+ else
26
+ @client.raw('get', '/ecommerce/orders', options, nil, @contact_v1_url)
27
+ end
28
+ end
29
+
30
+ ##
31
+ # === Get Order.
32
+ # Get an order info.
33
+ #
34
+ # ==== Parameters
35
+ # id:: (Integer) -- Order id.
36
+ # options:: (Hash) -- List of Resource Collection Options shown above can be used as parameter.
37
+ #
38
+ # ==== First Example
39
+ # @data = @mints_pub.get_product(25)
40
+ #
41
+ # ==== Second Example
42
+ # options = {
43
+ # fields: 'title'
44
+ # }
45
+ # @data = @mints_pub.get_product(25, options)
46
+ def get_order(id, options = nil)
47
+ @client.raw('get', "/ecommerce/orders/#{id}", options, nil, @contact_v1_url)
48
+ end
49
+
50
+ ##
51
+ # === Create Order.
52
+ # Create a order with data.
53
+ #
54
+ # ==== Parameters
55
+ # data:: (Hash) -- Data to be submitted.
56
+ #
57
+ # ==== Example
58
+ # data = {
59
+ # order_template_id: 1,
60
+ # order_status_id: 1,
61
+ # sales_channel_id: 1
62
+ # }
63
+ # @data = @mints_pub.create_order(data)
64
+ def create_order(data)
65
+ @client.raw('post', '/ecommerce/orders', nil, data_transform(data), @contact_v1_url)
66
+ end
67
+
68
+ ##
69
+ # === Update Order.
70
+ # Update an order info.
71
+ #
72
+ # ==== Parameters
73
+ # id:: (Integer) -- Order Id
74
+ # data:: (Hash) -- Data to be submitted.
75
+ # FIXME: This method doesnt update an order.
76
+ def update_order(id, data)
77
+ @client.raw('put', "/ecommerce/orders/#{id}", nil, data_transform(data), @contact_v1_url)
78
+ end
79
+
80
+ # TODO: No tested
81
+ # === Detach Order Item From Order Item Group.
82
+ # Detach an order item from an order item group.
83
+ #
84
+ # ==== Parameters
85
+ # orderI_iemI_i:: (Integer) -- Order item id.
86
+ # group_id:: (Integer) -- Order items group id.
87
+ #
88
+ def detach_order_item_from_order_item_group(order_item_id, group_id)
89
+ @client.raw('put', "/ecommerce/order-items/detach/#{order_item_id}/order-items-groups/#{group_id}", nil, nil, @contact_v1_url)
90
+ end
91
+
92
+ #TODO: No tested
93
+ # === Update Order Item From Order Item Group.
94
+ # Update an order item data from an order item group.
95
+ #
96
+ # ==== Parameters
97
+ # orderI_iemI_i:: (Integer) -- Order item id.
98
+ # group_id:: (Integer) -- Order items group id.
99
+ #
100
+ def update_order_item_from_order_item_group(order_item_id, group_id, data)
101
+ url = "/ecommerce/order-items/update/#{order_item_id}/order-items-groups/#{group_id}"
102
+ @client.raw('put', url, nil, data_transform(data), @contact_v1_url)
103
+ end
104
+
105
+ ##
106
+ # === Get My Shopping Cart.
107
+ # Get a collection of items in the shopping cart.
108
+ #
109
+ # ==== Example
110
+ # @data = @mints_contact.get_my_shopping_cart
111
+ def get_my_shopping_cart(options = nil)
112
+ @client.raw('get', '/ecommerce/my-shopping-cart', options, nil, @contact_v1_url)
113
+ end
114
+
115
+ ##
116
+ # === Add Item To Shopping Cart.
117
+ # Add an item into a shopping cart.
118
+ #
119
+ # ==== Parameters
120
+ # data:: (Hash) -- Data to be submitted.
121
+ #
122
+ # ==== Example
123
+ # data = {
124
+ # quantity: 1,
125
+ # sku_id: 1,
126
+ # price_list_id: 1
127
+ # }
128
+ # @data = @mints_contact.add_item_to_shopping_cart(data)
129
+ def add_item_to_shopping_cart(data, options = nil)
130
+ @client.raw('post', '/ecommerce/shopping-cart', options, data_transform(data), @contact_v1_url)
131
+ end
132
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Vouchers
4
+ ##
5
+ # === Apply voucher.
6
+ # Apply voucher code to the existing order, only applies to sale orders.
7
+ #
8
+ # ==== Parameters
9
+ # order_id:: (Integer) -- Order id.
10
+ # data:: (Hash) -- Data to be submitted.
11
+ #
12
+ # ==== Example
13
+ # data = { description: 'This is the transaction description', voucher_code: 'XAZWQ12MP' }
14
+ # @data = @mints_contact.apply_voucher(1, data)
15
+ def apply_voucher(order_id, data)
16
+ @client.raw('post', "/ecommerce/orders/#{order_id}/voucher", nil, data_transform(data))
17
+ end
18
+ end