User API
Coverage Spans
Coverage schedule, backup routing, manager assignments
/coverage-spansList coverage spans
Query parameters
Responses
truedraftpending_acceptancepending_manager_approvalscheduledactiveendedcancelledptosickemergencymanualRequest
curl 'https://app.openassistant.us/api/coverage-spans' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"coverageSpans": [
{
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": null,
"type": null
},
"status": "draft",
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z"
}
]
}/coverage-spansCreate coverage span
Request body
ptosickemergencymanualResponses
truedraftpending_acceptancepending_manager_approvalscheduledactiveendedcancelledptosickemergencymanualRequest
curl 'https://app.openassistant.us/api/coverage-spans' \
-X POST \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z",
"principals": [
{
"principal": "507f1f77bcf86cd799439011",
"backupCoordinator": "507f1f77bcf86cd799439011"
}
]
}'Response
{
"ok": true,
"coverageSpan": {
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": "string",
"type": "user"
},
"status": "draft",
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z"
}
}/coverage-spans/{spanId}Get a coverage span
Path parameters
Responses
truedraftpending_acceptancepending_manager_approvalscheduledactiveendedcancelledptosickemergencymanualRequest
curl 'https://app.openassistant.us/api/coverage-spans/<spanId>' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"coverageSpan": {
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": "string",
"type": "user"
},
"status": "draft",
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z"
}
}/coverage-spans/{spanId}Update a draft span
Path parameters
Request body
ptosickemergencymanualResponses
truedraftpending_acceptancepending_manager_approvalscheduledactiveendedcancelledptosickemergencymanualRequest
curl 'https://app.openassistant.us/api/coverage-spans/<spanId>' \
-X PATCH \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z",
"reason": "pto",
"requireManagerApproval": true
}'Response
{
"ok": true,
"coverageSpan": {
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": "string",
"type": "user"
},
"status": "draft",
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z"
}
}/coverage-spans/{spanId}Cancel a span
Path parameters
Responses
truedraftpending_acceptancepending_manager_approvalscheduledactiveendedcancelledptosickemergencymanualRequest
curl 'https://app.openassistant.us/api/coverage-spans/<spanId>' \
-X DELETE \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"coverageSpan": {
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": "string",
"type": "user"
},
"status": "draft",
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z"
}
}/coverage-spans/{spanId}/submitSubmit a coverage span
Path parameters
Responses
truedraftpending_acceptancepending_manager_approvalscheduledactiveendedcancelledptosickemergencymanualRequest
curl 'https://app.openassistant.us/api/coverage-spans/<spanId>/submit' \
-X POST \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"coverageSpan": {
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": "string",
"type": "user"
},
"status": "draft",
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z"
}
}/coverage-spans/{spanId}/acceptAccept a coverage span
Path parameters
Responses
truedraftpending_acceptancepending_manager_approvalscheduledactiveendedcancelledptosickemergencymanualRequest
curl 'https://app.openassistant.us/api/coverage-spans/<spanId>/accept' \
-X POST \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"coverageSpan": {
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": "string",
"type": "user"
},
"status": "draft",
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z"
}
}/coverage-spans/{spanId}/declineDecline a coverage span
Path parameters
Responses
truedraftpending_acceptancepending_manager_approvalscheduledactiveendedcancelledptosickemergencymanualRequest
curl 'https://app.openassistant.us/api/coverage-spans/<spanId>/decline' \
-X POST \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"coverageSpan": {
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": "string",
"type": "user"
},
"status": "draft",
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z"
}
}/coverage-spans/{spanId}/approveApprove a coverage span
Path parameters
Responses
truedraftpending_acceptancepending_manager_approvalscheduledactiveendedcancelledptosickemergencymanualRequest
curl 'https://app.openassistant.us/api/coverage-spans/<spanId>/approve' \
-X POST \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"coverageSpan": {
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": "string",
"type": "user"
},
"status": "draft",
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z"
}
}/coverage-spans/{spanId}/rejectReject a coverage span
Path parameters
Responses
truedraftpending_acceptancepending_manager_approvalscheduledactiveendedcancelledptosickemergencymanualRequest
curl 'https://app.openassistant.us/api/coverage-spans/<spanId>/reject' \
-X POST \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"coverageSpan": {
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": "string",
"type": "user"
},
"status": "draft",
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z"
}
}/coverage-spans/{spanId}/endEnd a coverage span
Path parameters
Responses
truedraftpending_acceptancepending_manager_approvalscheduledactiveendedcancelledptosickemergencymanualRequest
curl 'https://app.openassistant.us/api/coverage-spans/<spanId>/end' \
-X POST \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"coverageSpan": {
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": "string",
"type": "user"
},
"status": "draft",
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z"
}
}/coverage-spans/active-for-principal/{principalId}Check active coverage for a principal (chained resolution)
Path parameters
Responses
draftpending_acceptancepending_manager_approvalscheduledactiveendedcancelledptosickemergencymanualuserassistantcontactuserassistantcontactuserassistantcontactRequest
curl 'https://app.openassistant.us/api/coverage-spans/active-for-principal/<principalId>' \
-H "Authorization: Bearer ak_live_..."Response
{
"active": true,
"span": {
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": null,
"type": null
},
"status": "draft",
"startAt": "2025-01-15T10:30:00.000Z",
"endAt": "2025-01-15T10:30:00.000Z"
},
"primaryCoordinator": {
"id": "string",
"type": "user"
},
"backupCoordinator": {
"id": "string",
"type": "user"
}
}/coverage-spans/dashboardCoordinator manager dashboard — aggregate operational view
Returns coordinator→principals map, active/pending/upcoming spans, coverage gaps, and delegate access audit across the viewer's scope. Operational-only (no meeting/task content). Org admins see the full account; coordinator managers see only their assigned coordinators.
Responses
adminmanagerRequest
curl 'https://app.openassistant.us/api/coverage-spans/dashboard' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"scope": "admin",
"managedCoordinatorIds": [
"string"
],
"coverageMap": [
null
],
"activeSpans": [
null
],
"pendingSpans": [
null
]
}/coverage-spans/eventsCoverage-span windows as calendar-friendly events
Returns one event per (span, principal) for windows overlapping [rangeStart, rangeEnd]. Role is primary/backup/manager relative to the viewer. Used by the portal calendar to render coverage overlays.
Query parameters
Responses
primarybackupmanagerscheduledactiveRequest
curl 'https://app.openassistant.us/api/coverage-spans/events?rangeStart=&rangeEnd=' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"events": [
{
"id": "string",
"spanId": "string",
"principalRowId": "string",
"role": "primary",
"status": "scheduled",
"reason": "string"
}
]
}/coverage-spans/{spanId}/principalsList principals on a span
Path parameters
Responses
trueRequest
curl 'https://app.openassistant.us/api/coverage-spans/<spanId>/principals' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"coverageSpanPrincipals": [
{
"id": "string",
"span": "string",
"principal": {
"id": null,
"type": null
},
"account": "string",
"backupCoordinator": {
"id": null,
"type": null
},
"primaryFollower": true
}
]
}/backup-routing-rulesList backup routing rules
Responses
trueRequest
curl 'https://app.openassistant.us/api/backup-routing-rules' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"backupRoutingRules": [
{
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": null,
"type": null
},
"principal": {
"id": null,
"type": null
},
"backupCoordinator": {
"id": null,
"type": null
},
"isOrgDefault": true
}
]
}/backup-routing-rulesCreate a backup routing rule
Request body
Responses
trueRequest
curl 'https://app.openassistant.us/api/backup-routing-rules' \
-X POST \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"backupCoordinator": "507f1f77bcf86cd799439011"
}'Response
{
"ok": true,
"backupRoutingRule": {
"id": "string",
"account": "string",
"primaryCoordinator": {
"id": "string",
"type": "user"
},
"principal": {
"id": "string",
"type": "user"
},
"backupCoordinator": {
"id": "string",
"type": "user"
},
"isOrgDefault": true
}
}/backup-routing-rules/{ruleId}Delete a backup routing rule
Path parameters
Responses
trueRequest
curl 'https://app.openassistant.us/api/backup-routing-rules/<ruleId>' \
-X DELETE \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"backupRoutingRule": {
"id": "string"
}
}/manager-assignmentsList manager assignments
Query parameters
Responses
truecoordinatorRequest
curl 'https://app.openassistant.us/api/manager-assignments' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"managerAssignments": [
{
"id": "string",
"account": "string",
"manager": {
"id": "string"
},
"role": "coordinator",
"managedUser": {
"id": "string"
},
"createdBy": "string"
}
]
}/manager-assignmentsAssign a manager to a user (org admin only)
Request body
coordinatorResponses
truecoordinatorRequest
curl 'https://app.openassistant.us/api/manager-assignments' \
-X POST \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"manager": "507f1f77bcf86cd799439011",
"role": "coordinator",
"managedUser": "507f1f77bcf86cd799439011"
}'Response
{
"ok": true,
"managerAssignment": {
"id": "string",
"account": "string",
"manager": {
"id": "string"
},
"role": "coordinator",
"managedUser": {
"id": "string"
},
"createdBy": "string"
}
}/manager-assignments/{assignmentId}Remove a manager assignment
Path parameters
Responses
trueRequest
curl 'https://app.openassistant.us/api/manager-assignments/<assignmentId>' \
-X DELETE \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"managerAssignment": {
"id": "string"
}
}