This API was designed specifically for the Director software to allow certain timers and directors integration into our Rodeo Ticket data with the Director.
The Login action must be called first as it returns the key/secret pair that is required for the other endpoints.
All responses are returned in JSON format.
Any errors in the response will be returned in an object called 'message':
*All test endpoints start with https://demo.rodeoticket.com/softwareapi
*All production endpoints start with https://www.rodeoticket.com/softwareapi
Before a user can access any rodeo data, they must have an API key and token. This is only provided to users that exist in Rodeo Ticket’s user database. This function allows an authorized Rodeo Ticket partner to create users in our user database that do not yet exist in our database. These created users are then also given an API key and token to access Rodeo Ticket rodeo information.
This feature cannot create authorized Rodeo Ticket API partners. You must contact Rodeo Ticket to receive a Rodeo Ticket partner API key and token to use this feature.
ENDPOINT | POST FIELDS | RESPONSE | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/user/create This will return a temporary key/secret pairfor the user (valid for 2 days). http://demo.rodeoticket.com/softwareapi/user/create?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH |
|
Success: Response Code: 200
{
"tmp_key":"KEY_HASH", "tmp_secret":"SECRET_HASH", "user": { "user": { "first_name":"John", "last_name":"Doe" } } } The tmp_key is hashed in our database, so it is important to save this key and associate it with the user before discarding the response data! Failure: Response Code: 200
{
"message":"Failed to create the user or user already exists" } |
API users can be created for users who are already in the Rodeo Ticket user database. Only an authorized Rodeo Ticket API partner can use this feature.
An API user’s credentials (key and token) expire after 48 hours. When a user’s credentials are expired, the API will return a 403 code. For this reason, an API user should be logged in before using the API is their last login was longer than two days from the current login. If a user accesses the API within the 48 hour expiration, the time is extended another 48 hours from the time the API is accessed. Thus, a frequent API user will not have to change their key often.
If an API user is logged in with this feature, a new key and token are returned and should be saved to the user.
ENDPOINT | POST FIELDS | RESPONSE | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
/login This will return your temporary key/secret pair (valid for 2 days). Note: Subsequent calls will invalidate previous key/secret pair and give you a new pair. http://demo.rodeoticket.com/softwareapi/login |
|
Success: Response Code: 200
{
"tmp_key":"KEY_HASH", "tmp_secret":"SECRET_HASH", "user": { "user": { "first_name":"John", "last_name":"Doe" } } } The tmp_key is hashed in our database, so it is important to save this key and associate it with the user before discarding the response data! Failure: Response Code: 200
{
"tmp_key":null, "tmp_secret":null, "message":"E-mail and Password Don't Match" } |
This endpoint allows an authenticated user to access arrays of ID and name data for event_types, timezones, and states which are needed to create an event with the /event/create and event/copy endpoints.
ENDPOINT | RESPONSE |
---|---|
/event/get_create_datahttp://demo.rodeoticket.com/softwareapi/event/get_create_data?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH |
Success: Response Code: 200
{
"event_types": [ { "id": "1", "name": "Running/Walking" }, { "id": "2", "name": "Biking" }, { "id": "3", "name": "Triathlon" }, { "id": "4", "name": "Duathlon" }, { "id": "6", "name": "Virtual Event" }, { "id": "7", "name": "OCR" }, { "id": "10", "name": "Other" } ], "timezones": [ { "id": "1", "name": "America/Denver" }, { "id": "2", "name": "America/New_York" }, { "id": "3", "name": "America/Chicago" }, { "id": "4", "name": "America/Phoenix" }, { "id": "5", "name": "America/Los_Angeles" }, { "id": "6", "name": "America/Anchorage" }, { "id": "7", "name": "Pacific/Honolulu" } ], "states": [ { "id": "1", "abbr": "AL" "name": "Alabama" "selected": "0" }, { "id": "2", "abbr": "AK" "name": "Alaska" "selected": "0" }, { "id": "3", "abbr": "AZ" "name": "Arizona" "selected": "0" }, { "id": "4", "abbr": "AR" "name": "Arkansas" "selected": "0" }, { "id": "5", "abbr": "CA" "name": "California" "selected": "0" }, ... ] } |
This endpoint allows an authenticated user to create an event. The event is always default "calendar listing" which means adding registration, ticketing, payee information, and other event configuration must be done through Rodeo Ticket's website.
This is a POST request that expects the tmp_key and tmp_secret to be in GET parameters and the rest of the payload to be POST data.
ENDPOINT | POST FIELDS | RESPONSE | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/event/create http://demo.rodeoticket.com/softwareapi/event/create?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH Use the /event/get_create_data endpoint to get IDs and names for event_types, timezones, and states |
|
Success: Response Code: 200
{
"success": true, "url":"fake-api-event", "year": "2019", } Failure (validation): Response Code: 400
{
"event": { "name": "A event with this name already exists. Please change your event name to make it unique. You could add a location, number, company name, etc. to make it unique.", "url": "A event is already using this URL. If this is your event, you can claim it HERE" } } Failure (server): Response Code: 500
{
"message":"The event could not be created - internal error. Please contact support" } |
This endpoint allows an authenticated user to copy an existing event to a new year.
In Rodeo Ticket, 'events' have multiple 'event_years'. If an event has the same name but occurs yearly, it is considered to be an existing event but needs a new event_year for every calendar year that the event occurs.
This endpoint should be used to create new event years for an existing event.
Categories, products and volunteer information is not copied over automatically and should be re-added on Rodeo Ticket.
This is a POST request that expects the tmp_key and tmp_secret to be in GET parameters and the rest of the payload to be POST data.
ENDPOINT | POST FIELDS | RESPONSE | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/event/copy http://demo.rodeoticket.com/softwareapi/event/copy?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH Use the /event/get_create_data endpoint to get IDs and names for event_types, timezones, and states |
|
Success: Response Code: 200
{
"success": true, "url":"fake-api-event", "year": "2020", } Failure (validation): Response Code: 400
{
"event_year": { "year": "This year has already been created for your event. Please enter a different year or find the existing year in your list of events" } } Failure (server): Response Code: 500
{
"message":"The event could not be copied - internal error. Please contact support" } |
These are the endpoints that will return information about and set certain settings for rodeos. They will only give information about rodeos that the user (determined by the key/secret pair) has permission to access.
Parameter | Format | Value | Affect | Applies To |
---|---|---|---|---|
tmp_key | string | Returned from login API call | Allows authorized access to API endpoints | All (required) |
tmp_secret | string | Returned from login API call | Allows authorized access to API endpoints | All (required) |
event_id | int | Specifies the event from which to retreive results |
get_event_categories (required) get_event_participants (required) get_event_pin (required) set_event_pin (required) |
|
category_id | int | Specifies the category from which to retreive results |
get_event_teams (required) get_category_teams (required) get_event_participants (optional filter) |
|
results_per_page | int | Limits the number of results to return | All (optional) | |
page_number | int | Determines the offset from which to return results | All (optional) | |
has_bib | enum: 'all', 'yes', 'no' |
'all' will return all results regardless of bib number (default) 'yes' will only return results that have an assigned bib number 'no' will only return results that have no set bib number |
get_event_participants (optional) |
|
checked_in | enum: 'all', 'yes', 'no' |
'all' will return all results regardless of checked-in status (default) 'yes' will only return results that have been checked-in 'no' will only return results that have not been checked in |
get_event_participants (optional) |
|
get_responses | enum: yes', 'no' |
'no' will only return primary registration data with no custom registration question responses (default) 'yes' return an array of registration question responses per registration |
get_event_participants (optional) |
modified_after | string | YYYY-MM-DD HH:MM:SS | Returns only results that have been modified after the given timestamp |
get_event_participants (optional) |
ENDPOINT | RESPONSE | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/get_eventsReturns an array of rodeos Note: Failure returns a status code of 403 http://demo.rodeoticket.com/softwareapi/get_events?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH |
Success: Response Code: 200
[
{ "event_id": "12345", "name": "Jane's Demo Event", "event_type": "Running/Walking", "event_logo": "https://s3-us-west-2.amazonaws.com/images.rodeoticket.com/logo/janes-demo-event-registration-logo-12345.png?v=123456789", "url": "janes-demo-event", "description": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body><p>This is a demo description returned as HTML.</p></body></html>\n", "last_modified": "2019-06-05 13:31:32", "contact_first_name": "Jane", "contact_last_name": "Director", "contact_email": "janedirector@fakeevent.com", "event_date": "2019-06-12 11:00:00", "street": "100 W 200 N", "city": "Provo", "state": "Utah", "province": null, "country": "USA", "zipcode": "84604" }, { "event_id": "123456", "name": "John's Test Event", "event_type": "Triathlon", "event_logo": null, "url": "johns-test-event", "description": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body><p>Another example of a test rodeo description</p></body></html>\n", "last_modified": "2019-01-18 12:20:49", "contact_first_name": "John", "contact_last_name": "Doe", "contact_email": "jdoe@notrealemail.com", "event_date": "2020-05-09 12:00:00", "street": "205 E Randolph St", "city": "Chicago", "state": "IL", "province": null, "country": "USA", "zipcode": "60601" }, ] |
||||||||||||||||
/get_event_categoriesReturns an array of categories Requires event_id in the GET request Categories are sometimes called sub-events in other platforms. A category is a Marathon, 10K, 5K, etc. in a rodeo event http://demo.rodeoticket.com/softwareapi/get_event_categories?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH&event_id=12345 |
Success: Response Code: 200
[
{ "category_id": "123", "category_name": "Marathon", "category_details": "This is the main marathon category for this event", "distance": "26.2000", "distance_units": "Mi", "participant_cap": "2500" }, { "category_id": "124", "category_name": "10K", "category_details": null, "distance": "10.0000", "distance_units": "Km", "participant_cap": "unlimited" }, { "category_id": "125", "category_name": "Half Marathon", "category_details": "Another description of this category (sub-event)", "distance": "13.1000", "distance_units": "Mi", "participant_cap": "unlimited" } ] Failure: Response Codes: 400
{
"message": "Event ID required" } |
||||||||||||||||
/get_event_questionsReturns an array of active registration questions in the event If the question has selectable options, they are returned as an array of option IDs and options text Requires category_id in the GET request http://demo.rodeoticket.com/softwareapi/get_event_questions?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH&event_id=12345 Possible Question Types
|
Success: Response Code: 200
[
{ "question_id": "860", "question_text": "T-Shirt Size", "question_type": "Dropdown", "options": [ { "id": "4658", "text": "S" }, { "id": "4659", "text": "M" }, { "id": "4661", "text": "L" } ] }, { "question_id": "861", "question_text": "Emergency Contact Name", "question_type": "Single Line Text", "options": null }, { "question_id": "863", "question_text": "Emergency Contact Phone", "question_type": "Single Line Text", "options": null }, { "question_id": "872", "question_text": "How did you hear about the event?", "question_type": "Dropdown", "options": [ { "id": "4984", "text": "Web Search" }, { "id": "4985", "text": "Friend/Family" }, { "id": "4986", "text": "Facebook" }, { "id": "4987", "text": "Past Participant" }, { "id": "4988", "text": "Other" } ] } ] Failure: Response Codes: 400
{
"message": "Event ID required" } |
||||||||||||||||
/get_event_participantsReturns an array of partipants only Requires event_id in the GET request http://demo.rodeoticket.com/softwareapi/get_event_participants?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH&event_id=12345 |
Success: default Response Code: 200
[
{ "participant_id": "10101", "category_id": "125", "category_name": "Half Marathon", "team_id": null, "team_name": null, "first_name": "Bob", "last_name": "Person", "email": "bperson@somedomain.com", "address": "100 N 200 E", "city": "Provo", "bib_num": "123", "price": "12.34", "discount": "12.34", "province": null, "state": "Utah", "zipcode": "84604", "dob": "1989-07-07", "gender": "M", "last_modified": "2019-01-04 12:49:39", "phone": "8015554214", "checked_in": "yes" }, { "participant_id": "10102", "category_id": "123", "category_name": "Marathon", "team_id": null, "team_name": null, "first_name": "Mary", "last_name": "Runner", "email": "maryruns@fakedomain.com", "address": "500 S 200 E", "city": "Orem", "bib_num": null, "price": "12.34", "discount": "12.34", "province": "", "state": "Utah", "zipcode": "84097", "dob": "1989-08-08", "gender": "F", "last_modified": "2019-01-10 16:15:10", "phone": "3145550987", "checked_in": "no" }, ... ] Success: (get_responses=yes) Response Code: 200
[
{ "participant_id": "10101", "category_id": "125", "category_name": "Half Marathon", "team_id": null, "first_name": "Bob", "last_name": "Person", "email": "bperson@somedomain.com", "address": "100 N 200 E", "city": "Provo", "bib_num": "123", "price": "12.34", "discount": "12.34", "province": null, "state": "Utah", "zipcode": "84604", "dob": "1989-07-07", "gender": "M", "last_modified": "2019-01-04 12:49:39", "phone": "8015554214", "checked_in": "yes", "responses": [ { "qid": "860", "q": "T-Shirt Size", "qoid": "19923", "ans": "Large" }, { "qid": "861", "q": "Emergency Contact Name", "qoid": "", "ans": "Bethany Person" }, { "qid": "863", "q": "Emergency Contact Phone", "qoid": "", "ans": "3145557761" }, { "qid": "872", "q": "How did you hear about the event?", "qoid": "5124", "ans": "Family/Friend" } ] }, { "participant_id": "10102", "category_id": "123", "category_name": "Marathon", "team_id": null, "first_name": "Mary", "last_name": "Runner", "email": "maryruns@fakedomain.com", "address": "500 S 200 E", "city": "Orem", "bib_num": null, "price": "12.34", "discount": "12.34", "province": "", "state": "Utah", "zipcode": "84097", "dob": "1989-08-08", "gender": "F", "last_modified": "2019-01-10 16:15:10", "phone": "3145550987", "checked_in": "no", "responses": [ { "qid": "860", "q": "T-Shirt Size", "qoid": "19920", "ans": "Small" }, { "qid": "861", "q": "Emergency Contact Name", "qoid": "", "ans": "Jordan Runner" }, { "qid": "863", "q": "Emergency Contact Phone", "qoid": "", "ans": "8015554789" }, { "qid": "872", "q": "How did you hear about the event?", "qoid": "5121", "ans": "Billboard" } ] }, ... ] Failure: Response Codes: 400
{
"message": "Event ID required" } |
||||||||||||||||
/get_event_teamsReturns an array of category IDs with arrays of teams Returns empty category ID for event-wide teams (teams across categories) Requires event_id in the GET request http://demo.rodeoticket.com/softwareapi/get_event_teams?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH&event_id=12345 |
Success: Response Code: 200
{
"126": [ { "team_id": "111", "team_name": "Tate's Tater Tots", "captain_reg_id": "10103", "captain_name": "Isaiah Bespoken", "captain_email": "isaiah_besp@email.com", "password_required": "1", "password": "Allegiant", "category_id": "126" }, { "team_id": "112", "team_name": "Captain Jacks", "captain_reg_id": "10104", "captain_name": "Jack Dillon", "captain_email": "dillon.jack@phone.net", "password_required": "1", "password": "russyrach2", "category_id": "126" } ], "127": [ "team_id": "113", "team_name": "Cate's Chasers", "captain_reg_id": "10105", "captain_name": "Cathleen Farnsworth", "captain_email": "caty_worth@fakeaccount.com", "password_required": "0", "password": null, "category_id": "127" }, { "team_id": "114", "team_name": "Bombastic Baddies", "captain_reg_id": "10106", "captain_name": "Gladys O'Brien", "captain_email": "gladys.obrien@email.net", "password_required": "0", "password": null, "category_id": "127" } ] } Failure: Response Codes: 400
{
"message": "Event ID required" } |
||||||||||||||||
/get_category_teamsReturns an array of teams in a category Cannot return event-wide teams (teams across categories) Requires category_id in the GET request http://demo.rodeoticket.com/softwareapi/get_category_teams?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH&category_id=126 |
Success: Response Code: 200
[
{ "team_id": "111", "team_name": "Tate's Tater Tots", "captain_reg_id": "10103", "captain_name": "Isaiah Bespoken", "captain_email": "isaiah_besp@email.com", "password_required": "1", "password": "Allegiant", "category_id": "126" }, { "team_id": "112", "team_name": "Captain Jacks", "captain_reg_id": "10104", "captain_name": "Jack Dillon", "captain_email": "dillon.jack@phone.net", "password_required": "1", "password": "russyrach2", "category_id": "126" } ] Failure: Response Codes: 400
{
"message": "Category ID required" } |
||||||||||||||||
/get_event_pinReturns the Check In app access PIN for an event, the expiration, and status of access (enabled / disabled) Requires event_id in the GET request http://demo.rodeoticket.com/softwareapi/get_event_pin?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH&event_id=12345 |
Success: default Response Code: 200
{
"pin": "1234", "expires": "2019-08-10 23:59:59", "access": "enabled" } Failure: Response Codes: 200
{
"message": "No PIN found for this event" } |
||||||||||||||||
/set_event_pinSets a Check In app event access PIN Requires 'event_id' as a URL param and 'pin' in the POST request PIN must be between 4 and 8 characters and contain only numbers http://demo.rodeoticket.com/softwareapi/set_event_pin?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH&event_id=12345 post_data: {pin: 1234 } |
Success: default Response Code: 200
{
"pin": "1234", "expires": "2019-08-10 23:59:59", "access": "enabled" } Failure: Response Codes: 400
{
"message": "Event ID required" } |
||||||||||||||||
/set_event_app_accessSets a Check In app event access PIN to enabled or disabled (if there is a PIN) Requires 'event_id' as a URL param and 'enabled' in the POST request 'enabled' must be a '1' or '0'. '1' enables the PIN and '0' disables it. http://demo.rodeoticket.com/softwareapi/set_event_app_access?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH&event_id=12345 post_data: {enabled: 0 } |
Success: default Response Code: 200
{
"pin": "1234", "expires": "2019-08-10 23:59:59", "access": "disabled" } Failure: Response Codes: 200
{
"message": "No PIN found for this event" } |
These are the endpoints that will return information about clubs. They will only give information about clubs that the user (determined by the key/secret pair) has permission to access.
Parameter | Format | Value | Affect | Applies To |
---|---|---|---|---|
tmp_key | string | Returned from login API call | Allows authorized access to API endpoints | All (required) |
tmp_secret | string | Returned from login API call | Allows authorized access to API endpoints | All (required) |
club_id | int | Specifies the club from which to retreive results |
get_members (required) |
|
active_status | enum: 'Complete', 'Incomplete', 'Deleted', 'Completed Dupicate', 'Pending Edit' | Specifies the status of the members from which to retreive results |
get_members (optional) |
|
status_id | int | Specifies the status of the members from which to retreive results using status id rather than status name |
get_members (optional) |
|
start_date | 'YYYY-MM-DD' | Only returns members whos memberships have not expired as of this date |
get_members (optional) |
|
end_date | 'YYYY-MM-DD' | Only returns members whos memberships have not expired before this date |
get_members (optional) |
ENDPOINT | RESPONSE |
---|---|
memberships/get-clubsReturns an array of clubs Note: Failure returns a status code of 403 http://demo.rodeoticket.com/softwareapi/memberships/get-clubs?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH |
Success: Response Code: 200
[
{ "id": "12345", "site_id": "1", "company_id": "12345", "payee_id": "12345", "tax_exempt": "0", "processor_id": "12345", "currency_id": "123", "disabled": "1", "name": "My Club", "url": "my-club", "external_url": "https://www.myclub.com/home", "description": "<p>This is my club's description</p>", "membership_by_location": "1", "contact_first_name": "John", "contact_last_name": "Doe", "contact_email": "jdoe@notrealemail.com" "created_by": "12345" "created_date": "1970-01-01 00:00:00" "terms_initials": "jd" }, { "id": "12345", "site_id": "1", "company_id": "12345", "payee_id": "12345", "tax_exempt": "0", "processor_id": "12345", "currency_id": "123", "disabled": "1", "name": "Our Club", "url": "our-club", "external_url": "https://www.ourclub.com/home", "description": "<p>This is our club's description</p>", "membership_by_location": "1", "contact_first_name": "Jane", "contact_last_name": "Doe", "contact_email": "jadoe@notrealemail.com" "created_by": "12345" "created_date": "1970-01-01 00:00:00" "terms_initials": "jd" }, ] |
memberships/get-membersReturns an array of clubs http://demo.rodeoticket.com/softwareapi/memberships/get-clubs?tmp_key=KEY_HASH&tmp_secret=SECRET_HASH&club_id=12345 |
Success: Response Code: 200
[
{ "id": "12345", "hash": "alkjsdfiknavio", "club_id": "12345", "group_id": "12345", "status_id": "2", "email": "jd@gmail.com", "first_name": "John", "last_name": "Doe", "address": "1234 fake road", "city": "New York", "state_id": "1", "province": "null", "zip": "12345", "country_code": "USA", "phone": "1234567890", "birthdate": "1970-01-01" "gender": "M" "waiver_initials": "jd" "waiver_signature": "john doe" "last_modified": "1970-01-01 00:00:00" "subscription_id": "12345" "start_date": "1970-01-01" "expiration_date": "2100-01-01" "paid_member_count": "100" }, { "id": "12345", "hash": "alkjsdfiknavio", "club_id": "12345", "group_id": "12345", "status_id": "2", "email": "jd@gmail.com", "first_name": "Jane", "last_name": "Doe", "address": "1234 fake road", "city": "New York", "state_id": "1", "province": "null", "zip": "12345", "country_code": "USA", "phone": "1234567890", "birthdate": "1970-01-01" "gender": "F" "waiver_initials": "jd" "waiver_signature": "jane doe" "last_modified": "1970-01-01 00:00:00" "subscription_id": "12345" "start_date": "1970-01-01" "expiration_date": "2100-01-01" "paid_member_count": "100" ] Failure: Response Codes: 400
{
"message": "Club ID required" } |