After authenticating, you can quickly start setting and retrieving Profiles information for your customers.
# Using Ruby 2.1.2
require'net/http'
require'json'
# All REST methods for the organization-wide database are available at this endpoint:
api_root = "https://profile.localytics.com/v1/profiles"
# Let's call our customer "Isa." In production, of course, you should not use customer's real names or emails
# to identify them, but instead use a secure non-guessable unique identifier like 47c44727-1c22-4dfd-a901-9d0dcf049c89.
customer_id = "Isa"
# Replace these with your real API key and secret:
API_KEY = "MY_API_KEY"
API_SECRET = "MY_API_SECRET"
uri = URI("#{api_root}/#{customer_id}")
Net::HTTP.start(uri.hostname, uri.port, use_ssl: true)do|http|
# Let's see if a profile for Isa exists:
get_request = Net::HTTP::Get.new(uri)
get_request.basic_auth(API_KEY, API_SECRET)
response = http.request(get_request)
response.code # 404, because we haven't created this profile yet.
# Now, let's create a profile. Use PATCH when you want to set some profile information.
# This will create a new record if the record doesn't already exist.
patch_request = Net::HTTP::Patch.new(uri)
patch_request.basic_auth(API_KEY, API_SECRET)
patch_request.content_type = "application/json"
# Set some profile data for Isa
profile_attributes = {
:name=>"Isa",
:cats=>["Ofelia", "Mittens", "Spot", "Schrödinger"],
:age=>30,
:"lucky numbers"=>[1, 48, -100, 13],
:birthday=>"1983-01-01"}
# The data we want to set must be nested under an "attributes" JSON root node
patch_request.body = JSON.dump({:attributes => profile_attributes})
response = http.request(patch_request)
response.code # 202
# Now Isa should be in the database
response = http.request(get_request)
response.code # 200
response.body # {"attributes": {"name": "Isa"...}}
# We can update and delete Isa's profile attributes:
updated_attributes = {
:age=>31,
:cats=>nil # Use null to delete individual attributes}
patch_request.body = JSON.dump({:attributes => updated_attributes})
http.request(patch_request)
http.request(get_request) # Isa's age has now been updated and his cats are gone
# We're done with Isa
delete_request = Net::HTTP::Delete.new(uri)
delete_request.basic_auth(API_KEY, API_SECRET)
http.request(delete_request)end
You've successfully set and deleted Profiles information!