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"​?> <​rss​​xmlns: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:link​​href​=​"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​> </​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)

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

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

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

3. iCal

BEGIN:VCALENDAR VERSION:2.0 CALSCALE:GREGORIAN BEGIN:VEVENT DTSTART:20180128T003000Z DURATION:PT3H SUMMARY:Summary DESCRIPTION:Description UID:id 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)