Version 3.0
This is our latest stable version but you might be interested to explore version 3.1 .
Introduction
Admin API endpoint
https://api.tito.io/v3/
Examples in this documentation are written using curl.
The Admin API is designed to be a predictable and intuitive interface for secure programmatic access to Tito. The Admin API can be used to manage events, tickets, etc.
The Admin API is a REST API and returns JSON responses.
We hope by providing an API it will allow developers to build cool and useful tools on top of Tito.
Authentication
The Admin API uses API tokens to allow users to authenticate without exposing their credentials.
Developers can generate an API token by signing in at https://id.tito.io and selecting
Generate New Token
.
As the Admin API is a private API, only secret
API token types can be used. As well as selecting a token type, a mode
must also be selected:
live
- Use this mode once your event has gone live. This mode will only returntickets
andregistrations
from the live mode.test
- Use this mode to test your API integration is working. You can continue to use this token after your event has gone live and it will only read and write test data without affecting your live data. Note this mode will only return testtickets
andregistrations
.
If you find your API token has been compromised it can be revoked and a new one generated.
Your API token needs to be included in the Authorization
header so your requests can be authenticated.
Confirm you can connect
curl --request GET \
--url 'https://api.tito.io/v3/hello' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
{
"authenticated": true,
"access_token": "*ab1C",
"lookup_mode": "live",
"accounts": [
"biscuit-box",
"demo"
]
}
This endpoint will confirm you are authenticated properly and tell you which accounts you have access to.
GET https://api.tito.io/v3/hello
The access_token
is the last four characters of whatever access token you have used.
The Admin API also provides detailed information about Authentication Errors.
Headers
All API requests must send the following request headers:
Authorization
with the valueToken token=YOUR-API-TOKEN
whereYOUR-API-TOKEN
is replaced with your API token.Accept
header with the value ofapplication/json
Pagination
Endpoints which enumerate objects are paginated.
Pagination information is returned in the meta
attribute in the response body.
current_page
- The current page number.next_page
- The next page number.prev_page
- The previous page number.total_pages
- The number of pages.total_count
- The number of records with filtering applied,per_page
- The number of results returned in each page.overall_total
- The overall number of records without any filtering applied.
A specific page can be retrieved by providing the page[number]
parameter:
https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id?page[number]=2
The number of records returned in each page can be set with a page[size]
parameter:
https://api.tito.io/v3/:account_slug/:event_slug/tickets?page[size]=100
The default page size is 100 and the maximum page size is 1000.
Views
We have two views on the data we return:
- Short
- Extended
Short
This is what you get if you ask for a list of records (e.g. Get all Registrations) then we give you the "short" view of the data, so that we can make the response as quick as possible and you don't get a lot of data all at once.
Extended
If you ask for a single record (e.g. Get a Registration) then we give you the "extended" view which gives you more detailed information and possible associated records.
Choosing the view
You can override this by passing the view
parameter. For example:
GET https://api.tito.io/v3/:account_slug/:event_slug/tickets?view=extended
Please note — if you ask for the extended view of a large list of records it might take a long time and you might get a lot of data.
Errors
{
"errors": {
"title": [
"can't be blank"
]
}
}
The Tito API uses conventional HTTP response codes to indicate errors, and includes more detailed information on the exact nature of an error in the HTTP response.
For example, if a resource requires the title
attribute to be present there
will be an errors
key in the response with subkey of title
containing an array
of errors.
HTTP Status Codes
Code | Meaning |
---|---|
200 OK |
All is well. |
201 Created |
Your request has been fulfilled and has resulted in one or more new resources being created. |
204 No Content |
Your request has been fulfilled and that there is no additional content to send in the response payload body. e.g. deleting a resource. |
401 Unauthorized |
Your request is not authenticated. See the Authentication Errors section for more information. |
403 Forbidden |
Your request is not authorized as the user has insufficient permissions. See the Authorization Errors section for more information. |
404 Page Not Found |
The endpoint requested does not exist. |
422 Unprocessable Entity |
The resource couldn't be created or updated due to a validation error. Please see the response body for more information. |
429 Too Many Requests |
Your application is exceeding its rate limit. Slow down, pal! |
500 Internal Server Error |
Something is wrong on our end. |
504 Gateway Timeout |
Something has timed out on our end. |
Authentication Errors
{
"errors": {
"api_token": [
"is blank"
]
},
"hint": "You can retrieve your API token at https://id.tito.io. Please see the API docs for further information."
}
If a request cannot be authenticated the Tito API returns the standard
401
unauthorized HTTP status code and includes more details of the
authentication error in the HTTP response.
The Tito API includes a machine readable errors
key. It also has a hint
key
containing human friendly information on how to resolve your authentication error.
Authorization Errors
{
"errors": {
"status": 403,
"title": "Forbidden",
"detail": "You are not authorized to access refunds"
}
}
If a request cannot be authorized as a user has insufficient permissions
the Tito API returns a 403
forbidden HTTP status code and includes more details of the
authorization error in the HTTP response.
Activities
Activities represent things that attendees can go to during your event that are not part of their ticket e.g. bowling or conference dinner.
Tickets can have multiple activities attached, allowing you to share capacity, set start and end dates and times, sell single and combo tickets for multi-day events, and show a schedule and itinerary to attendees.
Attributes
Attribute | Type | Description |
---|---|---|
capacity | integer |
The number of people who can attend. If not set then there is no limit. |
date | date |
The date of this activity |
description | text |
A statement or tag line describing the activity |
end_time | time |
The time the activity is going to start |
name | string |
The name of the activity |
question_ids | array |
A list of Question id attributes to be asked to those who register for this activity. |
release_ids | array |
A list of Release id attributes that are part of the activity. |
show_to_attendee | boolean |
You can choose to show this activity to attendees. If shown, it will be listed on their ticket. Default: false |
start_time | time |
The time the activity is going to start |
Get all Activities
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/activities' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"activities": [
{
"_type": "activity",
"id": 1019150,
"capacity": 20,
"date": null,
"description": "",
"start_time": null,
"end_time": null,
"start_at": null,
"end_at": null,
"name": "Tea Making",
"private": false,
"question_ids": [],
"venue_id": null,
"accommodation": null,
"allocation_count": 0,
"sold_out": false,
"show_to_attendee": false,
"release_ids": [],
"translations": {
"en": {
"name": "Tea Making"
}
},
"venue": null,
"questions": [],
"releases": []
}
],
"meta": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"sort_options": {
"Name A-Z": {
"attr": "name",
"direction": "asc",
"default": true
},
"Name Z-A": {
"attr": "name",
"direction": "desc"
}
},
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": []
}
}
}
Retrieves all Activities
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/activities
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Get an Activity
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"activity": {
"_type": "activity",
"id": 1019150,
"capacity": 20,
"date": null,
"description": "",
"start_time": null,
"end_time": null,
"start_at": null,
"end_at": null,
"name": "Tea Making",
"private": false,
"question_ids": [],
"venue_id": null,
"accommodation": null,
"allocation_count": 0,
"sold_out": false,
"show_to_attendee": false,
"release_ids": [],
"translations": {
"en": {
"name": "Tea Making"
}
},
"venue": null,
"questions": [],
"releases": []
}
}
Retrieves an Activity
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.activity_id
- Theid
attribute of anActivity
.
Create an Activity
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/activities' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"activity":{"name":"Coffee Workshop"}}'
{
"activity": {
"_type": "activity",
"id": 1019152,
"capacity": null,
"date": null,
"description": null,
"start_time": null,
"end_time": null,
"start_at": null,
"end_at": null,
"name": "Coffee Workshop",
"private": true,
"question_ids": [],
"venue_id": null,
"accommodation": null,
"allocation_count": 0,
"sold_out": false,
"show_to_attendee": true,
"release_ids": [],
"translations": {
"en": {
"name": "Coffee Workshop"
}
},
"venue": null,
"questions": [],
"releases": []
}
}
Create a new Activity
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/activities
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Parameters
Parameter | Type | Description |
---|---|---|
name Required | string |
The name of the activity |
capacity | integer |
The number of people who can attend. If not set then there is no limit. |
date | date |
The date of this activity |
description | text |
A statement or tag line describing the activity |
end_time | time |
The time the activity is going to start |
question_ids | array |
A list of Question id attributes to be asked to those who register for this activity. |
release_ids | array |
A list of Release id attributes that are part of the activity. |
show_to_attendee | boolean |
You can choose to show this activity to attendees. If shown, it will be listed on their ticket. Default: false |
start_time | time |
The time the activity is going to start |
Update an Activity
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"activity":{"capacity":100}}'
{
"activity": {
"_type": "activity",
"id": 1019150,
"capacity": 100,
"date": null,
"description": "",
"start_time": null,
"end_time": null,
"start_at": null,
"end_at": null,
"name": "Tea Making",
"private": false,
"question_ids": [],
"venue_id": null,
"accommodation": null,
"allocation_count": 0,
"sold_out": false,
"show_to_attendee": false,
"release_ids": [],
"translations": {
"en": {
"name": "Tea Making"
}
},
"venue": null,
"questions": [],
"releases": []
}
}
Update an Activity
belonging to the given Event
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.activity_id
- Theid
attribute of anActivity
.
Parameters
Parameter | Type | Description |
---|---|---|
name Required | string |
The name of the activity |
capacity | integer |
The number of people who can attend. If not set then there is no limit. |
date | date |
The date of this activity |
description | text |
A statement or tag line describing the activity |
end_time | time |
The time the activity is going to start |
question_ids | array |
A list of Question id attributes to be asked to those who register for this activity. |
release_ids | array |
A list of Release id attributes that are part of the activity. |
show_to_attendee | boolean |
You can choose to show this activity to attendees. If shown, it will be listed on their ticket. Default: false |
start_time | time |
The time the activity is going to start |
Delete an Activity
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Delete an Activity
belonging to the given Event
.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.activity_id
- Theid
attribute of anActivity
.
Duplicate an Activity
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id/duplication' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
Duplicate an Activity
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/activities/:activity_id/duplication
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.activity_id
- Theid
attribute of aActivity
that should be duplicated.
Answers
Attributes
Attribute | Type | Description |
---|---|---|
alternate_response | string |
The response to the question's free text field if it's included e.g. 'If other, please specify'. |
download_url | url |
For file field questions, the URL where the uploaded file can be downloaded. |
primary_response | string/array |
The response to the question, Note, this can be a string but it also can be an array if it's for a checkboxes question with multiple responses. |
question_id | integer |
The id of the Question the answer is attached to. |
response Read only | string |
A human friendly response to the question, a comma separated string containing the primary_response and alternate_response if present. |
ticket_id | object |
The id of the Ticket the answer is attached to. |
Get all Answers
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug/answers' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"answers": [
{
"_type": "answer",
"id": 1001,
"alternate_response": "A small t-shirt is ok too.",
"download_url": null,
"primary_response": "Medium",
"question_id": 2001,
"response": "Medium, A small t-shirt is ok too.",
"ticket_id": 3001
}
],
"meta": { ... }
}
Retrieves all Answers
for the given Question
on an Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug/answers
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.question_slug
- Theslug
attribute of aQuestion
.
Check-in Lists
Check-in Lists allow you to check your attendees in at the venue of your event.
Create a master check-in list for all attendees or create special lists just for particular ticket types.
Attributes
Attribute | Type | Description |
---|---|---|
activity_ids | array |
The Activities the check-in list is for. Format: An array of Activity IDs. |
expires_at | datetime |
The time at which the check-in list should no longer be accessible or null for no expiry. |
question_ids | array |
The Questions to show attendees' answers to on the check-in list. Format: An array of Question IDs. |
release_ids | array |
The Releases the check-in list is for. Format: An array of Release IDs. |
show_company_name | boolean |
Show the attendees' company name on the check-in list. |
show_email | boolean |
Show the attendees' email address on the check-in list. |
show_phone_number | boolean |
Show the attendees' phone number on the check-in list. |
slug Read only | string |
A human friendly string used in the URL. |
title | string |
The name of the check-in list. |
Get all Check-in Lists
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"checkin_lists": [
{
"_type": "checkin_list",
"slug": "chk_d90KqwJIp9rfgkVzOCCTdMQ",
"activity_ids": [],
"expires_at": null,
"question_ids": [],
"release_ids": [],
"show_company_name": true,
"show_email": true,
"show_phone_number": true,
"title": "Bowling Attendee List",
"activities": [],
"checkins": [],
"questions": [],
"releases": [],
"tickets": []
}
],
"meta": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": []
}
}
}
Retrieves all CheckinLists
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Get a Check-in List
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_list_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"checkin_list": {
"_type": "checkin_list",
"slug": "chk_d90KqwJIp9rfgkVzOCCTdMQ",
"activity_ids": [],
"expires_at": null,
"question_ids": [],
"release_ids": [],
"show_company_name": true,
"show_email": true,
"show_phone_number": true,
"title": "Bowling Attendee List",
"activities": [],
"checkins": [],
"questions": [],
"releases": [],
"tickets": []
}
}
Retrieves a CheckinList
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_list_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.checkin_list_slug
- Theslug
attribute of aCheckinList
.
Create a Check-in List
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"checkin_list":{"title":"Bowling Attendee List"}}'
{
"checkin_list": {
"_type": "checkin_list",
"slug": "chk_d90KqwJIp9rfgkVzOCCTdMQ",
"activity_ids": [],
"expires_at": null,
"question_ids": [],
"release_ids": [],
"show_company_name": true,
"show_email": true,
"show_phone_number": true,
"title": "Bowling Attendee List",
"activities": [],
"checkins": [],
"questions": [],
"releases": [],
"tickets": []
}
}
Create a new CheckinList
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Parameters
Parameter | Type | Description |
---|---|---|
title Required | string |
The name of the check-in list. |
activity_ids | array |
The Activities the check-in list is for. Format: An array of Activity IDs. |
expires_at | datetime |
The time at which the check-in list should no longer be accessible or null for no expiry. |
question_ids | array |
The Questions to show attendees' answers to on the check-in list. Format: An array of Question IDs. |
release_ids | array |
The Releases the check-in list is for. Format: An array of Release IDs. |
show_company_name | boolean |
Show the attendees' company name on the check-in list. |
show_email | boolean |
Show the attendees' email address on the check-in list. |
show_phone_number | boolean |
Show the attendees' phone number on the check-in list. |
Update a Check-in List
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_list_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"checkin_list":{"title":"Conference Dinner List"}}'
{
"checkin_list": {
"_type": "checkin_list",
"slug": "chk_d90KqwJIp9rfgkVzOCCTdMQ",
"activity_ids": [],
"expires_at": null,
"question_ids": [],
"release_ids": [],
"show_company_name": true,
"show_email": true,
"show_phone_number": true,
"title": "Conference Dinner List",
"activities": [],
"checkins": [],
"questions": [],
"releases": [],
"tickets": []
}
}
Update a CheckinList
belonging to the given Event
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_list_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.checkin_list_slug
- Theslug
attribute of aCheckinList
.
Parameters
Parameter | Type | Description |
---|---|---|
title Required | string |
The name of the check-in list. |
activity_ids | array |
The Activities the check-in list is for. Format: An array of Activity IDs. |
expires_at | datetime |
The time at which the check-in list should no longer be accessible or null for no expiry. |
question_ids | array |
The Questions to show attendees' answers to on the check-in list. Format: An array of Question IDs. |
release_ids | array |
The Releases the check-in list is for. Format: An array of Release IDs. |
show_company_name | boolean |
Show the attendees' company name on the check-in list. |
show_email | boolean |
Show the attendees' email address on the check-in list. |
show_phone_number | boolean |
Show the attendees' phone number on the check-in list. |
Delete a Check-in List
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_list_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Delete an Activity
belonging to the given Event
.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/checkin_lists/:checkin_list_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.checkin_list_slug
- Theslug
attribute of aCheckinList
.
Discount Codes
Attributes
Attribute | Type | Description |
---|---|---|
code | string |
The code that will be distributed to provide a discount. |
end_at | datetime |
The time when the discount code becomes unavailable. |
max_quantity_per_release | integer |
Discount only applies to a maximum of this number. |
min_quantity_per_release | integer |
Discount only applies if this many tickets are selected. |
only_show_attached | boolean |
Only display tickets attached to this discount code when it is displayed or not e.g. display all publicly visible tickets. Default false |
quantity | integer |
The number of tickets that can avail of this discount code. |
quantity_used Read only | integer |
The number of tickets this discount code has been applied to. |
release_ids | array |
An array of the IDs of Releases the discount code can be applied to. |
reveal_secret | boolean |
Should secret tickets be revealed if this discount code is applied or not. Default false |
start_at | datetime |
The time when the discount code becomes available. |
type | string |
The kind of discount to apply. MoneyOffDiscountCode applies a flat discount. PercentOffDiscountCode applies a percentage discount. |
value | decimal |
The amount off per ticket. A percentage or flat amount depending on the discount code type. |
Get all Discount Codes
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"discount_codes": [
{
"_type": "discount_code",
"id": 5319076,
"code": "SAVE10",
"end_at": null,
"max_quantity_per_release": null,
"min_quantity_per_release": null,
"only_show_attached": null,
"quantity": null,
"quantity_used": 0,
"release_ids": [],
"reveal_secret": null,
"start_at": null,
"type": "PercentOffDiscountCode",
"value": "10.0",
"source": null
}
],
"meta": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"resources_hidden_by_default_count": 0,
"search_states_hidden_by_default": [
"past"
],
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
{
"label": "Current",
"value": "current"
},
{
"label": "Past",
"value": "past"
},
{
"label": "Upcoming",
"value": "upcoming"
},
{
"label": "Used",
"value": "used"
},
{
"label": "Unused",
"value": "unused"
}
],
"selected_states": [
"current",
"upcoming",
"used",
"unused"
]
}
}
}
Retrieves all DiscountCodes
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/discount_codes
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Get a Discount Code
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_code_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"discount_code": {
"_type": "discount_code",
"id": 5319076,
"code": "SAVE10",
"end_at": null,
"max_quantity_per_release": null,
"min_quantity_per_release": null,
"only_show_attached": null,
"quantity": null,
"quantity_used": 0,
"release_ids": [],
"reveal_secret": null,
"start_at": null,
"type": "PercentOffDiscountCode",
"value": "10.0",
"source": null
}
}
Retrieves a DiscountCode
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_code_id
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.discount_code_id
- Theid
attribute of aDiscountCode
.
Create a Discount Code
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"discount_code":{"code":"SAVE50","type":"PercentOffDiscountCode","value":"50.0"}}'
{
"discount_code": {
"_type": "discount_code",
"id": 5319079,
"code": "SAVE50",
"end_at": null,
"max_quantity_per_release": null,
"min_quantity_per_release": null,
"only_show_attached": false,
"quantity": null,
"quantity_used": 0,
"release_ids": [],
"reveal_secret": false,
"start_at": null,
"type": "PercentOffDiscountCode",
"value": "50.0",
"source": null
}
}
Create a new DiscountCode
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/discount_codes
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Parameters
Parameter | Type | Description |
---|---|---|
code Required | string |
The code that will be distributed to provide a discount. |
type Required | string |
The kind of discount to apply. MoneyOffDiscountCode applies a flat discount. PercentOffDiscountCode applies a percentage discount. |
value Required | decimal |
The amount off per ticket. A percentage or flat amount depending on the discount code type. |
end_at | datetime |
The time when the discount code becomes unavailable. |
max_quantity_per_release | integer |
Discount only applies to a maximum of this number. |
min_quantity_per_release | integer |
Discount only applies if this many tickets are selected. |
only_show_attached | boolean |
Only display tickets attached to this discount code when it is displayed or not e.g. display all publicly visible tickets. Default false |
quantity | integer |
The number of tickets that can avail of this discount code. |
release_ids | array |
An array of the IDs of Releases the discount code can be applied to. |
reveal_secret | boolean |
Should secret tickets be revealed if this discount code is applied or not. Default false |
start_at | datetime |
The time when the discount code becomes available. |
Update a Discount Code
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_code_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"discount_code":{"code":"SUPERSAVER"}}'
{
"discount_code": {
"_type": "discount_code",
"id": 5319079,
"code": "SUPERSAVER",
"end_at": null,
"max_quantity_per_release": null,
"min_quantity_per_release": null,
"only_show_attached": false,
"quantity": null,
"quantity_used": 0,
"release_ids": [],
"reveal_secret": false,
"start_at": null,
"type": "PercentOffDiscountCode",
"value": "50.0",
"source": null
}
}
Update a DiscountCode
belonging to the given Event
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_code_id
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.discount_code_id
- Theid
attribute of aDiscountCode
.
Parameters
Parameter | Type | Description |
---|---|---|
code Required | string |
The code that will be distributed to provide a discount. |
type Required | string |
The kind of discount to apply. MoneyOffDiscountCode applies a flat discount. PercentOffDiscountCode applies a percentage discount. |
value Required | decimal |
The amount off per ticket. A percentage or flat amount depending on the discount code type. |
end_at | datetime |
The time when the discount code becomes unavailable. |
max_quantity_per_release | integer |
Discount only applies to a maximum of this number. |
min_quantity_per_release | integer |
Discount only applies if this many tickets are selected. |
only_show_attached | boolean |
Only display tickets attached to this discount code when it is displayed or not e.g. display all publicly visible tickets. Default false |
quantity | integer |
The number of tickets that can avail of this discount code. |
release_ids | array |
An array of the IDs of Releases the discount code can be applied to. |
reveal_secret | boolean |
Should secret tickets be revealed if this discount code is applied or not. Default false |
start_at | datetime |
The time when the discount code becomes available. |
Delete a Discount Code
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_code_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Delete a DiscountCode
belonging to the given Event
.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/discount_codes/:discount_code_id
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.discount_code_id
- Theid
attribute of aDiscountCode
.
Events
Events are planned social occasions that tickets will be sold for and people will attend.
An Event belongs to an Account
and most other resources belong to an event.
An event URL is comprised of the combination of the account_slug
and the event_slug
.
For example https://ti.to/ultimateconf/2024
is composed:
- The base
ti.to
URL - The Ultimate Conf
Account
slugultimateconf
- The specific
Event
slug for the 2024 edition.
The equivalent event can be looked up using a similar URL structure with the API base URL:
https://api.tito.io/v3/ultimateconf/2024
Attributes
Attribute | Type | Description |
---|---|---|
account_id Read only | integer |
— |
account_slug Read only | string |
— |
banner | object |
— |
banner_url Read only | url |
A link to the event's banner image. |
currency | string |
3 letter ISO 4217 currency code e.g. USD |
date_or_range Read only | string |
— |
default_locale | string |
The default locale of the event |
description | markdown |
A statement or tag line describing the event |
discount_codes_count Read only | integer |
— |
email_address | string |
The contact email address so that attendees can get in touch. |
end_date | date |
The date the event is going to end |
live | boolean |
Is it visible to the public or not. |
locales | Array |
A list of locales supported for this event |
location | string |
The location the event is taking place |
logo | object |
— |
metadata | json |
JSON that will appear in API requests for integration with external systems |
private | boolean |
Is it to be listed on the event's account page or not. |
releases Read only | array |
— |
security_token Read only | string |
— |
setup Read only | boolean |
— |
show_discount_code_field Read only | boolean |
— |
slug | string |
A human friendly string used in the Event URL |
start_date | date |
The date the event is going to start |
test_mode | boolean |
Is the event in test mode or not. |
title | string |
The name of the event |
url Read only | string |
— |
users_count Read only | integer |
— |
Get all upcoming Events
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/events' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"events": [
{
"_type": "event",
"id": 1058586,
"created_at": "2018-11-01T11:55:45.000+00:00",
"updated_at": "2018-11-01T11:55:45.000+00:00",
"title": "2018",
"description": null,
"banner": {
"url": null,
"thumb": {
"url": null
}
},
"banner_url": "https://www.example.com",
"currency": "USD",
"default_locale": "en",
"live": false,
"test_mode": true,
"locales": [
"en"
],
"location": null,
"logo": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"private": false,
"slug": "2018",
"account_id": 410,
"start_date": null,
"end_date": null,
"date_or_range": "",
"security_token": null,
"metadata": {},
"url": "https://ti.to/biscuit-box/2018",
"setup": true,
"show_discount_code_field": false,
"discount_codes_count": 0,
"account_slug": "biscuit-box",
"users_count": 1,
"releases": []
}
],
"meta": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
{
"label": "Past",
"value": "past"
},
{
"label": "Upcoming",
"value": "upcoming"
}
],
"selected_states": [
"upcoming"
]
}
}
}
Retrieves all upcoming Events
for the given Account
.
GET https://api.tito.io/v3/:account_slug/events
account_slug
- Theslug
attribute of anAccount
.
Get all past Events
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/events/past' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Retrieves all past Events
for the given Account
.
GET https://api.tito.io/v3/:account_slug/events/past
account_slug
- Theslug
attribute of anAccount
.
Get all archived Events
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/events/archived' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Retrieves all archived Events
for the given Account
.
GET https://api.tito.io/v3/:account_slug/events/archived
account_slug
- Theslug
attribute of anAccount
.
Get an Event
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"event": {
"_type": "event",
"id": 1058586,
"created_at": "2018-11-01T11:55:45.000+00:00",
"updated_at": "2018-11-01T11:55:45.000+00:00",
"title": "2018",
"description": null,
"banner": {
"url": null,
"thumb": {
"url": null
}
},
"banner_url": "https://www.example.com",
"currency": "USD",
"default_locale": "en",
"live": false,
"test_mode": true,
"locales": [
"en"
],
"location": null,
"logo": {
"url": null,
"thumb": {
"url": null
},
"display": {
"url": null
}
},
"private": false,
"slug": "2018",
"account_id": 410,
"start_date": null,
"end_date": null,
"date_or_range": "",
"security_token": null,
"metadata": {},
"url": "https://ti.to/biscuit-box/2018",
"setup": true,
"show_discount_code_field": false,
"discount_codes_count": 0,
"account_slug": "biscuit-box",
"users_count": 1,
"releases": []
}
}
Retrieve an Event
for the given Account
.
GET https://api.tito.io/v3/:account_slug/:event_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Create an Event
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/events' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"event":{"title":"Awesome Conf"}}'
{
"event":{
"_type":"event",
"id":1058592,
"created_at":"2018-11-02T10:44:27.000+00:00",
"updated_at":"2018-11-02T10:44:27.000+00:00",
"title":"Awesome Conf",
"description":null,
"banner":{
"url":null,
"thumb":{
"url":null
}
},
"banner_url":"https://www.example.com/",
"currency":"USD",
"default_locale":"en",
"live":false,
"test_mode":true,
"locales":[
"en"
],
"location":null,
"logo":{
"url":null,
"thumb":{
"url":null
},
"display":{
"url":null
}
},
"private":false,
"slug":"awesome-conf",
"account_id":410,
"start_date":null,
"end_date":null,
"date_or_range":"",
"security_token":null,
"metadata":null,
"url":"https://ti.to/biscuit-box/awesome-conf",
"setup":true,
"show_discount_code_field":false,
"discount_codes_count":0,
"account_slug":"biscuit-box",
"users_count":1,
"releases":[
]
}
}
Create a new Event
belonging to the given Account
.
POST https://api.tito.io/v3/:account_slug/events
account_slug
- Theslug
attribute of anAccount
.
Parameters
Parameter | Type | Description |
---|---|---|
email_address Required | string |
The contact email address so that attendees can get in touch. |
title Required | string |
The name of the event |
banner | object |
— |
currency | string |
3 letter ISO 4217 currency code e.g. USD |
default_locale | string |
The default locale of the event |
description | markdown |
A statement or tag line describing the event |
end_date | date |
The date the event is going to end |
live | boolean |
Is it visible to the public or not. |
locales | Array |
A list of locales supported for this event |
location | string |
The location the event is taking place |
logo | object |
— |
metadata | json |
JSON that will appear in API requests for integration with external systems |
private | boolean |
Is it to be listed on the event's account page or not. |
slug | string |
A human friendly string used in the Event URL |
start_date | date |
The date the event is going to start |
test_mode | boolean |
Is the event in test mode or not. |
Update an Event
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"event":{"location":"Dublin, Ireland"}}'
Update an Event
belonging to the given Account
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Delete an Event
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Delete an Event
belonging to the given Account
.
DELETE https://api.tito.io/v3/:account_slug/:event_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Duplicate an Event
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/duplication' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
{
"duplication":{
"_type":"duplication",
"status":"processing",
"title":null,
"slug":null
}
}
Duplicate an existing Event
belonging to the given Account
.
POST https://api.tito.io/v3/:account_slug/:event_slug/duplication
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
to be duplicated.
As duplicating an Event
happens asynchronously the Tito API provides a response
indicating the current status
of the duplication:
processing
- The duplication is still being processed.complete
- The duplication has successfully completed.
The latest status of the duplication can be then looked up.
Duplicate an Event status
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/duplication' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"duplication":{
"_type":"duplication",
"status":"complete",
"title":"2018 Copy",
"slug":"2018-copy"
}
}
The latest status of the Event
duplication.
GET https://api.tito.io/v3/:account_slug/:event_slug/duplication
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
to be duplicated.
As duplicating an Event
happens asynchronously the API provides the ability to
lookup the latest status of the duplication. The status can be either:
processing
- The duplication is still being processed.complete
- The duplication has successfully completed.
Once the duplication completes the Event slug
and title
will be assigned.
Interested Users
Attributes
Attribute | Type | Description |
---|---|---|
created_at Read only | datetime |
The date the record was created |
string |
The email address of the user | |
id Read only | integer |
The identifer of the interested user |
name | string |
The full name of the person who is interested |
updated_at Read only | datetime |
The date the record was last updated |
Get all Interested Users
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"interested_users": [
{
"_type": "interested_user",
"id": 123,
"name": "Tony Tiger",
"email": "grr@tito.io",
"created_at": "2019-12-25T09:00:00.000-00:00",
"updated_at": "2019-12-25T09:00:00.000-00:00"
},
{
"_type": "interested_user",
"id": 124,
"name": "Yogi Bear",
"email": "booboo@tito.io",
"created_at": "2019-12-25T09:00:00.000-00:00",
"updated_at": "2019-12-25T09:00:00.000-00:00"
}
]
}
Retrieves all interested users (or people) for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/interested_users
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Get an Interested User
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users/:interested_user_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"interested_user":{
"_type":"interested_user",
"id":1,
"name":"Test Name",
"email":"test@example.com",
"created_at":"2020-06-15T15:48:11.000+03:00",
"updated_at":"2020-06-15T18:33:23.000+03:00"
}
}
Retrieves an InterestedUser
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/interested_users/:interested_user_id
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.interested_user_id
- Theid
attribute of anInterestedUser
.
Create an Interested User
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"interested_user":{"email":"test@example.com"}}'
{
"interested_user":{
"_type":"interested_user",
"id":1,
"name":null,
"email":"test@example.com",
"created_at":"2020-06-15T15:48:11.000+03:00",
"updated_at":"2020-06-15T15:48:11.000+03:00"
}
}
Create a new InterestedUser
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/interested_users
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Parameters
Parameter | Type | Description |
---|---|---|
email Required | string |
The email address of the user |
name | string |
The full name of the person who is interested |
Update an Interested User
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users/:interested_user_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"interested_user":{"name":"Test Name"}}'
{
"interested_user":{
"_type":"interested_user",
"id":1,
"name":"Test Name",
"email":"test@example.com",
"created_at":"2020-06-15T15:48:11.000+03:00",
"updated_at":"2020-06-15T18:33:23.000+03:00"
}
}
Update an InterestedUser
belonging to the given Event
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/interested_users/:interested_user_id
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.interested_user_id
- Theid
attribute of anInterestedUser
.
Parameters
Parameter | Type | Description |
---|---|---|
email Required | string |
The email address of the user |
name | string |
The full name of the person who is interested |
Delete an Interested User
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/interested_users/:interested_user_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Delete an InterestedUser
belonging to the given Event
.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/interested_users/:interested_user_id
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.interested_user_id
- Theid
attribute of anInterestedUser
.
Opt-Ins
Opt-ins is a beta feature. Contact us to get it enabled.
Attributes
Attribute | Type | Description |
---|---|---|
acceptance_count Read only | integer |
The number of times the opt-in has been accepted |
created_at Read only | datetime |
The date this opt-in was created |
description | string |
A statement or tag line describing the opt-in |
name | string |
The opt-in you would like to get consent for |
release_ids | array |
An array of IDs representing the releases that are associated with the opt-in |
slug Read only | string |
A human friendly string used in the opt-in URL. Automatically set from name. |
updated_at Read only | datetime |
The date this opt-in was last updated |
Get all Opt-Ins
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"opt_ins": [
{
"_type": "opt_in",
"id": 123,
"slug": "do-you-consent-to-receiving-marketing-em",
"name": "Do you consent to receiving marketing emails?",
"description": "We will send you marketing emails if you consent for us to do so.",
"release_ids": [1234567],
"acceptance_count": 10,
"created_at": "2021-08-12T09:43:00.000+01:00",
"updated_at": "2021-08-12T14:10:54.000+01:00"
}
],
"meta": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"sort_options": {
"A-Z": {
"attr": "name",
"direction": "asc",
"default": true
},
"Z-A": {
"attr": "name",
"direction": "desc"
}
}
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": []
}
}
}
Retrieves all Opt-Ins
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/opt_ins
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Get an Opt-In
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins/:opt_in_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"opt_in": {
"_type": "opt_in",
"id": 166,
"slug": "do-you-consent-to-receiving-marketing-em",
"name": "Do you consent to receiving marketing emails?",
"description": "We will send you marketing emails if you consent for us to do so.",
"release_ids": [1234567],
"acceptance_count": 1,
"created_at": "2021-08-12T09:43:00.000+01:00",
"updated_at": "2021-08-12T14:10:54.000+01:00",
"view": "extended",
"translations": {
"en": {
"name": "Do you consent to receiving marketing emails?",
"description": "We will send you marketing emails if you consent for us to do so."
}
},
"releases": [
{
"_type": "release",
"id": 1234567,
"event_id": 123,
"created_at": "2021-08-12T09:42:30.000+01:00",
"updated_at": "2021-08-12T09:44:54.000+01:00",
"slug": "my-ticket",
"title": "My ticket",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": null,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": false,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": null,
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"show_qr_code": true,
"only_issue_combos": false,
"pricing_type": "free",
"payment_type": "free",
"position": 0,
"price": null,
"price_ex_tax": 0.0,
"tax_exclusive": false,
"price_degressive": null,
"price_degressive_list": [],
"quantity": null,
"request_company_name": false,
"request_vat_number": false,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": true,
"require_name": false,
"secret": false,
"show_price": true,
"suggested_donation": null,
"lock_changes": true,
"state_name": "on_sale",
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/example-account/example-event/with/my-ticket",
"tickets_count": 0,
"locked": false,
"waiting_list": false,
"sold_out": false,
"off_sale": false,
"expired": false,
"upcoming": false,
"allocatable": true,
"view": "extended",
"changes_locked": true,
"question_ids": [],
"gross_income": 0,
"full_price_tickets_count": 0,
"free_tickets_count": 0,
"discounted_tickets_count": 0,
"voided_tickets_count": 0,
"pending_waiting_list": false,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": false,
"show_discount_code_field_here": false,
"show_phone_number": false,
"tax_description": null,
"translations": {
"en": {
"description": "",
"fail_message": null,
"success_message": "",
"title": "My ticket"
}
},
"warnings": {},
"termset_id": null,
"ticket_group_id": null
}
]
}
}
Retrieves an Opt-In
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/opt_in/:opt_in_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.opt_in_slug
- Theslug
attribute of anOpt-In
.
Create an Opt-In
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"opt_in":{"name":"Do you consent to us storing your data?","release_ids":[1234567]}}'
{
"opt_in": {
"_type": "opt_in",
"id": 123,
"slug": "do-you-consent-to-us-storing-your-data",
"name": "Do you consent to us storing your data?",
"description": null,
"release_ids": [1234567],
"acceptance_count": 0,
"created_at": "2021-08-12T16:21:00.000+01:00",
"updated_at": "2021-08-12T16:21:00.000+01:00",
"view": "extended",
"translations": {
"en": {
"name": "Do you consent to us storing your data?",
"description": null
}
},
"releases": []
}
}
Create a new Opt-In
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/opt_ins
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Parameters
Parameter | Type | Description |
---|---|---|
name Required | string |
The opt-in you would like to get consent for |
description | string |
A statement or tag line describing the opt-in |
release_ids | array |
An array of IDs representing the releases that are associated with the opt-in |
Update an Opt-In
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins/:opt_in_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"opt_in":{"name":"My new name"}}'
{
"opt_in": {
"_type": "opt_in",
"id": 170,
"slug": "my-new-name",
"name": "My new name",
"description": null,
"release_ids": [],
"acceptance_count": 0,
"created_at": "2021-08-12T18:03:18.000+01:00",
"updated_at": "2021-08-12T18:03:52.000+01:00",
"view": "extended",
"translations": {
"en": {
"name": "My new name",
"description": null
}
},
"releases": []
}
}
Update an Opt-In
belonging to the given Event
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/opt_ins/:opt_in_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.opt_in_slug
- Theslug
attribute of anOpt-In
.
Parameters
Parameter | Type | Description |
---|---|---|
name Required | string |
The opt-in you would like to get consent for |
description | string |
A statement or tag line describing the opt-in |
release_ids | array |
An array of IDs representing the releases that are associated with the opt-in |
Delete an Opt-In
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/opt_ins/:opt_in_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Delete an Opt-In
belonging to the given Event
.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/opt_ins/:opt_in_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.opt_in_slug
- Theslug
attribute of anOpt-In
.
Questions
Attributes
Attribute | Type | Description |
---|---|---|
description | string |
A statement or tag line describing the question |
field_type | string |
Checkboxes , Country , File , Select , Text or Textarea . |
include_free_text_field | boolean |
Should an 'Other' text field be included alongside this question or not. Only applies to Checkboxes or Select field questions. Default false |
options | text |
A line separated list of options for this question e.g. A\nB\nC . Only applies to Checkboxes or Select field questions. |
options_free_text_field | string |
A custom label for the 'Other' text field option if it's enabled. Only applies to Checkboxes or Select field questions. |
required | boolean |
Does this question require a response or not. Default false |
slug Read only | string |
A human friendly string used in the Question URL |
title | string |
The question you would like to ask. |
Get all Questions
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"questions": [
{
"_type": "question",
"id": 1041930,
"title": "Do you have any dietary requirements?",
"field_type": "Text",
"include_free_text_field": false,
"required": null,
"slug": "dietary",
"answers_count": 0,
"created_at": "2018-11-06T13:12:17.000+00:00",
"updated_at": "2018-11-06T14:55:32.000+00:00"
}
],
"meta": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": []
}
}
}
Retrieves all Questions
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/questions
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Get a Question
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"question": {
"_type": "question",
"id": 1041930,
"title": "Do you have any dietary requirements?",
"field_type": "Text",
"include_free_text_field": false,
"required": null,
"slug": "dietary",
"answers_count": 0,
"created_at": "2018-11-06T13:12:17.000+00:00",
"updated_at": "2018-11-06T14:55:32.000+00:00"
}
}
Retrieves a Question
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.question_slug
- Theslug
attribute of aQuestion
.
Create a Question
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"question":{"title":"What is your industry?","field_type":"Text"}}'
{
"question": {
"_type": "question",
"id": 1041932,
"title": "What is your industry?",
"field_type": "Text",
"include_free_text_field": false,
"required": false,
"slug": "what-is-your-industry-a6d40827-6423-4a60-bc1d-5e90cd02cae9",
"answers_count": 0,
"created_at": "2018-11-06T16:08:46.000+00:00",
"updated_at": "2018-11-06T16:08:46.000+00:00"
}
}
Create a new Question
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/questions
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Parameters
Parameter | Type | Description |
---|---|---|
field_type Required | string |
Checkboxes , Country , File , Select , Text or Textarea . |
title Required | string |
The question you would like to ask. |
description | string |
A statement or tag line describing the question |
include_free_text_field | boolean |
Should an 'Other' text field be included alongside this question or not. Only applies to Checkboxes or Select field questions. Default false |
options | text |
A line separated list of options for this question e.g. A\nB\nC . Only applies to Checkboxes or Select field questions. |
options_free_text_field | string |
A custom label for the 'Other' text field option if it's enabled. Only applies to Checkboxes or Select field questions. |
required | boolean |
Does this question require a response or not. Default false |
Update a Question
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"question":{"required":true}}'
{
"question": {
"_type": "question",
"id": 1041931,
"title": "What is your industry?",
"field_type": "Text",
"include_free_text_field": false,
"required": true,
"slug": "what-is-your-industry",
"answers_count": 0,
"created_at": "2018-11-06T16:06:52.000+00:00",
"updated_at": "2018-11-06T16:10:23.000+00:00"
}
}
Update a Question
belonging to the given Event
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.question_slug
- Theslug
attribute of aQuestion
.
Parameters
Parameter | Type | Description |
---|---|---|
field_type Required | string |
Checkboxes , Country , File , Select , Text or Textarea . |
title Required | string |
The question you would like to ask. |
description | string |
A statement or tag line describing the question |
include_free_text_field | boolean |
Should an 'Other' text field be included alongside this question or not. Only applies to Checkboxes or Select field questions. Default false |
options | text |
A line separated list of options for this question e.g. A\nB\nC . Only applies to Checkboxes or Select field questions. |
options_free_text_field | string |
A custom label for the 'Other' text field option if it's enabled. Only applies to Checkboxes or Select field questions. |
required | boolean |
Does this question require a response or not. Default false |
Delete a Question
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Delete a Question
belonging to the given Event
.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/questions/:question_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.question_slug
- Theslug
attribute of aQuestion
.
Refunds
Attributes
Attribute | Type | Description |
---|---|---|
amount Read only | decimal |
The monetary amount of the refund. |
created_at Read only | datetime |
When the refund was recorded. |
id Read only | integer |
The identifer of the refund |
manual Read only | boolean |
true if it was logged in Tito after it was already processed. Default false |
registration Read only | object |
The Registration attached to the refund. |
Get all Refunds
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/refunds' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"refunds": [
{
"_type": "refund",
"id": 123456,
"amount": "100.0",
"created_at": "2018-02-09T13:14:26.000+00:00",
"manual": null,
"registration": {
...
}
}
],
"meta": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": []
}
}
}
Retrieves all Refunds
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/refunds
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Get a Refund
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/refunds/:refund_id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"refund":{
"_type": "refund",
"id": 123456,
"amount": "100.0",
"created_at": "2018-02-09T13:14:26.000+00:00",
"manual": null,
"registration":{
...
}
}
}
Retrieves a Refund
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/refunds/:refund_id
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.refund_id
- Theid
attribute of aRefund
.
Registrations
Attributes
Attribute | Type | Description |
---|---|---|
billing_address Read only | object |
The address given for billing. |
billing_address_attributes | object |
A hash of billing address attributes used to update address , city , country , state_province_region , vat_number and zip_postal_code |
company_name | string |
The company name of the person who registered |
completed_at Read only | datetime |
The time at which the registration was completed and tickets were created for it. |
consented_at Read only | datetime |
The date the person consented to providing their information during registration. |
created_at Read only | datetime |
The date the registration was created. This is when the checkout process was started, not when payment was made. |
discount_code Read only | string |
The discount code used when registering. |
string |
The email address of the registration. | |
expires_at Read only | datetime |
The time at which the registration will expire if it has not been completed. Only registrations containing tickets for locked releases can expire. A release is locked when all of its available tickets are in the process of being registered. |
id Read only | integer |
The identifer of the Registration |
ip_address Read only | string |
The IP address when the registration was created. |
line_items Read only | array |
A list of LineItems for this registration: release_id and quantity . If the Release supports donations you can specify a donation amount. |
locale Read only | string |
The locale of the registration. |
metadata | object |
Metadata about the registration. |
name | string |
The full name of the person who registered |
notify | boolean |
Set this to true to send emails to the person registering and the organisers (if they have chosen to receive notifications). Default is false (no emails). |
paid Read only | boolean |
Whether the registration is free (false) or paid (true). This doesn't indicate whether an registration paid by invoice is paid or not - see the receipt_paid attribute for that. |
payment Read only | object |
Payment information |
payment_reference | string |
The purchase order number of the registration. |
phone_number | string |
The phone number of the person who registered |
quantities Read only | object |
The number of Tickets for each Release that were registered. |
receipt_paid Read only | integer |
Whether the registration has been paid or not. False would indicate that either this is a free ticket or the customer has been invoiced but that they haven't paid yet. |
receipts Read only | array |
A list of Receipts for this registration. |
reference Read only | string |
A randomly generated 4 character string unique to the event. |
refunded Read only | boolean |
Whether the registration has been refunded. |
refunds Read only | array |
A list of Refunds for this registration. |
registration_type Read only | integer |
standard , manual or imported . |
slug Read only | string |
A human friendly string used in the URL |
source | string |
The Source Tracking code that the person registered under. |
state Read only | string |
It's new…new ready redirected It's being processed… ready_to_process processing payment_details_stored payment_charged It's finished… complete incomplete cancelled confirmed customer_cancelled Something went wrong… errored payment_declined not_fulfilled |
test_mode Read only | boolean |
Default: true if test mode is enabled for you or for your entire event, otherwise false . |
tickets Read only | array |
A list of Tickets for this registration. |
tickets_count Read only | integer |
The number of tickets purchased when registering. |
total | decimal |
The gross monetary amount. |
total_less_tax Read only | decimal |
The net monetary amount. |
updated_at Read only | datetime |
The date the registration was last updated. |
Get all Registrations
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"registrations": [
{
"_type": "registration",
"id": 3509397,
"slug": "reg_test_ds7qNqJ4s4doDMeh1VogTrw",
"billing_address": null,
"created_at": "2018-11-12T13:35:44.000+00:00",
"updated_at": "2018-11-12T13:35:44.000+00:00",
"company_name": "",
"completed_at": "2018-11-12T13:35:44.000+00:00",
"discount_code": null,
"email": "john@example.com",
"expires_at": "2018-11-12 13:50:44 +0000",
"ip_address": "127.0.0.1",
"locale": "en",
"metadata": {},
"name": "John Smith",
"payment_reference": null,
"phone_number": "",
"registration_type": "manual",
"reference": "ZBRE",
"source": null,
"state": "complete",
"test_mode": true,
"total": "0.0",
"consented_at": null,
"paid": null,
"payment": null,
"refunded": false,
"total_less_tax": "0.0",
"tickets_count": 1,
"quantities": {
"coffee-brewing": {
"release": "Coffee Brewing",
"quantity": 1
}
},
"receipts": [ ... ],
"refunds": [ ... ],
"tickets": [ ... ],
"line_items": [ ... ]
}
],
"meta": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 3,
"per_page": 100,
"overall_total": 10,
"resources_hidden_by_default_count": 0,
"search_states_hidden_by_default": [
"cancelled"
],
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
{
"label": "Paid",
"value": "paid"
},
{
"label": "Unpaid",
"value": "unpaid"
},
{
"label": "Complete",
"value": "complete"
},
{
"label": "Confirmed",
"value": "confirmed"
},
{
"label": "Incomplete",
"value": "incomplete"
},
{
"label": "Cancelled",
"value": "cancelled"
}
],
"selected_states": [
"paid",
"unpaid",
"complete",
"confirmed",
"incomplete"
]
}
}
}
Retrieves all Registrations
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/registrations
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Sort Order
The default order is by created_at
with newest registrations first. You can change the order by appending some parameters to the endpoint URL. This is the same as the default:
?search[sort]=created_at&search[direction]=desc
The direction can either be asc
or desc
.
You can sort on the following attributes:
name
created_at
updated_at
total
reference
payment_provider
Filtering
You can filter which registrations you get back too. For instance, to only get unpaid
or incomplete
registrations:
By state
?search[states][]=unpaid&search[states][]=incomplete
Possible states are:
cancelled
complete
confirmed
incomplete
paid
unpaid
By time
This will show all registrations created since 1 Jan 2019 at 9am UTC:
?search[created_at][gt]=2019-01-01T09:00:00+UTC
That operator can be:
gt
- greater thangte
- greater than or equal tolt
- less thanlte
- less than or equal to
And you can do that on the following attributes
created_at
updated_at
So, for instance, to find all registrations that have been updated in the last hour:
?search[updated_at][gt]=2019-01-01T09:00:00+UTC
(where you obviously change that timestamp to be one hour ago).
Note: if you don't use the +UTC
suffix on those timestamps it will default to the time zone used by the event itself.
By any text
You can also search by text, which uses the same logic as the dashboard UI:
- name
- slug
- reference
- company name
- discount code
For example:
?q=Alice
Get a Registration
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"registration": {
"_type": "registration",
"id": 3509397,
"slug": "reg_test_ds7qNqJ4s4doDMeh1VogTrw",
"billing_address": null,
"created_at": "2018-11-12T13:35:44.000+00:00",
"updated_at": "2018-11-12T13:35:44.000+00:00",
"company_name": "",
"completed_at": "2018-11-12T13:35:44.000+00:00",
"discount_code": null,
"email": "john@example.com",
"expires_at": "2018-11-12 13:50:44 +0000",
"ip_address": "127.0.0.1",
"locale": "en",
"metadata": {},
"name": "John Smith",
"payment_reference": null,
"phone_number": "",
"registration_type": "manual",
"reference": "ZBRE",
"source": null,
"state": "complete",
"test_mode": true,
"total": "0.0",
"consented_at": null,
"paid": null,
"payment": null,
"refunded": false,
"total_less_tax": "0.0",
"tickets_count": 1,
"quantities": {
"coffee-brewing": {
"release": "Coffee Brewing",
"quantity": 1
}
},
"receipts": [ ... ],
"refunds": [],
"tickets": [ ... ],
"line_items": [ ... ]
}
}
Retrieves a Registration
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.registration_slug
- Theslug
attribute of aRegistration
.
Create a Registration
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"registration":{"email":"jane@example.com","name":"John Smith","discount_code":"","source":"","line_items":[{"release_id":123,"quantity":1}]}}'
{
"registration": {
"_type": "registration",
"id": 3509397,
"slug": "reg_test_ds7qNqJ4s4doDMeh1VogTrw",
"billing_address": null,
"created_at": "2018-11-12T13:35:44.000+00:00",
"updated_at": "2018-11-12T13:35:44.000+00:00",
"company_name": "",
"completed_at": "2018-11-12T13:35:44.000+00:00",
"discount_code": null,
"email": "john@example.com",
"expires_at": "2018-11-12 13:50:44 +0000",
"ip_address": "127.0.0.1",
"locale": "en",
"metadata": {},
"name": "John Smith",
"payment_reference": null,
"phone_number": "",
"registration_type": "manual",
"reference": "ZBRE",
"source": null,
"state": "complete",
"test_mode": true,
"total": "0.0",
"consented_at": null,
"paid": null,
"payment": null,
"refunded": false,
"total_less_tax": "0.0",
"tickets_count": 1,
"quantities": {
"coffee-brewing": {
"release": "Coffee Brewing",
"quantity": 1
}
},
"receipts": [ ... ],
"refunds": [],
"tickets": [ ... ],
"line_items": [ ... ]
}
}
Create a registration with one or more tickets.
POST https://api.tito.io/v3/:account_slug/:event_slug/registrations
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Parameters
Parameter | Type | Description |
---|---|---|
discount_code | string |
The discount code used when registering. |
string |
The email address of the registration. | |
line_items | array |
A list of LineItems for this registration: release_id and quantity . If the Release supports donations you can specify a donation amount. |
name | string |
The full name of the person who registered |
notify | boolean |
Set this to true to send emails to the person registering and the organisers (if they have chosen to receive notifications). Default is false (no emails). |
source | string |
The Source Tracking code that the person registered under. |
Update a Registration
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"registration":{"email":"john@example.com"}}'
{
"email":"john@example.com",
"metadata":null,
"name":"John Smith",
"payment_reference":null,
"phone_number":"",
"source":"",
"registration":{
"event_id":1058586,
"id":3509397,
"name":"John Smith",
"email":"john@example.com",
"slug":"reg_test_ds7qNqJ4s4doDMeh1VogTrw",
"created_at":"2018-11-12T13:35:44.000+00:00",
"updated_at":"2018-11-19T14:28:11.000+00:00",
"discount_code":null,
"user_id":null,
"ip_address":"127.0.0.1",
"payment_option_id":null,
"expires_at":"2018-11-12T13:50:44.000+00:00",
"reference":"ZBRE",
"payment_reference":null,
"cached_total":"0.0",
"processing_job_id":null,
"completed_at":"2018-11-12T13:35:44.000+00:00",
"state":"complete",
"registration_type":"manual",
"billing_address_id":null,
"company_name":null,
"source":"",
"receipt_paid":true,
"payment_option_name":null,
"locale":"en",
"phone_number":"",
"metadata":null,
"prefill_id":null,
"test_mode":true,
"consented_at":null,
"data_security_consent_id":null,
"data_security_terms_and_condition_id":null
},
"total":"0.0",
"update_receipt":true,
"billing_address_attributes":{
},
"receipt_lines_attributes":[
]
}
Update a Registration
belonging to the given Event
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.registration_slug
- Theslug
attribute of aRegistration
.
Parameters
Parameter | Type | Description |
---|---|---|
billing_address_attributes | object |
A hash of billing address attributes used to update address , city , country , state_province_region , vat_number and zip_postal_code |
company_name | string |
The company name of the person who registered |
string |
The email address of the registration. | |
metadata | object |
Metadata about the registration. |
name | string |
The full name of the person who registered |
payment_reference | string |
The purchase order number of the registration. |
phone_number | string |
The phone number of the person who registered |
source | string |
The Source Tracking code that the person registered under. |
total | decimal |
The gross monetary amount. |
Mark a Registration as Paid
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/confirmations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
{
"email":"john@example.com",
"metadata":null,
"name":"John Smith",
"payment_reference":null,
"phone_number":"",
"source":"",
"registration":{
"event_id":1058586,
"id":3509397,
"name":"John Smith",
"email":"john@example.com",
"slug":"reg_test_ds7qNqJ4s4doDMeh1VogTrw",
"created_at":"2018-11-12T13:35:44.000+00:00",
"updated_at":"2018-11-19T14:28:11.000+00:00",
"discount_code":null,
"user_id":null,
"ip_address":"127.0.0.1",
"payment_option_id":null,
"expires_at":"2018-11-12T13:50:44.000+00:00",
"reference":"ZBRE",
"payment_reference":null,
"cached_total":"0.0",
"processing_job_id":null,
"completed_at":"2018-11-12T13:35:44.000+00:00",
"state":"complete",
"registration_type":"manual",
"billing_address_id":null,
"company_name":null,
"source":"",
"receipt_paid":true,
"payment_option_name":null,
"locale":"en",
"phone_number":"",
"metadata":null,
"prefill_id":null,
"test_mode":true,
"consented_at":null,
"data_security_consent_id":null,
"data_security_terms_and_condition_id":null
},
"total":"0.0",
"update_receipt":true,
"billing_address_attributes":{
},
"receipt_lines_attributes":[
]
}
Pay by invoice is a beta feature. Contact us to get it enabled.
Show that a Registration
has been paid. Useful if you are allowing your customers to pay by invoice.
POST https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/confirmations
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.registration_slug
- Theslug
attribute of aRegistration
.
Changes the receipt_paid
attribute to true.
Mark a Registration as Unpaid
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/confirmations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
{
"email":"john@example.com",
"metadata":null,
"name":"John Smith",
"payment_reference":null,
"phone_number":"",
"source":"",
"registration":{
"event_id":1058586,
"id":3509397,
"name":"John Smith",
"email":"john@example.com",
"slug":"reg_test_ds7qNqJ4s4doDMeh1VogTrw",
"created_at":"2018-11-12T13:35:44.000+00:00",
"updated_at":"2018-11-19T14:28:11.000+00:00",
"discount_code":null,
"user_id":null,
"ip_address":"127.0.0.1",
"payment_option_id":null,
"expires_at":"2018-11-12T13:50:44.000+00:00",
"reference":"ZBRE",
"payment_reference":null,
"cached_total":"0.0",
"processing_job_id":null,
"completed_at":"2018-11-12T13:35:44.000+00:00",
"state":"complete",
"registration_type":"manual",
"billing_address_id":null,
"company_name":null,
"source":"",
"receipt_paid":false,
"payment_option_name":null,
"locale":"en",
"phone_number":"",
"metadata":null,
"prefill_id":null,
"test_mode":true,
"consented_at":null,
"data_security_consent_id":null,
"data_security_terms_and_condition_id":null
},
"total":"0.0",
"update_receipt":true,
"billing_address_attributes":{
},
"receipt_lines_attributes":[
]
}
Pay by invoice is a beta feature. Contact us to get it enabled.
Show that a Registration
has NOT been paid. Useful if you are allowing your customers to pay by invoice. You wouldn't normally need to do this but might do if you marked it as paid by mistake.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/confirmations
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.registration_slug
- Theslug
attribute of aRegistration
.
Changes the receipt_paid
attribute to false.
Refund a Registration
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/refunds' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"refund":{"manual":false}}'
POST /:account_slug/:event_slug/registrations/:registration_slug/refunds
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.registration_slug
- theslug
(orid
) of theregistration
.
Parameters
refund[manual]
booleanrequiredSet to true if you don't want to refund via the payment provider or false if you do.
Cancel a Registration
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/registrations/:registration_slug/cancellation' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
POST /:account_slug/:event_slug/registrations/:registration_slug/cancellation
account_slug
- theslug
of theaccount
.event_slug
- theslug
of theevent
.registration_slug
- theslug
(orid
) of theregistration
.
This will cancel a registration and void any associated tickets.
Releases
Attributes
Attribute | Type | Description |
---|---|---|
activities Read only | array |
A list of activities associated with this Release . |
allocatable Read only | boolean |
Whether there is still sufficient quantity to be sold. |
archived Read only | boolean |
Is the release archived or not. Default: false |
card_payments | boolean |
Whether to allow customers to pay by card. |
combo_releases Read only | array |
A list of combo releases. |
created_at Read only | datetime |
The date the release was created. |
default_quantity | integer |
The default number of tickets selected for this release on the event page. Default: 0 |
description | text |
A statement or tag line describing the event |
discounted_tickets_count Read only | integer |
The number of discounted tickets. |
donation Read only | boolean |
— |
enable_super_combo_summary | boolean |
For combo releases only. Include a summary of a combo in the order summary or not. Default: true |
end_at | datetime |
The time when the release will go off sale. |
expired Read only | boolean |
Whether the release is no longer on sale as the end_at has passed. |
free_tickets_count Read only | integer |
The number of free tickets. |
full_price_tickets_count Read only | integer |
The number of full price tickets. |
gross_income Read only | decimal |
The gross income for this release. |
has_fail_message Read only | boolean |
— |
has_success_message Read only | boolean |
Display the custom success message or not. Default: false |
id Read only | integer |
The identifier of the release. |
invoice | boolean |
Allow customers to pay by requesting an invoice rather than using a card. Customers will be able to request to pay-by-invoice when purchasing this ticket. |
lock_changes | boolean |
Whether attendees can make changes to their tickets. |
locked Read only | boolean |
Whether the release is locked. |
max_donation | decimal |
— |
max_tickets_per_person | integer |
The maximum number of tickets per registration. |
metadata | object |
Metadata about the release. |
min_donation | decimal |
The minimum monetary amount that can be donated when purchasing this release. |
min_tickets_per_person | integer |
The minimum number of tickets per registration. |
not_a_ticket | boolean |
Disable issuing of PDF/Apple Wallet tickets or not. For example if this release is for merchandise rather than an actual ticket. Default false |
off_sale Read only | boolean |
Whether the release is on sale or not. |
payment_type | string |
Deprecated. Please use pricing_type instead. |
position Read only | integer |
The position of the release in the list of all releases for the event. |
price | decimal |
The monetary amount the release should be sold for. |
price_degressive | string |
The degressive pricing structure e.g. 100, 75, 25 |
price_ex_tax Read only | decimal |
The net price of the release. |
pricing_type | string |
The type of pricing for this releases e.g. free , paid , donation or degressive . |
quantity | integer |
The number of tickets available. |
question_ids | array |
An array of the IDs of Questions attached to the release. The order of the IDs represents the order in which the questions will be asked. |
questions Read only | array |
A list of questions that ticketholders should be asked. |
request_company_name | boolean |
Do registrations which include this release require a company name. |
request_vat_number | boolean |
Do registrations which include this release require a VAT number. |
require_billing_address | boolean |
Do registrations which include this release require a billing address. |
require_company_name | boolean |
— |
require_credit_card_for_sold_out_waiting_list | boolean |
— |
require_email | boolean |
Do tickets for this release require an email. Default: true |
require_name | boolean |
Do tickets for this release require a name. Default: false |
require_vat_number | boolean |
— |
secret | boolean |
Is it only accessible via a secret link or is it visible to everyone on the event page. Default: false |
share_url Read only | string |
A shareable URL of a direct link to purchasing this release. |
show_company_name Read only | boolean |
— |
show_discount_code_field_here Read only | boolean |
— |
show_phone_number Read only | boolean |
— |
show_price | boolean |
Whether to show the price on the event homepage. |
show_vat_number Read only | boolean |
— |
slug Read only | string |
A human friendly string used in the URL. |
sold_out Read only | boolean |
Whether the release is sold out. |
start_at | datetime |
The time when the release will go on sale. |
state | integer (or string) |
100 (or the string "on_sale") or 404 (or the string "off_sale"). Default: 100 or "on_sale" |
state_name Read only | string |
— |
success_message | text |
A custom message to be displayed to customers after a successful order of this release. |
suggested_donation | decimal |
The suggested monetary amount that can be donated when purchasing this release. |
tax_components Read only | array |
A list of tax components that apply to this release. |
tax_description Read only | string |
A formatted description of the tax for this release. |
tax_exclusive Read only | boolean |
Whether the price is exclusive of tax. |
tax_types Read only | array |
A list of tax types that apply to this release. |
termset Read only | object |
The Termset that needs to be consented to for this release. |
termset_id | integer |
The identifier of the Termset that is associated with this release. |
ticket_group Read only | object |
Similar types of releases can be grouped together with a TicketGroup |
ticket_group_id | integer |
The identifier of the TicketGroup that is associated with this release. |
tickets_count Read only | integer |
The number of tickets sold for this release. |
title | string |
The name of the release. |
translations | object |
The values of translated attributes. |
upcoming Read only | boolean |
Whether the release is not on sale yet as the start_at has not passed. |
updated_at Read only | datetime |
The date the release was last updated. |
voided_tickets_count Read only | integer |
The number of voided tickets. |
waiting_list Read only | boolean |
Whether there is a waiting list. |
waiting_list_enabled_during_locked | boolean |
— |
waiting_list_enabled_during_sold_out | boolean |
Enable waiting list when this release sells out or not. Default: false |
Get all Releases
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"releases": [
{
"_type": "release",
"id": 1105525,
"created_at": "2018-11-08T22:40:45.000+00:00",
"updated_at": "2018-11-09T09:57:08.000+00:00",
"slug": "coffee-brewing",
"title": "Coffee Brewing",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": null,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": null,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": {},
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"position": 0,
"price": "100.0",
"price_ex_tax": "100.0",
"pricing_type": "paid",
"tax_exclusive": false,
"price_degressive": null,
"quantity": null,
"request_company_name": false,
"request_vat_number": true,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": false,
"require_name": false,
"secret": false,
"show_price": null,
"suggested_donation": "100.0",
"lock_changes": false,
"state_name": null,
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/biscuit-box/2018/with/coffee-brewing",
"tickets_count": 0,
"locked": false,
"waiting_list": false,
"sold_out": false,
"off_sale": false,
"expired": false,
"upcoming": false,
"allocatable": true,
"question_ids": [],
"gross_income": null,
"full_price_tickets_count": 0,
"free_tickets_count": 0,
"discounted_tickets_count": 0,
"voided_tickets_count": 0,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": true,
"show_discount_code_field_here": false,
"show_phone_number": false,
"tax_description": null,
"translations": {
"en": {
"description": "",
"fail_message": null,
"success_message": "",
"title": "Coffee Brewing"
}
},
"termset_id": null,
"ticket_group_id": null,
"activities": [],
"combo_releases": [],
"questions": [],
"tax_types": [],
"tax_components": [],
"termset": null,
"ticket_group": null
}
],
"meta": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"resources_hidden_by_default_count": 0,
"search_states_hidden_by_default": [
"archived"
],
"sort_options": {
"Position on event homepage": {
"attr": "position",
"direction": "asc",
"default": true
},
"On sale date, earliest first": {
"attr": "start_at",
"direction": "desc"
},
"On sale date, latest first": {
"attr": "start_at",
"direction": "asc"
},
"Title A-Z": {
"attr": "title",
"direction": "asc"
},
"Title Z-A": {
"attr": "title",
"direction": "desc"
}
},
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": [
{
"label": "On Sale",
"value": "on_sale"
},
{
"label": "Off Sale",
"value": "off_sale"
},
{
"label": "Not Sold Out",
"value": "not_sold_out"
},
{
"label": "Sold Out",
"value": "sold_out"
},
{
"label": "Public",
"value": "public"
},
{
"label": "Secret",
"value": "secret"
},
{
"label": "Active",
"value": "active"
},
{
"label": "Archived",
"value": "archived"
},
{
"label": "Changes Locked",
"value": "changes_locked"
},
{
"label": "Changes Allowed",
"value": "changes_allowed"
}
],
"selected_states": [
"on_sale",
"off_sale",
"not_sold_out",
"sold_out",
"public",
"secret",
"active",
"changes_locked",
"changes_allowed"
]
}
}
}```
Retrieves all Releases
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/releases
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Get a Release
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"release": {
"_type": "release",
"id": 1105525,
"created_at": "2018-11-08T22:40:45.000+00:00",
"updated_at": "2018-11-09T09:57:08.000+00:00",
"slug": "coffee-brewing",
"title": "Coffee Brewing",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": null,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": null,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": {},
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"position": 0,
"price": "100.0",
"price_ex_tax": "100.0",
"pricing_type": "paid",
"tax_exclusive": false,
"price_degressive": null,
"quantity": null,
"request_company_name": false,
"request_vat_number": true,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": false,
"require_name": false,
"secret": false,
"show_price": null,
"suggested_donation": "100.0",
"lock_changes": false,
"state_name": null,
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/biscuit-box/2018/with/coffee-brewing",
"tickets_count": 0,
"locked": false,
"waiting_list": false,
"sold_out": false,
"off_sale": false,
"expired": false,
"upcoming": false,
"allocatable": true,
"question_ids": [],
"gross_income": null,
"full_price_tickets_count": 0,
"free_tickets_count": 0,
"discounted_tickets_count": 0,
"voided_tickets_count": 0,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": true,
"show_discount_code_field_here": false,
"show_phone_number": false,
"tax_description": null,
"translations": {
"en": {
"description": "",
"fail_message": null,
"success_message": "",
"title": "Coffee Brewing"
}
},
"termset_id": null,
"ticket_group_id": null,
"activities": [],
"combo_releases": [],
"questions": [],
"tax_types": [],
"tax_components": [],
"termset": null,
"ticket_group": null
}
}
Retrieves a Release
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.release_slug
- Theslug
attribute of aRelease
.
Create a Release
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"release":{"title":"Tea Brewing"}}'
{
"release": {
"_type": "release",
"id": 1105528,
"created_at": "2018-11-09T15:02:31.000+00:00",
"updated_at": "2018-11-09T15:02:31.000+00:00",
"slug": "tea-brewing",
"title": "Tea Brewing",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": 0,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": false,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": {},
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"position": 0,
"price": null,
"price_ex_tax": "0.0",
"pricing_type": "free",
"tax_exclusive": false,
"price_degressive": null,
"quantity": null,
"request_company_name": null,
"request_vat_number": null,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": true,
"require_name": false,
"secret": false,
"show_price": true,
"suggested_donation": null,
"lock_changes": null,
"state_name": null,
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/biscuit-box/2018/with/tea-brewing",
"tickets_count": 0,
"locked": false,
"waiting_list": false,
"sold_out": false,
"off_sale": true,
"expired": false,
"upcoming": false,
"allocatable": false,
"question_ids": [],
"gross_income": null,
"full_price_tickets_count": 0,
"free_tickets_count": 0,
"discounted_tickets_count": 0,
"voided_tickets_count": 0,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": false,
"show_discount_code_field_here": null,
"show_phone_number": false,
"tax_description": null,
"translations": {
"en": {
"description": null,
"fail_message": null,
"success_message": null,
"title": "Tea Brewing"
}
},
"termset_id": null,
"ticket_group_id": null,
"activities": [],
"combo_releases": [],
"questions": [],
"tax_types": [],
"tax_components": [],
"termset": null,
"ticket_group": null
}
}
Create a new Release
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/releases
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Parameters
Parameter | Type | Description |
---|---|---|
title Required | string |
The name of the release. |
card_payments | boolean |
Whether to allow customers to pay by card. |
default_quantity | integer |
The default number of tickets selected for this release on the event page. Default: 0 |
description | text |
A statement or tag line describing the event |
enable_super_combo_summary | boolean |
For combo releases only. Include a summary of a combo in the order summary or not. Default: true |
end_at | datetime |
The time when the release will go off sale. |
invoice | boolean |
Allow customers to pay by requesting an invoice rather than using a card. Customers will be able to request to pay-by-invoice when purchasing this ticket. |
lock_changes | boolean |
Whether attendees can make changes to their tickets. |
max_donation | decimal |
— |
max_tickets_per_person | integer |
The maximum number of tickets per registration. |
metadata | object |
Metadata about the release. |
min_donation | decimal |
The minimum monetary amount that can be donated when purchasing this release. |
min_tickets_per_person | integer |
The minimum number of tickets per registration. |
not_a_ticket | boolean |
Disable issuing of PDF/Apple Wallet tickets or not. For example if this release is for merchandise rather than an actual ticket. Default false |
payment_type | string |
Deprecated. Please use pricing_type instead. |
price | decimal |
The monetary amount the release should be sold for. |
price_degressive | string |
The degressive pricing structure e.g. 100, 75, 25 |
pricing_type | string |
The type of pricing for this releases e.g. free , paid , donation or degressive . |
quantity | integer |
The number of tickets available. |
question_ids | array |
An array of the IDs of Questions attached to the release. The order of the IDs represents the order in which the questions will be asked. |
request_company_name | boolean |
Do registrations which include this release require a company name. |
request_vat_number | boolean |
Do registrations which include this release require a VAT number. |
require_billing_address | boolean |
Do registrations which include this release require a billing address. |
require_company_name | boolean |
— |
require_credit_card_for_sold_out_waiting_list | boolean |
— |
require_email | boolean |
Do tickets for this release require an email. Default: true |
require_name | boolean |
Do tickets for this release require a name. Default: false |
require_vat_number | boolean |
— |
secret | boolean |
Is it only accessible via a secret link or is it visible to everyone on the event page. Default: false |
show_price | boolean |
Whether to show the price on the event homepage. |
start_at | datetime |
The time when the release will go on sale. |
state | integer (or string) |
100 (or the string "on_sale") or 404 (or the string "off_sale"). Default: 100 or "on_sale" |
success_message | text |
A custom message to be displayed to customers after a successful order of this release. |
suggested_donation | decimal |
The suggested monetary amount that can be donated when purchasing this release. |
termset_id | integer |
The identifier of the Termset that is associated with this release. |
ticket_group_id | integer |
The identifier of the TicketGroup that is associated with this release. |
translations | object |
The values of translated attributes. |
waiting_list_enabled_during_locked | boolean |
— |
waiting_list_enabled_during_sold_out | boolean |
Enable waiting list when this release sells out or not. Default: false |
Update a Release
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"release":{"quantity":20}}'
{
"release": {
"_type": "release",
"id": 1105525,
"created_at": "2018-11-08T22:40:45.000+00:00",
"updated_at": "2018-11-09T15:05:40.000+00:00",
"slug": "coffee-brewing",
"title": "Coffee Brewing",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": null,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": null,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": {},
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"position": 0,
"price": "100.0",
"price_ex_tax": "100.0",
"pricing_type": "paid",
"tax_exclusive": false,
"price_degressive": null,
"quantity": 20,
"request_company_name": false,
"request_vat_number": true,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": false,
"require_name": false,
"secret": false,
"show_price": null,
"suggested_donation": "100.0",
"lock_changes": false,
"state_name": null,
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/biscuit-box/2018/with/coffee-brewing",
"tickets_count": 0,
"locked": false,
"waiting_list": false,
"sold_out": false,
"off_sale": false,
"expired": false,
"upcoming": false,
"allocatable": true,
"question_ids": [],
"gross_income": null,
"full_price_tickets_count": 0,
"free_tickets_count": 0,
"discounted_tickets_count": 0,
"voided_tickets_count": 0,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": true,
"show_discount_code_field_here": false,
"show_phone_number": false,
"tax_description": null,
"translations": {
"en": {
"description": "",
"fail_message": null,
"success_message": "",
"title": "Coffee Brewing"
}
},
"termset_id": null,
"ticket_group_id": null,
"activities": [],
"combo_releases": [],
"questions": [],
"tax_types": [],
"tax_components": [],
"termset": null,
"ticket_group": null
}
}
Update a Release
belonging to the given Event
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.release_slug
- Theslug
attribute of aRelease
.
Parameters
Parameter | Type | Description |
---|---|---|
title Required | string |
The name of the release. |
card_payments | boolean |
Whether to allow customers to pay by card. |
default_quantity | integer |
The default number of tickets selected for this release on the event page. Default: 0 |
description | text |
A statement or tag line describing the event |
enable_super_combo_summary | boolean |
For combo releases only. Include a summary of a combo in the order summary or not. Default: true |
end_at | datetime |
The time when the release will go off sale. |
invoice | boolean |
Allow customers to pay by requesting an invoice rather than using a card. Customers will be able to request to pay-by-invoice when purchasing this ticket. |
lock_changes | boolean |
Whether attendees can make changes to their tickets. |
max_donation | decimal |
— |
max_tickets_per_person | integer |
The maximum number of tickets per registration. |
metadata | object |
Metadata about the release. |
min_donation | decimal |
The minimum monetary amount that can be donated when purchasing this release. |
min_tickets_per_person | integer |
The minimum number of tickets per registration. |
not_a_ticket | boolean |
Disable issuing of PDF/Apple Wallet tickets or not. For example if this release is for merchandise rather than an actual ticket. Default false |
payment_type | string |
Deprecated. Please use pricing_type instead. |
price | decimal |
The monetary amount the release should be sold for. |
price_degressive | string |
The degressive pricing structure e.g. 100, 75, 25 |
pricing_type | string |
The type of pricing for this releases e.g. free , paid , donation or degressive . |
quantity | integer |
The number of tickets available. |
question_ids | array |
An array of the IDs of Questions attached to the release. The order of the IDs represents the order in which the questions will be asked. |
request_company_name | boolean |
Do registrations which include this release require a company name. |
request_vat_number | boolean |
Do registrations which include this release require a VAT number. |
require_billing_address | boolean |
Do registrations which include this release require a billing address. |
require_company_name | boolean |
— |
require_credit_card_for_sold_out_waiting_list | boolean |
— |
require_email | boolean |
Do tickets for this release require an email. Default: true |
require_name | boolean |
Do tickets for this release require a name. Default: false |
require_vat_number | boolean |
— |
secret | boolean |
Is it only accessible via a secret link or is it visible to everyone on the event page. Default: false |
show_price | boolean |
Whether to show the price on the event homepage. |
start_at | datetime |
The time when the release will go on sale. |
state | integer (or string) |
100 (or the string "on_sale") or 404 (or the string "off_sale"). Default: 100 or "on_sale" |
success_message | text |
A custom message to be displayed to customers after a successful order of this release. |
suggested_donation | decimal |
The suggested monetary amount that can be donated when purchasing this release. |
termset_id | integer |
The identifier of the Termset that is associated with this release. |
ticket_group_id | integer |
The identifier of the TicketGroup that is associated with this release. |
translations | object |
The values of translated attributes. |
waiting_list_enabled_during_locked | boolean |
— |
waiting_list_enabled_during_sold_out | boolean |
Enable waiting list when this release sells out or not. Default: false |
Delete a Release
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Delete a Release
belonging to the given Event
.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.release_slug
- Theslug
attribute of aRelease
.
Archive a Release
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/archival' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
Archive a Release
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/archival
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.release_slug
- Theslug
attribute of aRelease
.
Unarchive a Release
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/archival' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Unarchive a Release
belonging to the given Event
.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/archival
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.release_slug
- Theslug
attribute of aRelease
.
Duplicate a Release
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/duplication' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
Duplicate a Release
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/duplication
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.release_slug
- Theslug
attribute of aRelease
that should be duplicated.
Put a Release on sale
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/activation' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{}'
Put a Release
belonging to the given Event
on sale.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/activation
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.release_slug
- Theslug
attribute of aRelease
.
Pause the sale of a Release
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/deactivation' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{}'
Pause the sale of a Release
belonging to the given Event
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/deactivation
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.release_slug
- Theslug
attribute of aRelease
.
Make a Release public
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/publication' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
Make an on sale Release
publicily available for purchase on your event page.
POST https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/publication
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.release_slug
- Theslug
attribute of aRelease
.
Make a Release secret
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/publication' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Make an on sale Release
secret. A secret Release
won't appear on your event page
and can only be purchased through the shareable URL.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/releases/:release_slug/publication
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.release_slug
- Theslug
attribute of aRelease
.
RSVP Lists
RSVP is a beta feature. Contact us to get it enabled.
Invite people to register and target specific releases. An RSVP List
has many Release Invitations
Attributes
Attribute | Type | Description |
---|---|---|
created_at Read only | datetime |
The date the list was created. |
id Read only | integer |
The identifer of the RSVP List |
slug Read only | string |
A human friendly string used in the URL. |
title | string |
a title for this list |
updated_at Read only | datetime |
The date the list was last updated. |
Get all RSVP Lists
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"rsvp_lists": [
{
"_type": "rsvp_list",
"id": 123,
"slug": "rsvp_list_dmVQEoZtBPzqUQIa6vdFJYg",
"created_at": "2019-01-01T09:00:00.000+00:00",
"updated_at": "2019-01-01T09:00:00.000+00:00",
"title": "Introduction"
}
],
"meta": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"sort_options": {
"Created time, earliest first": {
"attr": "created_at",
"direction":"asc"
},
"Created time, latest first": {
"attr": "created_at",
"direction": "desc",
"default": true
},
"Title A-Z": {
"attr": "title",
"direction": "asc"
},
"Title Z-A": {
"attr": "title",
"direction": "desc"
}
},
"filter_options": {
"sections": {
"states": {
"label": "Status",
"open": false
}
},
"collection": false,
"states": []
}
}
}
Retrieves all RSVP Lists
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Get an RSVP List
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"rsvp_list": {
"_type": "rsvp_list",
"id": 123,
"slug": "rsvp_list_dmVQEoZtBPzqUQIa6vdFJYg",
"created_at": "2019-01-01T09:00:00.000+00:00",
"updated_at": "2019-01-01T09:00:00.000+00:00",
"title": "Introduction"
}
}
Retrieves an RSVP List
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.rsvp_list_slug
- Theslug
attribute of anRSVP List
.
Create an RSVP List
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"rsvp_list":{"title":"Introduction"}}'
{
"rsvp_list": {
"_type": "rsvp_list",
"id": 123,
"slug": "rsvp_list_dmVQEoZtBPzqUQIa6vdFJYg",
"created_at": "2019-01-01T09:00:00.000+00:00",
"updated_at": "2019-01-01T09:00:00.000+00:00",
"title": "Introduction"
}
}
Create a new RSVP List
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Parameters
Parameter | Type | Description |
---|---|---|
title Required | string |
a title for this list |
Update an RSVP List
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"rsvp_list":{"title":"New Introduction"}}'
{
"rsvp_list": {
"_type": "rsvp_list",
"id": 123,
"slug": "rsvp_list_dmVQEoZtBPzqUQIa6vdFJYg",
"created_at": "2019-01-01T09:00:00.000+00:00",
"updated_at": "2019-01-01T09:00:00.000+00:00",
"title": "New Introduction"
}
}
Update an RSVP List
belonging to the given Event
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.rsvp_list_slug
- Theslug
attribute of anRSVP List
.
Parameters
Parameter | Type | Description |
---|---|---|
title Required | string |
a title for this list |
Delete an RSVP List
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Delete an RSVP List
belonging to the given Event
.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.rsvp_list_slug
- Theslug
attribute of anRSVP List
.
RSVP Release Invitations
RSVP is a beta feature. Contact us to get it enabled.
An RSVP Release Invitation
belongs to an RSVP List
Attributes
Attribute | Type | Description |
---|---|---|
created_at Read only | datetime |
The date this invitation was created. |
discount_code | string |
Auto-apply this discount code when the invitee orders the ticket (optional) |
email |
The email of the person invited | |
expires_at | datetime |
When this invitation should expire (optional) |
first_name | string |
The first name of the person invited (optional) |
last_name | string |
The last name of the person invited (optional) |
redirect | boolean |
What happens if the customer clicks the invitation link after they've ordered. True means they will be redirected to their order, false means they will be shown a "link expired" message. Defaults to false. |
release_ids | array |
An array of IDs representing the releases that are offered |
slug Read only | string |
A human friendly string used in the URL. |
updated_at Read only | datetime |
The date this invitation was last updated. |
Get all RSVP Release Invitations
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"release_invitations": [
{
"_type": "release_invitation",
"id": 123,
"slug": "rsvp_dsC6YWbMou0lABn4sZegEOA",
"first_name": "Tony",
"last_name": "Tiger",
"email": "grr@tito.io",
"name": "Tony Tiger",
"unique_url": "https://ti.to/biscuit-box/2018/rsvp/rsvp_dsC6YWbMou0lABn4sZegEOA",
"status": null,
"redeemed": false,
"registration_id": null,
"registration_slug": null,
"registration_url": null,
"registration_reference": null,
"releases": [
{
"id": 123,
"title": "Coffee Brewing",
"slug": "coffee-brewing"
}
]
}
]
}
Retrieves all RSVP Lists
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Get an RSVP Release Invitation
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations/:release_invitation_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"release_invitation": {
"_type": "release_invitation",
"id": 123,
"first_name": "Tony",
"last_name": "Tiger",
"email": "grr@tito.io",
"release_id": null,
"registration_id": null,
"slug": "rsvp_dsC6YWbMou0lABn4sZegEOA",
"created_at": "2019-01-01T09:00:00.000+00:00",
"updated_at": "2019-01-01T09:00:00.000+00:00",
"event_id": 123,
"importer_id": null,
"expires_at": null,
"rsvp_list_id": 123,
"redirect": null,
"discount_code": "",
"auto": null,
"guest": null,
"status": null,
"message_delivery_id": null,
"name": "Tony Tiger",
"unique_url": "https://ti.to/biscuit-box/2018/rsvp/rsvp_dWyIx6CdyH9130Uj254k42Q",
"redeemed": false,
"registration_slug": null,
"registration_url": null,
"releases": [
{
"_type": "release",
"id": 123,
"event_id": 123,
"created_at": "2019-01-01T09:00:00.000+00:00",
"updated_at": "2019-01-01T09:00:00.000+00:00",
"slug": "coffee-brewing",
"title": "Coffee Brewing",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": null,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": false,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": null,
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"position": 0,
"price": null,
"price_ex_tax": "0.0",
"pricing_type": "free",
"tax_exclusive": false,
"price_degressive": null,
"quantity": null,
"request_company_name": false,
"request_vat_number": false,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": false,
"require_name": false,
"secret": false,
"show_price": true,
"suggested_donation": null,
"lock_changes": false,
"state_name": null,
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/biscuit-box/2018/with/5k-stretch",
"tickets_count": 1,
"locked": false,
"waiting_list": false,
"sold_out": false,
"off_sale": false,
"expired": false,
"upcoming": false,
"allocatable": true,
"question_ids": [],
"gross_income": null,
"full_price_tickets_count": 0,
"free_tickets_count": 1,
"discounted_tickets_count": 0,
"voided_tickets_count": 0,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": false,
"show_discount_code_field_here": false,
"show_phone_number": false,
"tax_description": null,
"translations": {
"en": {
"description": "",
"fail_message": null,
"success_message": "",
"title": "Coffee Brewing"
}
},
"termset_id": null,
"ticket_group_id": null
}
]
}
}
Retrieves a Release Invitation
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations/:release_invitation_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.rsvp_list_slug
- Theslug
attribute of anRSVP List
.release_invitation_slug
- Theslug
attribute of anRSVP Release Invitation
.
Create an RSVP Release Invitation
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"release_invitation":{"email":"grr@tito.io","first_name":"Tony","last_name":"Tiger","release_ids":[1,2,3]}}'
{
"release_invitation": {
"_type": "release_invitation",
"id": 123,
"first_name": "Tony",
"last_name": "Tiger",
"email": "grr@tito.io",
"release_id": null,
"registration_id": null,
"slug": "rsvp_dsC6YWbMou0lABn4sZegEOA",
"created_at": "2019-01-01T09:00:00.000+00:00",
"updated_at": "2019-01-01T09:00:00.000+00:00",
"event_id": 123,
"importer_id": null,
"expires_at": null,
"rsvp_list_id": 123,
"redirect": null,
"discount_code": "",
"auto": null,
"guest": null,
"status": null,
"message_delivery_id": null,
"name": "Tony Tiger",
"unique_url": "https://ti.to/biscuit-box/2018/rsvp/rsvp_dWyIx6CdyH9130Uj254k42Q",
"redeemed": false,
"registration_slug": null,
"registration_url": null,
"releases": [
{
"_type": "release",
"id": 123,
"event_id": 123,
"created_at": "2019-01-01T09:00:00.000+00:00",
"updated_at": "2019-01-01T09:00:00.000+00:00",
"slug": "coffee-brewing",
"title": "Coffee Brewing",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": null,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": false,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": null,
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"position": 0,
"price": null,
"price_ex_tax": "0.0",
"pricing_type": "free",
"tax_exclusive": false,
"price_degressive": null,
"quantity": null,
"request_company_name": false,
"request_vat_number": false,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": false,
"require_name": false,
"secret": false,
"show_price": true,
"suggested_donation": null,
"lock_changes": false,
"state_name": null,
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/biscuit-box/2018/with/5k-stretch",
"tickets_count": 1,
"locked": false,
"waiting_list": false,
"sold_out": false,
"off_sale": false,
"expired": false,
"upcoming": false,
"allocatable": true,
"question_ids": [],
"gross_income": null,
"full_price_tickets_count": 0,
"free_tickets_count": 1,
"discounted_tickets_count": 0,
"voided_tickets_count": 0,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": false,
"show_discount_code_field_here": false,
"show_phone_number": false,
"tax_description": null,
"translations": {
"en": {
"description": "",
"fail_message": null,
"success_message": "",
"title": "Coffee Brewing"
}
},
"termset_id": null,
"ticket_group_id": null
}
]
}
}
Create a new RSVP List
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.rsvp_list_slug
- Theslug
attribute of anRSVP List
.
Parameters
Parameter | Type | Description |
---|---|---|
email Required | email |
The email of the person invited |
release_ids Required | array |
An array of IDs representing the releases that are offered |
discount_code | string |
Auto-apply this discount code when the invitee orders the ticket (optional) |
expires_at | datetime |
When this invitation should expire (optional) |
first_name | string |
The first name of the person invited (optional) |
last_name | string |
The last name of the person invited (optional) |
redirect | boolean |
What happens if the customer clicks the invitation link after they've ordered. True means they will be redirected to their order, false means they will be shown a "link expired" message. Defaults to false. |
Update an RSVP Release Invitation
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations/:release_invitation_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"release_invitation":{"first_name":"Anthony"}}'
{
"release_invitation": {
"_type": "release_invitation",
"id": 123,
"first_name": "Tony",
"last_name": "Tiger",
"email": "grr@tito.io",
"release_id": null,
"registration_id": null,
"slug": "rsvp_dsC6YWbMou0lABn4sZegEOA",
"created_at": "2019-01-01T09:00:00.000+00:00",
"updated_at": "2019-01-01T09:00:00.000+00:00",
"event_id": 123,
"importer_id": null,
"expires_at": null,
"rsvp_list_id": 123,
"redirect": null,
"discount_code": "",
"auto": null,
"guest": null,
"status": null,
"message_delivery_id": null,
"name": "Tony Tiger",
"unique_url": "https://ti.to/biscuit-box/2018/rsvp/rsvp_dWyIx6CdyH9130Uj254k42Q",
"redeemed": false,
"registration_slug": null,
"registration_url": null,
"releases": [
{
"_type": "release",
"id": 123,
"event_id": 123,
"created_at": "2019-01-01T09:00:00.000+00:00",
"updated_at": "2019-01-01T09:00:00.000+00:00",
"slug": "coffee-brewing",
"title": "Coffee Brewing",
"description": null,
"archived": false,
"card_payments": true,
"default_quantity": null,
"donation": false,
"enable_super_combo_summary": true,
"end_at": null,
"has_success_message": false,
"has_fail_message": false,
"invoice": false,
"max_donation": null,
"max_tickets_per_person": null,
"metadata": null,
"min_tickets_per_person": null,
"min_donation": null,
"not_a_ticket": false,
"position": 0,
"price": null,
"price_ex_tax": "0.0",
"pricing_type": "free",
"tax_exclusive": false,
"price_degressive": null,
"quantity": null,
"request_company_name": false,
"request_vat_number": false,
"require_vat_number": false,
"require_billing_address": null,
"require_credit_card_for_sold_out_waiting_list": false,
"require_email": false,
"require_name": false,
"secret": false,
"show_price": true,
"suggested_donation": null,
"lock_changes": false,
"state_name": null,
"start_at": null,
"waiting_list_enabled_during_locked": false,
"waiting_list_enabled_during_sold_out": false,
"share_url": "https://ti.to/biscuit-box/2018/with/5k-stretch",
"tickets_count": 1,
"locked": false,
"waiting_list": false,
"sold_out": false,
"off_sale": false,
"expired": false,
"upcoming": false,
"allocatable": true,
"question_ids": [],
"gross_income": null,
"full_price_tickets_count": 0,
"free_tickets_count": 1,
"discounted_tickets_count": 0,
"voided_tickets_count": 0,
"show_company_name": false,
"require_company_name": false,
"show_vat_number": false,
"show_discount_code_field_here": false,
"show_phone_number": false,
"tax_description": null,
"translations": {
"en": {
"description": "",
"fail_message": null,
"success_message": "",
"title": "Coffee Brewing"
}
},
"termset_id": null,
"ticket_group_id": null
}
]
}
}
Update an Release Invitation
belonging to the given RSVP List
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations/:release_invitation_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.rsvp_list_slug
- Theslug
attribute of anRSVP List
.release_invitation_slug
- Theslug
attribute of anRSVP Release Invitation
.
Parameters
Parameter | Type | Description |
---|---|---|
email Required | email |
The email of the person invited |
release_ids Required | array |
An array of IDs representing the releases that are offered |
discount_code | string |
Auto-apply this discount code when the invitee orders the ticket (optional) |
expires_at | datetime |
When this invitation should expire (optional) |
first_name | string |
The first name of the person invited (optional) |
last_name | string |
The last name of the person invited (optional) |
redirect | boolean |
What happens if the customer clicks the invitation link after they've ordered. True means they will be redirected to their order, false means they will be shown a "link expired" message. Defaults to false. |
Delete an RSVP Release Invitation
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations/:release_invitation_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Delete an RSVP Release Invitation
belonging to the given RSVP List
.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/rsvp_lists/:rsvp_list_slug/release_invitations/:release_invitation_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.rsvp_list_slug
- Theslug
attribute of anRSVP List
.release_invitation_slug
- Theslug
attribute of anRSVP Release Invitation
.
Tickets
Attributes
Attribute | Type | Description |
---|---|---|
answers | array |
An array of Answers to questions for this ticket. |
assigned Read only | boolean |
Whether the ticket has been assigned to an individual's email address |
company_name | string |
The company name of the attendee. |
consented_at Read only | datetime |
The date the attendee consented to providing their information. |
created_at Read only | datetime |
The date the ticket was created. |
discount_code_used Read only | string |
The code of DiscountCode used when purchasing. |
string |
The email address of the attendee. | |
first_name | string |
The first name of the attendee. |
id Read only | integer |
The identifier of the ticket. |
last_name | string |
The last name of the attendee. |
metadata | object |
Metadata about the attendee. |
name Read only | string |
The full name of the attendee. |
number Read only | integer |
Default: Starts at 1 and counts up with each ticket registered. |
phone_number | string |
The phone number of the attendee. |
price | decimal |
The price paid for this ticket without any upgrades. |
price_less_tax Read only | decimal |
The net price paid for this ticket minus any tax. |
reference Read only | string |
Default: The order reference plus the index of the ticket in that order e.g. AXBY-1 . |
registration Read only | object |
The Registration attached to the ticket. |
registration_id Read only | integer |
The id of the Registration this ticket was created from. |
registration_slug Read only | string |
The slug attribute of the attached Registration |
release Read only | object |
The Release attached to the ticket. |
release_id | string |
The id of the Release attached to the ticket. |
release_slug Read only | string |
The slug of the attached Release . |
release_title Read only | string |
The title of the attached Release . |
responses Read only | object |
The answer to each Question attached to the ticket. Format: A hash of answers, keyed by Question slug e.g.{ "t-shirt-size": "Medium" } |
slug Read only | string |
A human friendly string used in the URL. |
state Read only | integer |
new , complete , incomplete , reminder , void . Default: new . |
tags | string |
A comma separated list of tags for the ticket. |
temporary Read only | boolean |
Is the ticket temporary or not. For example if a ticket needs to be assigned but is not yet confirmed e.g. a payment is pending. Default: false . |
test_mode Read only | boolean |
Default: true if test mode is enabled for you or for your entire event, otherwise false . |
total_paid Read only | decimal |
The gross price paid for this ticket including any upgrades |
total_paid_less_tax Read only | decimal |
The net price paid including upgrades. |
total_tax_paid Read only | decimal |
The tax paid for this ticket. |
updated_at Read only | datetime |
The date the ticket was last updated. |
upgrade_ids | array |
An array of the IDs of Upgrade attached to the release. |
Get all Tickets
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"tickets": [
{
"_type": "ticket",
"id": 3068931,
"slug": "ti_dhlR2CSzh59ZLht5ELPkxjg",
"company_name": "",
"email": "john@example.com",
"metadata": {},
"first_name": "John",
"last_name": "Smith",
"name": "John Smith",
"number": null,
"phone_number": "",
"price": "0.0",
"reference": "ZBRE-1",
"state": "complete",
"test_mode": true,
"registration_id": 3509397,
"release_id": 1105525,
"consented_at": null,
"discount_code_used": null,
"created_at": "2018-11-12T13:35:44.000+00:00",
"updated_at": "2018-11-12T13:35:44.000+00:00",
"responses": null,
"assigned": true,
"price_less_tax": "0.0",
"total_paid": "0.0",
"total_tax_paid": "0.0",
"total_paid_less_tax": "0.0",
"tags": null,
"upgrade_ids": [],
"registration_slug": "reg_test_ds7qNqJ4s4doDMeh1VogTrw",
"release_slug": "coffee-brewing",
"release_title": "Coffee Brewing",
"registration": {
...
},
"release": {
...
}
}
],
"meta": {
"current_page": 1,
"next_page": null,
"prev_page": null,
"total_pages": 1,
"total_count": 1,
"per_page": 100,
"overall_total": 1,
"resources_hidden_by_default_count": 0,
"search_states_hidden_by_default": [
"void"
],
"sort_options": {
"First name A-Z": {
"attr": "first_name",
"direction": "asc"
},
"First name Z-A": {
"attr": "first_name",
"direction": "desc"
},
"Last name A-Z": {
"attr": "last_name",
"direction": "asc"
},
"Last name Z-A": {
"attr": "last_name",
"direction": "desc"
},
"Ticket date, earliest first": {
"attr": "tickets.created_at",
"direction": "asc"
},
"Ticket date, newest first": {
"attr": "tickets.created_at",
"direction": "desc",
"default": true
},
"Price, least first": {
"attr": "price",
"direction": "asc"
},
"Price, most first": {
"attr": "price",
"direction": "desc"
},
"Reference": {
"attr": "reference",
"direction": "asc"
},
"Number": {
"attr": "number",
"direction": "asc"
}
},
"filter_options": {
"types": [
{
"label": "Added manually",
"value": "manual"
},
{
"label": "Ordered by customer",
"value": "standard"
}
],
"release_ids": [
{
"label": "Coffee Brewing",
"value": "coffee-brewing"
},
{
"label": "Tea Brewing",
"value": "tea-brewing"
}
],
"activity_ids": [
{
"label": "Blah",
"value": "1019160"
},
{
"label": "Blah Copy",
"value": "1019161"
}
],
"upgrade_ids": [],
"sections": {
"states": {
"label": "Status",
"open": false
},
"types": {
"label": "Type",
"open": false
},
"release_ids": {
"label": "Tickets",
"open": false
},
"activity_ids": {
"label": "Activities",
"open": false
},
"upgrade_ids": {
"label": "Upgrades",
"open": false
}
},
"collection": false,
"states": [
{
"label": "Complete",
"value": "complete"
},
{
"label": "Incomplete",
"value": "incomplete"
},
{
"label": "Unassigned",
"value": "unassigned"
},
{
"label": "Void",
"value": "void"
},
{
"label": "Changes Locked",
"value": "changes_locked"
},
{
"label": "Changes Allowed",
"value": "changes_allowed"
}
],
"selected_states": [
"complete",
"incomplete",
"unassigned",
"changes_locked",
"changes_allowed"
]
}
}
}
Retrieves all Tickets
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/tickets
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Sort Order
The default order is by created_at
with newest tickets first. You can change the order by appending some parameters to the endpoint URL. This is the same as the default:
?search[sort]=created_at&search[direction]=desc
The direction can either be asc
or desc
.
You can sort on the following attributes:
first_name
last_name
created_at
updated_at
price
reference
number
Filtering
You can filter which tickets you get back too.
By state
For instance, to only get incomplete
or unassigned
tickets:
?search[states][]=incomplete&search[states][]=unassigned
Possible states are:
complete
incomplete
unassigned
void
By default, the list will exclude void
tickets. If you want void tickets then you have to explicitly ask for them.
There are some other pseudo-states that behave a little differently.
changes_allowed
(only show tickets that allow changes)changes_locked
(only show tickets that have changes locked)
If you select both changes_allowed
and changes_locked
then that's effectively the same as saying "those tickets that are either locked or not locked" which is the same as the default.
archived
(tickets belonging to an archived release)
The list excludes archived tickets by default. If you select this state then it also includes archived tickets as well as non-archived tickets.
By type
?search[types][]=manual
Possible types are:
manual
- added manuallystandard
- ordered by customer
By release
?search[release_ids][]=early-bird
where "early-bird" is the release slug
.
By activity
?search[activity_ids][]=1025351
where "1025351" is the activity id
.
By time
This will show all tickets created since 1 Jan 2019 at 9am UTC:
?search[created_at][gt]=2019-01-01T09:00:00+UTC
That operator can be:
gt
- greater thangte
- greater than or equal tolt
- less thanlte
- less than or equal to
And you can do that on the following attributes
created_at
updated_at
So, for instance, to find all tickets that have been updated in the last hour:
?search[updated_at][gt]=2019-01-01T09:00:00+UTC
(where you obviously change that timestamp to be one hour ago).
Note: if you don't use the +UTC
suffix on those timestamps it will default to the time zone used by the event itself.
By any text
You can also search by text, which uses the same logic as the dashboard UI:
- name
- phone number
- slug
- reference
- company name
- tag
For example:
?q=Alice
Get a Ticket
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"ticket": {
"_type": "ticket",
"id": 3068931,
"slug": "ti_dhlR2CSzh59ZLht5ELPkxjg",
"company_name": "",
"email": "john@example.com",
"metadata": {},
"first_name": "John",
"last_name": "Smith",
"name": "John Smith",
"number": null,
"phone_number": "",
"price": "0.0",
"reference": "ZBRE-1",
"state": "complete",
"test_mode": true,
"registration_id": 3509397,
"release_id": 1105525,
"consented_at": null,
"discount_code_used": null,
"created_at": "2018-11-12T13:35:44.000+00:00",
"updated_at": "2018-11-12T13:35:44.000+00:00",
"responses": null,
"assigned": true,
"price_less_tax": "0.0",
"total_paid": "0.0",
"total_tax_paid": "0.0",
"total_paid_less_tax": "0.0",
"tags": null,
"upgrade_ids": [],
"registration_slug": "reg_test_ds7qNqJ4s4doDMeh1VogTrw",
"release_slug": "coffee-brewing",
"release_title": "Coffee Brewing",
"registration": {
...
},
"release": {
...
},
"answers": []
}
}
Retrieves a Ticket
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.ticket_slug
- Theslug
attribute of aTicket
.
Create a Ticket
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"ticket":{"release_id":"coffee-brewing","first_name":"Jane","last_name":"Doe"}}'
{
"ticket": {
"_type": "ticket",
"id": 3068932,
"slug": "ti_dPkq1HwyzQjJdF1dvhHjzEg",
"company_name": null,
"email": null,
"metadata": {},
"first_name": "Jane",
"last_name": "Doe",
"name": "Jane Doe",
"number": null,
"phone_number": null,
"price": "0.0",
"reference": "PNGU-1",
"state": "complete",
"test_mode": true,
"registration_id": 3509398,
"release_id": 1105525,
"consented_at": null,
"discount_code_used": null,
"created_at": "2018-11-12T13:54:00.000+00:00",
"updated_at": "2018-11-12T13:54:00.000+00:00",
"responses": null,
"assigned": false,
"price_less_tax": "0.0",
"total_paid": "0.0",
"total_tax_paid": "0.0",
"total_paid_less_tax": "0.0",
"tags": null,
"upgrade_ids": [],
"registration_slug": "reg_test_dp729LA0bGxEFfgeyldOVuA",
"release_slug": "coffee-brewing",
"release_title": "Coffee Brewing",
"registration": {
...
},
"release": {
...
},
"answers": []
}
}
Create a new Ticket
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/tickets
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Parameters
Parameter | Type | Description |
---|---|---|
release_id Required | string |
The id of the Release attached to the ticket. |
answers | array |
An array of Answers to questions for this ticket. |
company_name | string |
The company name of the attendee. |
string |
The email address of the attendee. | |
first_name | string |
The first name of the attendee. |
last_name | string |
The last name of the attendee. |
metadata | object |
Metadata about the attendee. |
phone_number | string |
The phone number of the attendee. |
price | decimal |
The price paid for this ticket without any upgrades. |
tags | string |
A comma separated list of tags for the ticket. |
upgrade_ids | array |
An array of the IDs of Upgrade attached to the release. |
Update a Ticket
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"ticket":{"last_name":"Smith"}}'
{
"ticket": {
"_type": "ticket",
"id": 3068931,
"slug": "ti_dhlR2CSzh59ZLht5ELPkxjg",
"company_name": "",
"email": "john@example.com",
"metadata": {},
"first_name": "John",
"last_name": "Smith",
"name": "John Smith",
"number": null,
"phone_number": "",
"price": "0.0",
"reference": "ZBRE-1",
"state": "complete",
"test_mode": true,
"registration_id": 3509397,
"release_id": 1105525,
"consented_at": null,
"discount_code_used": null,
"created_at": "2018-11-12T13:35:44.000+00:00",
"updated_at": "2018-11-12T13:35:44.000+00:00",
"responses": null,
"assigned": true,
"price_less_tax": "0.0",
"total_paid": "0.0",
"total_tax_paid": "0.0",
"total_paid_less_tax": "0.0",
"tags": null,
"upgrade_ids": [],
"registration_slug": "reg_test_ds7qNqJ4s4doDMeh1VogTrw",
"release_slug": "coffee-brewing",
"release_title": "Coffee Brewing",
"registration": {
...
},
"release": {
...
},
"answers": []
}
}
Update a Ticket
belonging to the given Event
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.ticket_slug
- Theslug
attribute of aTicket
.
Parameters
Parameter | Type | Description |
---|---|---|
release_id Required | string |
The id of the Release attached to the ticket. |
answers | array |
An array of Answers to questions for this ticket. |
company_name | string |
The company name of the attendee. |
string |
The email address of the attendee. | |
first_name | string |
The first name of the attendee. |
last_name | string |
The last name of the attendee. |
metadata | object |
Metadata about the attendee. |
phone_number | string |
The phone number of the attendee. |
price | decimal |
The price paid for this ticket without any upgrades. |
tags | string |
A comma separated list of tags for the ticket. |
upgrade_ids | array |
An array of the IDs of Upgrade attached to the release. |
Reassign a Ticket
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug/reassignments' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"reassignment":{"email":"jane@example.com","first_name":"Jane","last_name":"Smith","delete_answers":true}}'
{
"ticket": {
"_type": "ticket",
"id": 3068932,
"slug": "ti_dPkq1HwyzQjJdF1dvhHjzEg",
"company_name": null,
"email": null,
"metadata": {},
"first_name": "Jane",
"last_name": "Doe",
"name": "Jane Doe",
"number": null,
"phone_number": null,
"price": "0.0",
"reference": "PNGU-1",
"state": "complete",
"test_mode": true,
"registration_id": 3509398,
"release_id": 1105525,
"consented_at": null,
"discount_code_used": null,
"created_at": "2018-11-12T13:54:00.000+00:00",
"updated_at": "2018-11-12T13:54:00.000+00:00",
"responses": null,
"assigned": false,
"price_less_tax": "0.0",
"total_paid": "0.0",
"total_tax_paid": "0.0",
"total_paid_less_tax": "0.0",
"tags": null,
"upgrade_ids": [],
"registration_slug": "reg_test_dp729LA0bGxEFfgeyldOVuA",
"release_slug": "coffee-brewing",
"release_title": "Coffee Brewing",
"registration": {
...
},
"release": {
...
},
"answers": []
}
}
Reassign a Ticket
to a new attendee. It's different from just updating the email and name for a ticket: reassigning a ticket also sends out an email to the new attendee and (optionally) deletes all the answers made by the original attendee.
POST https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug/reassignments
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.ticket_slug
- Theslug
attribute of aTicket
.
Parameters
Parameter | Type | Description |
---|---|---|
email Required | string |
The email of the attendee. |
delete_answers | boolean |
Whether to delete the answers made by the original attendee. Defaults to false. |
first_name | string |
The first name of the attendee. |
last_name | string |
The last name of the attendee. |
Emails Sent
The following people receive an email after a reassignment:
- the new attendee
- the orderer (if their email is different to the original email for this ticket)
- the organisers (if they have chosen to receive notifications)
Void a Ticket
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug/void' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"void":{"resell":true}}'
{
"void": {
"_type": "void",
"resell": true,
"ticket": {
"_type": "ticket",
"id": 3068932,
"slug": "ti_dPkq1HwyzQjJdF1dvhHjzEg",
"company_name": null,
"email": null,
"metadata": {},
"first_name": "Jane",
"last_name": "Doe",
"name": "Jane Doe",
"number": null,
"phone_number": null,
"price": "0.0",
"reference": "PNGU-1",
"state": "void",
"test_mode": true,
"registration_id": 3509398,
"release_id": 1105525,
"consented_at": null,
"discount_code_used": null,
"created_at": "2018-11-12T13:54:00.000+00:00",
"updated_at": "2018-11-12T13:54:00.000+00:00",
"responses": null,
"assigned": false,
"price_less_tax": "0.0",
"total_paid": "0.0",
"total_tax_paid": "0.0",
"total_paid_less_tax": "0.0",
"tags": null,
"upgrade_ids": [],
"registration_slug": "reg_test_dp729LA0bGxEFfgeyldOVuA",
"release_slug": "coffee-brewing",
"release_title": "Coffee Brewing",
"registration": {
...
},
"release": {
...
},
"answers": []
}
}
}
Void a Ticket
so that it is no longer able to be used to checkin to an event.
POST https://api.tito.io/v3/:account_slug/:event_slug/tickets/:ticket_slug/void
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.ticket_slug
- Theslug
attribute of aTicket
.
Parameters
Parameter | Type | Description |
---|---|---|
resell | boolean |
Whether the ticket will become available for sale after it is voided |
If the Release
quantity
is defined (i.e. the number of tickets for that release is limited) then you also need to pass in the resell
parameter.
For instance, if you have 19/20 tickets sold and you void one and you pass "resell":true
then it will show 18/20 tickets sold and two will now be available.
If you pass "resell":false
then it will show 18/19 tickets sold and only one will be available.
If the Release
quantity
is not defined (i.e. the number of tickets available is infinite) then the resell
parameter is optional.
Webhook Endpoints
Attributes
Attribute | Type | Description |
---|---|---|
custom_data | string |
Will be added to all webhook requests as custom |
id Read only | integer |
The id of the Webhook Endpoint |
included_triggers | array |
A list of triggers or actions that cause the webhook to be sent to the url. See Webhook triggers. |
url | string |
The URL where the webhook should be sent. |
Get all Webhook Endpoints
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"webhook_endpoints":[
{
"_type":"webhook_endpoint",
"id":1,
"url":"https://www.example.com",
"included_triggers":[
"ticket.created"
],
"custom_data":"",
"deprecated":false
}
],
"meta":{
"current_page":1,
"next_page":null,
"prev_page":null,
"total_pages":1,
"total_count":1,
"per_page":100,
"overall_total":1
}
}
Retrieves all Webhook Endpoints
for the given Event
.
GET https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Get a Webhook Endpoint
curl --request GET \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints/:id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
{
"webhook_endpoint":{
"_type":"webhook_endpoint",
"id":1,
"url":"https://www.example.com",
"included_triggers":[
"ticket.created"
],
"custom_data":"",
"deprecated":false
}
}
Retrieves an Webhook Endpoint
for the given Event
.
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.id
- Theid
attribute of aWebhook Endpoint
.
Create a Webhook Endpoint
curl --request POST \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"webhook_endpoint":{"url":"https://www.example.com","included_triggers":["ticket.created"]}}'
{
"webhook_endpoint":{
"_type":"webhook_endpoint",
"id":1,
"url":"https://www.foobar.com",
"included_triggers":[
"ticket.created"
],
"custom_data":null,
"deprecated":false
}
}
Create a new Webhook Endpoint
belonging to the given Event
.
POST https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.
Parameters
Parameter | Type | Description |
---|---|---|
included_triggers Required | array |
A list of triggers or actions that cause the webhook to be sent to the url. See Webhook triggers. |
url Required | string |
The URL where the webhook should be sent. |
custom_data | string |
Will be added to all webhook requests as custom |
Update a Webhook Endpoint
curl --request PATCH \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints/:id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json' \
--header 'Content-type: application/json' \
--data '{"webhook_endpoint":{"url":"https://www.foobar.com"}}'
{
"webhook_endpoint":{
"_type":"webhook_endpoint",
"id":1,
"url":"https://www.foobar.com",
"included_triggers":[
"ticket.created"
],
"custom_data":null,
"deprecated":false
}
}
Update a Webhook Endpoint
belonging to the given Event
.
PATCH https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints/:id
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.id
- Theid
attribute of aWebhook Endpoint
.
Parameters
Parameter | Type | Description |
---|---|---|
included_triggers Required | array |
A list of triggers or actions that cause the webhook to be sent to the url. See Webhook triggers. |
url Required | string |
The URL where the webhook should be sent. |
custom_data | string |
Will be added to all webhook requests as custom |
Delete a Webhook Endpoint
curl --request DELETE \
--url 'https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints/:id' \
--header 'Authorization: Token token=YOUR-API-TOKEN' \
--header 'Accept: application/json'
Delete a Webhook Endpoint
belonging to the given Event
.
DELETE https://api.tito.io/v3/:account_slug/:event_slug/webhook_endpoints/:id
account_slug
- Theslug
attribute of anAccount
.event_slug
- Theslug
attribute of anEvent
.id
- Theid
attribute of aWebhook Endpoint
.
Webhooks
Webhooks allow data to be passed to an external system in real time. Webhooks
will POST
a JSON
payload to the endpoint you specify, with a X-Webhook-Name
header.
Triggers
Name | Description |
---|---|
checkin.created |
Fired when an attendee is checked-in via one of the Tito apps (web, iOS or Android). |
ticket.created |
Fired when tickets are created immediately after a registration is confirmed. Tickets can be unassigned, incomplete or complete at this stage depending on whether it is a single or multiple ticket registration or whether the ticket has required fields or not. |
ticket.completed |
Fired when all required fields like name, email, etc and required questions have been answered. |
ticket.reassigned |
Fired specifically when a ticket is reassigned to someone else. |
ticket.updated |
Fired anytime ticket details are changed, including changes to the email address. |
ticket.unsnoozed |
Fired when a “snoozed” ticket is assigned to someone. When people register tickets but do not want to or can’t assign them straight away they can be “snoozed”. |
ticket.unvoided |
Fired when a voided ticket is returned to a valid state. |
ticket.voided |
Fired when a ticket is changed to a voided state. Free tickets that are cancelled by the attendee will also cause this webhook to fire. |
registration.updated |
Fired when the registration is updated in the Tito admin area or via the API. |
registration.finished |
Fired as soon as the registration is confirmed, e.g. when payment is complete. |
registration.completed |
Fired when all tickets on a registration have been completed (see the ticket.completed webhook). |
registration.cancelled |
Fired when the registration is cancelled in the Tito admin area or via the API. Free tickets that are cancelled by the attendee will also cause this webhook to fire. |
Payloads
Ticket Payload
{
"_type": "ticket",
"id": 3068966,
"name": "John Smith",
"first_name": "John",
"last_name": "Smith",
"email": "john@example.com",
"phone_number": null,
"company_name": "",
"reference": "E9IM-1",
"price": "0.0",
"tax": "0.0",
"price_less_tax": "0.0",
"slug": "d01jGQ3RInVjEh6Imhwg9MA",
"state_name": null,
"gender": "male",
"total_paid": "0.0",
"total_paid_less_tax": "0.0",
"updated_at": "2019-08-05T10:23:24.000Z",
"release_price": null,
"discount_code_used": "",
"url": "https://ti.to/biscuit-box/caramel/tickets/d01jGQ3RInVjEh6Imhwg9MA",
"admin_url": "https://ti.to/biscuit-box/caramel/admin/tickets/d01jGQ3RInVjEh6Imhwg9MA",
"release_title": "Early Bird",
"release_slug": "early-bird",
"release_id": 1105634,
"release": {
"id": 1105634,
"title": "Early Bird",
"slug": "early-bird",
"metadata": ""
},
"custom": null,
"registration_id": 3509443,
"registration_slug": "dp6I7t2upnnXrka6GsXlw4A",
"metadata": null,
"answers": [
{
"id": 8147728,
"question_id": 1041973,
"ticket_id": 3068966,
"response": "Vegan",
"created_at": "2019-08-05T10:23:24.000Z",
"updated_at": "2019-08-05T10:23:24.000Z",
"position": 1,
"temporary_ticket_id": null,
"survey_response_id": null,
"file": {
"url": null
},
"test_mode": true
}
],
"responses": {
"do-you-have-any-dietary-requirements": "Vegan"
},
"upgrades": [
],
"upgrade_ids": [
],
"registration": {
"id": 3509443,
"slug": "dp6I7t2upnnXrka6GsXlw4A",
"url": "https://ti.to/registrations/dp6I7t2upnnXrka6GsXlw4A",
"admin_url": "https://ti.to/biscuit-box/caramel/admin/registrations/dp6I7t2upnnXrka6GsXlw4A",
"total": "0.0",
"currency": "USD",
"payment_reference": null,
"source": null,
"name": "John Smith",
"email": "john@example.com",
"receipt": {
"total": "0.0",
"tax": 0,
"payment_provider": null,
"paid": true,
"receipt_lines": [
{
"total": "0.0",
"quantity": 1,
"tax": 0
}
]
}
},
"event": {
"_type": "event",
"id": 1058621,
"title": "caramel",
"url": "https://ti.to/biscuit-box/caramel",
"account_slug": "biscuit-box",
"slug": "caramel",
"start_date": null,
"end_date": null,
"metadata": null
}
}
For webhooks that have the webhook type of ticket.*
the following JSON payload
will be sent.
Registration Payload
{
"_type": "registration",
"id": 3509443,
"webhook_text": "John Smith <john@example.com> registered 1 ticket https://ti.to/biscuit-box/caramel/registrations/dp6I7t2upnnXrka6GsXlw4A",
"slug": "dp6I7t2upnnXrka6GsXlw4A",
"reference": "E9IM",
"total": "0.0",
"total_less_tax": "0.0",
"name": "John Smith",
"first_name": "John",
"last_name": "Smith",
"email": "john@example.com",
"phone_number": "",
"company_name": null,
"discount_code": null,
"payment_reference": null,
"created_at": "2019-08-05T10:22:10.000Z",
"completed_at": "2019-08-05T10:23:09.000Z",
"completed_date": "2019-08-05",
"metadata": null,
"updated_at": "2019-08-05T10:23:26.000Z",
"locale": "en",
"created_date": "2019-08-05",
"currency": "USD",
"custom": null,
"paid": true,
"line_items": [
{
"id": 3800660,
"release_slug": "early-bird",
"release_id": 1105634,
"release_title": "Early Bird",
"release_price": null,
"release": {
"slug": "early-bird",
"title": "Early Bird",
"price": null,
"metadata": ""
},
"price": "0.0",
"title": "Early Bird",
"quantity": 1,
"total": "0.0",
"currency": "USD"
}
],
"quantities": {
"early-bird": {
"release": "Early Bird",
"quantity": 1
}
},
"tickets": [
{
"reference": "E9IM-1",
"slug": "d01jGQ3RInVjEh6Imhwg9MA",
"price": "0.0",
"price_less_tax": "0.0",
"total_paid": "0.0",
"total_paid_less_tax": "0.0",
"release_id": 1105634,
"release_slug": "early-bird",
"release_title": "Early Bird",
"release": {
"id": 1105634,
"slug": "early-bird",
"title": "Early Bird",
"price": null,
"metadata": ""
},
"name": "John Smith",
"first_name": "John",
"last_name": "Smith",
"company_name": "",
"email": "john@example.com",
"url": "https://ti,to/biscuit-box/caramel/tickets/d01jGQ3RInVjEh6Imhwg9MA",
"admin_url": "https://ti.to/biscuit-box/caramel/admin/tickets/d01jGQ3RInVjEh6Imhwg9MA",
"responses": {
"do-you-have-any-dietary-requirements": "Vegan"
},
"answers": [
{
"question": {
"id": 1041973,
"title": "Do you have any dietary requirements?",
"description": null
},
"humanized_response": "Vegan",
"response": "Vegan",
"file": null
}
]
}
],
"source": null,
"payment": null,
"receipt": {
"number": "0000001",
"total": "0.0",
"tax": 0,
"total_less_tax": "0.0",
"payment_provider": null,
"payment_reference": null,
"paid": true
},
"billing_address": null,
"event": {
"_type": "event",
"id": 1058621,
"title": "caramel",
"url": "https://ti.to/biscuit-box/caramel",
"account_slug": "biscuit-box",
"slug": "caramel",
"start_date": null,
"end_date": null,
"metadata": null
}
}
For webhooks that have the webhook type of registration.*
the following JSON payload
will be sent.
Checkin Payload
{
"id": 3068963,
"slug": "ti_eZaOm33Y1rnICcLIpeTuESg",
"name": "John Smith",
"company_name": "Beanster Ltd",
"first_name": "John",
"last_name": "Smith",
"release_title": "Coffee Brewing",
"email": "john.smith@example.com",
"reference": "FITD-1",
"registration_reference": "FITD",
"checked_in": true,
"checked_in_at": "2019-08-16T14:14:21.000Z",
"checkin_list": {
"slug": "chk_el1ClfZxL8We2DHKtUzzoeg",
"title": "Brew Master Check-In List"
},
"checkin_uuid": "4521459e-1cec-49e8-90fe-afadcc364f02",
"custom": null,
"event": {
"slug": "2018",
"title": "2018-2"
},
"answers": [
{
"question": "What is your favourite coffee?",
"response": "Latte"
}
]
}
For webhooks that have the webhook type of checkin.*
the following JSON payload
will be sent.
Verifying the payload
key = 'YOUR EVENT SECURITY TOKEN'
hash = OpenSSL::Digest.new('sha256')
data = 'THE WEBHOOK REQUEST'
Base64.encode64(OpenSSL::HMAC.digest(hash, key, data)).strip
Each payload comes with a signed HMAC signature so that you can verify the origin of the webhook request.
In Customize / Webhooks, you’ll find a shared security token. This is used to sign the payload.
The security token is used as a key to sign the payload data with an HMAC key.
The HMAC key is your security token, the HMAC digest is SHA2, and the data is the raw payload JSON that is sent. The key is sent Base64 encoded via the Tito-Signature HTTP header.
If you’re using Ruby, for example, you can verify the authenticity of your payload with the code opposite.
Developing Locally
When you are developing your application locally you'll need to expose your local development environment to the Internet, so that Tito can send you webhooks and your application can process them.
Using Serveo
You can expose your local environment to the internet using Serveo
To expose your local environment to the internet:
ssh -R 80:localhost:4567 serveo.net
where 4567
is the port number your application
is running on.
You should see a line that looks something like this:
Forwarding HTTP traffic from https://duncan.serveo.net
Copy and paste that *.serveo.net URL into your browser. Notice you can now access your application using that URL.
If your application listens for webhooks from Tito on http://localhost:4567/webhooks/
you can create a webhook endpoint within Tito with the url https://duncan.serveo.net/webhooks/
.