List Events
Returns a paginated list of published calendar events for the current location. Supports filtering by past/upcoming, category, keyword search, and featured flag. Used to power the public-facing events catalogue and homepage event grids.
An event is a scheduled activity (workshop, networking session, etc.) published by the space operator. Events may have one or more ticket
products with their own prices and availability windows.
Authentication
No authentication required. The response is scoped to the current business location.
Query Parameters
true — return events whose end date is in the past. false — return upcoming and active events.
1-based page number. Default: 1
Number of events per page. Default: 25
Filter to events belonging to a specific category. Omit to return events across all categories.
Keyword filter applied to event name and description. URL-encoded.
When true, returns only events marked as featured by the operator.
When true, returns only events that the operator has flagged to appear on the home page. Used by the upcomingEvents shortcut endpoint.
Comma-separated dot-notated field paths to include in the response. When provided, only the
specified fields are returned — useful for reducing payload size. Example:
_shape=CalendarEvents.Records.Id,CalendarEvents.Records.Name
Response
Returns an EventList object containing pagination metadata and the paginated event records.
Core Fields
Mirrors the pastEvents query parameter, confirming which slice of events was returned.
All available event categories for the current location — useful for building a category filter UI without a separate request.
The currently active category filter, if categoryId was supplied.
CalendarEvents
ApiListResult<CalendarEvent>
Paginated wrapper containing the matching events. See API Overview for pagination fields (CurrentPage, TotalItems, etc.).
CalendarEvent Fields
CalendarEvents.Records[].Id
Unique integer identifier for the event. Use this as {id} in detail, product, and waiting-list endpoints.
CalendarEvents.Records[].UniqueId
UUID for the event — stable across edits and suitable as a cache key.
CalendarEvents.Records[].Name
Display name of the event.
CalendarEvents.Records[].ShortDescription
Brief summary shown in list cards.
CalendarEvents.Records[].LongDescription
Full event description. May contain HTML.
CalendarEvents.Records[].HostFullName
Full name of the event host.
CalendarEvents.Records[].Location
Venue name or room identifier.
CalendarEvents.Records[].VenueAddress
Full postal address of the event venue.
CalendarEvents.Records[].WebAddress
External event URL (e.g., a Zoom or Eventbrite link).
CalendarEvents.Records[].FacebookPage
Facebook event page URL.
Dates
CalendarEvents.Records[].StartDate
Event start datetime in the location’s local timezone (ISO 8601).
CalendarEvents.Records[].EndDate
Event end datetime in the location’s local timezone (ISO 8601).
CalendarEvents.Records[].StartDateUtc
Event start datetime in UTC (ISO 8601).
CalendarEvents.Records[].EndDateUtc
Event end datetime in UTC (ISO 8601).
CalendarEvents.Records[].MultipleDays
When true, the event spans more than one calendar day.
CalendarEvents.Records[].PublishDate
Local datetime from which the event becomes visible to customers.
CalendarEvents.Records[].PublishDateUtc
UTC equivalent of PublishDate.
Tickets & Pricing
CalendarEvents.Records[].HasTickets
When true, the event has at least one purchasable ticket product.
CalendarEvents.Records[].SoldOut
When true, all ticket products are sold out or past their sale window.
CalendarEvents.Records[].ChepeastPrice
Lowest ticket price across all ticket products. Note the typo in the field name (Chepeast) — it is preserved as-is in the API.
CalendarEvents.Records[].MostExpensivePrice
Highest ticket price across all ticket products.
CalendarEvents.Records[].ChepeastProduct
Full EventProduct object for the cheapest ticket option.
CalendarEvents.Records[].MostExpensiveProduct
Full EventProduct object for the most expensive ticket option.
CalendarEvents.Records[].EventProducts
All ticket products for this event.
CalendarEvents.Records[].TicketsPage
External URL for purchasing tickets when HasCustomTicketsPage is true.
CalendarEvents.Records[].HasCustomTicketsPage
When true, ticket purchase is handled on an external page (TicketsPage) rather than the portal checkout.
CalendarEvents.Records[].Allocation
Total number of available spots. null means unlimited.
CalendarEvents.Records[].Sales
Number of tickets sold so far.
CalendarEvents.Records[].EnableWaitList
When true, customers can join a waiting list when the event is sold out.
CalendarEvents.Records[].TicketNotes
Additional notes displayed to customers during ticket purchase.
CalendarEvents.Records[].AskBuyerAddress
When true, the checkout form collects the buyer’s postal address.
Categorisation & Display
CalendarEvents.Records[].EventCategories
Categories this event belongs to.
CalendarEvents.Records[].ShowInHomePage
When true, the event appears on the portal home page.
CalendarEvents.Records[].ShowInHomeBanner
When true, the event is promoted in the home page banner carousel.
When true, authenticated customers can post and view comments on the event detail page.
CalendarEvents.Records[].HasSmallImage
When true, a small thumbnail image is available.
CalendarEvents.Records[].HasLargeImage
When true, a full-size banner image is available.
CalendarEvents.Records[].HasAddress
Convenience flag — true when either Location or VenueAddress is set.
CalendarEvents.Records[].Resource
The bookable resource associated with this event, if the event is tied to a room or desk.
CalendarEvents.Records[].HasResource
When true, a resource is linked to this event (Resource is non-null).
CalendarEvents.Records[].Business
The coworking location that published the event.
CalendarEvents.Records[].Recent10Attendees
{ Id: number; UpdatedOn: string }[] | null
Lightweight list of up to 10 recent attendees, used for social proof display.
Published comments on the event.
Timestamps
All datetime fields are ISO 8601 strings. *On fields are in the location’s local timezone; *OnUtc fields are UTC.
CalendarEvents.Records[].CreatedOn
Local datetime the event record was created.
CalendarEvents.Records[].CreatedOnUtc
UTC datetime the event record was created.
CalendarEvents.Records[].UpdatedOn
Local datetime of the last update.
CalendarEvents.Records[].UpdatedOnUtc
UTC datetime of the last update.
Examples
Fetch upcoming events (full payload)
GET /api/public/events?pastEvents=false&page=1&top=9
{
"PastEvents": false,
"Categories": [
{
"Id": 3,
"Title": "Workshops",
"UniqueId": "a1b2c3d4-...",
"CreatedOn": "2024-01-10T10:00:00",
"UpdatedOn": "2024-01-10T10:00:00",
"CreatedOnUtc": "2024-01-10T10:00:00Z",
"UpdatedOnUtc": "2024-01-10T10:00:00Z",
"IdString": "3",
"IsNull": false
}
],
"Category": null,
"CalendarEvents": {
"Records": [
{
"Id": 412,
"Name": "Morning Yoga & Mindfulness",
"ShortDescription": "Start your week with a guided yoga session open to all levels.",
"LongDescription": "<p>Join us every Monday for a 45-minute yoga session...</p>",
"HostFullName": "Sarah Chen",
"Location": "Studio Room B",
"VenueAddress": null,
"StartDate": "2026-03-23T07:30:00",
"EndDate": "2026-03-23T08:15:00",
"StartDateUtc": "2026-03-23T07:30:00Z",
"EndDateUtc": "2026-03-23T08:15:00Z",
"MultipleDays": false,
"HasTickets": true,
"SoldOut": false,
"ChepeastPrice": 0,
"MostExpensivePrice": 12.0,
"HasCustomTicketsPage": false,
"TicketsPage": null,
"Allocation": 20,
"Sales": 7,
"EnableWaitList": false,
"AllowComments": true,
"ShowInHomePage": true,
"ShowInHomeBanner": false,
"HasSmallImage": true,
"HasLargeImage": true,
"HasAddress": true,
"HasResource": false,
"Resource": null,
"EventCategories": [{ "Id": 3, "Title": "Workshops" }],
"EventProducts": [{ "Id": 88, "Name": "Free Entry", "Price": 0, "TicketsLeft": 13, "SoldOut": false, "IsAvailableNow": true }],
"Business": { "Id": 5, "Name": "Downtown Coworking Hub" },
"Comments": [],
"UniqueId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"IdString": "412",
"CreatedOn": "2025-11-01T09:00:00",
"UpdatedOn": "2026-03-01T12:00:00",
"CreatedOnUtc": "2025-11-01T09:00:00Z",
"UpdatedOnUtc": "2026-03-01T12:00:00Z",
"IsNull": false
}
],
"CurrentPage": 1,
"CurrentPageSize": 9,
"TotalItems": 1,
"TotalPages": 1,
"HasNextPage": false,
"HasPreviousPage": false
}
}
Fetch events with a minimal field set
Use _shape to return only the data your UI needs, reducing payload size.
GET /api/public/events?pastEvents=false&page=1&top=9&_shape=CalendarEvents.Records.Id,CalendarEvents.Records.Name,CalendarEvents.Records.StartDateUtc,CalendarEvents.Records.HasLargeImage
{
"CalendarEvents": {
"Records": [{ "Id": 412, "Name": "Morning Yoga & Mindfulness", "StartDateUtc": "2026-03-23T07:30:00Z", "HasLargeImage": true }],
"CurrentPage": 1,
"CurrentPageSize": 9,
"TotalItems": 1,
"TotalPages": 1,
"HasNextPage": false,
"HasPreviousPage": false
}
}
TypeScript Integration
import endpoints from '@/api/endpoints'
import { EventList } from '@/types/endpoints/EventList'
import { useData } from '@/api/fetchData'
const endpoint = endpoints.events.events({
pastEvents: false,
page: 1,
top: 9,
categoryId: undefined,
search: undefined,
featured: false,
})
const { resource: eventList } = useData<EventList>(httpClient, endpoint.url, {
shape: {
fields: [
'CalendarEvents.Records.Id',
'CalendarEvents.Records.Name',
'CalendarEvents.Records.StartDateUtc',
'CalendarEvents.Records.HasLargeImage',
'CalendarEvents.Records.ChepeastPrice',
'CalendarEvents.Records.SoldOut',
],
},
})
Usage in Portal
| Context | Source file |
|---|
Events catalogue (/events) | src/views/events/list/useEventsData.ts |
| Homepage events grid (public home page) | src/views/public/home-business/components/SimpleEventsGrid.tsx |
Error Responses
A query parameter value is invalid — for example, a non-boolean pastEvents or a negative page.
| Method | Endpoint | Description |
|---|
GET | /api/public/events/{id} | Full detail for a single event |
GET | /api/public/events?onlyHomePage=true | Upcoming home-page events (no auth required) |
GET | /api/public/events/my | Events the authenticated customer has tickets for |
GET | /api/public/events/{eventId}/product/{productId} | Ticket product detail |
POST | /api/public/events/{id}/joinWaitingList | Join the waiting list for a sold-out event |