> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Event Details

> Returns full detail for a single published event, including ticket products, attendees, related events, and comments.

# Get Event Details

Returns complete information for a single published event, including all ticket products, a list of recent attendees, related events, and customer comments. Used on the event detail page and in the basket preview.

## Authentication

No authentication required.

## Path Parameters

<ParamField path="id" type="number" required>
  The integer ID of the event. Obtained as `Id` from `GET /api/public/events` or `GET /api/public/events/my`.
</ParamField>

## Query Parameters

<ParamField query="_shape" type="string">
  Comma-separated list of field paths to include in the response. When provided, only the
  specified fields are returned — useful for reducing payload size. Supports nested paths
  using dot notation. Example: `_shape=Event.Name,Event.StartDateUtc,Event.EventProducts,RelatedEvents`.
</ParamField>

## Response

Returns an `EventDetails` object.

### Core Fields

<ResponseField name="Event" type="CalendarEvent" required>
  Full event object. See the field descriptions in [List Events](/api/endpoints/events/list-events) for the complete `CalendarEvent` schema.
</ResponseField>

<ResponseField name="AttendeeCount" type="number">
  Total number of tickets sold across all ticket products.
</ResponseField>

<ResponseField name="Attendees" type="Coworker[]">
  Full `Coworker` objects for event attendees — used for social proof displays ("X people are going").
</ResponseField>

<ResponseField name="Categories" type="EventCategory[]">
  All event categories available at this location — useful for populating a "Browse by category" navigation without an additional request.
</ResponseField>

<ResponseField name="RelatedEvents" type="CalendarEvent[]">
  A list of other events from the same location or category, used for the "You might also like" section.
</ResponseField>

<ResponseField name="Comment" type="EventComment | null">
  Template object for a new comment submission. Use the `newComment` endpoint to post a comment.
</ResponseField>

### EventComment Fields

<ResponseField name="Event.Comments[].Id" type="number">
  Unique identifier for the comment.
</ResponseField>

<ResponseField name="Event.Comments[].Text" type="string | null">
  Comment body text.
</ResponseField>

<ResponseField name="Event.Comments[].Rating" type="number | null">
  Optional numeric rating (e.g. 1–5) submitted alongside the comment.
</ResponseField>

<ResponseField name="Event.Comments[].Published" type="boolean">
  When `true`, the comment is visible to all customers.
</ResponseField>

<ResponseField name="Event.Comments[].PostedBy" type="User">
  The customer who posted the comment, including `Id` and `FullName`.
</ResponseField>

<ResponseField name="Event.Comments[].CreatedOn" type="string">
  Local datetime the comment was posted (ISO 8601).
</ResponseField>

<ResponseField name="Event.Comments[].CreatedOnUtc" type="string">
  UTC datetime the comment was posted (ISO 8601).
</ResponseField>

## Examples

### Fetch event details (full payload)

```http theme={null}
GET /api/public/events/412
```

```json theme={null}
{
  "AttendeeCount": 7,
  "Attendees": [{ "Id": 201, "FullName": "Maria Garcia", "Email": "maria@example.com" }],
  "Categories": [
    {
      "Id": 3,
      "Title": "Workshops",
      "UniqueId": "a1b2c3d4-...",
      "IdString": "3",
      "IsNull": false,
      "CreatedOn": "2024-01-10T10:00:00",
      "UpdatedOn": "2024-01-10T10:00:00",
      "CreatedOnUtc": "2024-01-10T10:00:00Z",
      "UpdatedOnUtc": "2024-01-10T10:00:00Z"
    }
  ],
  "RelatedEvents": [
    {
      "Id": 415,
      "Name": "Afternoon Pilates",
      "ShortDescription": "A refreshing end-of-day stretch session.",
      "StartDateUtc": "2026-03-24T17:00:00Z",
      "EndDateUtc": "2026-03-24T18:00:00Z",
      "Business": { "Id": 5, "Name": "Downtown Coworking Hub" },
      "EventCategories": [{ "Id": 3, "Title": "Workshops" }]
    }
  ],
  "Comment": null,
  "Event": {
    "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 led by certified instructor Sarah Chen...</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,
    "Allocation": 20,
    "Sales": 7,
    "EnableWaitList": false,
    "AllowComments": true,
    "HasLargeImage": true,
    "HasSmallImage": true,
    "HasAddress": true,
    "HasResource": false,
    "Resource": null,
    "EventProducts": [
      {
        "Id": 88,
        "Name": "Free Entry",
        "Description": "Community member free pass",
        "Price": 0,
        "PriceCurrencyCode": "GBP",
        "PriceFormatted": "£0.00",
        "TicketsLeft": 13,
        "SoldOut": false,
        "IsAvailableNow": true,
        "MaxTicketsPerAttendee": null,
        "LastFew": false,
        "Future": false,
        "Expired": false,
        "DisplayOrder": 1,
        "StartDate": "2026-01-01T00:00:00",
        "EndDate": "2026-03-23T08:15:00",
        "Quantity": 1
      }
    ],
    "EventCategories": [{ "Id": 3, "Title": "Workshops" }],
    "Business": { "Id": 5, "Name": "Downtown Coworking Hub", "WebAddress": "https://downtown.example.com" },
    "Comments": [
      {
        "Id": 77,
        "Text": "Fantastic session, highly recommend!",
        "Rating": 5,
        "Published": true,
        "PostedBy": { "Id": 201, "FullName": "Maria Garcia" },
        "CreatedOn": "2026-02-10T09:15:00",
        "CreatedOnUtc": "2026-02-10T09:15:00Z"
      }
    ],
    "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
  }
}
```

### Fetch event with a minimal field set

```http theme={null}
GET /api/public/events/412?_shape=Event.Id,Event.Name,Event.StartDateUtc,Event.EventProducts.Id,Event.EventProducts.Price,Event.EventProducts.TicketsLeft,RelatedEvents.Id,RelatedEvents.Name
```

```json theme={null}
{
  "Event": {
    "Id": 412,
    "Name": "Morning Yoga & Mindfulness",
    "StartDateUtc": "2026-03-23T07:30:00Z",
    "EventProducts": [{ "Id": 88, "Price": 0, "TicketsLeft": 13 }]
  },
  "RelatedEvents": [{ "Id": 415, "Name": "Afternoon Pilates" }]
}
```

## TypeScript Integration

```typescript theme={null}
import endpoints from '@/api/endpoints'
import { EventDetails } from '@/types/endpoints/EventDetails'
import { createShape } from '@/helpers/shape-helper'
import { useData } from '@/api/fetchData'

const endpoint = endpoints.events.details(412)
const shape = createShape<typeof endpoint.type>()([
  'Event.Id',
  'Event.Name',
  'Event.StartDateUtc',
  'Event.EndDateUtc',
  'Event.ShortDescription',
  'Event.LongDescription',
  'Event.HasLargeImage',
  'Event.EnableWaitList',
  'Event.HasTickets',
  'Event.AllowComments',
  'Event.EventProducts.Id',
  'Event.EventProducts.Name',
  'Event.EventProducts.Price',
  'Event.EventProducts.TicketsLeft',
  'Event.EventProducts.IsAvailableNow',
  'RelatedEvents.Id',
  'RelatedEvents.Name',
  'RelatedEvents.StartDateUtc',
  'Event.Comments.Id',
  'Event.Comments.Text',
  'Event.Comments.PostedBy.FullName',
  'Event.Comments.CreatedOnUtc',
  'Event.Comments.Rating',
])

const { resource: event } = useData<typeof shape.type>(httpClient, endpoint.url, {
  shape: shape.fields,
})
```

## Usage in Portal

| Context                                      | Source file                                               |
| -------------------------------------------- | --------------------------------------------------------- |
| Event detail page (`/events/{id}`)           | `src/views/events/details/data.ts`                        |
| Basket item preview (event ticket in basket) | `src/components/Basket/items/EventBasketItemRow.tsx`      |
| Event checkout page (`/checkout/event`)      | `src/views/public/checkout/event/useEventCheckoutData.ts` |

## Error Responses

<ResponseField name="404 Not Found" type="error">
  No published event exists with the specified ID.
</ResponseField>

## Related Endpoints

| Method | Endpoint                                           | Description                                       |
| ------ | -------------------------------------------------- | ------------------------------------------------- |
| `GET`  | `/api/public/events`                               | Paginated list of published events                |
| `GET`  | `/api/public/events/{eventId}/product/{productId}` | Detail for a specific ticket product              |
| `POST` | `/api/public/events/{id}/joinWaitingList`          | Join the waiting list for a sold-out event        |
| `GET`  | `/api/public/events/my`                            | Events the authenticated customer has tickets for |
| `POST` | `/en/events/newComment`                            | Post a comment on an event                        |
