Table of Contents
- API Reference
- Events
- GET /dpcalendar/events
- GET /dpcalendar/events/{id}
- POST /dpcalendar/events
- POST /dpcalendar/events/bulk
- PATCH /dpcalendar/events/{id}
- DELETE /dpcalendar/events/{id}
- GET /dpcalendar/events/{id}/ical
- GET /dpcalendar/events/{id}/occurrences
- Calendars
- Locations
- Bookings
- Tickets
- Caching
- Error Responses
API Reference
Complete endpoint documentation for MokoDPCalendarAPI v03.01.00.
Base path: /api/index.php/v1
All requests require the Authorization: Bearer <token> header. Responses use JSON:API format (application/vnd.api+json) unless otherwise noted.
Events
GET /dpcalendar/events
List events with optional filtering, sorting, and pagination.
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
page[limit] |
integer | 20 | Results per page (max 100) |
page[offset] |
integer | 0 | Number of results to skip |
sort |
string | Sort field. Prefix with - for descending |
|
filter[search] |
string | Search by title or description | |
filter[start_date] |
string | Events starting on or after this date (ISO 8601) | |
filter[end_date] |
string | Events ending on or before this date (ISO 8601) | |
filter[catid] |
integer | Filter by calendar/category ID | |
filter[featured] |
integer | 1 = featured only, 0 = non-featured only |
|
filter[access] |
integer | Filter by Joomla access level | |
filter[language] |
string | Filter by language tag (e.g., en-GB) |
|
fields[events] |
string | Comma-separated list of fields to return | |
expand |
string | Include related data. Supported: locations |
Supported sort fields: id, title, start_date, end_date, catid, created
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
"https://example.com/api/index.php/v1/dpcalendar/events?filter[start_date]=2026-01-01&sort=-start_date&page[limit]=25"
Response: 200 OK with JSON:API collection
GET /dpcalendar/events/{id}
Get a single event by ID.
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id |
integer | Event ID |
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
"https://example.com/api/index.php/v1/dpcalendar/events/42"
Response: 200 OK with JSON:API resource
POST /dpcalendar/events
Create a new event.
Request Body (JSON):
| Field | Type | Required | Description |
|---|---|---|---|
title |
string | Yes | Event title |
catid |
integer | Yes | Calendar/category ID |
start_date |
string | Yes | Start date/time (YYYY-MM-DD HH:MM:SS) |
end_date |
string | Yes | End date/time (YYYY-MM-DD HH:MM:SS) |
description |
string | No | HTML description |
all_day |
integer | No | 1 = all-day event |
rrule |
string | No | RRULE recurrence string |
location_ids |
array | No | Array of location IDs |
color |
string | No | Hex color code |
Example:
curl -s -X POST \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/vnd.api+json" \
-d '{
"title": "Monthly Meetup",
"catid": 8,
"start_date": "2026-06-15 18:00:00",
"end_date": "2026-06-15 20:00:00",
"description": "<p>Join us for the monthly meetup!</p>"
}' \
"https://example.com/api/index.php/v1/dpcalendar/events"
Response: 200 OK with created event
POST /dpcalendar/events/bulk
Create multiple events in a single request.
Request Body: JSON array of event objects (same fields as single create).
Example:
curl -s -X POST \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/vnd.api+json" \
-d '[
{"title": "Event A", "catid": 8, "start_date": "2026-07-01 10:00:00", "end_date": "2026-07-01 12:00:00"},
{"title": "Event B", "catid": 8, "start_date": "2026-07-02 10:00:00", "end_date": "2026-07-02 12:00:00"}
]' \
"https://example.com/api/index.php/v1/dpcalendar/events/bulk"
Response: 200 OK with array of created events
PATCH /dpcalendar/events/{id}
Update an existing event. Send only the fields you want to change.
Example:
curl -s -X PATCH \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/vnd.api+json" \
-d '{"title": "Updated Title", "description": "<p>New description</p>"}' \
"https://example.com/api/index.php/v1/dpcalendar/events/42"
Response: 200 OK with updated event
DELETE /dpcalendar/events/{id}
Trash an event (soft delete).
Example:
curl -s -X DELETE \
-H "Authorization: Bearer YOUR_TOKEN" \
"https://example.com/api/index.php/v1/dpcalendar/events/42"
Response: 204 No Content
GET /dpcalendar/events/{id}/ical
Export a single event as iCal format.
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: text/calendar" \
"https://example.com/api/index.php/v1/dpcalendar/events/42/ical"
Response: 200 OK with Content-Type: text/calendar
GET /dpcalendar/events/{id}/occurrences
List all occurrences of a recurring event. Expands the RRULE into individual dates, respecting EXDATE exclusions.
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
"https://example.com/api/index.php/v1/dpcalendar/events/42/occurrences"
Response: 200 OK with JSON:API collection of occurrence objects
Calendars
GET /dpcalendar/calendars
List all calendars.
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
"https://example.com/api/index.php/v1/dpcalendar/calendars"
GET /dpcalendar/calendars/{id}
Get a single calendar by ID.
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
"https://example.com/api/index.php/v1/dpcalendar/calendars/8"
GET /dpcalendar/calendars/{id}/ical
Export an entire calendar as iCal format.
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: text/calendar" \
"https://example.com/api/index.php/v1/dpcalendar/calendars/8/ical"
Response: 200 OK with Content-Type: text/calendar
Locations
GET /dpcalendar/locations
List all locations.
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
"https://example.com/api/index.php/v1/dpcalendar/locations"
GET /dpcalendar/locations/{id}
Get a single location by ID.
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
"https://example.com/api/index.php/v1/dpcalendar/locations/5"
Bookings
GET /dpcalendar/bookings
List all bookings.
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
"https://example.com/api/index.php/v1/dpcalendar/bookings"
GET /dpcalendar/bookings/{id}
Get a single booking by ID. Includes associated tickets in the response.
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
"https://example.com/api/index.php/v1/dpcalendar/bookings/12"
Tickets
GET /dpcalendar/tickets
List all tickets.
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
"https://example.com/api/index.php/v1/dpcalendar/tickets"
GET /dpcalendar/tickets/{id}
Get a single ticket by ID.
Example:
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
"https://example.com/api/index.php/v1/dpcalendar/tickets/7"
Caching
The API supports ETag-based caching. Responses include an ETag header. Send the ETag value in subsequent requests via If-None-Match to receive a 304 Not Modified response when data has not changed.
# Note the ETag from response headers
curl -sI \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
"https://example.com/api/index.php/v1/dpcalendar/events"
# Conditional request
curl -s \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.api+json" \
-H 'If-None-Match: "etag-value"' \
"https://example.com/api/index.php/v1/dpcalendar/events"
Error Responses
| Status | Description |
|---|---|
400 |
Bad request (invalid parameters) |
401 |
Unauthorized (missing or invalid token) |
403 |
Forbidden (insufficient permissions) |
404 |
Resource not found |
304 |
Not Modified (ETag cache hit) |
Repo: MokoDPCalendarAPI . MokoStandards
| Revision | Date | Author | Description |
|---|---|---|---|
| 1.0 | 2026-05-10 | Moko Consulting | Initial API reference |