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

# Event

> Event entity with scheduling, location, and speaker information

Event entity with scheduling, location, and speaker information

Represents events including live, online, and webinar types.

## Fields

### Field Registry (from `workspace/sources/entity-registry.csv`)

| Field                   | Input Type         | Required     | Notes                                                                                                                                                                    |
| ----------------------- | ------------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Event ID                | Number             | Required     | Automatically generated by the system and locked                                                                                                                         |
| Event Name              | Text               | Required     | model: `name`, rel: string                                                                                                                                               |
| Event Short Description | Text               | Required     | Field used for the event tile                                                                                                                                            |
| Event Description       | WYSIWYG (Textarea) | Required     | model: `description`, rel: text                                                                                                                                          |
| Event Location          | Text               | Required     | Uses Google Maps to select location; model: `location`, rel: string                                                                                                      |
| Event Duration          | Text               | Required     | model: `duration`, rel: integer                                                                                                                                          |
| Event Start Date        | Date               | Required     | model: `eventStart`, rel: datetime                                                                                                                                       |
| Event Start Time        | Text               | Required     | model: `eventStart`, rel: datetime                                                                                                                                       |
| Event End Date          | Date               | Required     | model: `eventEnd`, rel: datetime                                                                                                                                         |
| Event End Time          | Text               | Required     | model: `eventEnd`, rel: datetime                                                                                                                                         |
| Event Topic             | Select             | Required     | Pulls from event settings                                                                                                                                                |
| Event Category          | Select             | Required     | Pulls from event settings; model: `eventCategories`, rel: OneToMany EventCategories                                                                                      |
| Event Series            | Select             | Required     | Pulls from event settings; model: `eventSeries`, rel: OneToMany EventSeries                                                                                              |
| Event Branches          | Select             | Required     | Pulls from event settings; model: `eventBranches`, rel: OneToMany EventBranches                                                                                          |
| Schedule for later      | Yes / No           | -            | model: `scheduleForLater`, rel: boolean                                                                                                                                  |
| Publish Date            | Date               | -            | model: `publishDateTime`, rel: datetime                                                                                                                                  |
| Publish Time            | -                  | -            | model: `publishDateTime`, rel: datetime                                                                                                                                  |
| CPD Category            | Selector           | Required     | Autocomplete design (many to many selector) - pulls through from the same set of data from CPD Categories in courses; model: `cpdCategories`, rel: OneToMany CpdCategory |
| Event Type              | Select             | Required     | Pulls from event settings - if online is selected, no QR code is required; model: `eventType`, rel: ManyToOne EventType                                                  |
| Create Course           | Yes / No           | Required     | If selected, automatically generates a draft course entity to populate                                                                                                   |
| Zoom Link               | Checkbox           | Not Required | This only displays if Zoom is connected and if the box is selected, it generates a zoom link for the event; model: `zoomLink`, rel: string                               |
| Event Featured Image    | File               | Not Required | Used for event tile - if empty uses a placeholder icon/image; model: `featuredImage`, rel: string imageFile                                                              |
| Watchlist               | Checkbox           | Not Required | For members only to save into a favorites list                                                                                                                           |
| List of Participants    | Datatable          | -            | Includes the following columns (Full name, Email, Ticket Type Purchased)                                                                                                 |
| Free Event              | True / False       | Required     | If selected, the ticket section does not appear; model: `isFreeEvent`, rel: boolean                                                                                      |
| Request Sponsors        | True / False       | Required     | If toggled on, adds this as a request for sponsor in the sponsorship portal                                                                                              |
| Sponsorship Type        | Text               | Required     | Displays as a repeater if request sponsors is toggled true, provides information on what's available to be sponsored on this event and the cost to do so                 |
| Sponsorship Cost        | Number             | Required     | -                                                                                                                                                                        |
| Sponsorship Description | WYSIWYG (Textarea) | Required     | -                                                                                                                                                                        |
| Is Online               | -                  | -            | model: `isOnline`, rel: boolean                                                                                                                                          |
| Status                  | -                  | -            | model: `status`, rel: ManyToOne EventStatus                                                                                                                              |
| Speaker Name            | Text               | Required     | Repeater section; model: `speakerName`, rel: string                                                                                                                      |
| Speaker Bio             | Text               | Required     | model: `speakerBio`, rel: string                                                                                                                                         |
| Speaker Website URL     | URL                | Required     | model: `speakerWebsite`, rel: string                                                                                                                                     |
| Speaker Image           | File               | Required     | model: `speakerImageName`, rel: string                                                                                                                                   |
| Is Main Speaker         | True / False       | Required     | model: `isMainSpeaker`, rel: boolean                                                                                                                                     |
| Sponsor Name            | Text               | Not Required | Repeater Sction (Field)/ You will need a sponsorship entity; model: `sponsorName`, rel: EventSponsor                                                                     |
| Sponsor URL             | URL                | Not Required | model: `sponsorUrl`                                                                                                                                                      |
| Sponsor Logo            | File               | Not Required | model: `sponsorLogoName`                                                                                                                                                 |
| Ticket Name             | Text               | Required     | Repeater Section; model: `ticketName`, rel: string EventTicket                                                                                                           |
| Ticket Description      | Text               | Required     | model: `ticketDescription`, rel: string                                                                                                                                  |
| Ticket Price            | Number             | Required     | model: `ticketPrice`, rel: float                                                                                                                                         |
| Members Only            | Checkbox           | Required     | If selected, this ticket can only be purchased by members; model: `memberOnly`, rel: boolean                                                                             |
| Members Discount        | Number             | Required     | Fixed price; model: `memberDiscount`, rel: float                                                                                                                         |
| Ticket Qty              | Number             | Required     | How many tickets can be sold of this type; model: `ticketQuantity`, rel: integer                                                                                         |
| Ticket Purchase Limit   | Number             | Not Required | How many tickets can one person buy at a time - if empty, it's unlimited; model: `ticketPurchaseLimit`, rel: integer                                                     |
| GL Code                 | Text               | Required     | Displays if you have connected this to an accounting software; model: `glCode`, rel: string                                                                              |
| Start Date              | Date               | Not Required | Time available for the ticket to be purchased - if left empty it is available till the event is on or sold out; model: `start`, rel: datetime                            |
| Start Time              | Text               | Not Required | model: `start`, rel: datetime                                                                                                                                            |
| End Date                | Date               | Not Required | model: `end`, rel: datetime                                                                                                                                              |
| End Time                | Text               | Not Required | model: `end`, rel: datetime                                                                                                                                              |
| Ticket Notes            | Text               | Not Required | Displays for members buying tickets for dietary requirements etc.; model: `ticketNote`, rel: string                                                                      |

## Embedded Collections

### Speakers (Array)

| Field         | Type    | Description          |
| ------------- | ------- | -------------------- |
| speakerId     | UUID    | Speaker ID           |
| name          | string  | Speaker name         |
| bio           | text    | Speaker biography    |
| photo         | string  | Photo URL            |
| isMainSpeaker | boolean | Primary speaker flag |

### Sessions (Array)

| Field       | Type     | Description         |
| ----------- | -------- | ------------------- |
| sessionId   | UUID     | Session ID          |
| name        | string   | Session name        |
| description | text     | Session description |
| startTime   | datetime | Session start       |
| endTime     | datetime | Session end         |
| speakerIds  | array    | Assigned speakers   |

## Relationships

| Relation | Type       | Target Entity |
| -------- | ---------- | ------------- |
| tickets  | OneToMany  | EventTicket   |
| sponsors | ManyToMany | Sponsorship   |

## Features

### Event

#### Acceptance Criteria

##### Frontend

* [ ] Admin/client UI can view and manage `Event` records where applicable.

##### Backend / API

* [ ] CRUD operations exist for `Event` (create, read, update, delete/archive).

##### Permissions

* [ ] Access is restricted to appropriate roles (tenant-scoped).

##### Business Rules

* [ ] Fields and relationships documented on this page are enforced for `Event`.

##### Error Handling

* [ ] Invalid payloads return field-level validation errors.
