All Topics > Online Version > Is there a REST API or WebHooks?
 
Yes we offer a REST API to allow access to the data in your online account. In addition we have Webhooks that can send information to other services based on actions that happen in your account.

We also partner with Zapier to make integration with our API even quicker and easier. Connect to 1000+ of your favorite tools with our Zapier app. Get our Zapier app here.

Within our API we use Hypermedia to allow you to explore the API and its calls. You can use many API browsers to see and interact with the API for your account like Postman. Once you are logged into your account simply start your API browser and point it to https://www.scheduleit.co.uk/api/.

API calls are made via the HTTP methods GET, POST, and DELETE. The responses return status codes indicating success or failure, along with any applicable headers, and JSON representing the affected fields (or nothing) in the message-body.


Security & Access

Authentication to the API is normally done using HTTP Basic Authentication where your account login (account number_login name) and password are required. You can also enter a login name and password in the URL parameters, and if accessing via your browser with a valid login token then access is automatically granted. The most compelling aspect about HTTP Basic Authentication is that it's simple, and you should of course always use HTTPS when submitting HTTP Basic Authentication credentials.

Although the connection between you and our servers is encrypted and protected by the SSL layer it is advised not to put your login details as URL parameters where possible. These could be stored in the clear in our server logs as well as being visible to snooping if your SSL connection is not secure.


URL
https://accountnum_loginname:password@www.scheduleit.co.uk/api/

cURL
$ch = curl_init('https://accountnum_loginname:password@www.scheduleit.co.uk/api/');
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
curl_close($ch);

cURL
$ch = curl_init('https://www.scheduleit.co.uk/api/');
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, 'accountnum_username:password');
$output = curl_exec($ch);
curl_close($ch);

cURL
$ch = curl_init('https://www.scheduleit.co.uk/api/');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization:Basic '.base64_encode('accountnum_username:password').''));
$output = curl_exec($ch);
curl_close($ch);

Base64 Encoding Tools

cURL (Limited Access - Login via GET will be removed in future updates)
$ch = curl_init('https://www.scheduleit.co.uk/api/');
$params = 'user=accountnum/loginname&pass=password';
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$output = curl_exec($ch);
curl_close($ch);





Retrieving User Information

Data is request via the URL path and additional parameters.

URL
https://accountnum_loginname:password@www.scheduleit.co.uk/api/

cURL
$ch = curl_init('https://accountnum_loginname:password@www.scheduleit.co.uk/api/');
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
curl_close($ch);





DATA SETS

Data set names can be your groups, resources, events, account, system, messages...



GET

GET is used to retrieve data without directly modifying it. Returned data is in json format unless CSV is specified (?format=csv).

  • GET /data set name

    Get the summary of your Groups, Resources or Events. Other data sets are available.

    GET /groups HTTP/1.1

    GET /resources HTTP/1.1

    GET /events HTTP/1.1


    Get the summary and Event where the Event ID is 1234

    GET /events/1234 HTTP/1.1




    Unless specific fields are specified only a summary is returned including total count of matching records. You must specify the fields if you need the actual data value.

  • fields=field names

    Field name examples:

  • id (all)
  • name (groups,resources)
  • email (resources,events)
  • positionv (groups,resources)
  • title (events)
  • date_start (events)
  • date_end (events)
  • owner (events)
  • ownername (events)
  • priority (events)
  • date_created (events)
  • date_modified (events)
    ...


    Get the id and Name fields from all your Groups

    GET /groups?fields=id,name HTTP/1.1


    Get the id, name and email addresses from all your Resources

    GET /resources?fields=id,name,email HTTP/1.1


    Get the id from all your Events within the default date range

    GET /events?fields=id HTTP/1.1


    Get the title of your Events where the Event ID is 1234

    GET /events/1234?fields=title HTTP/1.1




    Search the data sets for specific data.


  • search_id=search id
  • search_title=search text
  • search_name=search text
  • search_date_start=search date
  • search_date_end=search date
  • search_owner=search resource id
  • search_date_modified=(search type) search date
  • date_range_from=search date
  • date_range_to=search date


    Get any Events linked to a resource with the ID 123, 123 OR 456, and 123 AND 456

    GET /events/1234?fields=id&search_owner=123 HTTP/1.1

    GET /events/1234?fields=id&search_owner=123,456 HTTP/1.1

    GET /events/1234?fields=id&search_owner=123;456 HTTP/1.1


    Get Events for 2018

    GET /events?date_range_from=2018-01-01&date_range_to=2018-12-31 HTTP/1.1


    Get Events where the start date is from 2016-01-01, and where the title contains the word 'test'

    GET /events?date_range_from=2016-01-01&date_range_to=2020-01-01&search_title=test HTTP/1.1


    Get Events that where added or updated after a date, on date, before date, and not on date

    GET /events?search_date_modified=>2018-01-01 HTTP/1.1 (after date)

    GET /events?search_date_modified=2018-01-01 HTTP/1.1 (on date)

    GET /events?search_date_modified=<2018-01-01 HTTP/1.1 (before date)

    GET /events?search_date_modified=!2018-01-01 HTTP/1.1 (not on date)



    Get Groups where the ID is greater than 10 but less than 200

    GET /groups?search_id=>10,<200 HTTP/1.1





    Sort the returned records with the specified fields.

  • sort=field names

    Get the Name of your Groups and sort by the Name then descending by ID

    GET /groups?fields=name&sort=name,-id HTTP/1.1



    Get the ID of the last modified Event

    GET /events?fields=id&sort=-date_modified&limit=1 HTTP/1.1





    Only return the specified number of records.

  • limit=search value

    Get the Name of the first 5 records from your Groups

    GET /groups?fields=name&limit=5 HTTP/1.1






    POST

    POST is used to add or update data to your account. Returned response is in json format.

  • POST /data set name


    Create a new event by posting to...

    POST /events/


    Create a new group by posting to...

    POST /groups/


    Update an existing event with the ID of 1234

    POST /events/1234


    Add a new Event

    cURL
    $ch = curl_init();
    $fields = array(
    'title' => 'the title',
    'owner => '220',
    'date_start' => urlencode('2016-09-29 09:00:00'),
    'date_end' => urlencode('2016-09-29 17:00:00'),
    'notes' => 'the notes',
    'custom1' => 'custom 1',
    'custom2' => 'custom 2',
    'custom3' => 'custom 3',
    'custom4' => 'custom 4',
    'custom7' => 'custom 7',
    'custom8' => 'custom 8',
    'custom9' => 'custom 9',
    'starticon' => '1',
    'color_text' => '#66FF66',
    'color_back' => '#FFFFFF',
    'priority' => '7',
    'completed' => '75'
    );
    $post_data = '';
    foreach($fields as $key => $value) {
    $post_data .= $key.'='.$value.'&';;
    }
    rtrim($post_data, '&');
    curl_setopt($ch, CURLOPT_URL, 'https://accountnum_loginname:password@www.scheduleit.co.uk/api/events');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_exec($ch);



    Add a new Resource

    cURL
    $ch = curl_init();
    $fields = array(
    'name' => 'the resource name',
    'email' => 'the email address',
    'color_back' => '#a9f5a9',
    'color_text' => '#66FF66',
    'color_back_event' => '#ffffff',
    'data1' => '',
    'data2' => '',
    'data3' => '',
    'data4' => '',
    'data5' => '',
    'data6' => '',
    'data7' => '',
    'data8' => '',
    'data9' => '',
    'data10' => '',
    'geonav' => ''
    );
    $post_data = '';
    foreach($fields as $key => $value) {
    $post_data .= $key.'='.$value.'&';
    }
    rtrim($post_data, '&');
    curl_setopt($ch, CURLOPT_URL, 'https://accountnum_loginname:password@www.scheduleit.co.uk/api/resources');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_exec($ch);


    Add a new Group

    cURL
    $ch = curl_init();
    $fields = array(
    'name' => 'the group name',
    'color_back' => '#66FF66',
    'positionv' => '5',
    'min_resources' => '0',
    'max_resources' => '0',
    'hide_from_main' => '0',
    'hide_from_event' => '0'
    );
    $post_data = '';
    foreach($fields as $key => $value) {
    $post_data .= $key.'='.$value.'&';
    }
    rtrim($post_data, '&');
    curl_setopt($ch, CURLOPT_URL, 'https://accountnum_loginname:password@www.scheduleit.co.uk/api/groups');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_exec($ch);





    DELETE

    DELETE is used to delete data from your account. Returned response is in json format.

  • DELETE /data set name/record id

    cURL
    $ch = curl_init('accountnum_loginname:password@https://www.scheduleit.co.uk/api/events/1234');
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
    curl_setopt($ch, CURLOPT_POSTFIELDS);
    curl_exec($ch);


  • 2016-09-14 08:32:00


     
    Schedule it Ltd
    /faq/10640-is-there-a-rest-api-or-webhooks