unione-ruby 0.0.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +90 -9
- data/Rakefile +49 -0
- data/config/response_schema/domain.yml +74 -0
- data/config/response_schema/email.yml +23 -0
- data/config/response_schema/event_dump.yml +75 -0
- data/config/response_schema/project.yml +59 -0
- data/config/response_schema/suppression.yml +71 -0
- data/config/response_schema/system.yml +33 -0
- data/config/response_schema/tag.yml +26 -0
- data/config/response_schema/template.yml +134 -0
- data/config/response_schema/unsubscribed.yml +45 -0
- data/config/response_schema/webhook.yml +141 -0
- data/examples/api/custom_api.rb +14 -0
- data/examples/api/domain.rb +14 -7
- data/examples/api/email/attachments.rb +28 -0
- data/examples/api/email/multiple_recipients.rb +24 -0
- data/examples/api/email/send.rb +25 -0
- data/examples/api/email/settings.rb +41 -0
- data/examples/api/email/subscribe.rb +14 -0
- data/examples/api/email/template.rb +26 -0
- data/examples/api/event_dump.rb +44 -0
- data/examples/api/project.rb +30 -23
- data/examples/api/suppression.rb +34 -0
- data/examples/api/system.rb +6 -6
- data/examples/api/tag.rb +15 -0
- data/examples/api/template.rb +40 -28
- data/examples/api/unsubscribed.rb +17 -11
- data/examples/api/webhook.rb +28 -25
- data/examples/helpers.rb +29 -0
- data/examples/send_mail.rb +44 -0
- data/examples/setup.rb +21 -14
- data/lib/unione/client/domain.rb +21 -45
- data/lib/unione/client/email.rb +16 -15
- data/lib/unione/client/event_dump.rb +37 -0
- data/lib/unione/client/project.rb +19 -61
- data/lib/unione/client/suppression.rb +38 -0
- data/lib/unione/client/system.rb +12 -17
- data/lib/unione/client/tag.rb +24 -0
- data/lib/unione/client/template.rb +19 -66
- data/lib/unione/client/unsubscribed.rb +18 -31
- data/lib/unione/client/webhook.rb +19 -65
- data/lib/unione/client.rb +33 -11
- data/lib/unione/connection.rb +7 -3
- data/lib/unione/helpers.rb +22 -0
- data/lib/unione/response/raise_error.rb +4 -5
- data/lib/unione/validation.rb +34 -9
- data/lib/unione/version.rb +1 -1
- data/lib/unione-ruby.rb +0 -3
- data/test/CONFIGFILE.yml +71 -0
- data/unione-ruby.gemspec +2 -2
- metadata +32 -10
- data/examples/api/email.rb +0 -51
- data/examples/sending_mail.rb +0 -32
- data/lib/unione/helpers/mail/mail.rb +0 -42
- data/lib/unione/helpers/template/template.rb +0 -32
- data/lib/unione/helpers/webhook/webhook.rb +0 -18
@@ -1,16 +1,22 @@
|
|
1
1
|
require 'unione-ruby'
|
2
2
|
|
3
|
-
unione = UniOne::Client.new(
|
3
|
+
unione = UniOne::Client.new(
|
4
|
+
hostname: 'eu1.unione.io',
|
5
|
+
lang: 'en',
|
6
|
+
api_key: ENV['UNIONE_API_KEY']
|
7
|
+
)
|
4
8
|
|
5
|
-
#
|
6
|
-
response = unione.unsubscribe(
|
9
|
+
# Unsubscribe email
|
10
|
+
response = unione.unsubscribe(
|
11
|
+
address: 'email@example.com'
|
12
|
+
)
|
7
13
|
|
8
|
-
|
9
|
-
|
10
|
-
|
14
|
+
# Check email is unsubscribed
|
15
|
+
response = unione.check_unsubscribed(
|
16
|
+
address: 'email@example.com'
|
17
|
+
)
|
11
18
|
|
12
|
-
#
|
13
|
-
response = unione.
|
14
|
-
|
15
|
-
|
16
|
-
response = unione.list_unsubscribed('2019-01-01')
|
19
|
+
# List unsubscribed emails
|
20
|
+
response = unione.list_unsubscribed(
|
21
|
+
date_from: Date.today # Or String: '2019-01-01'
|
22
|
+
)
|
data/examples/api/webhook.rb
CHANGED
@@ -1,39 +1,42 @@
|
|
1
1
|
require 'unione-ruby'
|
2
2
|
require 'json'
|
3
3
|
|
4
|
-
unione = UniOne::Client.new(
|
4
|
+
unione = UniOne::Client.new(
|
5
|
+
hostname: 'eu1.unione.io',
|
6
|
+
lang: 'en',
|
7
|
+
api_key: ENV['UNIONE_API_KEY']
|
8
|
+
)
|
5
9
|
|
6
|
-
#
|
7
|
-
|
10
|
+
# Set webhook
|
11
|
+
params = {}
|
8
12
|
|
9
|
-
|
10
|
-
|
13
|
+
params[:url] = 'http://example.com'
|
14
|
+
params[:status] = :active
|
11
15
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
max_parallel: 10
|
17
|
-
}
|
16
|
+
params[:event_format] = :json_post
|
17
|
+
params[:delivery_info] = 1
|
18
|
+
params[:single_event] = 0
|
19
|
+
params[:max_parallel] = 10
|
18
20
|
|
19
|
-
|
21
|
+
params[:events] = {
|
20
22
|
email_status: %w(sent delivered opened hard_bounced soft_bounced spam clicked unsubscribed),
|
21
23
|
spam_block: ["*"]
|
22
24
|
}
|
23
25
|
|
24
|
-
|
25
|
-
|
26
|
-
response = unione.set_webhook(webhook.to_json)
|
27
|
-
|
28
|
-
puts response.status
|
29
|
-
puts response.body.to_h
|
30
|
-
puts response.headers
|
26
|
+
response = unione.set_webhook(params)
|
31
27
|
|
32
|
-
#
|
33
|
-
response = unione.get_webhook(
|
28
|
+
# Get webhook
|
29
|
+
response = unione.get_webhook(
|
30
|
+
url: 'http://example.com'
|
31
|
+
)
|
34
32
|
|
35
|
-
#
|
36
|
-
response = unione.list_webhooks(
|
33
|
+
# List all webhooks
|
34
|
+
response = unione.list_webhooks(
|
35
|
+
limit: 50,
|
36
|
+
offset: 0
|
37
|
+
)
|
37
38
|
|
38
|
-
#
|
39
|
-
response = unione.delete_webhook(
|
39
|
+
# Delete webhook
|
40
|
+
response = unione.delete_webhook(
|
41
|
+
url: 'http://example.com'
|
42
|
+
)
|
data/examples/helpers.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'unione-ruby'
|
2
|
+
|
3
|
+
unione = UniOne::Client.new(
|
4
|
+
hostname: 'eu1.unione.io',
|
5
|
+
lang: 'en',
|
6
|
+
api_key: ENV['UNIONE_API_KEY']
|
7
|
+
)
|
8
|
+
|
9
|
+
# Verify webhook callback message
|
10
|
+
# Will raise Unione::Client::InvalidCallbackAuth error unless `auth' field is correct.
|
11
|
+
unione.verify_callback_auth!(params)
|
12
|
+
|
13
|
+
# Callback helper usage
|
14
|
+
# Will raise Unione::Client::InvalidCallbackAuth error unless `auth' field is correct.
|
15
|
+
unione.callback_helper(params) do |events|
|
16
|
+
# [
|
17
|
+
# {
|
18
|
+
# 'event_name' => 'transactional_email_status',
|
19
|
+
# 'event_data' =>
|
20
|
+
# {
|
21
|
+
# 'email' => 'recipient.email@example.com',
|
22
|
+
# 'status' => 'sent',
|
23
|
+
# 'event_time' => '2015-11-30 15:09:42',
|
24
|
+
# ...
|
25
|
+
# }
|
26
|
+
# },
|
27
|
+
# ...
|
28
|
+
# ]
|
29
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'unione-ruby'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
unione = UniOne::Client.new(
|
5
|
+
hostname: 'eu1.unione.io',
|
6
|
+
lang: 'en',
|
7
|
+
api_key: ENV['UNIONE_API_KEY'],
|
8
|
+
enable_logging: true
|
9
|
+
)
|
10
|
+
|
11
|
+
message = {}
|
12
|
+
|
13
|
+
message[:template_engine] = 'simple'
|
14
|
+
message[:template_id] = 'template_id'
|
15
|
+
|
16
|
+
# In case template_id is not specified, subject and body are mandatory
|
17
|
+
message[:subject] = 'test letter'
|
18
|
+
message[:body] = {"html": "tests", "plaintext": "plaintext"}
|
19
|
+
|
20
|
+
message[:from_email] = 'test@qadns.net'
|
21
|
+
message[:from_name] = 'userName'
|
22
|
+
|
23
|
+
message[:recipients] = []
|
24
|
+
message[:recipients] << {
|
25
|
+
email: 'test1@example.com',
|
26
|
+
substitutions: { 'substitutionName' => 'substitutionVal', to_name: 'Name Surname' },
|
27
|
+
metadata: { key1: 'val' },
|
28
|
+
}
|
29
|
+
|
30
|
+
message[:global_metadata] = { key1: 'val' }
|
31
|
+
message[:headers] = { 'X-ReplyTo' => 'reply@example.com' }
|
32
|
+
message[:options] = { unsubscribe_url: 'someurl' }
|
33
|
+
|
34
|
+
message[:attachments] = []
|
35
|
+
message[:attachments] << { type: 'text/plain', name: 'myfile.txt', content: 'ZXhhbXBsZSBmaWxl' }
|
36
|
+
|
37
|
+
message[:inline_attachments] = []
|
38
|
+
message[:inline_attachments] << { type: 'image/png', name: 'IMAGECID', content: 'iVBORw0KGgo' }
|
39
|
+
|
40
|
+
response = unione.send_email(message: message)
|
41
|
+
|
42
|
+
puts response.status
|
43
|
+
puts response.body.to_h
|
44
|
+
puts response.headers
|
data/examples/setup.rb
CHANGED
@@ -1,27 +1,34 @@
|
|
1
1
|
require 'unione-ruby'
|
2
2
|
require 'json'
|
3
3
|
|
4
|
-
unione = UniOne::Client.new(
|
4
|
+
unione = UniOne::Client.new(
|
5
|
+
hostname: 'eu1.unione.io',
|
6
|
+
lang: 'en',
|
7
|
+
api_key: ENV['UNIONE_API_KEY']
|
8
|
+
)
|
5
9
|
|
6
10
|
# Validate domain verification record
|
7
|
-
unione.validate_verification_record('
|
11
|
+
unione.validate_verification_record(domain: 'qadns.net')
|
8
12
|
|
9
13
|
# Create template
|
10
|
-
template =
|
14
|
+
template = {}
|
11
15
|
|
12
|
-
template
|
13
|
-
template
|
14
|
-
template
|
15
|
-
template
|
16
|
-
template.global_substitutions = { 'someVar' => 'someVal' }
|
16
|
+
template[:name] = 'Template Name'
|
17
|
+
template[:subject] = 'Email Subject'
|
18
|
+
template[:template_engine] = 'simple'
|
19
|
+
template[:headers] = {'X-ReplyTo' => 'reply@example.com'}
|
17
20
|
|
18
|
-
template
|
19
|
-
template
|
21
|
+
template[:global_substitutions] = { 'someVar' => 'someVal' }
|
22
|
+
template[:from_email] = 'test@example.com'
|
23
|
+
template[:from_name] = 'userName'
|
24
|
+
template[:body] = { html: '<b>Hello {{substitutionName}}</b>' }
|
25
|
+
template[:options] = { unsubscribe_url: 'someurl' }
|
20
26
|
|
21
|
-
template
|
22
|
-
template
|
27
|
+
template[:attachments] = []
|
28
|
+
template[:attachments] << { type: 'text/plain', name: 'myfile.txt', content: 'ZXhhbXBsZSBmaWxl' }
|
23
29
|
|
24
|
-
template
|
30
|
+
template[:inline_attachments] = []
|
31
|
+
template[:inline_attachments] << { type: 'image/png', name: 'IMAGECID', content: 'iVBORw0KGgo' }
|
25
32
|
|
26
|
-
response = unione.set_template(template
|
33
|
+
response = unione.set_template(template: template)
|
27
34
|
template_id = response.body.template.id
|
data/lib/unione/client/domain.rb
CHANGED
@@ -1,58 +1,34 @@
|
|
1
1
|
module UniOne
|
2
2
|
class Client
|
3
3
|
module Domain
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
'status' => {'type' => 'string'},
|
10
|
-
'domain' => {'type' => 'string'},
|
11
|
-
'verification-record' => {'type' => 'string'},
|
12
|
-
'dkim' => {'type' => 'string'}}
|
13
|
-
})
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
6
|
+
|
7
|
+
def get_dns_records(params = {})
|
8
|
+
post('domain/get-dns-records.json', params)
|
14
9
|
end
|
15
10
|
|
16
|
-
def validate_verification_record(
|
17
|
-
|
18
|
-
post 'domain/validate-verification-record.json', params
|
19
|
-
validate_response({
|
20
|
-
'type' => 'object', 'required' => ['status', 'message'], 'properties' => {
|
21
|
-
'status' => {'type' => 'string'},
|
22
|
-
'message' => {'type' => 'string'}}
|
23
|
-
})
|
11
|
+
def validate_verification_record(params = {})
|
12
|
+
post('domain/validate-verification-record.json', params)
|
24
13
|
end
|
25
14
|
|
26
|
-
def validate_dkim(
|
27
|
-
|
28
|
-
post 'domain/validate-dkim.json', params
|
29
|
-
validate_response({
|
30
|
-
'type' => 'object', 'required' => ['status', 'message'], 'properties' => {
|
31
|
-
'status' => {'type' => 'string'},
|
32
|
-
'message' => {'type' => 'string'}}
|
33
|
-
})
|
15
|
+
def validate_dkim(params = {})
|
16
|
+
post('domain/validate-dkim.json', params)
|
34
17
|
end
|
35
18
|
|
36
|
-
def list_domains
|
37
|
-
post
|
38
|
-
validate_response({
|
39
|
-
'type' => 'object', 'required' => ['status', 'domains'], 'properties' => {
|
40
|
-
'status' => {'type' => 'string'},
|
41
|
-
'domains' =>
|
42
|
-
{'items' =>
|
43
|
-
{'type' => 'object', 'required' => ['domain', 'verification-record', 'dkim'], 'properties' => [
|
44
|
-
'domain' => {'type' => 'string'},
|
45
|
-
'verification-record' =>
|
46
|
-
{'type' => 'object', 'required' => ['value', 'status'], 'properties' => [
|
47
|
-
'value' => {'type' => 'string'},
|
48
|
-
'status' => {'type' => 'string'}]},
|
49
|
-
'dkim' =>
|
50
|
-
{'type' => 'object', 'required' => ['key', 'status'], 'properties' => [
|
51
|
-
'key' => {'type' => 'string'},
|
52
|
-
'status' => {'type' => 'string'}]}
|
53
|
-
]}}}
|
54
|
-
})
|
19
|
+
def list_domains(params = {})
|
20
|
+
post('domain/list.json', params)
|
55
21
|
end
|
22
|
+
|
23
|
+
add_response_validations(
|
24
|
+
:domain,
|
25
|
+
%w(
|
26
|
+
get_dns_records
|
27
|
+
validate_verification_record
|
28
|
+
validate_dkim
|
29
|
+
list_domains
|
30
|
+
)
|
31
|
+
)
|
56
32
|
end
|
57
33
|
end
|
58
34
|
end
|
data/lib/unione/client/email.rb
CHANGED
@@ -1,24 +1,25 @@
|
|
1
1
|
module UniOne
|
2
2
|
class Client
|
3
3
|
module Email
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
'emails' => {'items' => {'type' => 'string'}},
|
11
|
-
'failed_emails' => {'type' => 'object'}}
|
12
|
-
})
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
6
|
+
|
7
|
+
def send_email(params = {})
|
8
|
+
params[:message][:options][:send_at] = handle_time_param(params.dig(:message, :options, :send_at)) if params.dig(:message, :options, :send_at)
|
9
|
+
post('email/send.json', params)
|
13
10
|
end
|
14
11
|
|
15
|
-
def subscribe_email(params)
|
16
|
-
post
|
17
|
-
validate_response({
|
18
|
-
'type' => 'object', 'required' => ['status'], 'properties' => {
|
19
|
-
'status' => {'type' => 'string'}}
|
20
|
-
})
|
12
|
+
def subscribe_email(params = {})
|
13
|
+
post('email/subscribe.json', params)
|
21
14
|
end
|
15
|
+
|
16
|
+
add_response_validations(
|
17
|
+
:email,
|
18
|
+
%w(
|
19
|
+
send_email
|
20
|
+
subscribe_email
|
21
|
+
)
|
22
|
+
)
|
22
23
|
end
|
23
24
|
end
|
24
25
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module UniOne
|
2
|
+
class Client
|
3
|
+
module EventDump
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
6
|
+
|
7
|
+
def create_event_dump(params = {})
|
8
|
+
params[:start_time] = handle_time_param(params[:start_time]) if params[:start_time]
|
9
|
+
params[:end_time] = handle_time_param(params[:end_time]) if params[:end_time]
|
10
|
+
|
11
|
+
post('event-dump/create.json', params)
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_event_dump(params = {})
|
15
|
+
post('event-dump/get.json', params)
|
16
|
+
end
|
17
|
+
|
18
|
+
def list_event_dumps(params = {})
|
19
|
+
post('event-dump/list.json', params)
|
20
|
+
end
|
21
|
+
|
22
|
+
def delete_event_dump(params = {})
|
23
|
+
post('event-dump/delete.json', params)
|
24
|
+
end
|
25
|
+
|
26
|
+
add_response_validations(
|
27
|
+
:event_dump,
|
28
|
+
%w(
|
29
|
+
create_event_dump
|
30
|
+
get_event_dump
|
31
|
+
list_event_dumps
|
32
|
+
delete_event_dump
|
33
|
+
)
|
34
|
+
)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -1,76 +1,34 @@
|
|
1
1
|
module UniOne
|
2
2
|
class Client
|
3
3
|
module Project
|
4
|
-
|
5
|
-
|
6
|
-
post 'project/create.json', params
|
7
|
-
validate_response({
|
8
|
-
'type' => 'object', 'required' => ['status', 'project_id', 'project_api_key'], 'properties' => {
|
9
|
-
'status' => {'type' => 'string'},
|
10
|
-
'project_id' => {'type' => 'string'},
|
11
|
-
'project_api_key' => {'type' => 'string'}}
|
12
|
-
})
|
13
|
-
end
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
14
6
|
|
15
|
-
def
|
16
|
-
|
17
|
-
post 'project/update.json', params
|
18
|
-
validate_response({
|
19
|
-
'type' => 'object', 'required' => ['status'], 'properties' => {
|
20
|
-
'status' => {'type' => 'string'},
|
21
|
-
'project_api_key' => {'type' => 'string'}}
|
22
|
-
})
|
7
|
+
def create_project(params = {})
|
8
|
+
post('project/create.json', params)
|
23
9
|
end
|
24
10
|
|
25
|
-
def
|
26
|
-
params
|
27
|
-
post 'project/list.json', params
|
28
|
-
validate_response({
|
29
|
-
'type' => 'object',
|
30
|
-
'required' => %w{ status },
|
31
|
-
'properties' => {
|
32
|
-
'status' => { 'type' => 'string' },
|
33
|
-
'projects' => { 'items' => project_schema }
|
34
|
-
}
|
35
|
-
})
|
11
|
+
def update_project(params = {})
|
12
|
+
post('project/update.json', params)
|
36
13
|
end
|
37
14
|
|
38
|
-
def
|
39
|
-
params
|
40
|
-
post 'project/delete.json', params
|
41
|
-
validate_response({
|
42
|
-
'type' => 'object',
|
43
|
-
'required' => %w{ status },
|
44
|
-
'properties' => {
|
45
|
-
'status' => { 'type' => 'string' }
|
46
|
-
}
|
47
|
-
})
|
15
|
+
def list_projects(params = {})
|
16
|
+
post('project/list.json', params)
|
48
17
|
end
|
49
18
|
|
50
|
-
|
51
|
-
|
52
|
-
def get_identity(project_identity)
|
53
|
-
if project_identity.is_a?(Hash)
|
54
|
-
project_identity
|
55
|
-
elsif project_identity
|
56
|
-
{ project_api_key: project_identity }
|
57
|
-
else
|
58
|
-
{}
|
59
|
-
end
|
19
|
+
def delete_project(params = {})
|
20
|
+
post('project/delete.json', params)
|
60
21
|
end
|
61
22
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
'custom_unsubscribe_url_enabled' => {'type' => 'boolean'}
|
72
|
-
}}
|
73
|
-
end
|
23
|
+
add_response_validations(
|
24
|
+
:project,
|
25
|
+
%w(
|
26
|
+
create_project
|
27
|
+
update_project
|
28
|
+
list_projects
|
29
|
+
delete_project
|
30
|
+
)
|
31
|
+
)
|
74
32
|
end
|
75
33
|
end
|
76
34
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module UniOne
|
2
|
+
class Client
|
3
|
+
module Suppression
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
6
|
+
|
7
|
+
def set_suppression(params = {})
|
8
|
+
params[:created] = handle_time_param(params[:created]) if params[:created]
|
9
|
+
|
10
|
+
post('suppression/set.json', params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def get_suppression(params = {})
|
14
|
+
post('suppression/get.json', params)
|
15
|
+
end
|
16
|
+
|
17
|
+
def list_suppressions(params = {})
|
18
|
+
params[:start_time] = handle_time_param(params[:start_time]) if params[:start_time]
|
19
|
+
|
20
|
+
post('suppression/list.json', params)
|
21
|
+
end
|
22
|
+
|
23
|
+
def delete_suppression(params = {})
|
24
|
+
post('suppression/delete.json', params)
|
25
|
+
end
|
26
|
+
|
27
|
+
add_response_validations(
|
28
|
+
:suppression,
|
29
|
+
%w(
|
30
|
+
set_suppression
|
31
|
+
get_suppression
|
32
|
+
list_suppressions
|
33
|
+
delete_suppression
|
34
|
+
)
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/unione/client/system.rb
CHANGED
@@ -1,24 +1,19 @@
|
|
1
1
|
module UniOne
|
2
2
|
class Client
|
3
3
|
module System
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
'user_id' => {'type' => 'integer'},
|
10
|
-
'email' => {'type' => 'string'},
|
11
|
-
'accounting' =>
|
12
|
-
{'type' => 'object', 'required' => ['period_start', 'period_end', 'emails_included', 'emails_sent'], 'properties' => [
|
13
|
-
'period_start' => {'type' => 'string'},
|
14
|
-
'period_end' => {'type' => 'string'},
|
15
|
-
'emails_included' => {'type' => 'integer'},
|
16
|
-
'emails_sent' => {'type' => 'integer'}
|
17
|
-
]},
|
18
|
-
'project_id' => {'type' => 'string'},
|
19
|
-
'project_name' => {'type' => 'string'}}
|
20
|
-
})
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
6
|
+
|
7
|
+
def info(params = {})
|
8
|
+
post('system/info.json', params)
|
21
9
|
end
|
10
|
+
|
11
|
+
add_response_validations(
|
12
|
+
:system,
|
13
|
+
%w(
|
14
|
+
info
|
15
|
+
)
|
16
|
+
)
|
22
17
|
end
|
23
18
|
end
|
24
19
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module UniOne
|
2
|
+
class Client
|
3
|
+
module Tag
|
4
|
+
extend UniOne::Validation::ClassMethods
|
5
|
+
include UniOne::Validation::InstanceMethods
|
6
|
+
|
7
|
+
def list_tags(params = {})
|
8
|
+
post('tag/list.json', params)
|
9
|
+
end
|
10
|
+
|
11
|
+
def delete_tag(params = {})
|
12
|
+
post('tag/delete.json', params)
|
13
|
+
end
|
14
|
+
|
15
|
+
add_response_validations(
|
16
|
+
:tag,
|
17
|
+
%w(
|
18
|
+
list_tags
|
19
|
+
delete_tag
|
20
|
+
)
|
21
|
+
)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|