EntitiesCore
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
Eventrecords 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.