CalendarEvents

# Model & Relations

Namespace

App\CalendarEvents

Relations

Relation Key Type Relation Field(s)
User user Belongs to user_id
Calendar departments Belongs to many Intermediate table
Departments departments Belongs to many Intermediate table

Computed Properties

  • hash - The hash representation of the CalendarEvent

Traits

  • TriggersNotifications

WARNING

All kinds of Query Manipulation are disabled for this module.

# List

Get a list of all CalendarEvents the current authenticated User is allowed to view.

Definition

GET /api/calendar-events

Example Request

$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('GET', '/api/calendar-events', [
    'headers' => ['Authorization' => "Bearer {accessToken}"]
]);

Example Response Body

[
  {
    "id": 1,
    "user_id": 8,
    "calendar_id": 1,
    "title": "CalendarEvent-1",
    "all_day": 1,
    "start": "2020-03-17 00:00:00",
    "end": "2020-03-23 00:00:00",
    "interval": {
      "type": "weekly",
      "each_weeks": 1,
      "days_in_week": [3]
    },
    "interval_end": null,
    "location": null,
    "description": null,
    "created_at": "2020-03-05 09:54:26",
    "updated_at": "2020-03-05 09:54:26",
    "repeat_date": false,
    "hash": "0gzevr2xpolgmwlm4nyd86wj",
    "color": "#009688",
    "user": {
      "id": 8,
      "role_id": 3,
      "username": "jeremy.doe",
      "first_name": "Jeremy",
      "last_name": "Doe",
      "active": 1,
      "group_account": 0,
      "deleted_at": null,
      "blacked_out_at": null,
      "full_name": "Jeremy Doe",
      "online": 0,
      "role": {
        "id": 3,
        "department_id": 3,
        "name": "Usergroup-2",
        "department": {
          "id": 3,
          "name": "Usergroup-2"
        }
      }
    },
    "calendar": {
      "id": 1,
      "name": "Calendar-1",
      "color": "#009688"
    },
    "departments": [
      {
        "id": 2,
        "name": "Usergroup-1"
      },
      {
        "id": 3,
        "name": "User-Group-2"
      },
      {
        "id": 4,
        "name": "User-Group-3"
      }
    ]
  },
  {
    "id": 2,
    "user_id": 8,
    "calendar_id": 2,
    "title": "CalendarEvent-2",
    "all_day": 1,
    "start": "2020-03-03 00:00:00",
    "end": "2020-03-09 00:00:00",
    "interval": null,
    "interval_end": null,
    "location": null,
    "description": null,
    "created_at": "2020-03-05 09:53:38",
    "updated_at": "2020-03-05 09:53:38",
    "repeat_date": false,
    "hash": "0p8mweyzxnlzevlrd5vgk47j",
    "color": "#CDDC39",
    "user": {
      "id": 8,
      "role_id": 3,
      "username": "jeremy.doe",
      "first_name": "Jeremy",
      "last_name": "Schmidt",
      "active": 1,
      "group_account": 0,
      "deleted_at": null,
      "blacked_out_at": null,
      "full_name": "Jeremy Doe",
      "online": 0,
      "role": {
        "id": 3,
        "department_id": 3,
        "name": "UserGroup-2",
        "department": {
          "id": 3,
          "name": "UserGroup-2"
        }
      }
    },
    "calendar": {
      "id": 2,
      "name": "Calendar-2",
      "color": "#CDDC39"
    },
    "departments": [
      {
        "id": 2,
        "name": "Usergroup-1"
      },
      {
        "id": 3,
        "name": "Usergroup-2"
      }
    ]
  }
]

# Get

Get a single CalendarEvent by id.

Definition

GET /api/calendar-events/{id}

Example Request

$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('GET', '/api/calendar-events/1', [
    'headers' => ['Authorization' => "Bearer {accessToken}"]
]);

Example Response

{
  "id": 1,
  "user_id": 8,
  "calendar_id": 1,
  "title": "CalendarEvent-1",
  "all_day": 1,
  "start": "2020-03-17 00:00:00",
  "end": "2020-03-23 00:00:00",
  "interval": {
    "type": "weekly",
    "each_weeks": 1,
    "days_in_week": [3]
  },
  "interval_end": null,
  "location": null,
  "description": null,
  "created_at": "2020-03-05 09:54:26",
  "updated_at": "2020-03-05 09:54:26",
  "repeat_date": false,
  "hash": "0gzevr2xpolgmwlm4nyd86wj",
  "color": "#009688",
  "user": {
    "id": 8,
    "role_id": 3,
    "username": "jeremy.doe",
    "first_name": "Jeremy",
    "last_name": "Doe",
    "active": 1,
    "group_account": 0,
    "deleted_at": null,
    "blacked_out_at": null,
    "full_name": "Jeremy Doe",
    "online": 0,
    "role": {
      "id": 3,
      "department_id": 3,
      "name": "Usergroup-2",
      "department": {
        "id": 3,
        "name": "Usergroup-2"
      }
    }
  },
  "calendar": {
    "id": 1,
    "name": "Calendar-1",
    "color": "#009688"
  },
  "departments": [
    {
      "id": 2,
      "name": "Usergroup-1"
    },
    {
      "id": 3,
      "name": "User-Group-2"
    },
    {
      "id": 4,
      "name": "User-Group-3"
    }
  ]
}

# Create

Create a new CalendarEvent.

Definition

POST /api/calendar-events

Request Keys

Key Type Default Description
user_id* integer - The related User
calendar_id* integer - The related Calendar
department_ids* string - The Departments that are allowed to see the CalendarEvent (seperated by comma)
title* string - The title of the CalendarEvent
all_day* boolean - Whether the CalendarEvent is a full day appointment
start* date_time - When the CalendarEvent starts
end* date_time - When the CalendarEvent ends
interval string - When to repeat the CalendarEvent.
interval_end string - When to end the repeating
location string - Location of the CalendarEvent
description string - Description of the CalendarEvent

Keys with * are required.

Advanced Key-Specifications

  • interval - The syntax for intervals can be found here
  • interval_end - The syntax for intervals can be found here

Example Request

$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/calendar-events', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        'user_id' => 3,
        'calendar_id' => 1,
        'department_ids' => '2,3',
        'title' => 'CalendarEvent-1',
        'all_day' => true,
        'start' => '2020-01-06 00:00:00',
        'end' => '2020-02-06 00:00:00',
        'interval' => 'w:::1',
        'interval_end' => 'r:::10',
        'location' => '',
        'description' => ''
    ]
]);

Example Response Body

{
    "status": "success",
    "data": {
        "user_id": "8",
        "calendar_id": "1",
        "title": "CalendarEvent-1",
        "all_day": "1",
        "start": "2020-01-06 00:00:00",
        "end": "2020-02-06 00:00:00",
        "interval": {
            "type": "weekly",
            "each_weeks": 1
        },
        "interval_end": {
            "type": "repeats",
            "repeats": 3
        },
        "updated_at": "2020-06-05 17:31:06",
        "created_at": "2020-06-05 17:31:06",
        "id": 1,
        "hash": "6o8m0kz5yw10xx1pr9e4vxj2",
        "color": "#2196F3",
        "departments": [
            {
                "id": 2,
                "name": "UserGroup-1",
                "created_at": "2018-09-11 12:47:02",
                "updated_at": "2018-09-11 12:47:02",
                "deleted_at": null
            },
            {
                "id": 3,
                "name": "UserGroup-2",
                "created_at": "2018-09-11 12:47:08",
                "updated_at": "2018-09-11 12:47:08",
                "deleted_at": null
            }
        ],
        "user": {
            "id": 8,
            "username": "jeremy.doe",
            "first_name": "Jeremy",
            "last_name": "Doe",
            "active": 1,
            "group_account": 1,
            "role_id": 2,
            "profile_picture": "/assets/images/profile-pictures/profile-picture-group-account-default.png",
            "street": null,
            "zipcode": null,
            "city": null,
            "email": null,
            "phone": null,
            "birthdate": null,
            "gender": null,
            "entering_date": null,
            "leaving_date": null,
            "staff_number": null,
            "wants_email_notifications": 0,
            "created_at": "2018-09-11 13:47:07",
            "updated_at": "2019-04-26 16:04:02",
            "password_updated_at": "2019-04-26 16:04:02",
            "deactivated_at": null,
            "deleted_at": null,
            "blacked_out_at": null,
            "default_route": "",
            "full_name": " ",
            "online": 0
        },
        "calendar": {
            "id": 1,
            "name": "Calendar-1",
            "color": "#2196F3",
            "sort_number": 1,
            "created_at": "2018-09-11 00:00:00",
            "updated_at": "2018-09-13 19:15:15"
        }

# Update

Update an existing CalendarEvent by id.

Definition

PUT /api/calendar-event/{id}

Request Keys

Key Type Default Description
user_id integer - The related User
calendar_id integer - The related Calendar
department_ids string - The Departments that are allowed to see the CalendarEvent (seperated by comma)
title string - The title of the CalendarEvent
all_day boolean - Whether the CalendarEvent is a full day appointment
start date_time - When the CalendarEvent starts
end date_time - When the CalendarEvent ends
interval string - When to repeat the CalendarEvent.
interval_end string - When to end the repeating
location string - Location of the CalendarEvent
description string - Description of the CalendarEvent

Advanced Key-Specifications

  • interval - The syntax for intervals can be found here
  • interval_end - The syntax for intervals can be found here

Example Request

$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('PUT', '/api/calendar-events/3', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        'description' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
        'interval_end' => 'r:::5'
    ]
]);

Example Response

{
  {
    "status": "success",
    "data": {
        "id": 1,
        "user_id": 8,
        "calendar_id": 1,
        "title": "CalendarEvent-1",
        "all_day": 1,
        "start": "2020-01-06 00:00:00",
        "end": "2020-02-06 00:00:00",
        "interval": {
            "type": "weekly",
            "each_weeks": 1
        },
        "interval_end": {
            "type": "repeats",
            "repeats": 5
        },
        "location": null,
        "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
        "created_at": "2020-06-05 17:31:06",
        "updated_at": "2020-06-05 17:31:06",
        "hash": "6o8m0kz5yw10xx1pr9e4vxj2",
        "color": "#2196F3",
        "calendar": {
            "id": 1,
            "name": "Calendar-1",
            "color": "#2196F3",
            "sort_number": 1,
            "created_at": "2018-09-11 00:00:00",
            "updated_at": "2018-09-13 19:15:15"
        }
    }
}

# Delete

Delete an existing CalendarEvent by id.

Definition

DELETE /api/calendar-events/{id}

Example Request

$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('DELETE', '/api/calendar-events/3', [
    'headers' => ['Authorization' => "Bearer {accessToken}"]
]);

Example Response

{
  "status": "success",
  "data": []
}

# Interval Syntax

Interval Sub-Type Syntax Description
daily d:::1 repeats every day
weekly w:::1 repeats every week
with weekdays w:::1d::1,2,3,4,5 repeats on the 1st, 2nd, 3rd, 4th and 5th day each week
monthly
day m:::1d::1 repeats on the 1st day each month
week m:::1w::1d::1 repeats on the 1st day each week each month
yearly
day y:::1d::1 repeats on the 1st day each year
week y:::1w::1d::1 repeats on the 1st day each week each month
repetition r:::1 Only usable for interval_end. Ends the repeating after 1 repetition
Last Updated: 02/22/2021