Skip to content

JOT Calendar

This page outlines the modeling of calendar objects and how they are accessed with the JOT API.

Overview

A calendar is used to group related components and define additional attributes and behaviours of such a group. For example, a calendar may define a roster for a team, or a task list for a project, or maybe a schedule of events for an automated system.

Calendar API

Whilst a JOT Calendar follows the iCalendar specification for Calendar properties, it does not follow the same nesting of components within a Calendar resource. Rather, the calendar and it's components are defined as different resource types accessible via different endpoints. So for a JOT calendar, the JSON structure is defined as follows:

    {
        "uid":"1",
        "name":"JustIn",
        "description":"",
        "source":"https://www.abc.net.au/news/feed/51120/rss.xml",
        "url":"https://www.abc.net.au/news/justin/",
        "image":"https://www.abc.net.au/news/image/8413416-1x1-144x144.png",
        "last-modified":"20210304T055223Z"
    }

The available endpoints for calendar management are defined in the following table.

Endpoint Action Description REST Verb
/calendars list-calendars Returns a filtered list of existing calendar objects GET
/calendars create-calendar Create and return a new calendar object POST
/calendar{Uid} get-calendar Returns a single existing calendar object GET
/calendar{Uid} set-calendar Replace an existing calendar object PUT
/calendar{Uid} update-calendar Update an existing calendar object PATCH
/calendar{Uid} delete-calendar Delete an existing calendar object DELETE

Calendar Persistence

The Calendar UID property is a feature of the primary key for persistence, however it may also incorporate other elements to support multi-tenancy, etc. For example, with DynamoDB a calendar record is as follows:

PK SK UID TYPE DATA Owner Group
GROUP#CALENDAR#UID GROUP#CALENDAR#UID UID CALENDAR {}

To support multiple access patterns the following Global Search Indexes (GSI) are defined.

GSI PK SK Description
GSI1 CALENDAR GROUP#CALENDAR#UID Retrieve a list of calendars
GSI2 GROUP#CALENDAR#UID GROUP#CALENDAR#UID Retrieve a calendar and it's components

Calendar Web Components

TBD.

Comments