# paths./{annID}.get.description
1. Get details of the announcement. 
2. Add log if the announcement is active.

# paths./{annID}.get.responses.403.description
Login user not authorized to perform this action

# paths./Active.get.description
1. Get the list of active announcements (for all teaching/enrolled modules) that are accessible to the login user.
2. Add log if titleOnly is set to false

# paths./Active.get.parameters[].description
True by default. Set to False to return announcement details and add log.

# paths./Active.get.responses.403.description
Login user not authorized to perform this action

# paths./Unread.get.description
1. Get the list of unread announcements (for all teaching/enrolled modules) that are accessible to the login user.
2. Add log for all active announcements if titleOnly is set to false

# paths./Unread.get.parameters[].description
True by default. Set to False to return announcement details and add log.

# paths./Unread.get.responses.403.description
Login user not authorized to perform this action

# paths./.put.description
1. Update an announcement.
2. Only users with Access_Setting_Update access to the announcement can update it.
3. If InheritedResourceID is valid, the announcement will inherit its access rights from InheritedResourceID.
4. If InheritedResourceID is null but group and/or user access are/is defined, the groups and users will have access to the announcement.
5. If InheritedResourceID is null and no group/user access is defined, only creator will have access to the announcement.

# paths./.put.responses.403.description
Login user not authorized to perform this action

# paths./.post.description
1. Create a new announcement and add log for the login user.
2. Only users with Access_Setting_Update access to the module can create a new announcement.
3. If InheritedResourceID is valid, the announcement will inherit its access rights from InheritedResourceID.
4. If InheritedResourceID is null but group and/or user access are/is defined, the groups and users will have access to the announcement.
5. If InheritedResourceID is null and no group/user access is defined, only creator will have access to the announcement.

# paths./.post.responses.403.description
Login user not authorized to perform this action

# paths./.delete.description
Only users with Access_Delete access to the announcements can delete them.

# paths./.delete.responses.200.description
Returns IDs of the announcements deleted

# paths./.delete.responses.403.description
Login user not authorized to perform this action

# paths./.patch.description
1. Publish or unpublish an announcement.
2. Only users with Access_Setting_Update access to the announcement can publish or unpublish it.

# paths./.patch.responses.403.description
Login user not authorized to perform this action

# paths./Active/{parentID}.get.description
1. Get the list of active announcements (for one module) that are accessible to the login user.
2. Add log if titleOnly is set to false.

# paths./Active/{parentID}.get.parameters[].description
True by default. Set to False to return announcement details and add log.

# paths./Active/{parentID}.get.responses.403.description
Login user not authorized to perform this action

# paths./NonArchived/{parentID}.get.summary
Get non-archived announcements by module

# paths./NonArchived/{parentID}.get.description
1. Non-archived announcements include both scheduled and active announcements.
2. Get the list of non-archived announcements (for one module) that are accessible to the login user.
3. Add log for all active announcements if titleOnly is set to false.
4. Only users with Access_Setting_Read access to the scheduled announcements can view them.

# paths./NonArchived/{parentID}.get.parameters[].description
True by default. Set to False to return announcement details and add log.

# paths./NonArchived/{parentID}.get.responses.403.description
Login user not authorized to perform this action

# paths./Archived/{parentID}.get.description
1. Get the list of archived announcements (for one module) that are accessible to the login user.
2. Only users with Access_Setting_Read access to the archived announcements can view them.

# paths./Archived/{parentID}.get.parameters[].description
True by default. Set to False to return announcement details.

# paths./Archived/{parentID}.get.responses.403.description
Login user not authorized to perform this action

# components.schemas.contract.ACL.Models.Access_Result.properties.access_Full.description
all accesses on the resource and its contents

# components.schemas.contract.ACL.Models.Access_Result.properties.access_Settings_Read.description
read-only access on the resource setting

# components.schemas.API_Announcement.API.Announcement.properties.expireAfter.description
Announcement expiry date. Students can view expired announcement however the announcement will not be highlighted as "New".

# components.schemas.API_Announcement.API.Announcement.properties.archiveAfter.description
Announcement display end date. Students cannot view announcement that has been archived.

# components.schemas.API_Announcement.API.Announcement.properties.sms.description
True if the announcement has been sent by SMS

# components.schemas.API_Announcement.API.Announcement.properties.email.description
True if the announcement has been sent by email

# components.schemas.API_Announcement.API.Announcement.properties.excludeOwner.description
True to exclude module owner from the list of email/SMS recipients.

# components.schemas.API_Announcement.API.Announcement.properties.creatorID.description
The Guid of the user who created the announcement

# components.schemas.API_Announcement.API.Announcement.properties.creatorName.description
The name of the user who created the announcement

# components.schemas.API_Announcement.API.Announcement.properties.creatorUserID.description
The user ID of the user who created the announcement

# components.schemas.API_Announcement.API.Announcement.properties.creatorEmail.description
The email address of the user who created the announcement

# components.schemas.API_Announcement.API.Announcement.properties.lastUpdatedDate.description
The date the announcement is last updated

# components.schemas.API_Announcement.API.Announcement.properties.lastUpdatedBy.description
The Guid of the user who last updated the announcement

# components.schemas.API_Announcement.API.Announcement.properties.lastUpdatedByName.description
The name of the user who last updated the announcement

# components.schemas.API_Announcement.API.Announcement.properties.lastUpdatedByUserID.description
The user ID of the user who last updated the announcement

# components.schemas.API_Announcement.API.Announcement.properties.lastUpdatedByEmail.description
The email address of the user who last updated the announcement

# components.schemas.API_Announcement.Models.Announcement.properties.startDate.description
the date which this resource is open to students.

# components.schemas.API_Announcement.Models.Announcement.properties.endDate.description
the date which this resource is closed from students.

# components.schemas.API_Announcement.Models.Announcement.properties.rootID.description
the root ID if any. For those resources which do not have a parent, the parent ID value will be the same as the ID.

# components.schemas.API_Announcement.Models.Announcement.properties.creatorID.description
the ID of the user who created this record

# components.schemas.API_Announcement.Models.Announcement.properties.lastUpdatedDate.description
the date this record is edited last time

# components.schemas.API_Announcement.Models.Announcement.properties.lastUpdatedBy.description
the ID of the user who edited this record last time

# components.schemas.API_Announcement.Models.Announcement.properties.lastDeletedDate.description
the date this record is deleted if the value is not null

# components.schemas.API_Announcement.Models.Announcement.properties.lastDeletedBy.description
the ID of the user who deleted this record if the value is not null

# components.schemas.API_Announcement.Models.Announcement.properties.publish.description
the publish flag which determin whether the record is published to students.

# components.schemas.API_Announcement.Models.Announcement.properties.properties.description
the serialized string for the rest content properites.

# components.schemas.contract.ACL.Models.InputRoleAccess.properties.groupAccess.description
Group access rights defined for this resource

# components.schemas.contract.ACL.Models.InputRoleAccess.properties.userAccess.description
Individual user access rights which is different from the groups the user belongs to (if any)

# components.schemas.contract.ACL.Models.InputRoleAccess.properties.publicAccess.description
the access rights which the user defined for public. null means NO_ACCESS

# components.schemas.contract.ACL.Models.InputRoleAccess.properties.inheritedResourceID.description
not null means it follow permission from another resource

# components.schemas.API_Announcement.API.InputAnnouncementForCreate.properties.parentID.description
ID of the parent resource. Set to null if the announcement has no parent resource.

# components.schemas.API_Announcement.API.InputAnnouncementForCreate.properties.expireAfter.description
Announcement expiry date. Students can view expired announcement however the announcement will not be highlighted as "New".

# components.schemas.API_Announcement.API.InputAnnouncementForCreate.properties.archiveAfter.description
Announcement display end date. Students cannot view announcement that has been archived.

# components.schemas.API_Announcement.API.InputAnnouncementForCreate.properties.publish.description
True by default. Students cannot view announcements that are un-published.

# components.schemas.API_Announcement.API.InputAnnouncementForCreate.properties.sms.description
False by default. Set to True to send the announcement by SMS.

# components.schemas.API_Announcement.API.InputAnnouncementForCreate.properties.email.description
False by default. Set to True to send the announcement by email.

# components.schemas.API_Announcement.API.InputAnnouncementForCreate.properties.excludeOwner.description
False by default. True to exclude module owner from the list of email/SMS recipients.

# components.schemas.API_Announcement.API.InputAnnouncementForCreate.properties.access.description
Announcement access rights, refer to [contract.ACL.Models.InputRoleAccess]
Public access not supported for announcement.

# components.schemas.API_Announcement.API.InputAnnouncementForCreate.description
HTTP Post Input class for announcement creation

# components.schemas.API_Announcement.API.InputAnnouncementForUpdate.properties.expireAfter.description
Announcement expiry date. Students can view expired announcement however the announcement will not be highlighted as "New".

# components.schemas.API_Announcement.API.InputAnnouncementForUpdate.properties.archiveAfter.description
Announcement display end date. Students cannot view announcement that has been archived.

# components.schemas.API_Announcement.API.InputAnnouncementForUpdate.properties.publish.description
True by default. Students cannot view announcements that are un-published.

# components.schemas.API_Announcement.API.InputAnnouncementForUpdate.properties.sms.description
False by default. Set to True to send the announcement by SMS.

# components.schemas.API_Announcement.API.InputAnnouncementForUpdate.properties.email.description
False by default. Set to True to send the announcement by email.

# components.schemas.API_Announcement.API.InputAnnouncementForUpdate.properties.excludeOwner.description
False by default. True to exclude module owner from the list of email/SMS recipients.

# components.schemas.API_Announcement.API.InputAnnouncementForUpdate.properties.access.description
Announcement access rights, refer to [contract.ACL.Models.InputRoleAccess]
Public access not supported for announcement.

# components.schemas.API_Announcement.API.InputAnnouncementForUpdate.description
HTTP Post Input class for announcement modification