RESTful Event Scheduler, version 0.3

AppliGate is developing a JSON based RESTful Web application for scheduling events e.g. a course. The application can be used by more than one account.

See also AppliGate's web site: http://www.appligate.nl/consultancy

We use the Chrome Web Store - Postman - REST Client extension to test the RESTful web services.

Change log

- 10.5.12 replaced http content negogiation by seperate uri's due to browser client problems.

Examples for End-users

URI's for everybody, no login required. The result is either JSON or a HTML formatted web page.

HTML Representation
=====================
GET - http://event-scheduler.appspot.com/descriptions/ - to
get all event descriptions.

GET - http://event-scheduler.appspot.com/descriptions/44001 - to get a specific
event description.

GET - http://event-scheduler.appspot.com/descriptions/44001/events/ - to get
all events belonging to an event description.

GET - http://event-scheduler.appspot.com/descriptions/?account=appligate - to
get all event descriptions of account "appligate".

GET - http://event-scheduler.appspot.com/descriptions/44001/events/40002 - to
get a specific event.

JSON Representation
===================
Add "json" before the request, e.g.
GET - http://event-scheduler.appspot.com/json/descriptions/ - to
get all event descriptions.

Filters for Event Descriptions
==============================
Filter for account name, e.g
GET - http://event-scheduler.appspot.com/descriptions/?account=appligate

Filter for start and count values, e.g. the first two Event Descriptions
GET - http://event-scheduler.appspot.com/descriptions/?start=0&count=2

Filter for account name, start and count values e.g.
GET - http://event-scheduler.appspot.com/descriptions/?account=appligate
&start=0&count=2

Filter for account name, category, start and count values
GET - http://event-scheduler.appspot.com/descriptions/?account=appligate
&cat=courselets&start=0&count=2

Filters for Events
==================
Filter for only future events
GET - http://event-scheduler.appspot.com/descriptions/44001/events/?option=current

JSONP

The application supports JSONP. You can add "?callback=yourCallbackFunctionName" to the urls to retrieve JSON values as callback function, e.g.

GET - http://event-scheduler.appspot.com/json/descriptions/?callback=processJSON
&account=appligate&cat=courselets&start=0&count=2

Example of an HTML/JavaScript page to process JSONP response:

Examples for Account Owners

Only for account owners, login required.

You can only create or edit resources when you have an account. In the future you will be able to register yourself, however for the moment when you want to play with the application you need to send a request for an account to rbontekoe@appligate.nl.

You can use e.g. Postman (Chrome extension).


To show, create, modify or delete Event Descriptions:

GET - https://event-scheduler.appspot.com/ac/descriptions/ - to show all 
event descriptions beloning to the account owner.

POST - https://event-scheduler.appspot.com/ac/descriptions/ - to create or 

PUT - https://event-scheduler.appspot.com/ac/descriptions/44001 - to modify event 
description:

{
    "shortDescription": "This course leads you through the essential steps to adapt an 
    application originally developed for Notes and then modified as a classic Domino web 
    application, to become a fully functional XPage application",
    "urlImage": "http://www.appligate.nl/images/4.png",
    "name": "XP852 - Lotus Domino Designer 8.5.2 Basic XPages Applications",
    "accountId": "appligate",
    "descr": "This course leads you through the essential steps to adapt an application 
    originally developed for Notes and then modified as a classic Domino web application, 
    to become a fully functional XPage application.",
    "links": null
}

DELETE - https://event-scheduler.appspot.com/ac/descriptions/28001 - to delete a
specific event description and all its events.

To show, create, modify or delete Events:

GET - https://event-scheduler.appspot.com/ac/descriptions/44001/events/ - to
show all events belonging to a specific event description.

POST - https://event-scheduler.appspot.com/ac/descriptions/44001/events/ - to create or

PUT - https://event-scheduler.appspot.com/ac/descriptions/44001/events/40002 - to 
modify a 4 day event:

{
    "eventTeam": [
        {
            "name": "Wil Faber",
            "role": "Training Coordinator",
            "email": "info@appligate.nl",
            "tel": null
        },
        {
            "name": "Rob Bontekoe",
            "role": "Instructor",
            "email": null,
            "tel": "+31 6 20 146 141"
        }
    ],
    "shortDescription": "4-day instructor-led XPages course, starting on November 1th 2012",
    "urlImage": "/images/4.png",
    "name": "XP852 - Lotus Domino Designer 8.5.2 Basic XPages Applications",
    "type": "Instructor-led Software Training",
    "description": "4-day intensive instructor-led XPages course. Student brings his 
    own laptop. For more information about this course please click on course details 
    and registration link below.",
    "accountId": "appligate",
    "eventDescrId": "44001",
    "websites": [
        {
            "description": "Course details",
            "url": "http://rbontekoe.wordpress.com/2010/12/29/xp852-lotus-domino-designer-8-5-2-basic-xpage-applications/",
            "target": "_blank"
        },
        {
            "description": "Registration",
            "url": "https://appligate-hrd.appspot.com/forms/enrollmentForm/44001/events/48001",
            "target": "_top"
        }
    ],
    "dateTimeSlots": [
        {
            "name": "Day 1",
            "description": "Sign up en test student's laptop",
            "speakers": [],
            "presentations": [
                {
                    "description": "Software installation instructions",
                    "url": "http://appligate.wordpress.com/category/8-software-installation/",
                    "target": "_blank"
                }
            ],
            "language": null,
            "location": "Seats2Meet Maarssen, Netherlands",
            "year": 2012,
            "month": 11,
            "day": 1,
            "hour": 8,
            "minute": 30,
            "duration": 30,
            "timeZone": "GMT+1"
        },
        {
            "name": "Day 1",
            "description": "Topic 1 - 7 (see course details)",
            "speakers": [],
            "presentations": [],
            "language": "Dutch",
            "location": "Seats2Meet Maarssen, Netherlands",
            "year": 2012,
            "month": 11,
            "day": 1,
            "hour": 9,
            "minute": 0,
            "duration": 480,
            "timeZone": "GMT+1"
        },
        {
            "name": "Day 2",
            "description": "Topic 8 - 13",
            "speakers": [],
            "presentations": [],
            "language": "Dutch",
            "location": "Seats2Meet Maarssen, Netherlands",
            "year": 2012,
            "month": 11,
            "day": 2,
            "hour": 9,
            "minute": 0,
            "duration": 480,
            "timeZone": "GMT+1"
        },
        {
            "name": "Day 3",
            "description": "Topic 14 - 19",
            "speakers": [],
            "presentations": [],
            "language": "Dutch",
            "location": "Seats2Meet Maarssen, Netherlands",
            "year": 2012,
            "month": 11,
            "day": 5,
            "hour": 9,
            "minute": 0,
            "duration": 480,
            "timeZone": "GMT+1"
        },
        {
            "name": "Day 4",
            "description": "Topic 20 - 26",
            "speakers": [],
            "presentations": [],
            "language": "Dutch",
            "location": "Seats2Meet Maarssen, Netherlands",
            "year": 2012,
            "month": 11,
            "day": 6,
            "hour": 9,
            "minute": 0,
            "duration": 480,
            "timeZone": "GMT+1"
        }
    ],
    "fees": [
        {
            "description": "Fee per person (tax not included)",
            "fee": 1460,
            "currency": ""
        }
    ]
}

DELETE - https://event-scheduler.appspot.com/ac/descriptions/44001/events/40002 -
to delete a specific event.