Mentor Location Service
API Contract
REST
/api/v1/mentor-locations
7 endpoints
GET
/api/v1/mentor-locations/api/v1/mentor-locations
List all mentor locations, optionally filtered by bounds and criteria
Public
Response Example
{
"data": [
{
"mentor_id": "mentor_7f3a2b",
"display_name": "Aria Lindqvist",
"lat": 59.9139,
"lng": 10.7522,
"availability": "available",
"specializations": [
"career-transitions",
"tech-industry"
],
"avatar_url": "https://cdn.example.org/avatars/mentor_7f3a2b.jpg",
"location_precision": "neighborhood",
"last_seen_at": "2026-03-26T08:14:00Z"
},
{
"mentor_id": "mentor_4c91de",
"display_name": "Jonas Ekberg",
"lat": 59.9272,
"lng": 10.7112,
"availability": "busy",
"specializations": [
"engineering",
"mentoring"
],
"avatar_url": "https://cdn.example.org/avatars/mentor_4c91de.jpg",
"location_precision": "neighborhood",
"last_seen_at": "2026-03-25T17:30:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 2
}
}
GET
/api/v1/mentor-locations/api/v1/mentor-locations/:mentor_id
Get a single mentor's current location and status
Public
Response Example
{
"mentor_id": "mentor_7f3a2b",
"display_name": "Aria Lindqvist",
"lat": 59.9139,
"lng": 10.7522,
"availability": "available",
"specializations": [
"career-transitions",
"tech-industry"
],
"avatar_url": "https://cdn.example.org/avatars/mentor_7f3a2b.jpg",
"location_precision": "neighborhood",
"last_seen_at": "2026-03-26T08:14:00Z"
}
POST
/api/v1/mentor-locations/api/v1/mentor-locations
Register or update a mentor's location
Public
Request Example
{
"mentor_id": "mentor_7f3a2b",
"lat": 59.9139,
"lng": 10.7522,
"availability": "available",
"location_precision": "neighborhood"
}
Response Example
{
"mentor_id": "mentor_7f3a2b",
"lat": 59.9139,
"lng": 10.7522,
"availability": "available",
"location_precision": "neighborhood",
"created_at": "2026-03-26T08:14:00Z"
}
PUT
/api/v1/mentor-locations/api/v1/mentor-locations/:mentor_id
Update a mentor's location or availability status
Public
Request Example
{
"lat": 59.9301,
"lng": 10.719,
"availability": "busy"
}
Response Example
{
"mentor_id": "mentor_7f3a2b",
"lat": 59.9301,
"lng": 10.719,
"availability": "busy",
"location_precision": "neighborhood",
"updated_at": "2026-03-26T09:00:00Z"
}
DELETE
/api/v1/mentor-locations/api/v1/mentor-locations/:mentor_id
Remove a mentor's location record (e.g., on consent revocation)
Public
Response Example
{
"mentor_id": "mentor_7f3a2b",
"deleted": true,
"deleted_at": "2026-03-26T09:05:00Z"
}
GET
/api/v1/mentor-locations/api/v1/mentor-locations/bounds
Get all mentor locations within a specific map bounding box with filter criteria
Public
Response Example
{
"data": [
{
"mentor_id": "mentor_7f3a2b",
"display_name": "Aria Lindqvist",
"lat": 59.9139,
"lng": 10.7522,
"availability": "available",
"specializations": [
"career-transitions"
],
"location_precision": "neighborhood"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1
},
"bounds": {
"sw_lat": 59.89,
"sw_lng": 10.7,
"ne_lat": 59.95,
"ne_lng": 10.8
}
}
POST
/api/v1/mentor-locations/api/v1/mentor-locations/refresh
Trigger a location refresh for all active mentors (admin/system operation)
Public
Request Example
{
"organization_id": "org_abc123"
}
Response Example
{
"refreshed_count": 42,
"triggered_at": "2026-03-26T09:10:00Z",
"status": "queued"
}