Event

Events are all of the ticketed activities that happen within a Convention, ie: things that you need more than just your Badge to attend. Events are accessed via /api/event.

Properties

See "Object Properties" in Introduction for basic shared properties.

Complete details in EventProperties. It also has these extra read-only properties:

actual_price

The current price to attend this event based upon all the various settings through-out the convention.

available_quantity

The number of tickets available for this event.

unreserved_quantity

The Event's max_quantity (maximum tickets) minus its number of reserved seats (including host reservations).

Deprecation Note -- August 2022

Fields sold_count and max_tickets are deprecated and replaced in use by taken_count and max_quantity, respectively.

Related Objects

See "Related Objects" in Introduction for how to use them.

alternatedaypart

The alternate DayPart preferred for when the event will start.

convention

The Convention where the event will be held.

preferreddaypart

The primary DayPart preferred for when the event will start.

room

The Room where the event will be held, if it will be in a single room.

space

The Space where the event will be held, if it will be in a single space.

startdaypart

The DayPart when the event will start.

submission

The EventSubmission that created the event (if any).

type

The event's EventType.

Relationships

See "Relationships" in Introduction for how to use them.

dayparts

The complete list of DayParts to which this event is scheduled. This includes DayParts assigned via EventSessions.

eventgroups

EventGroups for this event (if any).

eventgroupevents

EventGroupEvents for this event (if any).

eventhosts

EventHosts for this event (if any). By itself this will only return user_ids associated with the event. To include user information, see "Related Objects" in Introduction.

reservations

EventReservations for this event (if any).

hosts

The list of Users hosting the event.

invitees

The list of Users with EventReservations for this event (if any).

mytickets

The list of Tickets for this event based upon the user that makes the request to this relationship.

possiblerooms

The list of Rooms compatibile with this event.

rooms

The complete list of Rooms to which this event is scheduled. This includes Rooms assigned via EventSessions.

sessions

EventSessions created for this event. Note this set does not include the information for the event's first session, which is stored with the event.

slots

Slots to which this event is scheduled. This includes Slots assigned via EventSessions.

spaces

The complete list of Spaces to which this event is scheduled. This includes Spaces assigned via EventSessions.

tickets

Tickets for this event.

Queryable
ticket_number
Qualifiers
badge_id
event_id
picked_up
verified

waits

EventWaits for this event.

warnings

EventWarnings for this event (if any). Note, this gets all warnings for the event and all its EventSessions. See "Get Event Main Session Warnings" for how to get the warnings only for the event's main session.

Queryable
message

The text of the warning.

Qualifiers
eventsession_id
resolved
seen
type

Includes

See "Includes" in Introduction for how to use them.

Event also has all includes defined in "Includes" in EventSession.

attendees

A list of attendees formatted like:

 [
    {
        "name" : "Badge Name Goes Here",
        "ticket_number" : 105,
    },
    ...
 ]

can_autoslot

Returns 1 if the auto-scheduler can be used to schedule the event, 0 if not.

eventgroups

A list of event groups formatted like:

  [
     {
         "name" : "Featured Events",
     },
     ...
  ]

has_needed_group_seats

Returns whether the Event has enough seats for all BadgeTypes unreserved_quantity associated via the Event's EventGroups. 1 means true, 0 means false.

For Events not in an EventGroup this will likely still return 1 (true).

has_open_reservation

Returns 1 if the user making the request has an open reservation for the event, 0 if not.

host_badge_numbers

An array of the badge numbers (if any) of the host user_id for this event.

 [
   219, 220, ...
 ]

hosts

A list of hosts formatted like:

 [
    {
        "name" : "Mr Major Host",
        "email" : "emails@hostsgalore.gosh",
        "user_id" : "[user ID]",
    },
    ...
 ]

in_multiple_groups

Returns three flag values (1 means true, 0 means false):

in_multiple_groups

Whether the Event is in more than one EventGroup.

in_multiple_autoinclude_groups

Whether the Event is in more than one EventGroup that has its tickets_autoincluded set to true.

is_in_autoinclude_group

Whether any EventGroup the Event is in has its tickets_autoincluded set to true.

is_attending

Returns 1 if the user making the request is attending the event, 0 if not.

is_hosting

Returns 1 if the user making the request is hosting the event, 0 if not.

multi_spaces

An array of the names of the spaces the event is scheduled to. This will appear only if the event is actually scheduled to multiple spaces. It will also add an array called multi_rooms, if the spaces are in separate rooms, containing the names of the spaces' rooms.

mywait

If the user that requested this event is waiting for tickets to open up for this event, then it their <EventWait> object will be returned with the event data.

replace_price_with_override

Updates the event's ticket price to its EventType price override, if any.

reservations

Returns an array of reservations in the following format:

 [
   {
     "name"     : "John Q. Normal",
     "champion" : 1,
   },
   ..
 ]

scheduleintegrity

Replaced by schedule_integrity.

waits

A list of the names of people waiting for tickets to become available for this event.

 [
    "Badge Name Goes Here",
    ...
 ]

Services

The services used to fetch and manipulate events.

Search Events

We use a search engine called Algolia (https://www.algolia.com) for our event data. This allows you to perform fast and complex searches that aren't possible with our Rest API.

To access the Algolia search engine you'll need 3 bits of information:

First you'll need to know the index name. We name our indexes using the Convention ID plus _events. So if the convention had an id of xxx then the index in Algolia would be called xxx_events.

Second, our application ID is 5V0BUFDX8J.

Third, our public key is a25692c12853aea7a77c5a7125498512.

Algolia's API documentation can be found here: https://www.algolia.com/doc/

And they have a really sweet UI builder that can be found here: https://community.algolia.com/instantsearch.js/

If you really just want to perform a rudamentary query on our database, then use the events relationship in Convention.

Create Event

 POST /api/event
Required Params
session_id
name
max_tickets
priority
type_id

Returns the same as a normal read.

Read Event

 GET /api/event/xxx

Returns:

 {
   "id" : "xxx",
   "name" : "The Captain is Dead",
   ...
 }

Update Event

 PUT /api/event/xxx

Returns the same as a normal read.

Delete Event

 DELETE /api/event/xxx

Returns:

 {
   "success" : 1
 }

Duplicate Event

Note that any schedule information is not copied to the duplicate event. The event's EventSessions and EventHosts will be copied to the duplicate event.

 POST /api/event/xxx/duplicate
Optional Params
no_submission_id

The event's EventSubmission id will not be copied into the duplicate event.

Returns the same as a normal read, but of the duplicate event.

Wait For Tickets

Create an EventWait for the user who's session_id you use for this service.

 POST /api/event/xxx/wait

Returns the same as a normal read.

Stop Waiting For Tickets

Delete an EventWait for the user who's session_id you use for this service.

 DELETE /api/event/xxx/wait

Returns:

  {
    "success" : 1
  }

Become the Host

If the event doesn't have a host, and it is claimable then you can use this method to become the host.

 POST /api/event/xxx/claim

Returns the same as a normal read.

Step down as the Host

If you are the host and the event is claimable, you can call this to step down.

 POST /api/event/xxx/unclaim

Returns the same as a normal read.

Add Host to Event or Remove Host from Event

To add a user to an event as a host, call the following endpoint with POST. To remove a host, call with DELETE.

 POST   /api/event/xxx/host/:user_id
 DELETE /api/event/xxx/host/:user_id

Returns the same as a normal read.

Add Reservation to Event

Adds a reservation to an Event. Only organizers or admins can edit the Event this way.

 POST /api/event/xxx/attendee-reservation
Required Params
user_id

Returns the same as a normal read.

Remove Reservation from Event

Removes a reservation from an Event. Only organizers or admins can edit the Event this way. See also EventReservation.

 DELETE /api/event/xxx/attendee-reservation/:reservation_id

Returns the same as a normal read.

Assign Slots to Event

Adds event's main session to the Slots identified by slot_ids. This cannot be used to assign Slots to an event's other EventSessions.

 POST /api/event/xxx/assign-slots
Required Params
slot_ids

One or more id values identifying specific Slots.

All Slot ids must identify an existing Slot. Identified Slots must: not be already assigned; not be reserved; all be in the same Space; all be on the same ConventionDay; and must all be in sequence. If any of these is not true, no Slot is assigned (the request is all-or-nothing).

Optional Params
reschedule

Can be 1 or 0. When set to 1, indicates to un-assign all currently assigned Slots from the event's main session, before assigning the ones identified in slot_ids.

full_session

Can be 1 or 0. When set to 1, indicates to use the single id in slot_ids as the starting slot and to assign Slots subsequent to that one in the same space to the event's main session until its duration is met. If you set this flag, you must pass only one id in slot_ids, or an error will occur.

Returns the same as a normal read.

Un-Assign All Slots from Event

This endpoint is DEPRECATED. Use "Un-Assign Slots from Event" instead.

Removes event from all slots to which it is currently scheduled. This includes all the slots assigned to the event's EventSessions.

 POST /api/event/xxx/schedule-unassign-all

Returns the same as a normal read.

Un-Assign Session Slots from Event

This endpoint is DEPRECATED. Use "Un-Assign Slots from Event" instead.

Removes event from the slots to which its main session is currently scheduled. This has no effect on slots assigned to the event's EventSessions.

 POST /api/event/xxx/schedule-unassign-session

Returns the same as a normal read.

Un-Assign Slots from Event

Removes the event from the Slots identified by request parameter.

 POST /api/event/xxx/unassign-slots
Required Params

NOTE that these parameters are not BOTH required, but one is always required.

slot_ids

One or more id values identifying specific Slots. If any ids are received that are not assigned to the event, an error will occur, and no Slots are unassigned.

scope

The scope parameter can be set to the value session, which indicates to unassign all Slots assigned to the event's main session; or event, which indicates to unassign all Slots assigned to the event and all its EventSessions. Pass this if you just want to unschedule the event without worrying about Slot ids.

Returns the same as a normal read.

Badge Types Related via Event Groups

Gets the BadgeTypes related to the Event via any associated EventGroups.

 GET /api/event/xxx/eventgroups/badgetypes

Returns the list of related BadgeTypes.

Get Event Main Session Warnings

Gets list of EventWarnings for only the event's main session. This will only be useful if the event has additional EventSessions.

 GET /api/event/xxx/warnings/session

Delete Resolved Event Warnings

Deletes resolved warnings for the event.

 DELETE /api/event/xxx/warnings/resolved
Optional Params
scope

The scope parameter can be set to the value session, which indicates to delete all EventWarnings associated with the event's main session; or event, which indicates to delete all EventWarnings associated with the event and all its EventSessions. Default session is assumed if scope is not passed.

Returns:

  {
    "success" : 1
  }