Tito Ruby
A Ruby client for the Tito Admin API v3.
WARNING: This is a very early release, and I'm only using a small portion of it, so although we have automated tests, most of them are not backed up by real-world experience.
Installation
Add to your Gemfile:
gem "tito_ruby"Or install directly:
gem install tito_ruby
Configuration
Tito.configure do |config|
config.token = "your_api_token"
config.account = "your_account_slug"
endOr pass credentials directly to the client:
client = Tito::Admin::Client.new(token: "your_api_token", account: "your_account_slug")Usage
Events
client = Tito::Admin::Client.new
# List events
client.events.each { |event| puts event.title }
# Find a specific event
event = client.events.find("my-event-slug")
# Past and archived events
client.past_events.each { |e| puts e.title }
client.archived_events.each { |e| puts e.title }Tickets
client = Tito::Admin::Client.new(event: "my-event")
# List tickets
client.tickets.each { |ticket| puts ticket.reference }
# Search and filter
client.tickets.search("john").each { |t| puts t.reference }
# Pagination
client.tickets.page(2).per(50).each { |t| puts t.reference }Registrations
client.registrations.each { |reg| puts reg.name }Releases
client.releases.each { |release| puts release.title }Discount Codes
client.discount_codes.each { |code| puts code.code }Query Builder
All collections support a chainable query interface:
client.tickets
.where(state: "complete")
.order("created_at_desc")
.expand("registration", "release")
.page(1)
.per(25)
.each { |t| puts t.reference }Resource Status
| Resource | List | Find | Create | Update | Delete | Notes |
|---|---|---|---|---|---|---|
| Events | ✅ | ✅ | ❔ | ❔ | ❔ | Account-scoped |
| Releases | ✅ | ✅ | ✅ | ❔ | ✅ | |
| Tickets | ✅ | ✅ | ❔ | ❔ | N/A | |
| Registrations | ✅ | ✅ | ❔ | ❔ | N/A | |
| Questions | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Answers | ❔ | ❔ | N/A | N/A | N/A | Nested under Questions |
| Discount Codes | ✅ | ❔ | ✅ | ❔ | ✅ | |
| Activities | ✅ | ❔ | ✅ | ❔ | ✅ | |
| Checkin Lists | ❌ | ❔ | ✅ | ❔ | ✅ | List broken by Tito API bug |
| Opt-Ins | ✅ | ❔ | ✅ | ❔ | ✅ | |
| Interested Users | ✅ | ❔ | ✅ | ❔ | ✅ | |
| RSVP Lists | ✅ | ❔ | ✅ | ❔ | ✅ | |
| Release Invitations | ✅ | ❔ | ❔ | ❔ | ❔ | Nested under RSVP Lists |
| Webhook Endpoints | ✅ | ❔ | ✅ | ❔ | ✅ | Event-scoped |
| Waitlisted People | ✅ | ❔ | ❔ | ❔ | ❔ | |
| Refunds | ❔ | ❔ | N/A | N/A | N/A | Nested under Registrations |
| Venues | ✅ | ❔ | ❔ | ❔ | ❔ |
✅ = tested against live API ❔ = implemented but untested ❌ = known broken
Logging
In a Rails app, request logging is enabled automatically via Rails.logger. You'll see output like:
request: GET https://api.tito.io/v3/letterblock/test-event-1/tickets?page%5Bnumber%5D=1
response: Status 200
Outside of Rails, set a logger manually:
Tito.logger = Logger.new(STDOUT)Or via the configure block:
Tito.configure do |config|
config.logger = Logger.new(STDOUT)
endThis uses Faraday's built-in logger middleware, omitting headers and bodies. Set Tito.logger = nil to disable.
Note: the logger is captured when the first request is made on a client. If you set Tito.logger after a client has already been used, create a new client for it to take effect.
Development
bundle install
bundle exec rake test
License
MIT License. See LICENSE.txt.