Astra Calendar API Data Structures
***********************
"VCalendarActivity"
***********************
type : "VCalendarActivity",
fields:
{
Id: { type:'string' },
ActivityId: { type:'string' },
ActivityName: { type:'string' },
ParentActivityName: { type:'string' },
Description: { type:'string' },
StartDate: { type:'date' },
EndDate: { type:'date' },
StartMinute: { type:'int' },
EndMinute: { type:'int' },
ActivityTypeCode: { type:'int' },
LocationId: { type:'string' },
CampusName: { type:'string' },
BuildingCode: { type:'string' },
RoomNumber: { type:'string' },
RoomName: { type:'string' },
InstitutionId: { type:'string' },
CreatedDate: { type:'date' },
CreatedBy: { type:'string' },
ModifiedDate: { type:'date' },
ModifiedBy: { type:'string' },
RowVersion: { type:'int' }
}
/**
Associations
*/
join :
{
// one-to-one association (set)
EventMeetingByActivityId : { type: "EventMeeting", field: "ActivityId", nullable: false, recipName: "VCalendarActivitiesByActivityId", typeField: "ActivityTypeCode", typeValue: "2" }
,HolidayByActivityId : { type: "Holiday", field: "ActivityId", nullable: false, recipName: "VCalendarActivitiesByActivityId", typeField: "ActivityTypeCode", typeValue: "6" }
,SectionMeetInstanceByActivityId : { type: "SectionMeetInstance", field: "ActivityId", nullable: false, recipName: "VCalendarActivitiesByActivityId", typeField: "ActivityTypeCode", typeValue: "1" }
,Location : { type: "RoomConfiguration", field: "LocationId", nullable: true, recipName: "VCalendarActivitiesByLocationId" }
}
/***********************
Room related entities
*/
***********************
"RoomConfiguration"
***********************
type : "RoomConfiguration",
fields:
{
Id: { name:'Id', type:'string' },
RoomId: { name:'RoomId', type:'string' },
Name: { name:'Name', type:'string' },
FacilityLayoutId: { name:'FacilityLayoutId', type:'string' },
OptimizerPriority: { name:'OptimizerPriority', type:'int' },
Priority: { name:'Priority', type:'int' },
MeetingCapacity: { name:'MeetingCapacity', type:'int' },
IsDefault: { name:'IsDefault', type:'boolean' },
SetupMinutes: { name:'SetupMinutes', type:'int' },
TeardownMinutes: { name:'TeardownMinutes', type:'int' },
RequiresAuthorization: { name:'RequiresAuthorization', type:'boolean' },
Description: { name:'Description', type:'string' },
SisKey: { name:'SisKey', type:'string' },
LastSisUpdateDate: { name:'LastSisUpdateDate', type:'date' },
LastImportedDate: { name:'LastImportedDate', type:'date' },
LastExportedDate: { name:'LastExportedDate', type:'date' },
RequiresAttention: { name:'RequiresAttention', type:'boolean' },
RequiresAttentionReason: { name:'RequiresAttentionReason', type:'string' },
IsActive: { name:'IsActive', type:'boolean' },
AccountingKey: { name:'AccountingKey', type:'string' },
CreatedDate: { name:'CreatedDate', type:'date' },
CreatedBy: { name:'CreatedBy', type:'string' },
ModifiedDate: { name:'ModifiedDate', type:'date' },
ModifiedBy: { name:'ModifiedBy', type:'string' },
RowVersion: { name:'RowVersion', type:'int' }
},
/**
Associations
*/
join :
{
// one-to-one association (set)
FacilityLayout : { type: "FacilityLayout", field: "FacilityLayoutId", nullable: true, recipName: "RoomConfigurations" }
,Room : { type: "Room", owner: "Room", field: "RoomId", nullable: false, recipName: "RoomConfigurations" }
// one-to-many association (edit)
,SandboxSectionMeetings : { type: "SandboxSectionMeeting", field: "RoomConfigurationId", nullable: true, recipName: "RoomConfiguration" }
,SectionMeetings : { type: "SectionMeeting", field: "RoomConfigurationId", nullable: true, recipName: "RoomConfiguration" }
,SectionMeetInstances : { type: "SectionMeetInstance", field: "RoomConfigurationId", nullable: true, recipName: "RoomConfiguration" }
,VCalendarActivitiesByLocationId : { type: "VCalendarActivity", field: "LocationId", nullable: true, recipName: "Location" }
}
***********************
"Room"
***********************
type : "Room",
fields:
{
Id: { type:'string' },
Name: { type:'string' },
Description: { type:'string' },
RoomNumber: { type:'string' },
KeyNumber: { type:'string' },
PhoneAreaCode: { type:'string' },
PhoneNumber: { type:'string' },
PhoneExtension: { type:'string' },
Width: { type:'float' },
Length: { type:'float' },
SquareFootage: { type:'float' },
MaxOccupancy: { type:'int' },
IsShareable: { type:'boolean' },
MaxSharedActivities: { type:'int' },
PriorityId: { type:'string' },
RoomTypeId: { type:'string' },
BuildingId: { type:'string' },
HvacZoneId: { type:'string' },
SisKey: { type:'string' },
NoSchedule: { type:'boolean' },
ArrangedSection: { type:'boolean' },
DoNotOptimize: { type:'boolean' },
LastSisUpdateDate: { type:'date' },
LastImportedDate: { type:'date' },
LastExportedDate: { type:'date' },
RequiresAttention: { type:'boolean' },
RequiresAttentionReason: { type:'string' },
EffectiveStartDate: { type:'date' },
EffectiveEndDate: { type:'date' },
EffectiveParentId: { type:'string' },
IsActive: { type:'boolean' },
WorkflowDefinitionId: { type:'string' },
CreatedDate: { type:'date' },
CreatedBy: { type:'string' },
ModifiedDate: { type:'date' },
ModifiedBy: { type:'string' },
RowVersion: { type:'int' }
},
/**
Associations
*/
join :
{
// one-to-one association (set)
Building : { type: "Building", owner: "Building", field: "BuildingId", nullable: false, recipName: "Rooms" }
,EffectiveParent : { type: "Room", field: "EffectiveParentId", nullable: false, recipName: "RoomsByEffectiveParentId" }
,HvacZone : { type: "HvacZone", field: "HvacZoneId", nullable: true, recipName: "Rooms" }
,RoomType : { type: "RoomType", field: "RoomTypeId", nullable: false, recipName: "Rooms" }
,WorkflowDefinition : { type: "WorkflowDefinition", field: "WorkflowDefinitionId", nullable: true, recipName: "Rooms" }
// one-to-many association (edit)
,AlertsByRelatedItemId : { type: "Alert", owner: "Room", field: "RelatedItemId", nullable: true, recipName: "RoomByRelatedItemId", typeField: "RelatedItemType", typeValue: "Room" }
,OptimizerSctMtgSuitRms : { type: "OptimizerSctMtgSuitRm", field: "RoomId", nullable: false, recipName: "Room" }
,PrefRuleRoomItems : { type: "PrefRuleRoomItem", owner: "Room", field: "RoomId", nullable: true, recipName: "Room" }
,RoomConfigurations : { type: "RoomConfiguration", owner: "Room", field: "RoomId", nullable: false, recipName: "Room" }
,RoomConflictsByConflictRoomId : { type: "RoomConflict", owner: "Room", field: "ConflictRoomId", nullable: false, recipName: "ConflictRoom" }
,RoomConflicts : { type: "RoomConflict", owner: "Room", field: "RoomId", nullable: false, recipName: "Room" }
,RoomsByEffectiveParentId : { type: "Room", field: "EffectiveParentId", nullable: false, recipName: "EffectiveParent" }
,RoomFeatureQuantities : { type: "RoomFeatureQuantity", owner: "Room", field: "RoomId", nullable: false, recipName: "Room" }
,NotesByRecordId : { type: "Note", owner: "Room", field: "RecordId", nullable: false, recipName: "RoomByRecordId", typeField: "NoteTypeId", typeValue: "ad950a8d-046b-4d25-b079-5845a0f5530a" }
,RoomPartitionsByPartitionRoomId : { type: "RoomPartition", owner: "Room", field: "PartitionRoomId", nullable: false, recipName: "PartitionRoom" }
,RoomPartitions : { type: "RoomPartition", owner: "Room", field: "RoomId", nullable: false, recipName: "Room" }
,ProfileItemsByDataValueId : { type: "ProfileItem", owner: "Room", field: "DataValueId", nullable: false, recipName: "RoomByDataValueId", typeField: "ValueDataTypeId", typeValue: "759385fd-0d7c-4f3f-95d2-2f6757cb5606" }
,TimetableSctMtgSuitRms : { type: "TimetableSctMtgSuitRm", field: "RoomId", nullable: false, recipName: "Room" }
,UserFieldValuesByRecordId : { type: "UserFieldValue", owner: "Room", field: "RecordId", nullable: false, recipName: "RoomByRecordId", typeField: "TableName", typeValue: "Rooms" }
// many-to-many association (add/remove)
,Regions : { type: "Region", matrix: "RoomRegion", role: "RoomId", recipName: "Rooms", recipRole: "RegionId" }
,AdHocRequestSettings : { type: "AdHocRequestSetting", matrix: "AdHocRequestSttngRoom", role: "RoomId", recipName: "Rooms", recipRole: "AdHocRequestSettingId" }
}
/***********************
Section related entities
*/
***********************
"SectionMeetInstance"
***********************
type : "SectionMeetInstance",
fields:
{
Id: { type:'string' },
SectionMeetingId: { type:'string' },
MeetingDate: { type:'date' },
DayMask: { type:'int' },
StartMinute: { type:'int' },
Duration: { type:'int' },
IsException: { type:'boolean' },
IsCancellation: { type:'boolean' },
RoomConfigurationId: { type:'string' },
UsageTypeCode: { type:'int' },
CreatedDate: { type:'date' },
CreatedBy: { type:'string' },
ModifiedDate: { type:'date' },
ModifiedBy: { type:'string' },
RowVersion: { type:'int' }
},
/**
Associations
*/
join :
{
// one-to-one association (set)
RoomConfiguration : { type: "RoomConfiguration", field: "RoomConfigurationId", nullable: true, recipName: "SectionMeetInstances" }
,SectionMeeting : { type: "SectionMeeting", owner: "SectionMeeting", field: "SectionMeetingId", nullable: false, recipName: "SectionMeetInstances" }
// one-to-many association (edit)
,VCalendarActivitiesByActivityId : { type: "VCalendarActivity", field: "ActivityId", nullable: false, recipName: "SectionMeetInstanceByActivityId", typeField: "ActivityTypeCode", typeValue: "1" }
}
***********************
"SectionMeeting"
***********************
type : "SectionMeeting",
fields:
{
Id: { type:'string' },
MeetingTypeId: { type:'string' },
DaysMetMask: { type:'int' },
StartMinute: { type:'int' },
Duration: { type:'int' },
StartDate: { type:'date' },
EndDate: { type:'date' },
Enrollment: { type:'int' },
MaxEnrollment: { type:'int' },
PrimaryInstructorId: { type:'string' },
MeetingPatternTimeId: { type:'string' },
HasIncompleteMtgPattern: { type:'boolean' },
RoomConfigurationId: { type:'string' },
IsExam: { type:'boolean' },
ExamParentSectionMtgId: { type:'string' },
ExamSessionId: { type:'string' },
ExamSettingTypeCode: { type:'int' },
Req2XCap: { type:'boolean' },
IsOnline: { type:'boolean' },
IsArranged: { type:'boolean' },
CrosslistId: { type:'string' },
SectionId: { type:'string' },
EstimatedEnrollment: { type:'int' },
PriorEnrollment: { type:'int' },
EditingStatusCode: { type:'int' },
UsageTypeCode: { type:'int' },
IsValidDoubleBooked: { type:'boolean' },
DoNotImportRoomAssignment: { type:'boolean' },
ContactHours: { type:'float' },
SisKey: { type:'string' },
LastSisUpdateDate: { type:'date' },
LastImportedDate: { type:'date' },
LastExportedDate: { type:'date' },
RequiresAttention: { type:'boolean' },
RequiresAttentionReason: { type:'string' },
CreatedDate: { type:'date' },
CreatedBy: { type:'string' },
ModifiedDate: { type:'date' },
ModifiedBy: { type:'string' },
RowVersion: { type:'int' }
},
/**
Associations
*/
join :
{
// one-to-one association (set)
ExamParentSectionMtg : { type: "SectionMeeting", field: "ExamParentSectionMtgId", nullable: true, recipName: "SectionMeetingsByExamParentSectionMtgId" }
,Crosslist : { type: "Crosslist", field: "CrosslistId", nullable: true, recipName: "SectionMeetings" }
,ExamSession : { type: "ExamSession", field: "ExamSessionId", nullable: true, recipName: "SectionMeetings" }
,MeetingType : { type: "MeetingType", field: "MeetingTypeId", nullable: false, recipName: "SectionMeetings" }
,PrimaryInstructor : { type: "Instructor", field: "PrimaryInstructorId", nullable: true, recipName: "SectionMeetingsByPrimaryInstructorId" }
,RoomConfiguration : { type: "RoomConfiguration", field: "RoomConfigurationId", nullable: true, recipName: "SectionMeetings" }
,Section : { type: "Section", owner: "Section", field: "SectionId", nullable: false, recipName: "SectionMeetings" }
,MeetingPatternTime : { type: "MeetingPatternTime", field: "MeetingPatternTimeId", nullable: true, recipName: "SectionMeetings" }
// one-to-many association (edit)
,PrefRuleCriteria : { type: "PrefRuleCriteria", owner: "SectionMeeting", field: "SectionMeetingId", nullable: true, recipName: "SectionMeeting" }
,SectionMeetingsByExamParentSectionMtgId : { type: "SectionMeeting", field: "ExamParentSectionMtgId", nullable: true, recipName: "ExamParentSectionMtg" }
,NotesByRecordId : { type: "Note", owner: "SectionMeeting", field: "RecordId", nullable: false, recipName: "SectionMeetingByRecordId", typeField: "NoteTypeId", typeValue: "f83d52af-6f72-411f-8777-832013c6b27d" }
,SectionMeetInstances : { type: "SectionMeetInstance", owner: "SectionMeeting", field: "SectionMeetingId", nullable: false, recipName: "SectionMeeting" }
,SubSisKeysByEntityId : { type: "SubSisKey", owner: "SectionMeeting", field: "EntityId", nullable: false, recipName: "SectionMeetingByEntityId", typeField: "EntityType", typeValue: "SectionMeeting" }
,UserFieldValuesByRecordId : { type: "UserFieldValue", owner: "SectionMeeting", field: "RecordId", nullable: false, recipName: "SectionMeetingByRecordId", typeField: "TableName", typeValue: "SectionMeetings" }
// many-to-many association (add/remove)
,Instructors : { type: "Instructor", matrix: "SectionMeetingInstructor", role: "SectionMeetingId", recipName: "SectionMeetings", recipRole: "InstructorId" }
}
***********************
"Section"
***********************
type : "Section",
fields:
{
Id: { type:'string' },
TermId: { type:'string' },
CampusId: { type:'string' },
CourseDeliveryMethodId: { type:'string' },
SectionTitle: { type:'string' },
SectionCode: { type:'string' },
DoNotOptimize: { type:'boolean' },
DoNotOptimizeInstructor: { type:'boolean' },
DoNotOptimizeTime: { type:'boolean' },
CourseTitleId: { type:'string' },
IsCanceled: { type:'boolean' },
SISEnrollment: { type:'int' },
SISMaxEnrollment: { type:'int' },
AdjustedMaxEnrollment: { type:'int' },
CalculatedSeats: { type:'int' },
EstimatedEnrollment: { type:'int' },
CensusEnrollment: { type:'int' },
CensusEnrollmentDate: { type:'date' },
CensusEnrollment2: { type:'int' },
CensusEnrollmentDate2: { type:'date' },
IsPreReq: { type:'boolean' },
IsGradeable: { type:'boolean' },
EnrollmentWaiting: { type:'int' },
WaitingAvailCount: { type:'int' },
WaitingCapacity: { type:'int' },
IsLinkParent: { type:'boolean' },
IgnoreInAnalysis: { type:'boolean' },
ContainsCrossList: { type:'boolean' },
SISCrossEnrlError: { type:'boolean' },
LinkedSectionId: { type:'string' },
SisKey: { type:'string' },
LastSisUpdateDate: { type:'date' },
LastImportedDate: { type:'date' },
LastExportedDate: { type:'date' },
RequiresAttention: { type:'boolean' },
RequiresAttentionReason: { type:'string' },
IsActive: { type:'boolean' },
CreatedDate: { type:'date' },
CreatedBy: { type:'string' },
ModifiedDate: { type:'date' },
ModifiedBy: { type:'string' },
RowVersion: { type:'int' }
},
/**
Associations
*/
join :
{
// one-to-one association (set)
Campus : { type: "Campus", owner: "Campus", field: "CampusId", nullable: false, recipName: "Sections" }
,CourseDeliveryMethod : { type: "CourseDeliveryMethod", owner: "CourseDeliveryMethod", field: "CourseDeliveryMethodId", nullable: false, recipName: "Sections" }
,LinkedSection : { type: "LinkedSection", field: "LinkedSectionId", nullable: true, recipName: "Sections" }
,Term : { type: "Term", owner: "Term", field: "TermId", nullable: false, recipName: "Sections" }
// one-to-many association (edit)
,AnalysisHistoricalTermSections : { type: "AnalysisHistoricalTermSection", field: "SectionId", nullable: false, recipName: "Section" }
,AnalysisSections : { type: "AnalysisSection", field: "SectionId", nullable: false, recipName: "Section" }
,PgmStudHistoryCourses : { false, type: "PgmStudHistoryCourse", field: "SectionId", nullable: true, recipName: "Section" }
,SectionMeetings : { type: "SectionMeeting", owner: "Section", field: "SectionId", nullable: false, recipName: "Section" }
,NotesByRecordId : { type: "Note", owner: "Section", field: "RecordId", nullable: false, recipName: "SectionByRecordId", typeField: "NoteTypeId", typeValue: "946b2278-95e8-4695-871e-7d19bfece492" }
,StudentHistoryCourses : { type: "StudentHistoryCourse", field: "SectionId", nullable: true, recipName: "Section" }
,StudentPlannedCourses : { type: "StudentPlannedCourse", field: "SectionId", nullable: true, recipName: "Section" }
,UserFieldValuesByRecordId : { type: "UserFieldValue", owner: "Section", field: "RecordId", nullable: false, recipName: "SectionByRecordId", typeField: "TableName", typeValue: "Sections" }
}
/***********************
Event related entities
*/
***********************
"EventMeeting"
***********************
type : "EventMeeting",
fields:
{
Id: { type:'string' },
MeetingNumber: { type:'int' },
Name: { type:'string' },
EventId: { type:'string' },
WorkflowIntent: { type:'string' },
WorkflowIntentOwnerId: { type:'string' },
WorkflowState: { type:'string' },
IsRoomRequired: { type:'boolean' },
EventMeetingTypeId: { type:'string' },
EventMeetingGroupId: { type:'string' },
StartDate: { type:'date' },
EndDate: { type:'date' },
DaysMask: { type:'int' },
StartMinute: { type:'int' },
EndMinute: { type:'int' },
RecurrencePatternId: { type:'string' },
MaxAttendance: { type:'int' },
ActualAttendance: { type:'int' },
CustomerContactId: { type:'string' },
InstitutionContactId: { type:'string' },
IsFeatured: { type:'boolean' },
IsPrivate: { type:'boolean' },
IsException: { type:'boolean' },
Description: { type:'string' },
OwnerId: { type:'string' },
AccountingKey: { type:'string' },
SisKey: { type:'string' },
RequiresAttention: { type:'boolean' },
RequiresAttentionReason: { type:'string' },
LastSisUpdateDate: { type:'date' },
LastImportedDate: { type:'date' },
LastExportedDate: { type:'date' },
CreatedDate: { type:'date' },
CreatedBy: { type:'string' },
ModifiedDate: { type:'date' },
ModifiedBy: { type:'string' },
RowVersion: { type:'int' }
},
/**
Associations
*/
join :
{
// one-to-one association (set)
CustomerContact : { type: "CustomerContact", field: "CustomerContactId", nullable: true, recipName: "EventMeetings" }
,Event : { type: "Event", owner: "Event", field: "EventId", nullable: false, recipName: "EventMeetings" }
,EventMeetingGroup : { type: "EventMeetingGroup", owner: "EventMeetingGroup", field: "EventMeetingGroupId", nullable: true, recipName: "EventMeetings" }
,EventMeetingType : { type: "EventMeetingType", field: "EventMeetingTypeId", nullable: true, recipName: "EventMeetings" }
,RecurrencePattern : { type: "RecurrencePattern", field: "RecurrencePatternId", nullable: true, recipName: "EventMeetings" }
,Owner : { type: "User", field: "OwnerId", nullable: false, recipName: "EventMeetingsByOwnerId" }
,WorkflowIntentOwner : { type: "User", field: "WorkflowIntentOwnerId", nullable: false, recipName: "EventMeetingsByWorkflowIntentOwnerId" }
// one-to-many association (edit)
,AlertsByRelatedItemId : { type: "Alert", owner: "EventMeeting", field: "RelatedItemId", nullable: true, recipName: "EventMeetingByRelatedItemId", typeField: "RelatedItemType", typeValue: "EventMeeting" }
,VCalendarActivitiesByActivityId : { type: "VCalendarActivity", field: "ActivityId", nullable: false, recipName: "EventMeetingByActivityId", typeField: "ActivityTypeCode", typeValue: "2" }
,NotesByRecordId : { type: "Note", owner: "EventMeeting", field: "RecordId", nullable: false, recipName: "EventMeetingByRecordId", typeField: "NoteTypeId", typeValue: "22d4a33e-7ff5-4cb2-9cbd-4c7b15de01b6" }
,EventMeetingResources : { type: "EventMeetingResource", owner: "EventMeeting", field: "EventMeetingId", nullable: false, recipName: "EventMeeting" }
,PrePostMeetings : { type: "PrePostMeeting", owner: "EventMeeting", field: "EventMeetingId", nullable: false, recipName: "EventMeeting" }
,ResourceReservationsByActivityId : { type: "ResourceReservation", owner: "EventMeeting", field: "ActivityId", nullable: false, recipName: "EventMeetingByActivityId", typeField: "ActivityTypeCode", typeValue: "2" }
,SetupTeardownWindows : { type: "SetupTeardownWindow", owner: "EventMeeting", field: "EventMeetingId", nullable: false, recipName: "EventMeeting" }
,UserFieldValuesByRecordId : { type: "UserFieldValue", owner: "EventMeeting", field: "RecordId", nullable: false, recipName: "EventMeetingByRecordId", typeField: "TableName", typeValue: "EventMeetingForm" }
,WorkflowInstancesByRelatedItemId : { type: "WorkflowInstance", owner: "EventMeeting", field: "RelatedItemId", nullable: true, recipName: "EventMeetingByRelatedItemId", typeField: "RelatedItemType", typeValue: "EventMeeting" }
}
***********************
"Event"
***********************
type : "Event",
fields:
{
Id: { type:'string' },
ReservationNumber: { type:'string' },
Name: { type:'string' },
WorkflowInstanceId: { type:'string' },
EditCounter: { type:'int' },
WorkflowIntent: { type:'string' },
WorkflowIntentOwnerId: { type:'string' },
WorkflowState: { type:'string' },
EventTypeId: { type:'string' },
CustomerId: { type:'string' },
PrimaryCustomerContactId: { type:'string' },
DoNotifyPrimaryContact: { type:'boolean' },
EstimatedAttendance: { type:'int' },
InstitutionContactId: { type:'string' },
IsFeatured: { type:'boolean' },
IsPrivate: { type:'boolean' },
Description: { type:'string' },
OwnerId: { type:'string' },
InstitutionId: { type:'string' },
EventRequestId: { type:'string' },
AccountingKey: { type:'string' },
SisKey: { type:'string' },
RequiresAttention: { type:'boolean' },
RequiresAttentionReason: { type:'string' },
LastSisUpdateDate: { type:'date' },
LastImportedDate: { type:'date' },
LastExportedDate: { type:'date' },
CreatedDate: { type:'date' },
CreatedBy: { type:'string' },
ModifiedDate: { type:'date' },
ModifiedBy: { type:'string' },
RowVersion: { type:'int' }
},
/**
Associations
*/
join :
{
// one-to-one association (set)
Customer : { type: "Customer", field: "CustomerId", nullable: true, recipName: "Events" }
,EventRequest : { type: "EventRequest", owner: "Event", field: "EventRequestId", nullable: true, recipName: "Events" }
,EventType : { type: "EventType", field: "EventTypeId", nullable: true, recipName: "Events" }
,Owner : { type: "User", field: "OwnerId", nullable: false, recipName: "EventsByOwnerId" }
,PrimaryCustomerContact : { type: "CustomerContact", field: "PrimaryCustomerContactId", nullable: true, recipName: "EventsByPrimaryCustomerContactId" }
,WorkflowInstance : { type: "WorkflowInstance", owner: "Event", field: "WorkflowInstanceId", nullable: true, recipName: "Events" }
,WorkflowIntentOwner : { type: "User", field: "WorkflowIntentOwnerId", nullable: false, recipName: "EventsByWorkflowIntentOwnerId" }
// one-to-many association (edit)
,AlertsByRelatedItemId : { type: "Alert", owner: "Event", field: "RelatedItemId", nullable: true, recipName: "EventByRelatedItemId", typeField: "RelatedItemType", typeValue: "Event" }
,EventContacts : { type: "EventContact", owner: "Event", field: "EventId", nullable: false, recipName: "Event" }
,EventMeetings : { type: "EventMeeting", owner: "Event", field: "EventId", nullable: false, recipName: "Event" }
,EventMeetingGroups : { type: "EventMeetingGroup", owner: "Event", field: "EventId", nullable: false, recipName: "Event" }
,NotesByRecordId : { type: "Note", owner: "Event", field: "RecordId", nullable: false, recipName: "EventByRecordId", typeField: "NoteTypeId", typeValue: "8c3b44a1-bd0c-4101-ac32-8e9bd798ae6d" }
,UserFieldValuesByRecordId : { type: "UserFieldValue", owner: "Event", field: "RecordId", nullable: false, recipName: "EventByRecordId", typeField: "TableName", typeValue: "EventForm" }
// many-to-many association (add/remove)
,CustomerContacts : { type: "CustomerContact", matrix: "EventCustomerContact", role: "EventId", recipName: "Events", recipRole: "CustomerContactId" }
}