Focus Management Service
API Contract
REST
/api/v1/focus-positions
8 endpoints
GET
/api/v1/focus-positions/api/v1/focus-positions
List all saved focus position records
Public
Response Example
{
"data": [
{
"id": "fp-001",
"key": "modal-open-trigger",
"widget_key": "open-modal-btn",
"route_name": "AppointmentView",
"saved_at": "2026-03-26T09:30:00Z"
},
{
"id": "fp-002",
"key": "nav-back-anchor",
"widget_key": "back-nav-btn",
"route_name": "PatientList",
"saved_at": "2026-03-26T10:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 2
}
}
GET
/api/v1/focus-positions/api/v1/focus-positions/:id
Get a saved focus position record by ID
Public
Response Example
{
"id": "fp-001",
"key": "modal-open-trigger",
"widget_key": "open-modal-btn",
"route_name": "AppointmentView",
"saved_at": "2026-03-26T09:30:00Z"
}
POST
/api/v1/focus-positions/api/v1/focus-positions
Save a focus position for later restoration
Public
Request Example
{
"key": "drawer-open-trigger",
"widget_key": "sidebar-toggle-btn",
"route_name": "Dashboard"
}
Response Example
{
"id": "fp-003",
"key": "drawer-open-trigger",
"widget_key": "sidebar-toggle-btn",
"route_name": "Dashboard",
"saved_at": "2026-03-26T11:40:00Z"
}
PUT
/api/v1/focus-positions/api/v1/focus-positions/:id
Update a saved focus position record
Public
Request Example
{
"widget_key": "sidebar-hamburger-btn",
"route_name": "Dashboard"
}
Response Example
{
"id": "fp-003",
"key": "drawer-open-trigger",
"widget_key": "sidebar-hamburger-btn",
"route_name": "Dashboard",
"saved_at": "2026-03-26T11:40:00Z",
"updated_at": "2026-03-26T11:45:00Z"
}
DELETE
/api/v1/focus-positions/api/v1/focus-positions/:id
Delete a saved focus position record
Public
Response Example
{
"message": "Focus position fp-003 deleted"
}
POST
/api/v1/focus-positions/api/v1/focus-positions/move
Move the UI focus to a specified widget immediately
Public
Request Example
{
"widget_key": "confirm-delete-btn",
"session_id": "sess-abc123"
}
Response Example
{
"widget_key": "confirm-delete-btn",
"focused": true,
"focused_at": "2026-03-26T11:41:00Z"
}
POST
/api/v1/focus-positions/api/v1/focus-positions/restore
Restore focus to a previously saved position by key
Public
Request Example
{
"saved_key": "modal-open-trigger",
"session_id": "sess-abc123"
}
Response Example
{
"saved_key": "modal-open-trigger",
"widget_key": "open-modal-btn",
"restored": true,
"restored_at": "2026-03-26T11:42:00Z"
}
POST
/api/v1/focus-positions/api/v1/focus-positions/defer
Schedule a focus move to a widget after a specified delay
Public
Request Example
{
"widget_key": "success-toast-close-btn",
"delay_ms": 300,
"session_id": "sess-abc123"
}
Response Example
{
"widget_key": "success-toast-close-btn",
"delay_ms": 300,
"deferred_until": "2026-03-26T11:43:00.300Z",
"scheduled": true
}