A wrapper for the Braze REST API. Forked from https://github.com/DynamoMTL/appboy
Add this line to your application's Gemfile:
gem 'braze_ruby'
And then execute:
$ bundle
Or install it yourself as:
$ gem install braze_ruby
Configuration options may be passed when a new API object is instantiated:
BrazeRuby::API.new('<braze-rest-api-key>', '<braze-rest-url', {<additional options>})
Alternatively, you can pass your Braze REST API key, Braze
REST URL, and any required Faraday options to the
BrazeRuby::configure
method:
BrazeRuby.configure do |config|
config.rest_api_key = '<braze-rest-api-key>'
config.rest_url = '<braze-rest-url>'
config.options = {<additional options>}
end
api = BrazeRuby::API.new('<braze-rest-api-key>', '<braze-rest-url')
api.track_users(attributes: [{
external_id: 123,
first_name: 'John',
last_name: 'Smith',
gender: 'male',
email: 'jsmith@example.com'
}])
api.track_attribute(external_id: 123, first_name: 'John', ...)
api.track_users(events: [{
external_id: 123,
name: 'add-to-cart',
time: Time.now
}])
api.track_event(external_id: 123, name: 'Event', ...)
api.track_users(purchases: [{
external_id: 123,
product_id: 456,
currency: 'CAD',
price: 1.99,
time: Time.now
}])
api.track_purchase(external_id: 123, product_id: 456, ...)
api.track_users(purchases: purchases, events: events, attributes: attributes)
messages = {
android_push: { alert: 'Hello Android' },
apple_push: { alert: "Hello iOS" }
}
api.send_messages(messages: messages, external_user_ids: [123, 456])
api.send_messages(messages: messages, segment_id: '<segment-id>')
api.schedule_messages(send_at: 1.hour.since, messages: messages, external_user_ids: [123, 456])
api.trigger_campaign_schedule(
campaign_id: 'campaign-id',
recipients: [{ external_user_id: 123 }]
schedule: { time: Time.now.iso8601 }
)
api.delete_campaign_trigger_schedule(
campaign_id: 'campaign_id',
schedule_id: 'schedule_id'
)
api.trigger_campaign_send(
campaign_id: 'campaign-id',
recipients: [{external_user_id: 123, trigger_properties: { first_name: 'John' }}]
)
api.trigger_canvas_send(
canvas_id: 'canvas-id',
recipients: [external_user_id: 123, canvas_entry_properties: {first_name: 'John'}]
)
api.email_status(email: 'john@example.com', status: :opted_in)
api.scheduled_messages(end_time: Time.now.advance(weeks: 2).iso861)
api.list_segments
api.export_users(external_ids: [1])
api.export_users(segment_id: segment_id, callback_endpoint: 'https://example.com')
Delete Braze Users with an array of external_ids
api.delete_users([1, 2, 3])
api.subscription_user_status(external_id: [1])
api.subscription_status_get(
external_id: [1],
subscription_group_id: 'some-uuid'
)
api.subscription_status_set(
external_id: [1],
subscription_group_id: 'some-uuid',
subscription_state: 'subscribed|unsubscribed'
)
api.create_user_aliases(
user_aliases: [{
user_alias: {
alias_name: "device123",
alias_label: "my_device_identifier",
}
}]
)
api.identify_users(
aliases_to_identify: [{
external_id: 1234,
user_alias: {
alias_name: "device123",
alias_label: "my_device_identifier",
}
}]
)
Note: you can send up to 50 rename objects per request.
api.rename_external_ids(
external_id_renames: [{
current_external_id: "old_external_id",
new_external_id: "new_external_id",
}]
)
Note: you can send up to 50 external IDs per request.
api.remove_external_ids(external_ids: ['old_external_id'])
api.email_unsubscribes(email: ['jdoe@example.com'])
api.email_hard_bounces(email: ['jdoe@example.com'])
api.remove_emails_from_spam(email: ['jdoe@example.com'])
The BRAZE_RUBY_DEBUG environment variable will trigger full printouts of the Faraday gem's HTTP requests and responses.
cd /my/app
export BRAZE_RUBY_DEBUG=true
bundle exec rails whatever
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request