Event Integration: Format of iCal, RSS and ATOM feeds
As a Campus Cloud administrator, you may be asked to troubleshoot integrated calendar feeds, such as by following the steps in this FAQ:
Integrated feeds must be in the correct format to appear in the campus app. There are specific formats for (1) RSS feeds, (2) ATOM feeds, and (3) iCal feeds.
1. RSS
<?xml version="1.0" encoding="UTF-8"?>
<rssxmlns:atom="http://www.w3.org/2005/Atom"xmlns:content="http://purl.org/rss/1.0/modules/content/"version="2.0">
<channel>
<title>Test Feed</title>
<link>http://example.com/test.atom</link>
<description>feed description</description>
<atom:linkhref="http://example.com/test.atom"rel="self" />
<lastBuildDate>Tue, 16 Apr 2019 14:45:15 +0000</lastBuildDate>
<item>
<title>Title</title>
<description>Description</description>
<guid>65c96b7f-a410-4494-b840-d5b82a5d2907</guid>
<pubDate>Tue, 16 Apr 2019 10:45:15 +0000</pubDate>
<endDate>Tue, 16 Apr 2019 11:45:15 +0000</endDate>
<image>
<url>https://www.w3schools.com/images/logo.gif</url>
</image>
</item>
...
</channel>
</rss>
Each <item> tag in the feed must contain the following:
<title> string
<description> string
<guid> string | number. Can be replaced by <id>
<pubDate> datetime. Can be replaced by <start_date>, <startDate>, <start>, <startdate>, <pubdate>, <published>
<endDate> datetime (optional)
<image> (optional)
If more than one of the <pubDate> tags is present, we use the first and ignore the others.
If no <endDate> is provided, the default value is 3 hours from <pubDate>.
Image is set in this priority:
If there is a url in the <image>, we set that as the Event image.
If not, we look for <enclosure url="http://example.com/file.jpg" length="123456789" type="jpg" />
If not, we look for any paths for images (in an <a> or <img> tag) within the description field, and set the first one we find as the Event image
If not, we apply our own default image logic to match on the most appropriate icon (based on keyword analysis of title/description, or date, or generic fall-back)
Note: Please make sure that the GUID key is unique for each event. The GUID key is a combination of the event host, feed URL, and GUID.
2. ATOM
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<id>2fff5f8a-39b9-4d7b-b102-28d53b28e0a2</id>
<title>Test Feed</title>
<updated>2019-04-16T14:45:15.475012+00:00</updated>
<link href="http://example.com" rel="alternate"/>
<link href="http://example.com/test.atom" rel="self"/>
<subtitle>feed description</subtitle>
<entry>
<title>Title</title>
<content>Description</content>
<id>65c96b7f-a410-4494-b840-d5b82a5d2907</id>
<published>Tue, 16 Apr 2019 10:45:15 +0000</published>
<endDate>Tue, 16 Apr 2019 11:45:15 +0000</endDate>
<image>
<url>https://www.w3schools.com/images/logo.gif</url>
</image>
</entry>
</feed>
Each <entry> tag in the feed must contain the following:
<title> string
<content> string
<id> string | number. Can be replaced by <guide>
<published> datetime. Can be replaced by <start_date>, <startDate>, <start>, <startdate>,<pubdate>, <published>
<endDate> datetime (optional)
<image> (optional)
If more than one of the <pubDate> tags is present, we use the first and ignore the others.
If no <endDate> is provided, the default value is 3 hours from <pubDate>.
Image is set in this priority:
If there is a url in the <image>, we set that as the Event image.
If not, we look for <enclosure url="http://example.com/file.jpg" length="123456789" type="jpg" />
If not, we look for any paths for images (in an <a> or <img> tag) within the description field, and set the first one we find as the Event image
If not, we apply our own default image logic to match on the most appropriate icon (based on keyword analysis of title/description, or date, or generic fall-back)
3. iCal
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTART:20180128T003000Z
DURATION:PT3H
SUMMARY:Summary
DESCRIPTION:Description
UID:id
IMAGE;VALUE=URI;DISPLAY=BADGE;FMTTYPE=image/png:http://example.com/images/party.png
END:VEVENT
...
We strongly recommend following the RFC 2445 specification to format the feed.
Each <BEGIN:VEVENT> tag in the feed must contain the following:
<DTSTART> Datetime
<SUMMARY> String
<DESCRIPTION> String (Optional)
<UID> String | Number. Can be replaced by <URL>
<DTEND> Datetime (Optional)
<DURATION> (Optional)
<LOCATION> String (Optional)
<RRULE> RRULE (Optional)
<IMAGE> See: iCalendar.org (Optional)
Important Notes about Integrated Events
The Host is set per integrated feed. This association of Event items to the Host that you have configured is applied during each sync. It is not possible to override this for specific items. The intention is for each integrated feed to be associated with a single Host.
Integrated Events cannot be set to use the Assessment functionality by default. If you enable “Assessment” for an integrated Event item, and that assessment receives an input (such as a check-in), then it will be considered a new item in the platform, separate from the integrated item. This is something you could do to divorce an Event from its feed. The caveat is that the Event will be created again from the feed, resulting in a duplicate. However, you can delete this duplicate, and it will NOT be recreated a second time.