{"templateId":"api_docs","versions":[{"version":"v1.108.0","label":"v1.108.0 (Latest)","link":"/docs/openapi","default":true,"active":false,"folderId":"83d03932"},{"version":"v1.101.0","label":"v1.101.0","link":"/docs/openapi/v1.101.0","default":false,"active":false,"folderId":"83d03932"},{"version":"v1.97.0","label":"v1.97.0","link":"/docs/openapi/v1.97.0","default":false,"active":false,"folderId":"83d03932"}],"sharedDataIds":{"apiDocsStore":"api-docs-docs/openapi/@v1.100.0/index.json","sidebar":"sidebar-docs/sidebars.yaml"},"props":{"definitionId":"docs/openapi/@v1.100.0/index.json","settings":{"baseUrlPath":"/docs/openapi/v1.100.0"},"disableAutoScroll":true,"seo":{"title":"Log my Care Open API","llmstxt":{"hide":true}},"dynamicMarkdocComponents":[],"metadata":{"type":"openapi","title":"Log my Care Open API","version":"1.100.0","description":"API for accessing Log my Care data. Most endpoints are read-only (<code>GET</code>); the Residents endpoint additionally supports creating and updating records (<code>POST</code>/<code>PUT</code>). Authenticate by exchanging your API key for a JWT token via <code>POST /openapi/auth/token/exchange</code>, then include the token in the <code>Authorization: Bearer</code> header.\n\n<h2>Authentication</h2>\n\n<p><strong>Token Exchange (Required)</strong>: Exchange the API key for a short-lived JWT token (15 minutes) using <code>POST /openapi/auth/token/exchange</code>. This provides enhanced security by minimizing API key exposure.</p>\n\n<p>All authenticated endpoints require a valid JWT token in the <code>Authorization: Bearer</code> header.</p>\n\n<h2>Available Endpoints</h2>\n\n<h3>Health & Status</h3>\n<ul>\n  <li><code>GET /health</code> - System health check (no authentication required)</li>\n  <li><code>GET /openapi/health</code> - Alternative health check path (legacy compatibility)</li>\n</ul>\n\n<h3>Residents</h3>\n<ul>\n  <li><code>GET /openapi/api/residents</code> - List all residents with filtering and pagination</li>\n  <li><code>GET /openapi/api/residents/:id</code> - Get specific resident by ID</li>\n  <li><code>POST /openapi/api/residents</code> - Create a resident</li>\n  <li><code>PUT /openapi/api/residents/:id</code> - Update a resident</li>\n  <li>Filters: <code>homeId</code>, <code>residentId</code>, <code>startDate</code>, <code>endDate</code>, <code>dateField</code>, <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h3>Care Plans</h3>\n<ul>\n  <li><code>GET /openapi/api/careplans</code> - List all care plans with filtering</li>\n  <li><code>GET /openapi/api/careplans/:id</code> - Get specific care plan by ID</li>\n  <li>Filters: <code>homeId</code>, <code>residentId</code>, <code>carePlanId</code>, <code>startDate</code>, <code>endDate</code>, <code>dateField</code>, <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h3>Goals</h3>\n<ul>\n  <li><code>GET /openapi/api/goals</code> - List all goals with filtering</li>\n  <li><code>GET /openapi/api/goals/:id</code> - Get specific goal by ID</li>\n  <li>Filters: <code>homeId</code>, <code>residentId</code>, <code>startDate</code>, <code>endDate</code>, <code>dateField</code>, <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h3>Incident Reports</h3>\n<ul>\n  <li><code>GET /openapi/api/incident-reports</code> - List all incident reports</li>\n  <li><code>GET /openapi/api/incident-reports/:id</code> - Get specific incident report by ID</li>\n  <li>Filters: <code>homeId</code>, <code>residentId</code>, <code>severity</code>, <code>startDate</code>, <code>endDate</code>, <code>dateField</code>, <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h3>Risk Assessments</h3>\n<ul>\n  <li><code>GET /openapi/api/risk-assessments</code> - List all risk assessments</li>\n  <li><code>GET /openapi/api/risk-assessments/:id</code> - Get specific risk assessment by ID</li>\n  <li>Filters: <code>homeId</code>, <code>residentId</code>, <code>startDate</code>, <code>endDate</code>, <code>dateField</code>, <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h3>Homes</h3>\n<ul>\n  <li><code>GET /openapi/api/homes</code> - List all care homes</li>\n  <li><code>GET /openapi/api/homes/:id</code> - Get specific home by ID</li>\n  <li>Filters: <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h3>Users</h3>\n<ul>\n  <li><code>GET /openapi/api/users</code> - List all users</li>\n  <li><code>GET /openapi/api/users/:id</code> - Get specific user by ID</li>\n  <li>Filters: <code>startDate</code>, <code>endDate</code>, <code>dateField</code>, <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h3>Logs</h3>\n<ul>\n  <li><code>GET /openapi/api/logs</code> - List all daily care logs</li>\n  <li><code>GET /openapi/api/logs/:id</code> - Get specific log by ID</li>\n  <li>Filters: <code>homeId</code>, <code>residentId</code>, <code>categoryId</code>, <code>itemId</code>, <code>loggedById</code>, <code>startDate</code>, <code>endDate</code>, <code>dateField</code>, <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h3>Log Categories</h3>\n<ul>\n  <li><code>GET /openapi/api/logcategories</code> - List all log categories (no authentication required)</li>\n  <li><code>GET /openapi/api/logcategories/:id</code> - Get specific log category by ID (no authentication required)</li>\n  <li>Filters: <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h3>Log Category Items</h3>\n<ul>\n  <li><code>GET /openapi/api/logcategoryitems</code> - List all log category items (no authentication required)</li>\n  <li><code>GET /openapi/api/logcategoryitems/:id</code> - Get specific log category item by ID (no authentication required)</li>\n  <li>Filters: <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h3>Documents</h3>\n<ul>\n  <li><code>GET /openapi/api/documents</code> - List all resident documents</li>\n  <li><code>GET /openapi/api/documents/:id</code> - Get specific document by ID</li>\n  <li>Filters: <code>homeId</code>, <code>residentId</code>, <code>categoryId</code>, <code>startDate</code>, <code>endDate</code>, <code>dateField</code>, <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h3>Home Documents</h3>\n<ul>\n  <li><code>GET /openapi/api/home-documents</code> - List all home-scoped documents</li>\n  <li><code>GET /openapi/api/home-documents/:id</code> - Get specific home document by ID</li>\n  <li>Filters: <code>homeId</code>, <code>categoryId</code>, <code>startDate</code>, <code>endDate</code>, <code>dateField</code>, <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h3>Devices</h3>\n<ul>\n  <li><code>GET /openapi/api/devices</code> - List all devices (tablets, phones, laptops)</li>\n  <li><code>GET /openapi/api/devices/:id</code> - Get specific device by ID</li>\n  <li>Filters: <code>type</code>, <code>deviceStatus</code>, <code>startDate</code>, <code>endDate</code>, <code>page</code>, <code>limit</code></li>\n</ul>\n\n<h2>Common Features</h2>\n\n<p><strong>Pagination</strong>: All list endpoints support <code>page</code> (default: 1) and <code>limit</code> (default: 10, max: 100) parameters.</p>\n\n<p><strong>Date Filtering</strong>: Many endpoints support <code>startDate</code>, <code>endDate</code>, and <code>dateField</code> parameters for filtering by date ranges.</p>\n\n<p><strong>Rate limits</strong>: 100 requests/minute per IP (unauthenticated), 1,000 requests/minute with JWT token authentication.</p>\n\n<p><strong>Security</strong>: All requests logged, input validated, parameterised queries, rate limiting enforced.</p>"},"compilationErrors":[],"markdown":{"partials":{},"variables":{"rbac":{"teams":["anonymous"]},"user":{},"remoteAddr":{"hostname":"apidocs.logmycare.co.uk","port":4000,"ipAddress":"216.73.216.249"},"lang":"default_locale","env":{"PUBLIC_REDOCLY_BRANCH_NAME":"main"}}},"pagePropGetterError":{"message":"","name":""}},"slug":"/docs/openapi/v1.100.0","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}