MemberPulse
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)

FieldInput TypeRequiredNotes
Event IDNumberRequiredAutomatically generated by the system and locked
Event NameTextRequiredmodel: name, rel: string
Event Short DescriptionTextRequiredField used for the event tile
Event DescriptionWYSIWYG (Textarea)Requiredmodel: description, rel: text
Event LocationTextRequiredUses Google Maps to select location; model: location, rel: string
Event DurationTextRequiredmodel: duration, rel: integer
Event Start DateDateRequiredmodel: eventStart, rel: datetime
Event Start TimeTextRequiredmodel: eventStart, rel: datetime
Event End DateDateRequiredmodel: eventEnd, rel: datetime
Event End TimeTextRequiredmodel: eventEnd, rel: datetime
Event TopicSelectRequiredPulls from event settings
Event CategorySelectRequiredPulls from event settings; model: eventCategories, rel: OneToMany EventCategories
Event SeriesSelectRequiredPulls from event settings; model: eventSeries, rel: OneToMany EventSeries
Event BranchesSelectRequiredPulls from event settings; model: eventBranches, rel: OneToMany EventBranches
Schedule for laterYes / No-model: scheduleForLater, rel: boolean
Publish DateDate-model: publishDateTime, rel: datetime
Publish Time--model: publishDateTime, rel: datetime
CPD CategorySelectorRequiredAutocomplete design (many to many selector) - pulls through from the same set of data from CPD Categories in courses; model: cpdCategories, rel: OneToMany CpdCategory
Event TypeSelectRequiredPulls from event settings - if online is selected, no QR code is required; model: eventType, rel: ManyToOne EventType
Create CourseYes / NoRequiredIf selected, automatically generates a draft course entity to populate
Zoom LinkCheckboxNot RequiredThis 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 ImageFileNot RequiredUsed for event tile - if empty uses a placeholder icon/image; model: featuredImage, rel: string imageFile
WatchlistCheckboxNot RequiredFor members only to save into a favorites list
List of ParticipantsDatatable-Includes the following columns (Full name, Email, Ticket Type Purchased)
Free EventTrue / FalseRequiredIf selected, the ticket section does not appear; model: isFreeEvent, rel: boolean
Request SponsorsTrue / FalseRequiredIf toggled on, adds this as a request for sponsor in the sponsorship portal
Sponsorship TypeTextRequiredDisplays 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 CostNumberRequired-
Sponsorship DescriptionWYSIWYG (Textarea)Required-
Is Online--model: isOnline, rel: boolean
Status--model: status, rel: ManyToOne EventStatus
Speaker NameTextRequiredRepeater section; model: speakerName, rel: string
Speaker BioTextRequiredmodel: speakerBio, rel: string
Speaker Website URLURLRequiredmodel: speakerWebsite, rel: string
Speaker ImageFileRequiredmodel: speakerImageName, rel: string
Is Main SpeakerTrue / FalseRequiredmodel: isMainSpeaker, rel: boolean
Sponsor NameTextNot RequiredRepeater Sction (Field)/ You will need a sponsorship entity; model: sponsorName, rel: EventSponsor
Sponsor URLURLNot Requiredmodel: sponsorUrl
Sponsor LogoFileNot Requiredmodel: sponsorLogoName
Ticket NameTextRequiredRepeater Section; model: ticketName, rel: string EventTicket
Ticket DescriptionTextRequiredmodel: ticketDescription, rel: string
Ticket PriceNumberRequiredmodel: ticketPrice, rel: float
Members OnlyCheckboxRequiredIf selected, this ticket can only be purchased by members; model: memberOnly, rel: boolean
Members DiscountNumberRequiredFixed price; model: memberDiscount, rel: float
Ticket QtyNumberRequiredHow many tickets can be sold of this type; model: ticketQuantity, rel: integer
Ticket Purchase LimitNumberNot RequiredHow many tickets can one person buy at a time - if empty, it's unlimited; model: ticketPurchaseLimit, rel: integer
GL CodeTextRequiredDisplays if you have connected this to an accounting software; model: glCode, rel: string
Start DateDateNot RequiredTime 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 TimeTextNot Requiredmodel: start, rel: datetime
End DateDateNot Requiredmodel: end, rel: datetime
End TimeTextNot Requiredmodel: end, rel: datetime
Ticket NotesTextNot RequiredDisplays for members buying tickets for dietary requirements etc.; model: ticketNote, rel: string

Embedded Collections

Speakers (Array)

FieldTypeDescription
speakerIdUUIDSpeaker ID
namestringSpeaker name
biotextSpeaker biography
photostringPhoto URL
isMainSpeakerbooleanPrimary speaker flag

Sessions (Array)

FieldTypeDescription
sessionIdUUIDSession ID
namestringSession name
descriptiontextSession description
startTimedatetimeSession start
endTimedatetimeSession end
speakerIdsarrayAssigned speakers

Relationships

RelationTypeTarget Entity
ticketsOneToManyEventTicket
sponsorsManyToManySponsorship

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.

On this page