iterable-api-client 0.4.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +82 -5
- data/lib/iterable/email.rb +7 -3
- data/lib/iterable/events.rb +13 -0
- data/lib/iterable/in_app.rb +36 -0
- data/lib/iterable/push.rb +46 -0
- data/lib/iterable/response.rb +1 -1
- data/lib/iterable.rb +1 -0
- data.tar.gz.sig +0 -0
- metadata +42 -27
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dec75eb2ce6297758dd87c44acd79435578c29bb16f23402d133c2e24d1f6820
|
4
|
+
data.tar.gz: 45658c86e6448f1e75948fa150de1bb6133dacefb3d237cf1edc5504ee90591b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9dc86fb5a431fddc281eefb86e0ed597b535dad112e03ef53de5027dd723015d8f1ac791d1ba93c1086aef2cd382d619dafaca348147ada3e7d091ed30afc353
|
7
|
+
data.tar.gz: 8428f4dfd4bec851b1ed30ee7161dfa7f26848f4c210046fb29f8485a002a06c016473366774720f79855179b27f3e8f57793dfcb3203db82956dcef4d50cfd4
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/README.md
CHANGED
@@ -81,6 +81,10 @@ response.body
|
|
81
81
|
# HTTP message
|
82
82
|
response.message
|
83
83
|
|
84
|
+
# Headers of response
|
85
|
+
response['Content-Type']
|
86
|
+
# => 'application/json; charset=utf-8'
|
87
|
+
|
84
88
|
# The URI used to make the request for the response
|
85
89
|
reponse.uri
|
86
90
|
```
|
@@ -124,6 +128,7 @@ reponse.uri
|
|
124
128
|
- [Upsert](#email-templates-upsert)
|
125
129
|
- [Events](#events)
|
126
130
|
- [For Email](#events-for-email)
|
131
|
+
- [Bulk Track](#events-track-bulk)
|
127
132
|
- [Track](#events-track)
|
128
133
|
- [Track Push Open](#events-track-push-open)
|
129
134
|
- [Experiments](#experiments)
|
@@ -133,6 +138,8 @@ reponse.uri
|
|
133
138
|
- [CSV](#export-csv)
|
134
139
|
- [In App](#in-app)
|
135
140
|
- [Messages](#in-app-messages)
|
141
|
+
- [Target](#in-app-target)
|
142
|
+
- [Cancel](#in-app-cancel)
|
136
143
|
- [Lists](#lists)
|
137
144
|
- [All](#lists-all)
|
138
145
|
- [Create](#lists-create)
|
@@ -149,6 +156,9 @@ reponse.uri
|
|
149
156
|
- [Get Key](#metadata-get-key)
|
150
157
|
- [Remove Key](#metadata-remove-key)
|
151
158
|
- [Add Key](#metadata-add-key)
|
159
|
+
- [Push](#push)
|
160
|
+
- [Target](#push-target)
|
161
|
+
- [Cancel](#push-cancel)
|
152
162
|
- [Push Templates](#push-templates)
|
153
163
|
- [Get](#push-templates-get)
|
154
164
|
- [Update](#push-templates-update)
|
@@ -206,7 +216,7 @@ Endpoint: `DELETE /catalogs/{catalogName}/items`
|
|
206
216
|
catalog = 'my-catalog'
|
207
217
|
catalog_items = Iterable::BulkCatalogItems.new(catalog)
|
208
218
|
item_ids = ['12345', '12346', '12347']
|
209
|
-
response = catalog_items.
|
219
|
+
response = catalog_items.delete(item_ids)
|
210
220
|
```
|
211
221
|
|
212
222
|
### Campaigns
|
@@ -300,7 +310,8 @@ Endpoint: `GET /catalogs/{catalogName}/fieldMappings`
|
|
300
310
|
```ruby
|
301
311
|
catalog = 'my-catalog'
|
302
312
|
catalog_field_mappings = Iterable::CatalogFieldMappings.new(catalog)
|
303
|
-
response = catalog_field_mappings.
|
313
|
+
response = catalog_field_mappings.get
|
314
|
+
response.body['params']['definedMappings']
|
304
315
|
```
|
305
316
|
|
306
317
|
#### Catalog Field Mappings Update
|
@@ -557,6 +568,19 @@ attrs = { campaignId: 42, dataFields: {} }
|
|
557
568
|
response = events.track 'event-name', 'user@example.com', attrs
|
558
569
|
```
|
559
570
|
|
571
|
+
#### Events Track Bulk
|
572
|
+
|
573
|
+
Endpoint: `POST /events/trackBulk`
|
574
|
+
|
575
|
+
```ruby
|
576
|
+
events = Iterable::Events.new
|
577
|
+
# Array of events to track
|
578
|
+
events_attrs = [
|
579
|
+
{ email: 'user@example.com', eventName: 'event-name', campaignId: 42, dataFields: {} }
|
580
|
+
]
|
581
|
+
response = iterable_events.track_bulk events_attrs
|
582
|
+
```
|
583
|
+
|
560
584
|
#### Events Track Push Open
|
561
585
|
|
562
586
|
Endpoint: `GET /events/{email}`
|
@@ -639,7 +663,34 @@ response = in_app.messages_for_user_id 42, count: 2
|
|
639
663
|
# Pass in query parameters
|
640
664
|
email = 'user@example.com'
|
641
665
|
attrs = { 'platform' => 'iOS' }
|
642
|
-
response = in_app.messages_for_email
|
666
|
+
response = in_app.messages_for_email email, attrs
|
667
|
+
```
|
668
|
+
|
669
|
+
#### In App Target
|
670
|
+
|
671
|
+
Endpoint: `POST /inApp/target`
|
672
|
+
|
673
|
+
```ruby
|
674
|
+
in_app = Iterable::InApp.new
|
675
|
+
|
676
|
+
# Needs campaign ID and an optional email
|
677
|
+
email = 'user@example.com'
|
678
|
+
attrs = { 'campaignId' => '123456asdf' }
|
679
|
+
response = in_app.target attrs: attrs, email: email
|
680
|
+
```
|
681
|
+
|
682
|
+
#### In App Cancel
|
683
|
+
|
684
|
+
Endpoint: `POST /push/cancel`
|
685
|
+
|
686
|
+
```ruby
|
687
|
+
in_app = Iterable::InApp.new
|
688
|
+
|
689
|
+
# Needs campaign ID and an optional email and optional attrs for request
|
690
|
+
email = 'user@example.com'
|
691
|
+
campaign_id = '12345asdf'
|
692
|
+
attrs = {}
|
693
|
+
response = in_app.target campaign_id: campaign_id, attrs: attrs, email: email
|
643
694
|
```
|
644
695
|
|
645
696
|
### Lists
|
@@ -776,6 +827,32 @@ value = { foo: 'bar', data: 'stuffs' }
|
|
776
827
|
response = metadata_table.add 'metadata-key', value
|
777
828
|
```
|
778
829
|
|
830
|
+
### Push
|
831
|
+
|
832
|
+
#### Push Target
|
833
|
+
|
834
|
+
Endpoint: `POST /push/target`
|
835
|
+
|
836
|
+
```ruby
|
837
|
+
push = Iterable::Push.new
|
838
|
+
campaign_id = '1234asdf'
|
839
|
+
email = 'user@example.com' # optional
|
840
|
+
attrs = {} # optional extra params for the request
|
841
|
+
response = push.target campaign_id: campaign_id, email: email, attrs: attrs
|
842
|
+
```
|
843
|
+
|
844
|
+
#### Push Cancel
|
845
|
+
|
846
|
+
Endpoint: `POST /push/cancel`
|
847
|
+
|
848
|
+
```ruby
|
849
|
+
push = Iterable::Push.new
|
850
|
+
campaign_id = '1234asdf'
|
851
|
+
email = 'user@example.com' # optional
|
852
|
+
attrs = {} # optional extra params for the request
|
853
|
+
response = push.cancel email: email, campaign_id: campaign_id, attrs: attrs
|
854
|
+
```
|
855
|
+
|
779
856
|
### Push Templates
|
780
857
|
|
781
858
|
#### Push Templates Get
|
@@ -854,10 +931,10 @@ Endpoint: `POST /users/bulkUpdate`
|
|
854
931
|
users = Iterable::Users.new
|
855
932
|
# Array of users to update by email with additional
|
856
933
|
# fields if needed
|
857
|
-
|
934
|
+
users_attrs = [
|
858
935
|
{ email: 'user@example.com', userID: 'custom-id' }
|
859
936
|
]
|
860
|
-
response = users.bulk_update
|
937
|
+
response = users.bulk_update users_attrs
|
861
938
|
```
|
862
939
|
|
863
940
|
#### Users Update Subscriptions
|
data/lib/iterable/email.rb
CHANGED
@@ -18,11 +18,15 @@ module Iterable
|
|
18
18
|
#
|
19
19
|
# @param email [String] Email of user who received the message to view
|
20
20
|
# @param message_id [String|Integer] Message id for message sent
|
21
|
+
# @param attrs [Hash] Hash of attributes to pass like dataFields with the requst
|
21
22
|
#
|
22
23
|
# @return [Iterable::Response] A response object
|
23
|
-
def view(email, message_id)
|
24
|
-
|
25
|
-
|
24
|
+
def view(email, message_id, attrs = {})
|
25
|
+
attrs['email'] = email
|
26
|
+
attrs['messageId'] = message_id
|
27
|
+
attrs.compact!
|
28
|
+
|
29
|
+
Iterable.request(conf, '/email/viewInBrowser', attrs).get
|
26
30
|
end
|
27
31
|
|
28
32
|
##
|
data/lib/iterable/events.rb
CHANGED
@@ -39,6 +39,19 @@ module Iterable
|
|
39
39
|
Iterable.request(conf, '/events/track').post(attrs)
|
40
40
|
end
|
41
41
|
|
42
|
+
##
|
43
|
+
#
|
44
|
+
# Bulk Track events
|
45
|
+
#
|
46
|
+
# @param events [Array[Hash]] Array of hashes of event details
|
47
|
+
#
|
48
|
+
# @return [Iterable::Response] A response object
|
49
|
+
#
|
50
|
+
# @note Event fields can be eventName [String], email [String], dataFields [Hash], or userId [String]
|
51
|
+
def track_bulk(events = [])
|
52
|
+
Iterable.request(conf, '/events/trackBulk').post(events: events)
|
53
|
+
end
|
54
|
+
|
42
55
|
##
|
43
56
|
#
|
44
57
|
# Track an event
|
data/lib/iterable/in_app.rb
CHANGED
@@ -41,6 +41,42 @@ module Iterable
|
|
41
41
|
messages(attrs)
|
42
42
|
end
|
43
43
|
|
44
|
+
##
|
45
|
+
#
|
46
|
+
# Send an In-App notification to a specific user. User Email or ID along
|
47
|
+
# with campaign ID must be provided
|
48
|
+
#
|
49
|
+
# @param email [String] (optional) User email used to identify user
|
50
|
+
# @param campaign_id [Integer] Campaign ID
|
51
|
+
# @param attrs [Hash] Additional data to update or add
|
52
|
+
#
|
53
|
+
# @return [Iterable::Response] A response object
|
54
|
+
#
|
55
|
+
def target(campaign_id:, attrs: {}, email: nil)
|
56
|
+
attrs['recipientEmail'] = email if email
|
57
|
+
attrs['campaignId'] = campaign_id
|
58
|
+
Iterable.request(conf, '/inApp/target').post(attrs)
|
59
|
+
end
|
60
|
+
|
61
|
+
##
|
62
|
+
#
|
63
|
+
# Cancel an In App notification sent to a specific user
|
64
|
+
# Must include either an email address AND campaignId, or
|
65
|
+
# just a scheduledMessageId provided in the attrs
|
66
|
+
#
|
67
|
+
# @param email [String] User email to cancel push
|
68
|
+
# @param campaignId [Integer] campaignID used to cancel push
|
69
|
+
# @param attrs [Hash] Additional data to update or add
|
70
|
+
#
|
71
|
+
# @return [Iterable::Response] A response object
|
72
|
+
#
|
73
|
+
# @note An email or UserId is required
|
74
|
+
def cancel(campaign_id: nil, attrs: {}, email: nil)
|
75
|
+
attrs['email'] = email if email
|
76
|
+
attrs['campaignId'] = campaign_id if campaign_id
|
77
|
+
Iterable.request(conf, '/push/cancel').post(attrs)
|
78
|
+
end
|
79
|
+
|
44
80
|
private def messages(**attrs)
|
45
81
|
Iterable.request(conf, '/inApp/getMessages', attrs).get
|
46
82
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Iterable
|
2
|
+
##
|
3
|
+
#
|
4
|
+
# Interact with /push API endpoints
|
5
|
+
#
|
6
|
+
# @example Creating push endpoint object
|
7
|
+
# # With default config
|
8
|
+
# templates = Iterable::Push.new
|
9
|
+
# templates.target campaign_id: '12345'
|
10
|
+
#
|
11
|
+
class Push < ApiResource
|
12
|
+
##
|
13
|
+
#
|
14
|
+
# Send a push notification to a specific user
|
15
|
+
#
|
16
|
+
# @param email [String] (optional) User email used to identify user
|
17
|
+
# @param campaign_id [Integer] Campaign ID
|
18
|
+
# @param attrs [Hash] Additional data to update or add
|
19
|
+
#
|
20
|
+
# @return [Iterable::Response] A response object
|
21
|
+
def target(campaign_id:, email: nil, attrs: {})
|
22
|
+
attrs['recipientEmail'] = email if email
|
23
|
+
attrs['campaignId'] = campaign_id
|
24
|
+
Iterable.request(conf, '/push/target').post(attrs)
|
25
|
+
end
|
26
|
+
|
27
|
+
##
|
28
|
+
#
|
29
|
+
# Cancel a push notification to a specific user
|
30
|
+
# Must include either an email address AND campaignId, or
|
31
|
+
# just a scheduledMessageId provided in the attrs
|
32
|
+
#
|
33
|
+
# @param email [String] User email to cancel push
|
34
|
+
# @param campaignId [Integer] campaignID used to cancel push
|
35
|
+
# @param attrs [Hash] Additional data to update or add
|
36
|
+
#
|
37
|
+
# @return [Iterable::Response] A response object
|
38
|
+
#
|
39
|
+
# @note An email or UserId is required
|
40
|
+
def cancel(email: nil, campaign_id: nil, attrs: {})
|
41
|
+
attrs['email'] = email if email
|
42
|
+
attrs['campaignId'] = campaign_id if campaign_id
|
43
|
+
Iterable.request(conf, '/push/cancel').post(attrs)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/iterable/response.rb
CHANGED
data/lib/iterable.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iterable-api-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chavez
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIEeDCCAuCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMRAwDgYDVQQDDAdjb250
|
14
14
|
YWN0MRkwFwYKCZImiZPyLGQBGRYJZWwtY2hhdmV6MRIwEAYKCZImiZPyLGQBGRYC
|
15
|
-
|
15
|
+
bWUwHhcNMjMxMTAzMTI0NjI4WhcNMjQxMTAyMTI0NjI4WjBBMRAwDgYDVQQDDAdj
|
16
16
|
b250YWN0MRkwFwYKCZImiZPyLGQBGRYJZWwtY2hhdmV6MRIwEAYKCZImiZPyLGQB
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
17
|
+
GRYCbWUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCwyzAiKGW5Wpd1
|
18
|
+
JkK1efHmNNBxHPUJKCwcawrn3nQpdxlcnyxFm09+Ve7iCdhdrDbSX9CwurBBOXPO
|
19
|
+
2KjRAW/rTLoccT69XLUZDFtnqPYQUKWiAiYlbX3s5+2vJoU3OenWWLIFMEm/pRv4
|
20
|
+
x13nCXJu9Jd+9J7ILEFcrCPbhkDaUnU7bU5aqqwTfFSqgUh6V7Drg2+HFmRxHbbX
|
21
|
+
N6j3Fblr8/bCg5c8+PsE6jGOAQcxN4wz0stDJIPnlKo9a5pni27wLyI45fhhRibW
|
22
|
+
5h3Qk1hsbmUJcsgOOwGn5ZjoB7fn0KaVjnozsTuxc2NyO0BaxY3ypxy+F1XIJ1rp
|
23
|
+
Ba3+HC8BNrjMLCW3C74j/Xq/3/btDP7YHBXW+maD9XvPCZTbyJ21q+hhAs48r0zG
|
24
|
+
hPtrv5Muw7QXuwY+goYdA4BvU/U1/+waZMSzbaY1OZtBHCWXGKl7hADMEeHaZ7of
|
25
|
+
jhUfuFlBDOmfTOUDCMy2nIZJ+AKBpwExLXXiVJH/hHV+TWD+QmkCAwEAAaN7MHkw
|
26
|
+
CQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFGbko4JeDdU0PmxWZKeE
|
27
|
+
vDRbXLEuMB8GA1UdEQQYMBaBFGNvbnRhY3RAZWwtY2hhdmV6Lm1lMB8GA1UdEgQY
|
28
|
+
MBaBFGNvbnRhY3RAZWwtY2hhdmV6Lm1lMA0GCSqGSIb3DQEBCwUAA4IBgQBHNG6m
|
29
|
+
qf8zXX/sLG44km0YhTLbjDyUm2p181iVbOQKDp2IVOKRGRFTEhZdXX0cmRTtvmVg
|
30
|
+
d47dFqaquB9Y73UB/s/bUcmbCwMAkgtSZ1wS2yHUQZEVEyZ9IVJxRp6a/dXccue3
|
31
|
+
U7nins2YnMVIgz7f5+TBv6w6IoUy7A+vcGwVCjU5cJ0E1zuuCtMnTxmgLc8RnTBS
|
32
|
+
bfpibGhHkmdDHkEGDAi+bBrx2ebptW7pQeDtaRVrEW3MKfJNes1oJJKfdxb2xtkf
|
33
|
+
n63D/wE5M63E3iHSvJVHBNPkpa942SxwN836Ce8/P8E57ylGlVdFmQ1uRIvizdki
|
34
|
+
2FdLmUSM6E2v7Y8eKZD7hmo1Um4eI5POl0XfSaC3FAgG/QJ1P4CaGYaKjT98dOw2
|
35
|
+
JWT1CLPse7JUSW9NGp9hbZqX+FdmVho8u3BpQwtAvZB2dIiRLcaqEqxBRnt4jHCq
|
36
|
+
vGIdgu0GJEzPUTqCcDfDQUuNIvjN04ZHfnA5Q3m/I6jypQHs9LNqpo1BQzk=
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2023-11-03 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: multi_json
|
@@ -219,6 +219,20 @@ dependencies:
|
|
219
219
|
- - "~>"
|
220
220
|
- !ruby/object:Gem::Version
|
221
221
|
version: 0.21.2
|
222
|
+
- !ruby/object:Gem::Dependency
|
223
|
+
name: simplecov-cobertura
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - "~>"
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: 2.1.0
|
229
|
+
type: :development
|
230
|
+
prerelease: false
|
231
|
+
version_requirements: !ruby/object:Gem::Requirement
|
232
|
+
requirements:
|
233
|
+
- - "~>"
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
version: 2.1.0
|
222
236
|
- !ruby/object:Gem::Dependency
|
223
237
|
name: typhoeus
|
224
238
|
requirement: !ruby/object:Gem::Requirement
|
@@ -308,6 +322,7 @@ files:
|
|
308
322
|
- lib/iterable/message_types.rb
|
309
323
|
- lib/iterable/metadata.rb
|
310
324
|
- lib/iterable/metadata_table.rb
|
325
|
+
- lib/iterable/push.rb
|
311
326
|
- lib/iterable/push_templates.rb
|
312
327
|
- lib/iterable/request.rb
|
313
328
|
- lib/iterable/response.rb
|
@@ -320,7 +335,7 @@ licenses:
|
|
320
335
|
- MIT
|
321
336
|
metadata:
|
322
337
|
rubygems_mfa_required: 'true'
|
323
|
-
post_install_message:
|
338
|
+
post_install_message:
|
324
339
|
rdoc_options:
|
325
340
|
- "--charset=UTF-8"
|
326
341
|
- "--main=README.md"
|
@@ -337,8 +352,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
337
352
|
- !ruby/object:Gem::Version
|
338
353
|
version: '0'
|
339
354
|
requirements: []
|
340
|
-
rubygems_version: 3.
|
341
|
-
signing_key:
|
355
|
+
rubygems_version: 3.1.6
|
356
|
+
signing_key:
|
342
357
|
specification_version: 4
|
343
358
|
summary: Iterable REST API Client
|
344
359
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|