Skip to main content
All endpoints require a valid Bearer token. Results are automatically filtered to jobs accessible by the authenticated user — staff see all branches, agents see only their own branch.

Calendar Jobs

Get scheduled jobs

GET /api/calendar-jobs Returns jobs that have a booked_to_complete (works start) date, grouped by date. The response is used to populate the calendar view and supports filtering by date range and branch. Required permission: api.calendar.jobs.read
start_date
string
required
Start of the date range in YYYY-MM-DD format.
end_date
string
required
End of the date range in YYYY-MM-DD format.
branch_id
integer
Filter to a specific branch. Staff only — agents are automatically scoped to their own branch.
curl -X GET "https://propops.yourcompany.com/api/calendar-jobs?start_date=2024-06-01&end_date=2024-06-30" \
  -H "Authorization: Bearer <token>"
{
  "success": true,
  "data": {
    "2024-06-05": [
      {
        "ID": 1042,
        "uuid": "550e8400-e29b-41d4-a716-446655441042",
        "job_ref": "JOB-1042",
        "job_title": "Annual boiler service",
        "status_name": "In Progress",
        "priority_name": "Medium",
        "contractor_name": "Contractor_004",
        "full_address": "12 Oak Lane, Manchester, M2 3AB",
        "booked_to_complete": "2024-06-05"
      }
    ],
    "2024-06-07": [
      {
        "ID": 1051,
        "uuid": "550e8400-e29b-41d4-a716-446655441051",
        "job_ref": "JOB-1051",
        "job_title": "Leak repair - bathroom",
        "status_name": "Open",
        "priority_name": "High",
        "contractor_name": null,
        "full_address": "4 Pine Street, Leeds, LS1 1AB",
        "booked_to_complete": "2024-06-07"
      }
    ]
  },
  "total_jobs": 14,
  "date_range": {
    "start": "2024-06-01",
    "end": "2024-06-30"
  },
  "message": "Operation completed successfully"
}
data
object
An object keyed by date string (YYYY-MM-DD). Each value is an array of job objects scheduled on that date.
Jobs with no contractor assigned (contractor_name: null) are highlighted in the calendar UI as requiring action. Use GET /api/dashboard/no-contractor to fetch this list for the dashboard widget.