selligent 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Selligent
4
+ class Client
5
+ # Implements the journeys base endpoint
6
+ #
7
+ # /organizations/:organization/journeys
8
+ module Journeys
9
+ # Get an overview of all journeys set up in the organization
10
+ def journeys
11
+ get "#{base_url}/journeys"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,264 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Selligent
4
+ class Client
5
+ # Implements the list endpoints
6
+ #
7
+ # In this module, `list_name` is the list name as it appears in the API urls.
8
+ #
9
+ # /organizations/:organization/lists/*
10
+ module Lists
11
+ # Returns an overview of all of the lists in this organization
12
+ #
13
+ # @param options [Hash] Options for filtering, searching, etc.
14
+ # @option options [String] :filter Filter list by type
15
+ # @option options [String] :search Search a list by name, description or tags
16
+ # @option options [Integer] :skip Specify index to start picking list items from
17
+ # @option options [Integer] :take Specify count for the number of items to be taken
18
+ def lists(options = {})
19
+ get "#{base_url}/lists", options
20
+ end
21
+
22
+ # Create a new list
23
+ #
24
+ # The model has the following shape:
25
+ #
26
+ # {
27
+ # "api_name": "list_name_in_api",
28
+ # "name": "list_name",
29
+ # "type": "Userlist",
30
+ # "description": "description",
31
+ # "tags": [
32
+ # "tag1",
33
+ # "tag2"
34
+ # ]
35
+ # }
36
+ #
37
+ # @param model [Hash] The model containing the data that should be sent
38
+ def create_list(model)
39
+ post "#{base_url}/lists", model
40
+ end
41
+
42
+ # Delete a list
43
+ #
44
+ # @param list_name [String] The list API name
45
+ # @param options [Hash] Additional options
46
+ # @option options [Boolean] :dropTable delete the associated table
47
+ def delete_list(list_name, options = {})
48
+ delete "#{base_url}/lists/#{list_name}", options
49
+ end
50
+
51
+ # Get details for the list with the given name
52
+ #
53
+ # @param list_name [String] The list API name
54
+ def list(list_name)
55
+ get "#{base_url}/lists/#{list_name}"
56
+ end
57
+
58
+ # Update a list
59
+ #
60
+ # The model has the following shape:
61
+ #
62
+ # {
63
+ # "api_name": "list_name_in_api",
64
+ # "name": "list_name",
65
+ # "description": "description",
66
+ # "tags": [
67
+ # "tag1",
68
+ # "tag2"
69
+ # ],
70
+ # "email_quality_configuration": {
71
+ # "type": "Normal",
72
+ # "bounce_scope": "MASTER",
73
+ # "actions": [
74
+ # {
75
+ # "name": "OPTOUT",
76
+ # "value": "10"
77
+ # }
78
+ # ],
79
+ # "bouncestoredprocedures": [
80
+ # "ST_Bounce_Sp1",
81
+ # "ST_Bounce_Sp2"
82
+ # ]
83
+ # }
84
+ # }
85
+ #
86
+ # @param list_name [String] The list API name
87
+ # @param model [Hash] The model containing the data that should be sent
88
+ def update_list(list_name, model)
89
+ put "#{base_url}/lists/#{list_name}", model
90
+ end
91
+
92
+ # Get list fields for the given list
93
+ #
94
+ # @param list_name [String] The list API name
95
+ def fields(list_name)
96
+ get "#{base_url}/lists/#{list_name}/fields"
97
+ end
98
+
99
+ # Create list fields
100
+ #
101
+ # The model has the following shape:
102
+ #
103
+ # {
104
+ # "fields": [
105
+ # {
106
+ # "name": "string",
107
+ # "data_type": "Boolean",
108
+ # "length": 0,
109
+ # "description": "string",
110
+ # "allow_null": true
111
+ # }
112
+ # ]
113
+ # }
114
+ #
115
+ # @param list_name [String] The list API name
116
+ # @param model [Hash] The model containing the data that should be sent
117
+ def create_fields(list_name, model)
118
+ post "#{base_url}/lists/#{list_name}/fields", model
119
+ end
120
+
121
+ # Delete a list field
122
+ #
123
+ # @param list_name [String] The list API name
124
+ # @param field_name [String] The field name
125
+ def delete_field(list_name, field_name)
126
+ delete "#{base_url}/lists/#{list_name}/fields/#{field_name}"
127
+ end
128
+
129
+ # Update a list field
130
+ #
131
+ # The model has the following shape:
132
+ #
133
+ # {
134
+ # "field_name": "FIELD",
135
+ # "field_description": "This is FIELD."
136
+ # }
137
+ #
138
+ # @param list_name [String] The list API name
139
+ # @param field_name [String] The field name
140
+ # @param model [Hash] The model containing the data that should be sent
141
+ def update_field(list_name, field_name, model)
142
+ put "#{base_url}/lists/#{list_name}/fields/#{field_name}", model
143
+ end
144
+
145
+ # Get the number of records for the given list
146
+ #
147
+ # @param list_name [String] The list API name
148
+ def records_count(list_name)
149
+ get "#{base_url}/lists/#{list_name}/records"
150
+ end
151
+
152
+ # Delete a single record by id
153
+ #
154
+ # @param list_name [String] The list API name
155
+ # @param record_id [Integer] The record id
156
+ def delete_record(list_name, record_id)
157
+ delete "#{base_url}/lists/#{list_name}/records/#{record_id}"
158
+ end
159
+
160
+ # Get all relations associated with a list
161
+ #
162
+ # @param list_name [String] The list API name
163
+ def relations(list_name)
164
+ get "#{base_url}/lists/#{list_name}/relations"
165
+ end
166
+
167
+ # Create a relation between two lists
168
+ #
169
+ # The model has the following shape:
170
+ #
171
+ # {
172
+ # "relations": [
173
+ # {
174
+ # "scope": "string",
175
+ # "type": "OneToOne",
176
+ # "masterlist_field_name": "string",
177
+ # "slavelist_api_name": "string",
178
+ # "slavelist_field_name": "string",
179
+ # "constraints": [
180
+ # {
181
+ # "list1": "string",
182
+ # "field1": "string",
183
+ # "operator": "Unknown",
184
+ # "list2": "string",
185
+ # "field2": "string",
186
+ # "value": "string"
187
+ # }
188
+ # ]
189
+ # }
190
+ # ]
191
+ # }
192
+ #
193
+ # @param list_name [String] The list API name
194
+ # @param model [Hash] The model containing the data that should be sent
195
+ def create_relation(list_name, model)
196
+ post "#{base_url}/lists/#{list_name}/relations", model
197
+ end
198
+
199
+ # Delete a relation between two lists
200
+ #
201
+ # @param list_name [String] The list API name
202
+ # @param scope [String] The scope name of the relation
203
+ def delete_relation(list_name, scope)
204
+ delete "#{base_url}/lists/#{list_name}/relations/#{scope}"
205
+ end
206
+
207
+ # Get relation details based based on the list name and the relation scope name
208
+ #
209
+ # @param list_name [String] The list API name
210
+ # @param scope [String] The scope name of the relation
211
+ def relation(list_name, scope)
212
+ get "#{base_url}/lists/#{list_name}/relations/#{scope}"
213
+ end
214
+
215
+ # Update an existing relation
216
+ #
217
+ # The model has the following shape:
218
+ #
219
+ # {
220
+ # "scope_name": "RELATION",
221
+ # "relation_type": "OneToMany",
222
+ # "master_list_field_name": "MASTERLISTFIELD",
223
+ # "slave_list_api_name": "SLAVELIST",
224
+ # "slave_list_field_name": "SLAVELISTFIELD",
225
+ # "constraints": [
226
+ # {
227
+ # "source_list": "MASTER",
228
+ # "source_field": "master_field",
229
+ # "operator": "EqualTo",
230
+ # "destination_list": "SLAVE",
231
+ # "destination_field": "slave_field",
232
+ # "field_value": ""
233
+ # }
234
+ # ]
235
+ # }
236
+ #
237
+ # @param list_name [String] The list API name
238
+ # @param scope [String] The scope name of the relation
239
+ # @param model [Hash] The model containing the data that should be sent
240
+ def update_relation(list_name, scope, model)
241
+ put "#{base_url}/lists/#{list_name}/relations/#{scope}", model
242
+ end
243
+
244
+ # Get an overview of the segments defined on the given list
245
+ #
246
+ # @param list_name [String] The list API name
247
+ # @option options [String] :filter Filter segment by type
248
+ # @option options [String] :search Search a segment by name, description or tags
249
+ # @option options [Integer] :skip Specify index to start picking segment items from
250
+ # @option options [Integer] :take Specify count for the number of segments to be taken
251
+ def segments(list_name, options = {})
252
+ get "#{base_url}/lists/#{list_name}/segments", options
253
+ end
254
+
255
+ # Get segment details based on list API name and segment API name
256
+ #
257
+ # @param list_name [String] The list API name
258
+ # @param segment_name [String] The name of the segment
259
+ def segment(list_name, segment_name)
260
+ get "#{base_url}/lists/#{list_name}/segments/#{segment_name}"
261
+ end
262
+ end
263
+ end
264
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Selligent
4
+ class Client
5
+ # Implements the organizations endpoints
6
+ #
7
+ # /organizations/*
8
+ module Organizations
9
+ # Get an overview of all the organizations
10
+ def organizations
11
+ get "#{root_url}/organizations"
12
+ end
13
+
14
+ # Get details of the current organization
15
+ def organization
16
+ get base_url
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,250 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Selligent
4
+ class Client
5
+ # Implenents the Single Batch endpoints
6
+ #
7
+ # /organizations/:organization/journeys/singlebatch/*
8
+ module SingleBatch
9
+ # Get all journeys of type Single Batch
10
+ def single_batches
11
+ get "#{base_url}/journeys/singlebatch"
12
+ end
13
+
14
+ # Create a Single Batch journey
15
+ #
16
+ # The model has the following shape:
17
+ #
18
+ # {
19
+ # "message": {
20
+ # "api_name": "api_name"
21
+ # },
22
+ # "journey": {
23
+ # "name": "journey_name",
24
+ # "launch_state": "Schedule",
25
+ # "scheduling": {
26
+ # "launch_date": "2018-10-26T08:11:32.7469864Z"
27
+ # },
28
+ # "campaign_analytics_tag": "cpg_tag",
29
+ # "message_analytics_tag": "msg_tag",
30
+ # "api_name": "test_new_api_layout"
31
+ # }
32
+ # }
33
+ #
34
+ # @param model [Hash] The model
35
+ def create_single_batch(model)
36
+ post "#{base_url}/journeys/singlebatch", model
37
+ end
38
+
39
+ # Get information on a Single Batch journey
40
+ #
41
+ # @param name [String] The single batch name
42
+ def single_batch(name)
43
+ get "#{base_url}/journeys/singlebatch/#{name}"
44
+ end
45
+
46
+ # Cancel launching of a single batch
47
+ #
48
+ # @param name [String] The single batch name
49
+ def cancel_single_batch(name)
50
+ post "#{base_url}/journeys/singlebatch/#{name}/cancel"
51
+ end
52
+
53
+ # Launch a single batch
54
+ #
55
+ # The launch request has the following shape:
56
+ #
57
+ # {
58
+ # "launch_state": "schedule",
59
+ # "scheduling": {
60
+ # "launch_date": "2018-10-26T08:11:32.7938595Z"
61
+ # }
62
+ # }
63
+ #
64
+ # @param name [String] The single batch name
65
+ # @param request [Hash] The launch request
66
+ def launch_single_batch(name, request)
67
+ post "#{base_url}/journeys/singlebatch/#{name}/launch", request
68
+ end
69
+
70
+ # Trigger execution of a single batch journey
71
+ #
72
+ # The model has the following shape:
73
+ #
74
+ # {
75
+ # "journey": {
76
+ # "launch_state": "Schedule",
77
+ # "scheduling": {
78
+ # "launch_date": "2018-10-26T08:11:32.7626108Z"
79
+ # }
80
+ # }
81
+ # }
82
+ #
83
+ # @param name [String] The single batch name
84
+ # @param model [Hash] The model
85
+ def trigger_single_batch(name, model)
86
+ post "#{base_url}/journeys/singlebatch/#{name}/trigger", model
87
+ end
88
+
89
+ # Send single batch with email message
90
+ #
91
+ # The model has the following shape:
92
+ #
93
+ # {
94
+ # "message_model": {
95
+ # "properties": {
96
+ # "name": "Message name",
97
+ # "description": "description",
98
+ # "api_name": "message_name",
99
+ # "tags": [
100
+ # "tag1",
101
+ # "tag2"
102
+ # ],
103
+ # "languages": [
104
+ # "en"
105
+ # ],
106
+ # "default_language": "en",
107
+ # "empty_language": "en",
108
+ # "audience_api_name": "my_audience"
109
+ # },
110
+ # "headers": {
111
+ # "en": [
112
+ # {
113
+ # "from_domain": "example.net",
114
+ # "from_alias": "info",
115
+ # "reply_email": "reply@example.net",
116
+ # "reply_alias": "Your reply alias",
117
+ # "to_alias": "John Doe",
118
+ # "preheader": "Put your preheader text here",
119
+ # "subject": "Put your subject here"
120
+ # }
121
+ # ]
122
+ # },
123
+ # "content": {
124
+ # "text": "Hello World!",
125
+ # "html": "<html><body><h1>Hello World!</h1></body></html>"
126
+ # }
127
+ # },
128
+ # "journey_model": {
129
+ # "name": "journey_name",
130
+ # "launch_state": "Schedule",
131
+ # "scheduling": {
132
+ # "launch_date": "2018-10-26T08:11:32.8094853Z"
133
+ # },
134
+ # "campaign_analytics_tag": "cpg_tag",
135
+ # "message_analytics_tag": "msg_tag",
136
+ # "api_name": "test_new_api_layout"
137
+ # }
138
+ # }
139
+ #
140
+ # @param model [Hash] The request model
141
+ def send_single_batch_email(model)
142
+ post "#{base_url}/journeys/singlebatch/message", model
143
+ end
144
+
145
+ # Send single batch mobile push message
146
+ #
147
+ # The model has the following shape:
148
+ #
149
+ # {
150
+ # "journey_model": {
151
+ # "name": "journey_name",
152
+ # "launch_state": "Schedule",
153
+ # "scheduling": {
154
+ # "launch_date": "2018-10-26T08:11:32.8407333Z"
155
+ # },
156
+ # "campaign_analytics_tag": "cpg_tag",
157
+ # "message_analytics_tag": "msg_tag",
158
+ # "api_name": "test_new_api_layout"
159
+ # },
160
+ # "mobile_message_model": {
161
+ # "properties": {
162
+ # "name": "Message name",
163
+ # "description": "description",
164
+ # "api_name": "message_name",
165
+ # "tags": [
166
+ # "tag1",
167
+ # "tag2"
168
+ # ],
169
+ # "languages": [
170
+ # "en"
171
+ # ],
172
+ # "default_language": "en",
173
+ # "empty_language": "en",
174
+ # "audience_api_name": "my_audience"
175
+ # },
176
+ # "mobile_properties": {
177
+ # "distribution_type": "MobilePush",
178
+ # "custom_in_app_content": true,
179
+ # "in_app_content_type": "Text",
180
+ # "expiration_date": "2018-10-26T10:11:32.8407333+02:00"
181
+ # },
182
+ # "content": {
183
+ # "en": {
184
+ # "mobile_push": {
185
+ # "title": "MP Title en",
186
+ # "content": "MP Content en"
187
+ # },
188
+ # "in_app": {
189
+ # "title": "IA Title en",
190
+ # "content": {
191
+ # "text": "IA Content en",
192
+ # "url": "http://example.com"
193
+ # }
194
+ # }
195
+ # }
196
+ # }
197
+ # }
198
+ # }
199
+ #
200
+ # @param model [Hash] The request model
201
+ def send_single_batch_push(model)
202
+ post "#{base_url}/journeys/singlebatch/mobile", model
203
+ end
204
+
205
+ # Send single batch sms
206
+ #
207
+ # The model has the following shape:
208
+ #
209
+ # {
210
+ # "sms_model": {
211
+ # "properties": {
212
+ # "name": "Message name",
213
+ # "description": "description",
214
+ # "api_name": "message_name",
215
+ # "tags": [
216
+ # "tag1",
217
+ # "tag2"
218
+ # ],
219
+ # "languages": [
220
+ # "en"
221
+ # ],
222
+ # "default_language": "en",
223
+ # "empty_language": "en",
224
+ # "audience_api_name": "my_audience"
225
+ # },
226
+ # "content": {
227
+ # "en": {
228
+ # "text": "Text"
229
+ # }
230
+ # }
231
+ # },
232
+ # "journey_model": {
233
+ # "name": "journey_name",
234
+ # "launch_state": "Schedule",
235
+ # "scheduling": {
236
+ # "launch_date": "2018-10-26T08:11:32.8719844Z"
237
+ # },
238
+ # "campaign_analytics_tag": "cpg_tag",
239
+ # "message_analytics_tag": "msg_tag",
240
+ # "api_name": "test_new_api_layout"
241
+ # }
242
+ # }
243
+ #
244
+ # @param model [Hash] The request model
245
+ def send_single_batch_sms(model)
246
+ post "#{base_url}/journeys/singlebatch/sms", model
247
+ end
248
+ end
249
+ end
250
+ end