Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Introduction

The provisioning API is an admin-only API used to create users and push synchronisations in MyTimetable. This API can be used in your user provisioning processes to support an push synchronisation 'opt-out' scenario. The API is supported from MyTimetable version 3.0, and only supports JSON output and form-encoded input.

User resources

/users

MethodGET

Description: Query all known usernames.

Parameters: none

Request URL

Code Block
languagenone
$base_url/api/v0/users

Example response body

Code Block
languagenone
{
    "users": [
        "alice", 
        "bob", 
        "carol"
    ]
}

/users/{username}

MethodPUT

Description: Ensures a user with the specified username exists.

Parameters

NameDescriptionDefault value
username(required)The username for which a user profile should be created if it doesn't exist already.-

Example request URL

Code Block
languagenone
$base_url/api/v0/users/alice

Example response body: none (status code 204 indicates success/user already exists)

/users/{username}

MethodDELETE

Description: Deletes the user profile with the specified username if it exists.

Parameters

NameDescriptionDefault value
username(required)The username for which a user profile should be deleted if it exists.-

Example request URL

Code Block
languagenone
$base_url/api/v0/users/alice

Example response body: none (status code 204 indicates success/user not found)

/users/{username}/synchronizations

MethodGET

Description: Query all synchronizations for a user.

Parameters: 

NameDescriptionDefault value
username(required)The username for which the synchronization should be created.-

Example request URL

Code Block
languagenone
$base_url/api/v0/users/alice/synchronizations

Example response body

Code Block
languagenone
{
    "synchronizations": [
        {
            "id": 1, 
            "type": "ews", 
            "username": "alice"
        }
    ]
}

/users/{username}/synchronizations

MethodDELETE

Description: Delete all synchronizations for a user.

Parameters: 

NameDescriptionDefault value
username(required)The username for which the synchronizations should be deleted.-
unlinkMode(required)

The unlink mode indicates what should happen to the events in the user's calendar:

  • UNLINK_ONLYLeaves all events in place.
  • DELETE_FUTURE_EVENTSOnly events which have been pushed with this specific synchronization id and which have a start date in the future are removed.
  • DELETE_ALL_EVENTSAll events which have been pushed with this specific synchronization id are removed.
  • CLEANUPAll events which have been pushed by this MyTimetable instance are removed, even those with a different synchronization id.
-

Example request URL

Code Block
languagenone
$base_url/api/v0/users/alice/synchronizations?unlinkMode=DELETE_ALL_EVENTS

Example response body: none (status code 204 indicates success)

/users/{username}/synchronizations/{type}

MethodDELETE

Description: Delete synchronizations of a certain type for a certain user.

Parameters: 

NameDescriptionDefault value
username(required)The username for which the synchronizations should be deleted.-
type(required)The synchronization type, which indicates the calendaring service provider.-
unlinkMode(required)

The unlink mode indicates what should happen to the events in the user's calendar:

  • UNLINK_ONLYLeaves all events in place.
  • DELETE_FUTURE_EVENTSOnly events which have been pushed with this specific synchronization id and which have a start date in the future are removed.
  • DELETE_ALL_EVENTSAll events which have been pushed with this specific synchronization id are removed.
  • CLEANUPAll events which have been pushed by this MyTimetable instance are removed, even those with a different synchronization id.
-

Example request URL

Code Block
languagenone
$base_url/api/v0/users/alice/synchronizations/ews?unlinkMode=DELETE_ALL_EVENTS

Example response body: none (status code 204 indicates success; 422 indicates no synchronizations found)

Synchronization resources

/synchronizations

MethodGET

Description: Query all synchronizations.

Parameters: none

Request URL

Code Block
languagenone
$base_url/api/v0/synchronizations

Example response body

Code Block
languagenone
{
    "synchronizations": [
        {
            "id": 1,
            "username": "alice",
            "type": "o365"
        },
        {
            "id": 2,
            "username": "bob",
            "type": "googlecalendar"
        }
    ]
}

/synchronizations

MethodPUT

Description: Sets up a synchronization with a user's external calendar.

Parameters

NameDescriptionDefault value
username(required)The username for which the synchronization should be created.-
type(required)The synchronization type, which indicates the calendaring service provider.-
provisioning_smtpAddress *The user's mailbox address in Exchange or Office 365.-

* Only applicable when using a ProvisioningPreDelegatedEWSLinkingAdapter or ProvisioningPreAuthorizedOffice365LinkingAdapter.

Example request URL

Code Block
languagenone
$base_url/api/v0/synchronizations

Example request body (application/x-www-form-urlencoded)

Code Block
languagenone
username=alice&type=ews&provisioning_smtpAddress=alice@example.org

Example response body:

Code Block
languagenone
{
    "synchronization":
        {
            "id": 1,
            "username": "alice",
            "type": "ews"
        }
}

/synchronizations/{id}

MethodDELETE

Description: Deletes the synchronization with the specified id.

Parameters

NameDescriptionDefault value
id(required)The id of the synchronization which should be deleted.-
unlinkMode(required)

The unlink mode indicates what should happen to the events in the user's calendar:

  • UNLINK_ONLYLeaves all events in place.
  • DELETE_FUTURE_EVENTSOnly events which have been pushed with this specific synchronization id and which have a start date in the future are removed.
  • DELETE_ALL_EVENTSAll events which have been pushed with this specific synchronization id are removed.
  • CLEANUPAll events which have been pushed by this MyTimetable instance are removed, even those with a different synchronization id.
-

Example request URL

Code Block
languagenone
$base_url/api/v0/synchronizations/3?unlinkMode=UNLINK_ONLY

Example response body: none (status code 204 indicates success; 422 indicates synchronization not found)

Sample usage

If you want to create a large number of synchronisations, create a text file with the username and email address of the users. Then you can run the following shell script to create the users:

Code Block
languagebash
while read user mail
do
curl -v -X PUT -H apiToken:xxx https://mytimetable_host/api/v0/users/$user
done < users.txt

The following script will create an 'o365' synchronisation for each user:

Code Block
languagebash
while read user mail
do
curl -v -X PUT -H apiToken:xxx -d username=$user -d type=o365 -d provisioning_smtpAddress=$mail https://mytimetable_host/api/v0/synchronizations
done < users.txt