SinglePlatform API Ruby Client
This is a wrapper for accessing SinglePlatform's API. Please see SinglePlatform's official API documentation for information on obtaining API credentials.
Installation
gem install singleplatform
Or add this to your applications Gemfile:
gem 'singleplatform'
And then run:
bundle install
Usage
Initializing an API Client
The gem uses a client model to query against the API. Create a client with your API credentials and make requests through that.
require 'singleplatform'
client = Singleplatform.new(
client_id: ENV['SINGLEPLATFORM_CLIENT_ID']
client_secret: ENV['SINGLEPLATFORM_CLIENT_SECRET']
)After creating a client you're able to make requests to SinglePlatform's API. The Client ID and Client Secret are required for each request.
Locations
With an initialized client, you can request information on locations in SinglePlatform's database.
Fetching Locations by ID
client.location('nobu')This will return a Singleplatform::Response object. Access the response body or code with .body and .code respectively. Calling .body returns a Hashie::Mash pseudo object which allows you to access all location attributes with dot notation.
response = client.location('nobu') # => #<Singleplatform::Response ... >
response.code # => 200
response.body # => #<Hashie::Mash ... >
response.body.name # => "Nobu"
response.body.attributes # => #<Hashie::Mash ... >
response.body.attributes.drive_thru # => falseSee SinglePlatform's API documentation for a full list of attributes.
Fetching Locations Updated Since a Given Date
You can retrieve locations en masse by calling:
response = client.locations_updated_since('2016-08-01', limit: 100)Results are paginated. The maximum (and default) limit per page is 5000. To access the next page of results, call:
response.nextMenus
SinglePlatform locations have menus or lists of products and services that you can access with a configured API client. The following call returns a Singleplatform::Response object whose body contains an Array of Hashie::Mash objects.
response = client.menus_for('nobu') # => #<Array ... >
response.body.first.name # => "Dinner Menu"See SinglePlatform's API documentation for the Menu schema with a full list of attributes.
Photos
Fetching photos for a particular location
Many SinglePlatform locations have photos, both at the business and menu-item level. Returns a Singleplatform::Response object whose body is an Array of menus.
response = client.photos_for('nobu') # => #<Singleplatform::Response ... >
response.body.first.type # => "Product"
response.body.first.url # => "http://xyz.cloudfront.net/.../39bf7671bc7d006f4cef72d94eee24aeec7615d2.jpg"Fetching all photos updated since a given date
Similarly to locations_updated_since, calling photos_updated_since returns a set of paginated results. Get the next page of results by calling next on the Singleplatform:::Response object.
response = client.photos_updated_since('2016-09-01') # => #<Singleplatform::Response ... >
response.next