The search endpoint returns results across multiple resource types in a single request. Results are automatically filtered to the data the authenticated user is permitted to see — a contractor only sees their own jobs, an agent only sees their branch’s data.
Global search
GET /api/search
Searches across branches, users, jobs, and settings pages simultaneously.
Required permission: api.search.global.manage
Method: GET only
Search term (minimum 2 characters). Matched against names, references, addresses, email addresses, and descriptions.
Comma-separated list of resource types to search: jobs, users, branches, settings. Defaults to all types accessible by the caller.
Maximum results per resource type (max 50).
curl -X GET "https://propops.yourcompany.com/api/search?q=boiler+repair" \
-H "Authorization: Bearer <token>"
{
"success": true,
"data": {
"jobs": [
{
"ID": 1042,
"uuid": "550e8400-e29b-41d4-a716-446655440042",
"job_ref": "JOB-1042",
"job_title": "Boiler repair — 14 Elm Close",
"status_name": "In Progress",
"full_address": "14 Elm Close, Leeds, LS1 2AB",
"highlight": "...annual <mark>boiler repair</mark> required..."
}
],
"users": [
{
"id": 32,
"name": "John Boiler",
"email": "john.boiler@example.com",
"account_type": "contractor"
}
],
"branches": [],
"settings": []
},
"query": "boiler repair",
"elapsed_ms": 18
}
Code examples
curl -X GET "https://propops.yourcompany.com/api/search?q=oak+road&types=jobs,users&limit=5" \
-H "Authorization: Bearer <token>"
System search
GET /api/system/search
An alternative search endpoint that returns only settings pages and configuration items. Useful for building admin navigation autocomplete.
Required permission: api.search.global.manage
curl -X GET "https://propops.yourcompany.com/api/system/search?q=smtp" \
-H "Authorization: Bearer <token>"
{
"success": true,
"data": [
{
"page": "Email Settings",
"path": "/admin/settings/email",
"description": "Configure SMTP server, sender address, and email templates"
}
]
}