Skip to main content

List Lab Visits (v1)

Method & Path

GET /api/v1/workspace/:workspaceId/labs/visits

Actual backend path: /v1/workspace/:workspaceId/labs/visits

Description

List lab visits in a workspace. Supports filtering by status, client, type, and date range with pagination.

Authentication

Required: JWT token in Authorization header

Persona Access:

  • Admin: Not applicable (workspace-scoped endpoint)
  • Workspace Owner: Allowed
  • Staff: Allowed (role-based)
  • Customer: Not allowed

Required Permissions:

  • labs.view

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token: Bearer <token>

Path Parameters

ParameterTypeRequiredDescription
workspaceIdstringYesWorkspace identifier (MongoDB ObjectId)

Query Parameters

ParameterTypeRequiredDescription
labVisitStatusstringNoFilter by status: pending, in-progress, results-entered, invoiced, cancelled, ready
clientIdstringNoFilter by client (MongoDB ObjectId)
labVisitTypestringNoFilter by type: in-lab, at-home
startDatestringNoISO datetime (inclusive)
endDatestringNoISO datetime (inclusive)
limitnumberNoPage size (1-100). Default: 50
offsetnumberNoOffset for pagination. Default: 0

Response 200 OK

{
"labVisits": [
{
"id": "507f1f77bcf86cd799439011",
"workspaceId": "507f1f77bcf86cd799439012",
"clientId": "507f1f77bcf86cd799439013",
"labVisitType": "in-lab",
"labVisitStatus": "pending",
"labTestIds": [101],
"labTestSnapshots": [
{
"test": {
"testId": 101,
"testTitle": "CBC"
},
"designTest": null
}
],
"labTestResults": [],
"labVisitDate": "2026-01-10T12:00:00.000Z",
"labVisitNotes": null,
"labVisitPricing": {
"labVisitSubtotal": 30,
"labCouponId": null,
"labCouponCode": null,
"labVisitDiscountAmount": 0,
"labVisitTotal": 30
},
"deletedAt": null,
"createdAt": "2026-01-10T12:00:00.000Z",
"updatedAt": "2026-01-10T12:00:00.000Z"
}
],
"total": 1
}
note

labTestIds may be returned for convenience. You can also derive it from snapshots: labTestIds = labTestSnapshots.map((s) => s.test.testId).

Common Errors

400 Bad Request: Invalid query parameters (e.g., invalid date format)

401 Unauthorized: Missing or invalid authentication token

403 Forbidden: Insufficient permissions (labs.view required)

404 Not Found: Workspace not found

422 Validation Error: Invalid workspace ID format or validation errors