LynCareOS (1.0.0)

Download OpenAPI specification:

auth

Register

Register a new user account.

Invite-only: all registrations require a valid invite_token. Self-service signup without an invite returns 403.

Invited path: creates the user with status='pending', links them to the inviting tenant as role='member'/status='invited', marks the invite as used, and returns a JWT. The user is redirected to /pending in the frontend until an admin approves them from Settings → Users.

Duplicate username or email raises 409.

Request Body schema: application/json
required
username
required
string (Username)
email
required
string (Email)
password
required
string (Password)
tenant_name
string (Tenant Name)
Default: ""
Invite Token (string) or Invite Token (null) (Invite Token)

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "email": "string",
  • "password": "string",
  • "tenant_name": "",
  • "invite_token": "string"
}

Response samples

Content type
application/json
null

Login

Authenticate with username/email + password and return a JWT pair.

Accepts either username or email as the identifier (case-insensitive). Raises 401 for missing users or wrong passwords (same message to avoid username enumeration). Raises 403 for rejected or still-pending accounts. Updates last_login on success. Super admin users are assigned their primary tenant context if they have one; non-super users get their first active tenant membership.

Request Body schema: application/json
required
username
required
string (Username)
password
required
string (Password)

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "password": "string"
}

Response samples

Content type
application/json
null

Google Login

Sign in or register via Google OAuth (id_token / GIS button flow).

Verifies the Google ID token credential returned by the GIS Sign-In button, then delegates all user find/create/invite logic to process_google_user. Kept for backward compatibility; new clients use POST /google/token.

Request Body schema: application/json
required
id_token
required
string (Id Token)
Invite Token (string) or Invite Token (null) (Invite Token)

Responses

Request samples

Content type
application/json
{
  • "id_token": "string",
  • "invite_token": "string"
}

Response samples

Content type
application/json
null

Google Token Login

Sign in or register via Google OAuth (access_token / useGoogleLogin flow).

Accepts the OAuth2 access_token returned by @react-oauth/google's useGoogleLogin hook (implicit flow, scope: openid email profile).

This endpoint exists to support the native-button Google sign-in flow on the frontend, which was introduced to fix a blank-screen bug on iOS Safari. The GIS iframe button (used by GoogleLogin component) opens a popup from within a cross-origin iframe; iOS Safari's popup blocker silently kills it. A native HTML button calling useGoogleLogin() is a first-party user gesture and is not subject to that restriction.

Validates the access_token via Google's tokeninfo + userinfo endpoints, then delegates to the same process_google_user service as the id_token flow.

Request Body schema: application/json
required
access_token
required
string (Access Token)
Invite Token (string) or Invite Token (null) (Invite Token)

Responses

Request samples

Content type
application/json
{
  • "access_token": "string",
  • "invite_token": "string"
}

Response samples

Content type
application/json
null

Refresh

Exchange a refresh token for a new access + refresh token pair.

The refresh token is read from the HttpOnly lyncare_refresh cookie (preferred) or — for backward compatibility — from the JSON body. Validates the token type, looks up the user, and re-issues both tokens. Raises 401 for an invalid/expired token or missing user; 403 if the user's account is no longer 'approved'. Token rotation means each refresh token is single-use in practice (the old token is not explicitly revoked, but the client replaces it).

cookie Parameters
Lyncare Refresh (string) or Lyncare Refresh (null) (Lyncare Refresh)
Request Body schema: application/json
Any of
Refresh Token (string) or Refresh Token (null) (Refresh Token)

Responses

Request samples

Content type
application/json
Example
{
  • "refresh_token": "string"
}

Response samples

Content type
application/json
null

List My Tenants

List all tenants the user belongs to — for the tenant chooser UI.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
null

Switch Tenant

Re-issue JWT pair with tid set to the selected tenant (REQ-AUTH-13).

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
tenant_id
required
integer (Tenant Id)

Responses

Request samples

Content type
application/json
{
  • "tenant_id": 0
}

Response samples

Content type
application/json
null

Logout

Clear the refresh cookie and denylist any presented refresh token.

cookie Parameters
Lyncare Refresh (string) or Lyncare Refresh (null) (Lyncare Refresh)
Request Body schema: application/json
Any of
Refresh Token (string) or Refresh Token (null) (Refresh Token)

Responses

Request samples

Content type
application/json
Example
{
  • "refresh_token": "string"
}

Response samples

Content type
application/json
{ }

Issue Sse Ticket

Issue a short-lived (30 s) single-use ticket for SSE connections.

The browser EventSource API cannot set custom HTTP headers, so a raw JWT in a ?token= query parameter would appear in server logs and browser history. This endpoint allows the frontend to exchange its JWT (passed via the standard Authorization header in this request) for an opaque UUID ticket that is safe to use as a query parameter.

Flow:

  1. Frontend calls POST /api/auth/sse-ticket with Authorization: Bearer
  2. Frontend opens EventSource('/api/.../events?ticket=')
  3. Backend validates and consumes the ticket before streaming

Tickets expire after 30 seconds and can only be used once.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
{ }

Me

Return the full profile of the currently authenticated user.

Includes tenant context (tenant_id, tenant_role, tenant details) so the frontend can derive routing and access-guard decisions from a single call. Called by the frontend on app load to restore session state. Does not require 'approved' status — pending users can call this to see their own status (used by the /pending page to detect approval).

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
null

Update Me

Update the authenticated user's profile fields.

PATCH semantics — only supplied fields are updated. Username and email changes require current_password verification for password accounts. Raises 409 if the new username or email is already taken. When profile_colour is changed, the update is propagated to care_group_members.display_colour for every group the user belongs to, keeping the calendar consistent without a separate sync call. Raises 400 if no updateable fields are supplied.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
Profile Colour (string) or Profile Colour (null) (Profile Colour)
Username (string) or Username (null) (Username)
Email (string) or Email (null) (Email)
Phone (string) or Phone (null) (Phone)
List On Key Contacts (boolean) or List On Key Contacts (null) (List On Key Contacts)
Current Password (string) or Current Password (null) (Current Password)

Responses

Request samples

Content type
application/json
{
  • "profile_colour": "string",
  • "username": "string",
  • "email": "string",
  • "phone": "string",
  • "list_on_key_contacts": true,
  • "current_password": "string"
}

Response samples

Content type
application/json
null

Change Own Password

Set or change the user's own password, clearing the forced-reset flag.

When the account already has a password hash, current_password must match. This allows Google users to add a password without a current_password check (current_password defaults to "" and is only required when ph is non-null). On success, must_change_password is set to 0, allowing accounts that were reset by an admin to proceed normally after the first password change.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
new_password
required
string (New Password)
current_password
string (Current Password)
Default: ""

Responses

Request samples

Content type
application/json
{
  • "new_password": "string",
  • "current_password": ""
}

Response samples

Content type
application/json
null

Mfa Setup

Generate a new TOTP secret and return the QR code for enrolment.

Only call this for native password-login users (no Google OAuth). MFA is not enabled until the user verifies with a code via POST /me/mfa/enable. Calling this endpoint again replaces any pending (unverified) secret.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
{
  • "secret": "string",
  • "qr_code": "string"
}

Mfa Enable

Verify the first TOTP code and mark MFA as enabled.

Requires that POST /me/mfa/setup was called first. Once verified, all subsequent logins require a TOTP code in addition to the password. Also generates and returns one-time backup recovery codes.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
code
required
string (Code)

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
{ }

Mfa Disable

Disable MFA after verifying the current TOTP code.

The user must supply a valid TOTP code (or a backup code) to prevent a third party from disabling MFA if they gain access to the session.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
code
required
string (Code)

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
{ }

Mfa Verify At Login

Verify a TOTP code during the login MFA step.

Called after initial password verification when mfa_enabled=true. The frontend should present this form when the login response includes {"mfa_required": true} in the payload. On success returns the normal auth response (access + refresh tokens).

Rate limited to 5 attempts per minute per user/IP to prevent brute-force.

Authorizations:
OAuth2PasswordBearer
Request Body schema: application/json
required
code
required
string (Code)

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
{ }

Register

Register a new user account.

Invite-only: all registrations require a valid invite_token. Self-service signup without an invite returns 403.

Invited path: creates the user with status='pending', links them to the inviting tenant as role='member'/status='invited', marks the invite as used, and returns a JWT. The user is redirected to /pending in the frontend until an admin approves them from Settings → Users.

Duplicate username or email raises 409.

Request Body schema: application/json
required
username
required
string (Username)
email
required
string (Email)
password
required
string (Password)
tenant_name
string (Tenant Name)
Default: ""
Invite Token (string) or Invite Token (null) (Invite Token)

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "email": "string",
  • "password": "string",
  • "tenant_name": "",
  • "invite_token": "string"
}

Response samples

Content type
application/json
null

Login

Authenticate with username/email + password and return a JWT pair.

Accepts either username or email as the identifier (case-insensitive). Raises 401 for missing users or wrong passwords (same message to avoid username enumeration). Raises 403 for rejected or still-pending accounts. Updates last_login on success. Super admin users are assigned their primary tenant context if they have one; non-super users get their first active tenant membership.

Request Body schema: application/json
required
username
required
string (Username)
password
required
string (Password)

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "password": "string"
}

Response samples

Content type
application/json
null

Google Login

Sign in or register via Google OAuth (id_token / GIS button flow).

Verifies the Google ID token credential returned by the GIS Sign-In button, then delegates all user find/create/invite logic to process_google_user. Kept for backward compatibility; new clients use POST /google/token.

Request Body schema: application/json
required
id_token
required
string (Id Token)
Invite Token (string) or Invite Token (null) (Invite Token)

Responses

Request samples

Content type
application/json
{
  • "id_token": "string",
  • "invite_token": "string"
}

Response samples

Content type
application/json
null

Google Token Login

Sign in or register via Google OAuth (access_token / useGoogleLogin flow).

Accepts the OAuth2 access_token returned by @react-oauth/google's useGoogleLogin hook (implicit flow, scope: openid email profile).

This endpoint exists to support the native-button Google sign-in flow on the frontend, which was introduced to fix a blank-screen bug on iOS Safari. The GIS iframe button (used by GoogleLogin component) opens a popup from within a cross-origin iframe; iOS Safari's popup blocker silently kills it. A native HTML button calling useGoogleLogin() is a first-party user gesture and is not subject to that restriction.

Validates the access_token via Google's tokeninfo + userinfo endpoints, then delegates to the same process_google_user service as the id_token flow.

Request Body schema: application/json
required
access_token
required
string (Access Token)
Invite Token (string) or Invite Token (null) (Invite Token)

Responses

Request samples

Content type
application/json
{
  • "access_token": "string",
  • "invite_token": "string"
}

Response samples

Content type
application/json
null

Refresh

Exchange a refresh token for a new access + refresh token pair.

The refresh token is read from the HttpOnly lyncare_refresh cookie (preferred) or — for backward compatibility — from the JSON body. Validates the token type, looks up the user, and re-issues both tokens. Raises 401 for an invalid/expired token or missing user; 403 if the user's account is no longer 'approved'. Token rotation means each refresh token is single-use in practice (the old token is not explicitly revoked, but the client replaces it).

cookie Parameters
Lyncare Refresh (string) or Lyncare Refresh (null) (Lyncare Refresh)
Request Body schema: application/json
Any of
Refresh Token (string) or Refresh Token (null) (Refresh Token)

Responses

Request samples

Content type
application/json
Example
{
  • "refresh_token": "string"
}

Response samples

Content type
application/json
null

List My Tenants

List all tenants the user belongs to — for the tenant chooser UI.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
null

Switch Tenant

Re-issue JWT pair with tid set to the selected tenant (REQ-AUTH-13).

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
tenant_id
required
integer (Tenant Id)

Responses

Request samples

Content type
application/json
{
  • "tenant_id": 0
}

Response samples

Content type
application/json
null

Logout

Clear the refresh cookie and denylist any presented refresh token.

cookie Parameters
Lyncare Refresh (string) or Lyncare Refresh (null) (Lyncare Refresh)
Request Body schema: application/json
Any of
Refresh Token (string) or Refresh Token (null) (Refresh Token)

Responses

Request samples

Content type
application/json
Example
{
  • "refresh_token": "string"
}

Response samples

Content type
application/json
{ }

Issue Sse Ticket

Issue a short-lived (30 s) single-use ticket for SSE connections.

The browser EventSource API cannot set custom HTTP headers, so a raw JWT in a ?token= query parameter would appear in server logs and browser history. This endpoint allows the frontend to exchange its JWT (passed via the standard Authorization header in this request) for an opaque UUID ticket that is safe to use as a query parameter.

Flow:

  1. Frontend calls POST /api/auth/sse-ticket with Authorization: Bearer
  2. Frontend opens EventSource('/api/.../events?ticket=')
  3. Backend validates and consumes the ticket before streaming

Tickets expire after 30 seconds and can only be used once.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
{ }

Me

Return the full profile of the currently authenticated user.

Includes tenant context (tenant_id, tenant_role, tenant details) so the frontend can derive routing and access-guard decisions from a single call. Called by the frontend on app load to restore session state. Does not require 'approved' status — pending users can call this to see their own status (used by the /pending page to detect approval).

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
null

Update Me

Update the authenticated user's profile fields.

PATCH semantics — only supplied fields are updated. Username and email changes require current_password verification for password accounts. Raises 409 if the new username or email is already taken. When profile_colour is changed, the update is propagated to care_group_members.display_colour for every group the user belongs to, keeping the calendar consistent without a separate sync call. Raises 400 if no updateable fields are supplied.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
Profile Colour (string) or Profile Colour (null) (Profile Colour)
Username (string) or Username (null) (Username)
Email (string) or Email (null) (Email)
Phone (string) or Phone (null) (Phone)
List On Key Contacts (boolean) or List On Key Contacts (null) (List On Key Contacts)
Current Password (string) or Current Password (null) (Current Password)

Responses

Request samples

Content type
application/json
{
  • "profile_colour": "string",
  • "username": "string",
  • "email": "string",
  • "phone": "string",
  • "list_on_key_contacts": true,
  • "current_password": "string"
}

Response samples

Content type
application/json
null

Change Own Password

Set or change the user's own password, clearing the forced-reset flag.

When the account already has a password hash, current_password must match. This allows Google users to add a password without a current_password check (current_password defaults to "" and is only required when ph is non-null). On success, must_change_password is set to 0, allowing accounts that were reset by an admin to proceed normally after the first password change.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
new_password
required
string (New Password)
current_password
string (Current Password)
Default: ""

Responses

Request samples

Content type
application/json
{
  • "new_password": "string",
  • "current_password": ""
}

Response samples

Content type
application/json
null

Mfa Setup

Generate a new TOTP secret and return the QR code for enrolment.

Only call this for native password-login users (no Google OAuth). MFA is not enabled until the user verifies with a code via POST /me/mfa/enable. Calling this endpoint again replaces any pending (unverified) secret.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
{
  • "secret": "string",
  • "qr_code": "string"
}

Mfa Enable

Verify the first TOTP code and mark MFA as enabled.

Requires that POST /me/mfa/setup was called first. Once verified, all subsequent logins require a TOTP code in addition to the password. Also generates and returns one-time backup recovery codes.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
code
required
string (Code)

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
{ }

Mfa Disable

Disable MFA after verifying the current TOTP code.

The user must supply a valid TOTP code (or a backup code) to prevent a third party from disabling MFA if they gain access to the session.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
code
required
string (Code)

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
{ }

Mfa Verify At Login

Verify a TOTP code during the login MFA step.

Called after initial password verification when mfa_enabled=true. The frontend should present this form when the login response includes {"mfa_required": true} in the payload. On success returns the normal auth response (access + refresh tokens).

Rate limited to 5 attempts per minute per user/IP to prevent brute-force.

Authorizations:
OAuth2PasswordBearer
Request Body schema: application/json
required
code
required
string (Code)

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
{ }

users

Pending Count

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Users

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Membership

Authorizations:
OAuth2PasswordBearer
path Parameters
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Role (string) or Role (null) (Role)
Status (string) or Status (null) (Status)

Responses

Request samples

Content type
application/json
{
  • "role": "string",
  • "status": "string"
}

Response samples

Content type
application/json
null

Remove Member

Authorizations:
OAuth2PasswordBearer
path Parameters
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Update User Colour

Authorizations:
OAuth2PasswordBearer
path Parameters
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
profile_colour
required
string (Profile Colour)

Responses

Request samples

Content type
application/json
{
  • "profile_colour": "string"
}

Response samples

Content type
application/json
null

Get User Module Access

Return module access status for a specific tenant member.

Returns one entry per product module (see MODULES). enabled is True unless overridden to False in tenant_user_module_access. tenant_active is True when this tenant's subscription for that module is active or trial (admins can then grant or deny member access; denying only applies once the module is active for the account).

Authorizations:
OAuth2PasswordBearer
path Parameters
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
[
  • { }
]

Set User Module Access

Enable or disable a module for a specific tenant member.

Admins and super-admins cannot be restricted (their access is always full).

Authorizations:
OAuth2PasswordBearer
path Parameters
user_id
required
integer (User Id)
module
required
string (Module)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
enabled
required
boolean (Enabled)

Responses

Request samples

Content type
application/json
{
  • "enabled": true
}

Response samples

Content type
application/json
{ }

List All Users

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
null

Pending Count

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Users

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Membership

Authorizations:
OAuth2PasswordBearer
path Parameters
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Role (string) or Role (null) (Role)
Status (string) or Status (null) (Status)

Responses

Request samples

Content type
application/json
{
  • "role": "string",
  • "status": "string"
}

Response samples

Content type
application/json
null

Remove Member

Authorizations:
OAuth2PasswordBearer
path Parameters
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Update User Colour

Authorizations:
OAuth2PasswordBearer
path Parameters
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
profile_colour
required
string (Profile Colour)

Responses

Request samples

Content type
application/json
{
  • "profile_colour": "string"
}

Response samples

Content type
application/json
null

Get User Module Access

Return module access status for a specific tenant member.

Returns one entry per product module (see MODULES). enabled is True unless overridden to False in tenant_user_module_access. tenant_active is True when this tenant's subscription for that module is active or trial (admins can then grant or deny member access; denying only applies once the module is active for the account).

Authorizations:
OAuth2PasswordBearer
path Parameters
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
[
  • { }
]

Set User Module Access

Enable or disable a module for a specific tenant member.

Admins and super-admins cannot be restricted (their access is always full).

Authorizations:
OAuth2PasswordBearer
path Parameters
user_id
required
integer (User Id)
module
required
string (Module)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
enabled
required
boolean (Enabled)

Responses

Request samples

Content type
application/json
{
  • "enabled": true
}

Response samples

Content type
application/json
{ }

List All Users

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
null

invitations

List Invitations

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Invitation

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Message (string) or Message (null) (Message)
Patient Id (integer) or Patient Id (null) (Patient Id)
invite_role
string (Invite Role)
Default: "carer"
ttl_hours
integer (Ttl Hours)
Default: 72

Responses

Request samples

Content type
application/json
{
  • "message": "string",
  • "patient_id": 0,
  • "invite_role": "carer",
  • "ttl_hours": 72
}

Response samples

Content type
application/json
null

Update Invitation Role

Allow admin to change the role/patient on an invite before they approve the user.

Works even after the invite has been consumed (used_at IS NOT NULL) — the updated values are read at the moment the admin approves the pending user.

Authorizations:
OAuth2PasswordBearer
path Parameters
invitation_id
required
integer (Invitation Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
invite_role
required
string (Invite Role)
Patient Id (integer) or Patient Id (null) (Patient Id)

Responses

Request samples

Content type
application/json
{
  • "invite_role": "string",
  • "patient_id": 0
}

Response samples

Content type
application/json
null

Revoke Invitation

Authorizations:
OAuth2PasswordBearer
path Parameters
invitation_id
required
integer (Invitation Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Verify Invite

Public endpoint — verifies a token is valid and returns context for the registration page.

path Parameters
token
required
string (Token)

Responses

Response samples

Content type
application/json
null

List Invitations

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Invitation

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Message (string) or Message (null) (Message)
Patient Id (integer) or Patient Id (null) (Patient Id)
invite_role
string (Invite Role)
Default: "carer"
ttl_hours
integer (Ttl Hours)
Default: 72

Responses

Request samples

Content type
application/json
{
  • "message": "string",
  • "patient_id": 0,
  • "invite_role": "carer",
  • "ttl_hours": 72
}

Response samples

Content type
application/json
null

Update Invitation Role

Allow admin to change the role/patient on an invite before they approve the user.

Works even after the invite has been consumed (used_at IS NOT NULL) — the updated values are read at the moment the admin approves the pending user.

Authorizations:
OAuth2PasswordBearer
path Parameters
invitation_id
required
integer (Invitation Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
invite_role
required
string (Invite Role)
Patient Id (integer) or Patient Id (null) (Patient Id)

Responses

Request samples

Content type
application/json
{
  • "invite_role": "string",
  • "patient_id": 0
}

Response samples

Content type
application/json
null

Revoke Invitation

Authorizations:
OAuth2PasswordBearer
path Parameters
invitation_id
required
integer (Invitation Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Verify Invite

Public endpoint — verifies a token is valid and returns context for the registration page.

path Parameters
token
required
string (Token)

Responses

Response samples

Content type
application/json
null

tenants

Get My Tenant

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get My Limits

Return the effective tier limits and current usage counts for the caller's tenant.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Tenant

Authorizations:
OAuth2PasswordBearer
path Parameters
tenant_id
required
integer (Tenant Id)
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
null

Update Tenant

Authorizations:
OAuth2PasswordBearer
path Parameters
tenant_id
required
integer (Tenant Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Timezone (string) or Timezone (null) (Timezone)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "timezone": "string"
}

Response samples

Content type
application/json
null

List Tenants

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
null

Get My Tenant

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get My Limits

Return the effective tier limits and current usage counts for the caller's tenant.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Tenant

Authorizations:
OAuth2PasswordBearer
path Parameters
tenant_id
required
integer (Tenant Id)
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
null

Update Tenant

Authorizations:
OAuth2PasswordBearer
path Parameters
tenant_id
required
integer (Tenant Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Timezone (string) or Timezone (null) (Timezone)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "timezone": "string"
}

Response samples

Content type
application/json
null

List Tenants

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
null

subscriptions

Available Modules

Return the canonical list of module slugs the platform supports.

The frontend fetches this at boot instead of hard-coding the list, so adding a new module only requires a backend deploy. The shape is deliberately simple ({slugs, meta}) — downstream consumers already have their own display logic via MODULE_META.

delivery maps each slug to product readiness (live / partial / planned) from billing/module_delivery.json — separate from Stripe entitlement in tiers.json.

Responses

Response samples

Content type
application/json
null

Catalog Subscriptions

Read-only module catalog for any tenant member (admin manages via PATCH).

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Request Module Purchase

Let a non-admin member ask the organisation admin to purchase a module.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
module
required
string (Module)

Responses

Request samples

Content type
application/json
{
  • "module": "string"
}

Response samples

Content type
application/json
null

List Subscriptions

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Subscription

Authorizations:
OAuth2PasswordBearer
path Parameters
module
required
string (Module)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
status
required
string (Status)
Valid Until (string) or Valid Until (null) (Valid Until)

Responses

Request samples

Content type
application/json
{
  • "status": "string",
  • "valid_until": "string"
}

Response samples

Content type
application/json
null

Active Modules

Return the module slugs active for the current (tenant, user).

Cached in Redis for 30 s — this endpoint is hit on every navigation in the frontend shell, so even a very short TTL cuts the DB load dramatically. Cache is invalidated by update_subscription() below and by any tenant_user_module_access mutation.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Available Modules

Return the canonical list of module slugs the platform supports.

The frontend fetches this at boot instead of hard-coding the list, so adding a new module only requires a backend deploy. The shape is deliberately simple ({slugs, meta}) — downstream consumers already have their own display logic via MODULE_META.

delivery maps each slug to product readiness (live / partial / planned) from billing/module_delivery.json — separate from Stripe entitlement in tiers.json.

Responses

Response samples

Content type
application/json
null

Catalog Subscriptions

Read-only module catalog for any tenant member (admin manages via PATCH).

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Request Module Purchase

Let a non-admin member ask the organisation admin to purchase a module.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
module
required
string (Module)

Responses

Request samples

Content type
application/json
{
  • "module": "string"
}

Response samples

Content type
application/json
null

List Subscriptions

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Subscription

Authorizations:
OAuth2PasswordBearer
path Parameters
module
required
string (Module)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
status
required
string (Status)
Valid Until (string) or Valid Until (null) (Valid Until)

Responses

Request samples

Content type
application/json
{
  • "status": "string",
  • "valid_until": "string"
}

Response samples

Content type
application/json
null

Active Modules

Return the module slugs active for the current (tenant, user).

Cached in Redis for 30 s — this endpoint is hit on every navigation in the frontend shell, so even a very short TTL cuts the DB load dramatically. Cache is invalidated by update_subscription() below and by any tenant_user_module_access mutation.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

care-modules

Care Modules Status

Returns 404 when CARE_MODULE_BOARDS_ENABLED is false.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Board

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
required
string (Slug) ^(cancer_at_home|breathing_difficulties)$
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Post Capture Step

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
required
string (Slug) ^(cancer_at_home|breathing_difficulties)$
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
session_id
required
string (Session Id)
step_key
required
string (Step Key)
choice_id
required
string (Choice Id)
family_label
required
string (Family Label)
Clinical Value (object) or Clinical Value (null) (Clinical Value)
Care Date (string) or Care Date (null) (Care Date)
Capture Instance Id (string) or Capture Instance Id (null) (Capture Instance Id)

Responses

Request samples

Content type
application/json
{
  • "session_id": "string",
  • "step_key": "string",
  • "choice_id": "string",
  • "family_label": "string",
  • "clinical_value": { },
  • "care_date": "string",
  • "capture_instance_id": "string"
}

Response samples

Content type
application/json
null

Post Session Complete

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
required
string (Slug) ^(cancer_at_home|breathing_difficulties)$
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
session_id
required
string (Session Id)
Care Date (string) or Care Date (null) (Care Date)
Capture Instance Id (string) or Capture Instance Id (null) (Capture Instance Id)

Responses

Request samples

Content type
application/json
{
  • "session_id": "string",
  • "care_date": "string",
  • "capture_instance_id": "string"
}

Response samples

Content type
application/json
null

Patch Care Module Settings

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
required
string (Slug) ^(cancer_at_home|breathing_difficulties)$
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Today Day Type (string) or Today Day Type (null) (Today Day Type)
Array of Treatment Modes (strings) or Treatment Modes (null) (Treatment Modes)
Cancer Primary Site (string) or Cancer Primary Site (null) (Cancer Primary Site)
Gentle Mode (boolean) or Gentle Mode (null) (Gentle Mode)
Infusion Checklist (object) or Infusion Checklist (null) (Infusion Checklist)
Line Care Checklist (object) or Line Care Checklist (null) (Line Care Checklist)
Array of Visit Prep Questions (strings) or Visit Prep Questions (null) (Visit Prep Questions)
Visit Prep Discussed (object) or Visit Prep Discussed (null) (Visit Prep Discussed)

Responses

Request samples

Content type
application/json
{
  • "today_day_type": "string",
  • "treatment_modes": [
    ],
  • "cancer_primary_site": "string",
  • "gentle_mode": true,
  • "infusion_checklist": { },
  • "line_care_checklist": { },
  • "visit_prep_questions": [
    ],
  • "visit_prep_discussed": { }
}

Response samples

Content type
application/json
null

Get Visit Prep

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
string (Slug) ^(cancer_at_home|breathing_difficulties)$
Default: "cancer_at_home"
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Dashboard Panel

Homepage care-board panel — status chips plus Actions for today / Your treatment icon rows.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
required
string (Slug) ^(cancer_at_home|breathing_difficulties)$
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Dashboard Chips

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
string (Slug) ^(cancer_at_home|breathing_difficulties)$
Default: "cancer_at_home"
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Comfort Checkin Dates

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
string (Slug) ^(cancer_at_home|breathing_difficulties)$
Default: "cancer_at_home"
days
integer (Days) [ 7 .. 365 ]
Default: 90
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Comfort Spoke Averages

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
string (Slug) ^(cancer_at_home|breathing_difficulties)$
Default: "cancer_at_home"
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Comfort Checkin

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
string (Slug) ^(cancer_at_home|breathing_difficulties)$
Default: "cancer_at_home"
date
required
string (Date) ^\d{4}-\d{2}-\d{2}$
Capture Instance Id (string) or Capture Instance Id (null) (Capture Instance Id)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Care Modules Status

Returns 404 when CARE_MODULE_BOARDS_ENABLED is false.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Board

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
required
string (Slug) ^(cancer_at_home|breathing_difficulties)$
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Post Capture Step

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
required
string (Slug) ^(cancer_at_home|breathing_difficulties)$
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
session_id
required
string (Session Id)
step_key
required
string (Step Key)
choice_id
required
string (Choice Id)
family_label
required
string (Family Label)
Clinical Value (object) or Clinical Value (null) (Clinical Value)
Care Date (string) or Care Date (null) (Care Date)
Capture Instance Id (string) or Capture Instance Id (null) (Capture Instance Id)

Responses

Request samples

Content type
application/json
{
  • "session_id": "string",
  • "step_key": "string",
  • "choice_id": "string",
  • "family_label": "string",
  • "clinical_value": { },
  • "care_date": "string",
  • "capture_instance_id": "string"
}

Response samples

Content type
application/json
null

Post Session Complete

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
required
string (Slug) ^(cancer_at_home|breathing_difficulties)$
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
session_id
required
string (Session Id)
Care Date (string) or Care Date (null) (Care Date)
Capture Instance Id (string) or Capture Instance Id (null) (Capture Instance Id)

Responses

Request samples

Content type
application/json
{
  • "session_id": "string",
  • "care_date": "string",
  • "capture_instance_id": "string"
}

Response samples

Content type
application/json
null

Patch Care Module Settings

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
required
string (Slug) ^(cancer_at_home|breathing_difficulties)$
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Today Day Type (string) or Today Day Type (null) (Today Day Type)
Array of Treatment Modes (strings) or Treatment Modes (null) (Treatment Modes)
Cancer Primary Site (string) or Cancer Primary Site (null) (Cancer Primary Site)
Gentle Mode (boolean) or Gentle Mode (null) (Gentle Mode)
Infusion Checklist (object) or Infusion Checklist (null) (Infusion Checklist)
Line Care Checklist (object) or Line Care Checklist (null) (Line Care Checklist)
Array of Visit Prep Questions (strings) or Visit Prep Questions (null) (Visit Prep Questions)
Visit Prep Discussed (object) or Visit Prep Discussed (null) (Visit Prep Discussed)

Responses

Request samples

Content type
application/json
{
  • "today_day_type": "string",
  • "treatment_modes": [
    ],
  • "cancer_primary_site": "string",
  • "gentle_mode": true,
  • "infusion_checklist": { },
  • "line_care_checklist": { },
  • "visit_prep_questions": [
    ],
  • "visit_prep_discussed": { }
}

Response samples

Content type
application/json
null

Get Visit Prep

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
string (Slug) ^(cancer_at_home|breathing_difficulties)$
Default: "cancer_at_home"
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Dashboard Panel

Homepage care-board panel — status chips plus Actions for today / Your treatment icon rows.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
required
string (Slug) ^(cancer_at_home|breathing_difficulties)$
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Dashboard Chips

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
string (Slug) ^(cancer_at_home|breathing_difficulties)$
Default: "cancer_at_home"
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Comfort Checkin Dates

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
string (Slug) ^(cancer_at_home|breathing_difficulties)$
Default: "cancer_at_home"
days
integer (Days) [ 7 .. 365 ]
Default: 90
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Comfort Spoke Averages

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
string (Slug) ^(cancer_at_home|breathing_difficulties)$
Default: "cancer_at_home"
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Comfort Checkin

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
slug
string (Slug) ^(cancer_at_home|breathing_difficulties)$
Default: "cancer_at_home"
date
required
string (Date) ^\d{4}-\d{2}-\d{2}$
Capture Instance Id (string) or Capture Instance Id (null) (Capture Instance Id)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

reason_types

List Reason Types

Authorizations:
OAuth2PasswordBearer
query Parameters
patient_id
required
integer (Patient Id)

Person in care — reason catalogue is per patient

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Reason Type

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
name
required
string (Name)
Description (string) or Description (null) (Description)
color_hex
string (Color Hex)
Default: "#6B7280"
display_order
integer (Display Order)
Default: 0
active
boolean (Active)
Default: true
patient_id
required
integer (Patient Id)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "color_hex": "#6B7280",
  • "display_order": 0,
  • "active": true,
  • "patient_id": 0
}

Response samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "color_hex": "#6B7280",
  • "display_order": 0,
  • "active": true,
  • "id": 0,
  • "tenant_id": 0,
  • "patient_id": 0,
  • "created_at": "string"
}

Update Reason Type

Authorizations:
OAuth2PasswordBearer
path Parameters
reason_id
required
integer (Reason Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Description (string) or Description (null) (Description)
Color Hex (string) or Color Hex (null) (Color Hex)
Display Order (integer) or Display Order (null) (Display Order)
Active (boolean) or Active (null) (Active)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "color_hex": "string",
  • "display_order": 0,
  • "active": true
}

Response samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "color_hex": "#6B7280",
  • "display_order": 0,
  • "active": true,
  • "id": 0,
  • "tenant_id": 0,
  • "patient_id": 0,
  • "created_at": "string"
}

Delete Reason Type

Authorizations:
OAuth2PasswordBearer
path Parameters
reason_id
required
integer (Reason Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Reason Types

Authorizations:
OAuth2PasswordBearer
query Parameters
patient_id
required
integer (Patient Id)

Person in care — reason catalogue is per patient

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Reason Type

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
name
required
string (Name)
Description (string) or Description (null) (Description)
color_hex
string (Color Hex)
Default: "#6B7280"
display_order
integer (Display Order)
Default: 0
active
boolean (Active)
Default: true
patient_id
required
integer (Patient Id)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "color_hex": "#6B7280",
  • "display_order": 0,
  • "active": true,
  • "patient_id": 0
}

Response samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "color_hex": "#6B7280",
  • "display_order": 0,
  • "active": true,
  • "id": 0,
  • "tenant_id": 0,
  • "patient_id": 0,
  • "created_at": "string"
}

Update Reason Type

Authorizations:
OAuth2PasswordBearer
path Parameters
reason_id
required
integer (Reason Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Description (string) or Description (null) (Description)
Color Hex (string) or Color Hex (null) (Color Hex)
Display Order (integer) or Display Order (null) (Display Order)
Active (boolean) or Active (null) (Active)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "color_hex": "string",
  • "display_order": 0,
  • "active": true
}

Response samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "color_hex": "#6B7280",
  • "display_order": 0,
  • "active": true,
  • "id": 0,
  • "tenant_id": 0,
  • "patient_id": 0,
  • "created_at": "string"
}

Delete Reason Type

Authorizations:
OAuth2PasswordBearer
path Parameters
reason_id
required
integer (Reason Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

dispensings

List Dispensings

Authorizations:
OAuth2PasswordBearer
query Parameters
Date (string) or Date (null) (Date)
Date From (string) or Date From (null) (Date From)
Date To (string) or Date To (null) (Date To)
Script Id (integer) or Script Id (null) (Script Id)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to dispensings for this patient

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Dispensing

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
date
required
string (Date)

ISO date YYYY-MM-DD

time
required
string (Time)

HH:MM 24-hour

script_id
required
integer (Script Id)
volume
required
number (Volume)
Reason Type Id (integer) or Reason Type Id (null) (Reason Type Id)
Notes (string) or Notes (null) (Notes)
Patient Id (integer) or Patient Id (null) (Patient Id)

Responses

Request samples

Content type
application/json
{
  • "date": "string",
  • "time": "string",
  • "script_id": 0,
  • "volume": 0,
  • "reason_type_id": 0,
  • "notes": "string",
  • "patient_id": 0
}

Response samples

Content type
application/json
{
  • "date": "string",
  • "time": "string",
  • "script_id": 0,
  • "volume": 0,
  • "reason_type_id": 0,
  • "notes": "string",
  • "id": 0,
  • "tenant_id": 0,
  • "patient_id": 0,
  • "scheduled_item_id": 0,
  • "dispense_batch_id": 0,
  • "proof_image_url": "string",
  • "medicine_name": "string",
  • "medicine_unit": "string",
  • "medicine_color": "string",
  • "reason_type_name": "string",
  • "reason_type_color": "string",
  • "created_at": "string",
  • "updated_at": "string",
  • "first_dose_reaction_prompt": {
    }
}

Get Dispensing

Authorizations:
OAuth2PasswordBearer
path Parameters
dispensing_id
required
integer (Dispensing Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "date": "string",
  • "time": "string",
  • "script_id": 0,
  • "volume": 0,
  • "reason_type_id": 0,
  • "notes": "string",
  • "id": 0,
  • "tenant_id": 0,
  • "patient_id": 0,
  • "scheduled_item_id": 0,
  • "dispense_batch_id": 0,
  • "proof_image_url": "string",
  • "medicine_name": "string",
  • "medicine_unit": "string",
  • "medicine_color": "string",
  • "reason_type_name": "string",
  • "reason_type_color": "string",
  • "created_at": { },
  • "updated_at": { }
}

Update Dispensing

Authorizations:
OAuth2PasswordBearer
path Parameters
dispensing_id
required
integer (Dispensing Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Date (string) or Date (null) (Date)
Time (string) or Time (null) (Time)
Script Id (integer) or Script Id (null) (Script Id)
Volume (number) or Volume (null) (Volume)
Reason Type Id (integer) or Reason Type Id (null) (Reason Type Id)
Notes (string) or Notes (null) (Notes)

Responses

Request samples

Content type
application/json
{
  • "date": "string",
  • "time": "string",
  • "script_id": 0,
  • "volume": 0,
  • "reason_type_id": 0,
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "date": "string",
  • "time": "string",
  • "script_id": 0,
  • "volume": 0,
  • "reason_type_id": 0,
  • "notes": "string",
  • "id": 0,
  • "tenant_id": 0,
  • "patient_id": 0,
  • "scheduled_item_id": 0,
  • "dispense_batch_id": 0,
  • "proof_image_url": "string",
  • "medicine_name": "string",
  • "medicine_unit": "string",
  • "medicine_color": "string",
  • "reason_type_name": "string",
  • "reason_type_color": "string",
  • "created_at": { },
  • "updated_at": { }
}

Delete Dispensing

Authorizations:
OAuth2PasswordBearer
path Parameters
dispensing_id
required
integer (Dispensing Id)
query Parameters
reason
required
string (Reason) non-empty

Mandatory reason for deletion

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Dispensings

Authorizations:
OAuth2PasswordBearer
query Parameters
Date (string) or Date (null) (Date)
Date From (string) or Date From (null) (Date From)
Date To (string) or Date To (null) (Date To)
Script Id (integer) or Script Id (null) (Script Id)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to dispensings for this patient

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Dispensing

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
date
required
string (Date)

ISO date YYYY-MM-DD

time
required
string (Time)

HH:MM 24-hour

script_id
required
integer (Script Id)
volume
required
number (Volume)
Reason Type Id (integer) or Reason Type Id (null) (Reason Type Id)
Notes (string) or Notes (null) (Notes)
Patient Id (integer) or Patient Id (null) (Patient Id)

Responses

Request samples

Content type
application/json
{
  • "date": "string",
  • "time": "string",
  • "script_id": 0,
  • "volume": 0,
  • "reason_type_id": 0,
  • "notes": "string",
  • "patient_id": 0
}

Response samples

Content type
application/json
{
  • "date": "string",
  • "time": "string",
  • "script_id": 0,
  • "volume": 0,
  • "reason_type_id": 0,
  • "notes": "string",
  • "id": 0,
  • "tenant_id": 0,
  • "patient_id": 0,
  • "scheduled_item_id": 0,
  • "dispense_batch_id": 0,
  • "proof_image_url": "string",
  • "medicine_name": "string",
  • "medicine_unit": "string",
  • "medicine_color": "string",
  • "reason_type_name": "string",
  • "reason_type_color": "string",
  • "created_at": "string",
  • "updated_at": "string",
  • "first_dose_reaction_prompt": {
    }
}

Get Dispensing

Authorizations:
OAuth2PasswordBearer
path Parameters
dispensing_id
required
integer (Dispensing Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "date": "string",
  • "time": "string",
  • "script_id": 0,
  • "volume": 0,
  • "reason_type_id": 0,
  • "notes": "string",
  • "id": 0,
  • "tenant_id": 0,
  • "patient_id": 0,
  • "scheduled_item_id": 0,
  • "dispense_batch_id": 0,
  • "proof_image_url": "string",
  • "medicine_name": "string",
  • "medicine_unit": "string",
  • "medicine_color": "string",
  • "reason_type_name": "string",
  • "reason_type_color": "string",
  • "created_at": { },
  • "updated_at": { }
}

Update Dispensing

Authorizations:
OAuth2PasswordBearer
path Parameters
dispensing_id
required
integer (Dispensing Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Date (string) or Date (null) (Date)
Time (string) or Time (null) (Time)
Script Id (integer) or Script Id (null) (Script Id)
Volume (number) or Volume (null) (Volume)
Reason Type Id (integer) or Reason Type Id (null) (Reason Type Id)
Notes (string) or Notes (null) (Notes)

Responses

Request samples

Content type
application/json
{
  • "date": "string",
  • "time": "string",
  • "script_id": 0,
  • "volume": 0,
  • "reason_type_id": 0,
  • "notes": "string"
}

Response samples

Content type
application/json
{
  • "date": "string",
  • "time": "string",
  • "script_id": 0,
  • "volume": 0,
  • "reason_type_id": 0,
  • "notes": "string",
  • "id": 0,
  • "tenant_id": 0,
  • "patient_id": 0,
  • "scheduled_item_id": 0,
  • "dispense_batch_id": 0,
  • "proof_image_url": "string",
  • "medicine_name": "string",
  • "medicine_unit": "string",
  • "medicine_color": "string",
  • "reason_type_name": "string",
  • "reason_type_color": "string",
  • "created_at": { },
  • "updated_at": { }
}

Delete Dispensing

Authorizations:
OAuth2PasswordBearer
path Parameters
dispensing_id
required
integer (Dispensing Id)
query Parameters
reason
required
string (Reason) non-empty

Mandatory reason for deletion

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

first-dose-reactions

List Adverse Reaction Log

Adverse reaction events for the dispensing history log (observed=true only).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
Date From (string) or Date From (null) (Date From)
Date To (string) or Date To (null) (Date To)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get First Dose Reaction Check

Single check row for detail modal (alerts + history deep links).

Authorizations:
OAuth2PasswordBearer
path Parameters
check_id
required
integer (Check Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Respond First Dose Reaction

Record whether an adverse reaction was observed after a first dose.

Authorizations:
OAuth2PasswordBearer
path Parameters
check_id
required
integer (Check Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
observed
required
boolean (Observed)

True if an observable adverse reaction was seen; false if none.

Notes (string) or Notes (null) (Notes)

Required when observed is true — describe what was seen.

Responses

Request samples

Content type
application/json
{
  • "observed": true,
  • "notes": "string"
}

Response samples

Content type
application/json
null

List Adverse Reaction Log

Adverse reaction events for the dispensing history log (observed=true only).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
Date From (string) or Date From (null) (Date From)
Date To (string) or Date To (null) (Date To)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get First Dose Reaction Check

Single check row for detail modal (alerts + history deep links).

Authorizations:
OAuth2PasswordBearer
path Parameters
check_id
required
integer (Check Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Respond First Dose Reaction

Record whether an adverse reaction was observed after a first dose.

Authorizations:
OAuth2PasswordBearer
path Parameters
check_id
required
integer (Check Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
observed
required
boolean (Observed)

True if an observable adverse reaction was seen; false if none.

Notes (string) or Notes (null) (Notes)

Required when observed is true — describe what was seen.

Responses

Request samples

Content type
application/json
{
  • "observed": true,
  • "notes": "string"
}

Response samples

Content type
application/json
null

log-dose-settings

Get Log Dose Settings

Return quick-pick script IDs for Log a dose.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Log Dose Settings

Replace quick-pick script IDs for Log a dose.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
quick_script_ids
Array of integers (Quick Script Ids) <= 4 items

Responses

Request samples

Content type
application/json
{
  • "quick_script_ids": [
    ]
}

Response samples

Content type
application/json
null

Get Log Dose Settings

Return quick-pick script IDs for Log a dose.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Log Dose Settings

Replace quick-pick script IDs for Log a dose.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
quick_script_ids
Array of integers (Quick Script Ids) <= 4 items

Responses

Request samples

Content type
application/json
{
  • "quick_script_ids": [
    ]
}

Response samples

Content type
application/json
null

analytics

Earliest Dispensing Date

First calendar day with any dispensing for the selected patient (chart range bound).

Authorizations:
OAuth2PasswordBearer
query Parameters
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Daily Summary

Per-day totals between two dates, broken down by medicine and reason type.

Authorizations:
OAuth2PasswordBearer
query Parameters
date_from
required
string (Date From)
date_to
required
string (Date To)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Time Series

Liquids: summed volume (ml) per medicine per bucket — line series (left axis). Solids: summed dose amount per medicine per bucket (dispensing.volume = units per row, e.g. tablets/capsules, including fractions) — stacked bars (right axis). Uses SUM(volume), not COUNT(*), so half-tablet rows contribute 0.5 each. Classification uses patient_scripts form/unit (ml = liquid).

Authorizations:
OAuth2PasswordBearer
query Parameters
date_from
required
string (Date From)
date_to
required
string (Date To)
bucket
required
string (Bucket)

day | week | month

Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Heatmap Medicines

Distinct medicines with at least one dispensing in the selected year (and optional month).

Authorizations:
OAuth2PasswordBearer
query Parameters
year
required
integer (Year)
Month (integer) or Month (null) (Month)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Heatmap

Daily dose volume for the heatmap calendar. Optionally filter to one medicine.

Authorizations:
OAuth2PasswordBearer
query Parameters
year
required
integer (Year)
Month (integer) or Month (null) (Month)
Script Id (integer) or Script Id (null) (Script Id)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

By Reason

Aggregated totals by reason type for donut chart.

Only includes rows linked to a tenant reason_types row — doses with no reason_type_id are excluded (no synthetic 'Unknown' bucket).

Authorizations:
OAuth2PasswordBearer
query Parameters
Date From (string) or Date From (null) (Date From)
Date To (string) or Date To (null) (Date To)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

Reason Pattern (string) or Reason Pattern (null) (Reason Pattern)

Filter reason_types.name ILIKE (e.g. breakthrough for cancer hub)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Trend

Rolling daily totals for the trend area chart.

Authorizations:
OAuth2PasswordBearer
query Parameters
days
integer (Days) [ 1 .. 365 ]
Default: 30
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Care Module Events

Daily care-module session completions for board sparklines.

Authorizations:
OAuth2PasswordBearer
query Parameters
slug
required
string (Slug)

Care profile slug, e.g. cancer_at_home

days
integer (Days) [ 1 .. 90 ]
Default: 7
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Timeline

All dispensings for a single day, for the intra-day timeline chart.

Authorizations:
OAuth2PasswordBearer
query Parameters
date
required
string (Date)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Earliest Dispensing Date

First calendar day with any dispensing for the selected patient (chart range bound).

Authorizations:
OAuth2PasswordBearer
query Parameters
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Daily Summary

Per-day totals between two dates, broken down by medicine and reason type.

Authorizations:
OAuth2PasswordBearer
query Parameters
date_from
required
string (Date From)
date_to
required
string (Date To)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Time Series

Liquids: summed volume (ml) per medicine per bucket — line series (left axis). Solids: summed dose amount per medicine per bucket (dispensing.volume = units per row, e.g. tablets/capsules, including fractions) — stacked bars (right axis). Uses SUM(volume), not COUNT(*), so half-tablet rows contribute 0.5 each. Classification uses patient_scripts form/unit (ml = liquid).

Authorizations:
OAuth2PasswordBearer
query Parameters
date_from
required
string (Date From)
date_to
required
string (Date To)
bucket
required
string (Bucket)

day | week | month

Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Heatmap Medicines

Distinct medicines with at least one dispensing in the selected year (and optional month).

Authorizations:
OAuth2PasswordBearer
query Parameters
year
required
integer (Year)
Month (integer) or Month (null) (Month)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Heatmap

Daily dose volume for the heatmap calendar. Optionally filter to one medicine.

Authorizations:
OAuth2PasswordBearer
query Parameters
year
required
integer (Year)
Month (integer) or Month (null) (Month)
Script Id (integer) or Script Id (null) (Script Id)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

By Reason

Aggregated totals by reason type for donut chart.

Only includes rows linked to a tenant reason_types row — doses with no reason_type_id are excluded (no synthetic 'Unknown' bucket).

Authorizations:
OAuth2PasswordBearer
query Parameters
Date From (string) or Date From (null) (Date From)
Date To (string) or Date To (null) (Date To)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

Reason Pattern (string) or Reason Pattern (null) (Reason Pattern)

Filter reason_types.name ILIKE (e.g. breakthrough for cancer hub)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Trend

Rolling daily totals for the trend area chart.

Authorizations:
OAuth2PasswordBearer
query Parameters
days
integer (Days) [ 1 .. 365 ]
Default: 30
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Care Module Events

Daily care-module session completions for board sparklines.

Authorizations:
OAuth2PasswordBearer
query Parameters
slug
required
string (Slug)

Care profile slug, e.g. cancer_at_home

days
integer (Days) [ 1 .. 90 ]
Default: 7
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Timeline

All dispensings for a single day, for the intra-day timeline chart.

Authorizations:
OAuth2PasswordBearer
query Parameters
date
required
string (Date)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

audit

List Audit

Authorizations:
OAuth2PasswordBearer
query Parameters
Action (string) or Action (null) (Action)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

limit
integer (Limit) [ 1 .. 500 ]
Default: 50
offset
integer (Offset) >= 0
Default: 0
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Audit

Authorizations:
OAuth2PasswordBearer
query Parameters
Action (string) or Action (null) (Action)
Patient Id (integer) or Patient Id (null) (Patient Id)

Limit to one patient (REQ-MED-15)

limit
integer (Limit) [ 1 .. 500 ]
Default: 50
offset
integer (Offset) >= 0
Default: 0
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

medication-groups

Preview Schedule From Script

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Apply Schedule From Script

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
replace_existing
boolean (Replace Existing)
Default: false

Responses

Request samples

Content type
application/json
{
  • "replace_existing": false
}

Response samples

Content type
application/json
null

List Groups

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Group

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
name
required
string (Name)
scheduled_time
required
string (Scheduled Time)
Color Hex (string) or Color Hex (null) (Color Hex)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "scheduled_time": "string",
  • "color_hex": "string"
}

Response samples

Content type
application/json
null

Update Group

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
group_id
required
integer (Group Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Scheduled Time (string) or Scheduled Time (null) (Scheduled Time)
Sort Order (integer) or Sort Order (null) (Sort Order)
Active (boolean) or Active (null) (Active)
Color Hex (string) or Color Hex (null) (Color Hex)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "scheduled_time": "string",
  • "sort_order": 0,
  • "active": true,
  • "color_hex": "string"
}

Response samples

Content type
application/json
null

Deactivate Group

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
group_id
required
integer (Group Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Reorder Groups

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
object (Body)

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Add Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
group_id
required
integer (Group Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
script_id
required
integer (Script Id)
dose_amount
required
number (Dose Amount)
Unit (string) or Unit (null) (Unit)
Instructions (string) or Instructions (null) (Instructions)
Schedule From Date (string) or Schedule From Date (null) (Schedule From Date)

Optional YYYY-MM-DD when adding a medicine to a past day the carer forgot to schedule. Sets created_at to that calendar day at the slot time so dispense-view includes the row for that date.

Responses

Request samples

Content type
application/json
{
  • "script_id": 0,
  • "dose_amount": 0,
  • "unit": "string",
  • "instructions": "string",
  • "schedule_from_date": "string"
}

Response samples

Content type
application/json
null

Update Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
group_id
required
integer (Group Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Dose Amount (number) or Dose Amount (null) (Dose Amount)
Unit (string) or Unit (null) (Unit)
Instructions (string) or Instructions (null) (Instructions)
Active (boolean) or Active (null) (Active)

Responses

Request samples

Content type
application/json
{
  • "dose_amount": 0,
  • "unit": "string",
  • "instructions": "string",
  • "active": true
}

Response samples

Content type
application/json
null

Deactivate Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
group_id
required
integer (Group Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Reorder Items

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
group_id
required
integer (Group Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
object (Body)

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Dispense View

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
Date (string) or Date (null) (Date)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Single Dispense

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
scheduled_item_id
required
integer (Scheduled Item Id)
date
required
string (Date)
time
required
string (Time)
Notes (string) or Notes (null) (Notes)

Responses

Request samples

Content type
application/json
{
  • "scheduled_item_id": 0,
  • "date": "string",
  • "time": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
null

Group Dispense

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
group_id
required
integer (Group Id)
date
required
string (Date)
time
required
string (Time)
Notes (string) or Notes (null) (Notes)

Responses

Request samples

Content type
application/json
{
  • "group_id": 0,
  • "date": "string",
  • "time": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
null

Undo Batch

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
batch_id
required
integer (Batch Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Upload Dispensing Proof Image

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
dispensing_id
required
integer (Dispensing Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: multipart/form-data
required
image
required
string <binary> (Image)

Responses

Response samples

Content type
application/json
null

Serve Dispensing Proof Image

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
dispensing_id
required
integer (Dispensing Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Upload Batch Dispensing Proof Image

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
batch_id
required
integer (Batch Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: multipart/form-data
required
image
required
string <binary> (Image)

Responses

Response samples

Content type
application/json
null

Preview Schedule From Script

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Apply Schedule From Script

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
replace_existing
boolean (Replace Existing)
Default: false

Responses

Request samples

Content type
application/json
{
  • "replace_existing": false
}

Response samples

Content type
application/json
null

List Groups

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Group

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
name
required
string (Name)
scheduled_time
required
string (Scheduled Time)
Color Hex (string) or Color Hex (null) (Color Hex)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "scheduled_time": "string",
  • "color_hex": "string"
}

Response samples

Content type
application/json
null

Update Group

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
group_id
required
integer (Group Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Scheduled Time (string) or Scheduled Time (null) (Scheduled Time)
Sort Order (integer) or Sort Order (null) (Sort Order)
Active (boolean) or Active (null) (Active)
Color Hex (string) or Color Hex (null) (Color Hex)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "scheduled_time": "string",
  • "sort_order": 0,
  • "active": true,
  • "color_hex": "string"
}

Response samples

Content type
application/json
null

Deactivate Group

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
group_id
required
integer (Group Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Reorder Groups

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
object (Body)

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Add Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
group_id
required
integer (Group Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
script_id
required
integer (Script Id)
dose_amount
required
number (Dose Amount)
Unit (string) or Unit (null) (Unit)
Instructions (string) or Instructions (null) (Instructions)
Schedule From Date (string) or Schedule From Date (null) (Schedule From Date)

Optional YYYY-MM-DD when adding a medicine to a past day the carer forgot to schedule. Sets created_at to that calendar day at the slot time so dispense-view includes the row for that date.

Responses

Request samples

Content type
application/json
{
  • "script_id": 0,
  • "dose_amount": 0,
  • "unit": "string",
  • "instructions": "string",
  • "schedule_from_date": "string"
}

Response samples

Content type
application/json
null

Update Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
group_id
required
integer (Group Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Dose Amount (number) or Dose Amount (null) (Dose Amount)
Unit (string) or Unit (null) (Unit)
Instructions (string) or Instructions (null) (Instructions)
Active (boolean) or Active (null) (Active)

Responses

Request samples

Content type
application/json
{
  • "dose_amount": 0,
  • "unit": "string",
  • "instructions": "string",
  • "active": true
}

Response samples

Content type
application/json
null

Deactivate Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
group_id
required
integer (Group Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Reorder Items

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
group_id
required
integer (Group Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
object (Body)

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Dispense View

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
Date (string) or Date (null) (Date)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Single Dispense

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
scheduled_item_id
required
integer (Scheduled Item Id)
date
required
string (Date)
time
required
string (Time)
Notes (string) or Notes (null) (Notes)

Responses

Request samples

Content type
application/json
{
  • "scheduled_item_id": 0,
  • "date": "string",
  • "time": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
null

Group Dispense

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
group_id
required
integer (Group Id)
date
required
string (Date)
time
required
string (Time)
Notes (string) or Notes (null) (Notes)

Responses

Request samples

Content type
application/json
{
  • "group_id": 0,
  • "date": "string",
  • "time": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
null

Undo Batch

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
batch_id
required
integer (Batch Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Upload Dispensing Proof Image

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
dispensing_id
required
integer (Dispensing Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: multipart/form-data
required
image
required
string <binary> (Image)

Responses

Response samples

Content type
application/json
null

Serve Dispensing Proof Image

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
dispensing_id
required
integer (Dispensing Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Upload Batch Dispensing Proof Image

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
batch_id
required
integer (Batch Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: multipart/form-data
required
image
required
string <binary> (Image)

Responses

Response samples

Content type
application/json
null

patients

List Patients

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Patient

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
name
required
string (Name)
Photo Url (string) or Photo Url (null) (Photo Url)
Dob (string) or Dob (null) (Dob)
Address (string) or Address (null) (Address)
Medical Summary (string) or Medical Summary (null) (Medical Summary)
Gender (string) or Gender (null) (Gender)
Archetype Id (integer) or Archetype Id (null) (Archetype Id)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "photo_url": "string",
  • "dob": "string",
  • "address": "string",
  • "medical_summary": "string",
  • "gender": "string",
  • "archetype_id": 0
}

Response samples

Content type
application/json
null

Get Patient

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Patient

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Photo Url (string) or Photo Url (null) (Photo Url)
Dob (string) or Dob (null) (Dob)
Address (string) or Address (null) (Address)
Medical Summary (string) or Medical Summary (null) (Medical Summary)
Gender (string) or Gender (null) (Gender)
Archetype Id (integer) or Archetype Id (null) (Archetype Id)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "photo_url": "string",
  • "dob": "string",
  • "address": "string",
  • "medical_summary": "string",
  • "gender": "string",
  • "archetype_id": 0
}

Response samples

Content type
application/json
null

Delete Patient

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Access

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Grant Access

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
user_id
required
integer (User Id)
role
string (Role)
Default: "carer"

Responses

Request samples

Content type
application/json
{
  • "user_id": 0,
  • "role": "carer"
}

Response samples

Content type
application/json
null

Revoke Access

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Members

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Add Member

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Email (string) or Email (null) (Email)
User Id (integer) or User Id (null) (User Id)
role
string (Role)
Default: "carer"
Display Colour (string) or Display Colour (null) (Display Colour)
Display Name (string) or Display Name (null) (Display Name)

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "user_id": 0,
  • "role": "carer",
  • "display_colour": "string",
  • "display_name": "string"
}

Response samples

Content type
application/json
null

Update Member

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Role (string) or Role (null) (Role)
Display Colour (string) or Display Colour (null) (Display Colour)
Display Name (string) or Display Name (null) (Display Name)

Responses

Request samples

Content type
application/json
{
  • "role": "string",
  • "display_colour": "string",
  • "display_name": "string"
}

Response samples

Content type
application/json
null

Remove Member

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Patients

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Patient

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
name
required
string (Name)
Photo Url (string) or Photo Url (null) (Photo Url)
Dob (string) or Dob (null) (Dob)
Address (string) or Address (null) (Address)
Medical Summary (string) or Medical Summary (null) (Medical Summary)
Gender (string) or Gender (null) (Gender)
Archetype Id (integer) or Archetype Id (null) (Archetype Id)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "photo_url": "string",
  • "dob": "string",
  • "address": "string",
  • "medical_summary": "string",
  • "gender": "string",
  • "archetype_id": 0
}

Response samples

Content type
application/json
null

Get Patient

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Patient

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Photo Url (string) or Photo Url (null) (Photo Url)
Dob (string) or Dob (null) (Dob)
Address (string) or Address (null) (Address)
Medical Summary (string) or Medical Summary (null) (Medical Summary)
Gender (string) or Gender (null) (Gender)
Archetype Id (integer) or Archetype Id (null) (Archetype Id)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "photo_url": "string",
  • "dob": "string",
  • "address": "string",
  • "medical_summary": "string",
  • "gender": "string",
  • "archetype_id": 0
}

Response samples

Content type
application/json
null

Delete Patient

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Access

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Grant Access

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
user_id
required
integer (User Id)
role
string (Role)
Default: "carer"

Responses

Request samples

Content type
application/json
{
  • "user_id": 0,
  • "role": "carer"
}

Response samples

Content type
application/json
null

Revoke Access

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Members

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Add Member

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Email (string) or Email (null) (Email)
User Id (integer) or User Id (null) (User Id)
role
string (Role)
Default: "carer"
Display Colour (string) or Display Colour (null) (Display Colour)
Display Name (string) or Display Name (null) (Display Name)

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "user_id": 0,
  • "role": "carer",
  • "display_colour": "string",
  • "display_name": "string"
}

Response samples

Content type
application/json
null

Update Member

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Role (string) or Role (null) (Role)
Display Colour (string) or Display Colour (null) (Display Colour)
Display Name (string) or Display Name (null) (Display Name)

Responses

Request samples

Content type
application/json
{
  • "role": "string",
  • "display_colour": "string",
  • "display_name": "string"
}

Response samples

Content type
application/json
null

Remove Member

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

care_shifts

List Care Groups

List care groups visible to the caller.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Care Group

Create a new care group for a patient. Admin-only.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
name
required
string (Name)
patient_id
required
integer (Patient Id)
timezone
string (Timezone)
Default: "Australia/Sydney"
initial_member_ids
Array of integers (Initial Member Ids)
Default: []

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "patient_id": 0,
  • "timezone": "Australia/Sydney",
  • "initial_member_ids": [ ]
}

Response samples

Content type
application/json
null

List Group Members

Return all members of a care group.

Authorizations:
OAuth2PasswordBearer
path Parameters
group_id
required
integer (Group Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Add Group Member

Add a user to a care group. Admin-only.

Authorizations:
OAuth2PasswordBearer
path Parameters
group_id
required
integer (Group Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
user_id
required
integer (User Id)

Responses

Request samples

Content type
application/json
{
  • "user_id": 0
}

Response samples

Content type
application/json
null

Remove Group Member

Remove a user from a care group. Admin-only.

Authorizations:
OAuth2PasswordBearer
path Parameters
group_id
required
integer (Group Id)
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Shifts

Cross-patient shift list for admin dashboard and team calendar.

Authorizations:
OAuth2PasswordBearer
query Parameters
Date (string) or Date (null) (Date)
Patient Id (integer) or Patient Id (null) (Patient Id)
Group Id (integer) or Group Id (null) (Group Id)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Shift

Create a shift (generic endpoint; group_id and patient_id required).

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Group Id (integer) or Group Id (null) (Group Id)
Patient Id (integer) or Patient Id (null) (Patient Id)
Carer Id (integer) or Carer Id (null) (Carer Id)
date
required
string (Date)
time_slot
string (Time Slot)
Default: "full_day"
Start Time (string) or Start Time (null) (Start Time)
End Time (string) or End Time (null) (End Time)
location
string (Location)
Default: "home"
priority
string (Priority)
Default: "normal"
Recurrence Rule (string) or Recurrence Rule (null) (Recurrence Rule)
Handover Notes (string) or Handover Notes (null) (Handover Notes)
Wellbeing Note (string) or Wellbeing Note (null) (Wellbeing Note)
Array of Tasks (strings) or Tasks (null) (Tasks)

Responses

Request samples

Content type
application/json
{
  • "group_id": 0,
  • "patient_id": 0,
  • "carer_id": 0,
  • "date": "string",
  • "time_slot": "full_day",
  • "start_time": "string",
  • "end_time": "string",
  • "location": "home",
  • "priority": "normal",
  • "recurrence_rule": "string",
  • "handover_notes": "string",
  • "wellbeing_note": "string",
  • "tasks": [
    ]
}

Response samples

Content type
application/json
null

Get Shift

Return a single shift with tasks.

Authorizations:
OAuth2PasswordBearer
path Parameters
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Shift

Patch a shift.

Authorizations:
OAuth2PasswordBearer
path Parameters
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Carer Id (integer) or Carer Id (null) (Carer Id)
Date (string) or Date (null) (Date)
Time Slot (string) or Time Slot (null) (Time Slot)
Start Time (string) or Start Time (null) (Start Time)
End Time (string) or End Time (null) (End Time)
Location (string) or Location (null) (Location)
Priority (string) or Priority (null) (Priority)
Recurrence Rule (string) or Recurrence Rule (null) (Recurrence Rule)
Handover Notes (string) or Handover Notes (null) (Handover Notes)
Wellbeing Note (string) or Wellbeing Note (null) (Wellbeing Note)
Status (string) or Status (null) (Status)

Responses

Request samples

Content type
application/json
{
  • "carer_id": 0,
  • "date": "string",
  • "time_slot": "string",
  • "start_time": "string",
  • "end_time": "string",
  • "location": "string",
  • "priority": "string",
  • "recurrence_rule": "string",
  • "handover_notes": "string",
  • "wellbeing_note": "string",
  • "status": "string"
}

Response samples

Content type
application/json
null

Cancel Shift

Soft-cancel a shift. Admin-only.

Authorizations:
OAuth2PasswordBearer
path Parameters
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Create Task

Add a task to an existing shift.

Authorizations:
OAuth2PasswordBearer
path Parameters
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
title
required
string (Title)
sort_order
integer (Sort Order)
Default: 0

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "sort_order": 0
}

Response samples

Content type
application/json
null

Update Task

Update a care task.

Authorizations:
OAuth2PasswordBearer
path Parameters
task_id
required
integer (Task Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Title (string) or Title (null) (Title)
Sort Order (integer) or Sort Order (null) (Sort Order)
Completed (boolean) or Completed (null) (Completed)

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "sort_order": 0,
  • "completed": true
}

Response samples

Content type
application/json
null

Delete Task

Soft-delete a care task.

Authorizations:
OAuth2PasswordBearer
path Parameters
task_id
required
integer (Task Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Patient Shifts

Shifts for a patient, optionally filtered to a month.

Members without patient_access receive an empty list (not 403) so the calendar can probe allocation without leaking existence.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
Year (integer) or Year (null) (Year)
Month (integer) or Month (null) (Month)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Patient Shift

Create a shift for a patient with auto group resolution.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Group Id (integer) or Group Id (null) (Group Id)
Patient Id (integer) or Patient Id (null) (Patient Id)
Carer Id (integer) or Carer Id (null) (Carer Id)
date
required
string (Date)
time_slot
string (Time Slot)
Default: "full_day"
Start Time (string) or Start Time (null) (Start Time)
End Time (string) or End Time (null) (End Time)
location
string (Location)
Default: "home"
priority
string (Priority)
Default: "normal"
Recurrence Rule (string) or Recurrence Rule (null) (Recurrence Rule)
Handover Notes (string) or Handover Notes (null) (Handover Notes)
Wellbeing Note (string) or Wellbeing Note (null) (Wellbeing Note)
Array of Tasks (strings) or Tasks (null) (Tasks)

Responses

Request samples

Content type
application/json
{
  • "group_id": 0,
  • "patient_id": 0,
  • "carer_id": 0,
  • "date": "string",
  • "time_slot": "full_day",
  • "start_time": "string",
  • "end_time": "string",
  • "location": "home",
  • "priority": "normal",
  • "recurrence_rule": "string",
  • "handover_notes": "string",
  • "wellbeing_note": "string",
  • "tasks": [
    ]
}

Response samples

Content type
application/json
null

List My Shifts

Caller-owned upcoming shifts for this patient.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
months
integer (Months)
Default: 3
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Coverage Gaps

Dates in the month with no scheduled shift.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
year
required
integer (Year)
month
required
integer (Month)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Patient Shift

Single shift scoped to patient URL.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Patient Shift

Patch a shift within the patient-scoped URL.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Carer Id (integer) or Carer Id (null) (Carer Id)
Date (string) or Date (null) (Date)
Time Slot (string) or Time Slot (null) (Time Slot)
Start Time (string) or Start Time (null) (Start Time)
End Time (string) or End Time (null) (End Time)
Location (string) or Location (null) (Location)
Priority (string) or Priority (null) (Priority)
Recurrence Rule (string) or Recurrence Rule (null) (Recurrence Rule)
Handover Notes (string) or Handover Notes (null) (Handover Notes)
Wellbeing Note (string) or Wellbeing Note (null) (Wellbeing Note)
Status (string) or Status (null) (Status)

Responses

Request samples

Content type
application/json
{
  • "carer_id": 0,
  • "date": "string",
  • "time_slot": "string",
  • "start_time": "string",
  • "end_time": "string",
  • "location": "string",
  • "priority": "string",
  • "recurrence_rule": "string",
  • "handover_notes": "string",
  • "wellbeing_note": "string",
  • "status": "string"
}

Response samples

Content type
application/json
null

Delete Patient Shift

Soft-cancel a shift with ownership enforcement for carers.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Create Patient Task

Add a task to a shift (patient-scoped).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
title
required
string (Title)
sort_order
integer (Sort Order)
Default: 0

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "sort_order": 0
}

Response samples

Content type
application/json
null

Update Patient Task

Update a task (patient-scoped).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
shift_id
required
integer (Shift Id)
task_id
required
integer (Task Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Title (string) or Title (null) (Title)
Sort Order (integer) or Sort Order (null) (Sort Order)
Completed (boolean) or Completed (null) (Completed)

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "sort_order": 0,
  • "completed": true
}

Response samples

Content type
application/json
null

Delete Patient Task

Soft-delete a task (patient-scoped).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
shift_id
required
integer (Shift Id)
task_id
required
integer (Task Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Care Groups

List care groups visible to the caller.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Care Group

Create a new care group for a patient. Admin-only.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
name
required
string (Name)
patient_id
required
integer (Patient Id)
timezone
string (Timezone)
Default: "Australia/Sydney"
initial_member_ids
Array of integers (Initial Member Ids)
Default: []

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "patient_id": 0,
  • "timezone": "Australia/Sydney",
  • "initial_member_ids": [ ]
}

Response samples

Content type
application/json
null

List Group Members

Return all members of a care group.

Authorizations:
OAuth2PasswordBearer
path Parameters
group_id
required
integer (Group Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Add Group Member

Add a user to a care group. Admin-only.

Authorizations:
OAuth2PasswordBearer
path Parameters
group_id
required
integer (Group Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
user_id
required
integer (User Id)

Responses

Request samples

Content type
application/json
{
  • "user_id": 0
}

Response samples

Content type
application/json
null

Remove Group Member

Remove a user from a care group. Admin-only.

Authorizations:
OAuth2PasswordBearer
path Parameters
group_id
required
integer (Group Id)
user_id
required
integer (User Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Shifts

Cross-patient shift list for admin dashboard and team calendar.

Authorizations:
OAuth2PasswordBearer
query Parameters
Date (string) or Date (null) (Date)
Patient Id (integer) or Patient Id (null) (Patient Id)
Group Id (integer) or Group Id (null) (Group Id)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Shift

Create a shift (generic endpoint; group_id and patient_id required).

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Group Id (integer) or Group Id (null) (Group Id)
Patient Id (integer) or Patient Id (null) (Patient Id)
Carer Id (integer) or Carer Id (null) (Carer Id)
date
required
string (Date)
time_slot
string (Time Slot)
Default: "full_day"
Start Time (string) or Start Time (null) (Start Time)
End Time (string) or End Time (null) (End Time)
location
string (Location)
Default: "home"
priority
string (Priority)
Default: "normal"
Recurrence Rule (string) or Recurrence Rule (null) (Recurrence Rule)
Handover Notes (string) or Handover Notes (null) (Handover Notes)
Wellbeing Note (string) or Wellbeing Note (null) (Wellbeing Note)
Array of Tasks (strings) or Tasks (null) (Tasks)

Responses

Request samples

Content type
application/json
{
  • "group_id": 0,
  • "patient_id": 0,
  • "carer_id": 0,
  • "date": "string",
  • "time_slot": "full_day",
  • "start_time": "string",
  • "end_time": "string",
  • "location": "home",
  • "priority": "normal",
  • "recurrence_rule": "string",
  • "handover_notes": "string",
  • "wellbeing_note": "string",
  • "tasks": [
    ]
}

Response samples

Content type
application/json
null

Get Shift

Return a single shift with tasks.

Authorizations:
OAuth2PasswordBearer
path Parameters
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Shift

Patch a shift.

Authorizations:
OAuth2PasswordBearer
path Parameters
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Carer Id (integer) or Carer Id (null) (Carer Id)
Date (string) or Date (null) (Date)
Time Slot (string) or Time Slot (null) (Time Slot)
Start Time (string) or Start Time (null) (Start Time)
End Time (string) or End Time (null) (End Time)
Location (string) or Location (null) (Location)
Priority (string) or Priority (null) (Priority)
Recurrence Rule (string) or Recurrence Rule (null) (Recurrence Rule)
Handover Notes (string) or Handover Notes (null) (Handover Notes)
Wellbeing Note (string) or Wellbeing Note (null) (Wellbeing Note)
Status (string) or Status (null) (Status)

Responses

Request samples

Content type
application/json
{
  • "carer_id": 0,
  • "date": "string",
  • "time_slot": "string",
  • "start_time": "string",
  • "end_time": "string",
  • "location": "string",
  • "priority": "string",
  • "recurrence_rule": "string",
  • "handover_notes": "string",
  • "wellbeing_note": "string",
  • "status": "string"
}

Response samples

Content type
application/json
null

Cancel Shift

Soft-cancel a shift. Admin-only.

Authorizations:
OAuth2PasswordBearer
path Parameters
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Create Task

Add a task to an existing shift.

Authorizations:
OAuth2PasswordBearer
path Parameters
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
title
required
string (Title)
sort_order
integer (Sort Order)
Default: 0

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "sort_order": 0
}

Response samples

Content type
application/json
null

Update Task

Update a care task.

Authorizations:
OAuth2PasswordBearer
path Parameters
task_id
required
integer (Task Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Title (string) or Title (null) (Title)
Sort Order (integer) or Sort Order (null) (Sort Order)
Completed (boolean) or Completed (null) (Completed)

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "sort_order": 0,
  • "completed": true
}

Response samples

Content type
application/json
null

Delete Task

Soft-delete a care task.

Authorizations:
OAuth2PasswordBearer
path Parameters
task_id
required
integer (Task Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Patient Shifts

Shifts for a patient, optionally filtered to a month.

Members without patient_access receive an empty list (not 403) so the calendar can probe allocation without leaking existence.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
Year (integer) or Year (null) (Year)
Month (integer) or Month (null) (Month)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Patient Shift

Create a shift for a patient with auto group resolution.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Group Id (integer) or Group Id (null) (Group Id)
Patient Id (integer) or Patient Id (null) (Patient Id)
Carer Id (integer) or Carer Id (null) (Carer Id)
date
required
string (Date)
time_slot
string (Time Slot)
Default: "full_day"
Start Time (string) or Start Time (null) (Start Time)
End Time (string) or End Time (null) (End Time)
location
string (Location)
Default: "home"
priority
string (Priority)
Default: "normal"
Recurrence Rule (string) or Recurrence Rule (null) (Recurrence Rule)
Handover Notes (string) or Handover Notes (null) (Handover Notes)
Wellbeing Note (string) or Wellbeing Note (null) (Wellbeing Note)
Array of Tasks (strings) or Tasks (null) (Tasks)

Responses

Request samples

Content type
application/json
{
  • "group_id": 0,
  • "patient_id": 0,
  • "carer_id": 0,
  • "date": "string",
  • "time_slot": "full_day",
  • "start_time": "string",
  • "end_time": "string",
  • "location": "home",
  • "priority": "normal",
  • "recurrence_rule": "string",
  • "handover_notes": "string",
  • "wellbeing_note": "string",
  • "tasks": [
    ]
}

Response samples

Content type
application/json
null

List My Shifts

Caller-owned upcoming shifts for this patient.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
months
integer (Months)
Default: 3
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Coverage Gaps

Dates in the month with no scheduled shift.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
year
required
integer (Year)
month
required
integer (Month)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Patient Shift

Single shift scoped to patient URL.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Patient Shift

Patch a shift within the patient-scoped URL.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Carer Id (integer) or Carer Id (null) (Carer Id)
Date (string) or Date (null) (Date)
Time Slot (string) or Time Slot (null) (Time Slot)
Start Time (string) or Start Time (null) (Start Time)
End Time (string) or End Time (null) (End Time)
Location (string) or Location (null) (Location)
Priority (string) or Priority (null) (Priority)
Recurrence Rule (string) or Recurrence Rule (null) (Recurrence Rule)
Handover Notes (string) or Handover Notes (null) (Handover Notes)
Wellbeing Note (string) or Wellbeing Note (null) (Wellbeing Note)
Status (string) or Status (null) (Status)

Responses

Request samples

Content type
application/json
{
  • "carer_id": 0,
  • "date": "string",
  • "time_slot": "string",
  • "start_time": "string",
  • "end_time": "string",
  • "location": "string",
  • "priority": "string",
  • "recurrence_rule": "string",
  • "handover_notes": "string",
  • "wellbeing_note": "string",
  • "status": "string"
}

Response samples

Content type
application/json
null

Delete Patient Shift

Soft-cancel a shift with ownership enforcement for carers.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Create Patient Task

Add a task to a shift (patient-scoped).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
shift_id
required
integer (Shift Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
title
required
string (Title)
sort_order
integer (Sort Order)
Default: 0

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "sort_order": 0
}

Response samples

Content type
application/json
null

Update Patient Task

Update a task (patient-scoped).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
shift_id
required
integer (Shift Id)
task_id
required
integer (Task Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Title (string) or Title (null) (Title)
Sort Order (integer) or Sort Order (null) (Sort Order)
Completed (boolean) or Completed (null) (Completed)

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "sort_order": 0,
  • "completed": true
}

Response samples

Content type
application/json
null

Delete Patient Task

Soft-delete a task (patient-scoped).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
shift_id
required
integer (Shift Id)
task_id
required
integer (Task Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

patient_appointments

List Patient Appointments

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
year
required
integer (Year)
month
required
integer (Month)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Patient Appointment

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
date
required
string (Date)
appointment_time
required
string (Appointment Time) non-empty

HH:MM (24h)

title
required
string (Title) non-empty
Address (string) or Address (null) (Address)
Appointment Type (string) or Appointment Type (null) (Appointment Type)

Oncology preset: iv_infusion, labs, clinic_review, radiation, imaging, general

Responses

Request samples

Content type
application/json
{
  • "date": "string",
  • "appointment_time": "string",
  • "title": "string",
  • "address": "string",
  • "appointment_type": "string"
}

Response samples

Content type
application/json
null

Update Patient Appointment

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
appointment_id
required
integer (Appointment Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Date (string) or Date (null) (Date)
Appointment Time (string) or Appointment Time (null) (Appointment Time)
Title (string) or Title (null) (Title)
Address (string) or Address (null) (Address)
Appointment Type (string) or Appointment Type (null) (Appointment Type)

Responses

Request samples

Content type
application/json
{
  • "date": "string",
  • "appointment_time": "string",
  • "title": "string",
  • "address": "string",
  • "appointment_type": "string"
}

Response samples

Content type
application/json
null

Delete Patient Appointment

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
appointment_id
required
integer (Appointment Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Patient Appointments

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
year
required
integer (Year)
month
required
integer (Month)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Patient Appointment

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
date
required
string (Date)
appointment_time
required
string (Appointment Time) non-empty

HH:MM (24h)

title
required
string (Title) non-empty
Address (string) or Address (null) (Address)
Appointment Type (string) or Appointment Type (null) (Appointment Type)

Oncology preset: iv_infusion, labs, clinic_review, radiation, imaging, general

Responses

Request samples

Content type
application/json
{
  • "date": "string",
  • "appointment_time": "string",
  • "title": "string",
  • "address": "string",
  • "appointment_type": "string"
}

Response samples

Content type
application/json
null

Update Patient Appointment

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
appointment_id
required
integer (Appointment Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Date (string) or Date (null) (Date)
Appointment Time (string) or Appointment Time (null) (Appointment Time)
Title (string) or Title (null) (Title)
Address (string) or Address (null) (Address)
Appointment Type (string) or Appointment Type (null) (Appointment Type)

Responses

Request samples

Content type
application/json
{
  • "date": "string",
  • "appointment_time": "string",
  • "title": "string",
  • "address": "string",
  • "appointment_type": "string"
}

Response samples

Content type
application/json
null

Delete Patient Appointment

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
appointment_id
required
integer (Appointment Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

scripts

Scan Script

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: multipart/form-data
required
image
required
string <binary> (Image)

Prescription or label image (JPEG/PNG, max 15 MB)

Responses

Response samples

Content type
application/json
null

Scan Script Events

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
job_id
required
string (Job Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Script

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
medicine_name_raw
required
string (Medicine Name Raw)
Color Hex (string) or Color Hex (null) (Color Hex)
as_needed
boolean (As Needed)
Default: false
Strength (string) or Strength (null) (Strength)
Form (string) or Form (null) (Form)
Dose Text (string) or Dose Text (null) (Dose Text)
Frequency Text (string) or Frequency Text (null) (Frequency Text)
Dose Instructions (string) or Dose Instructions (null) (Dose Instructions)
unit
string (Unit)
Default: "tablet"
Quantity Per Fill (integer) or Quantity Per Fill (null) (Quantity Per Fill)
Total Fills Authorised (integer) or Total Fills Authorised (null) (Total Fills Authorised)
low_stock_threshold
integer (Low Stock Threshold)
Default: 7
Prescriber Name (string) or Prescriber Name (null) (Prescriber Name)
Prescriber Practice (string) or Prescriber Practice (null) (Prescriber Practice)
Issued Date (string) or Issued Date (null) (Issued Date)
Expiry Date (string) or Expiry Date (null) (Expiry Date)
scan_status
string (Scan Status)
Default: "manual"
Scan Raw Text (string) or Scan Raw Text (null) (Scan Raw Text)
Scan Confidence (number) or Scan Confidence (null) (Scan Confidence)
Image Url (string) or Image Url (null) (Image Url)
Notes (string) or Notes (null) (Notes)

Responses

Request samples

Content type
application/json
{
  • "medicine_name_raw": "string",
  • "color_hex": "string",
  • "as_needed": false,
  • "strength": "string",
  • "form": "string",
  • "dose_text": "string",
  • "frequency_text": "string",
  • "dose_instructions": "string",
  • "unit": "tablet",
  • "quantity_per_fill": 0,
  • "total_fills_authorised": 0,
  • "low_stock_threshold": 7,
  • "prescriber_name": "string",
  • "prescriber_practice": "string",
  • "issued_date": "string",
  • "expiry_date": "string",
  • "scan_status": "manual",
  • "scan_raw_text": "string",
  • "scan_confidence": 0,
  • "image_url": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
null

List Scripts

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
Status (string) or Status (null) (Status)
include_archived
boolean (Include Archived)
Default: false
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Upload Script Image

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: multipart/form-data
required
image
required
string <binary> (Image)

Responses

Response samples

Content type
application/json
null

Serve Image

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Script Alerts

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Dismiss Script Alert

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
script_id
required
integer (Script Id)
alert_type
required
string (Alert Type)
Enum: "stock_low" "stock_tracking_incomplete" "approaching_last_fill" "exhausted" "expired"

Responses

Request samples

Content type
application/json
{
  • "script_id": 0,
  • "alert_type": "stock_low"
}

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Medicine Script Summary

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Script

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Script

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Medicine Name Raw (string) or Medicine Name Raw (null) (Medicine Name Raw)
Color Hex (string) or Color Hex (null) (Color Hex)
As Needed (boolean) or As Needed (null) (As Needed)
Strength (string) or Strength (null) (Strength)
Form (string) or Form (null) (Form)
Dose Text (string) or Dose Text (null) (Dose Text)
Frequency Text (string) or Frequency Text (null) (Frequency Text)
Dose Instructions (string) or Dose Instructions (null) (Dose Instructions)
Unit (string) or Unit (null) (Unit)
Quantity Per Fill (integer) or Quantity Per Fill (null) (Quantity Per Fill)
Total Fills Authorised (integer) or Total Fills Authorised (null) (Total Fills Authorised)
Fills Completed (integer) or Fills Completed (null) (Fills Completed)
Stock Adjustment (integer) or Stock Adjustment (null) (Stock Adjustment)
Pills Available (integer) or Pills Available (null) (Pills Available)

Admin physical dose count on hand (tablets, ml, etc.); persists last_physical_count + last_physical_count_at as authoritative baseline.

Low Stock Threshold (integer) or Low Stock Threshold (null) (Low Stock Threshold)
Prescriber Name (string) or Prescriber Name (null) (Prescriber Name)
Prescriber Practice (string) or Prescriber Practice (null) (Prescriber Practice)
Issued Date (string) or Issued Date (null) (Issued Date)
Expiry Date (string) or Expiry Date (null) (Expiry Date)
Status (string) or Status (null) (Status)
Notes (string) or Notes (null) (Notes)
Scan Status (string) or Scan Status (null) (Scan Status)

Responses

Request samples

Content type
application/json
{
  • "medicine_name_raw": "string",
  • "color_hex": "string",
  • "as_needed": true,
  • "strength": "string",
  • "form": "string",
  • "dose_text": "string",
  • "frequency_text": "string",
  • "dose_instructions": "string",
  • "unit": "string",
  • "quantity_per_fill": 0,
  • "total_fills_authorised": 0,
  • "fills_completed": 0,
  • "stock_adjustment": 0,
  • "pills_available": 0,
  • "low_stock_threshold": 0,
  • "prescriber_name": "string",
  • "prescriber_practice": "string",
  • "issued_date": "string",
  • "expiry_date": "string",
  • "status": "string",
  • "notes": "string",
  • "scan_status": "string"
}

Response samples

Content type
application/json
null

Record Fill

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
quantity_added
required
integer (Quantity Added)
Notes (string) or Notes (null) (Notes)

Responses

Request samples

Content type
application/json
{
  • "quantity_added": 0,
  • "notes": "string"
}

Response samples

Content type
application/json
null

Undo Fill

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
fill_id
required
integer (Fill Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Scan Script

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: multipart/form-data
required
image
required
string <binary> (Image)

Prescription or label image (JPEG/PNG, max 15 MB)

Responses

Response samples

Content type
application/json
null

Scan Script Events

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
job_id
required
string (Job Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Script

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
medicine_name_raw
required
string (Medicine Name Raw)
Color Hex (string) or Color Hex (null) (Color Hex)
as_needed
boolean (As Needed)
Default: false
Strength (string) or Strength (null) (Strength)
Form (string) or Form (null) (Form)
Dose Text (string) or Dose Text (null) (Dose Text)
Frequency Text (string) or Frequency Text (null) (Frequency Text)
Dose Instructions (string) or Dose Instructions (null) (Dose Instructions)
unit
string (Unit)
Default: "tablet"
Quantity Per Fill (integer) or Quantity Per Fill (null) (Quantity Per Fill)
Total Fills Authorised (integer) or Total Fills Authorised (null) (Total Fills Authorised)
low_stock_threshold
integer (Low Stock Threshold)
Default: 7
Prescriber Name (string) or Prescriber Name (null) (Prescriber Name)
Prescriber Practice (string) or Prescriber Practice (null) (Prescriber Practice)
Issued Date (string) or Issued Date (null) (Issued Date)
Expiry Date (string) or Expiry Date (null) (Expiry Date)
scan_status
string (Scan Status)
Default: "manual"
Scan Raw Text (string) or Scan Raw Text (null) (Scan Raw Text)
Scan Confidence (number) or Scan Confidence (null) (Scan Confidence)
Image Url (string) or Image Url (null) (Image Url)
Notes (string) or Notes (null) (Notes)

Responses

Request samples

Content type
application/json
{
  • "medicine_name_raw": "string",
  • "color_hex": "string",
  • "as_needed": false,
  • "strength": "string",
  • "form": "string",
  • "dose_text": "string",
  • "frequency_text": "string",
  • "dose_instructions": "string",
  • "unit": "tablet",
  • "quantity_per_fill": 0,
  • "total_fills_authorised": 0,
  • "low_stock_threshold": 7,
  • "prescriber_name": "string",
  • "prescriber_practice": "string",
  • "issued_date": "string",
  • "expiry_date": "string",
  • "scan_status": "manual",
  • "scan_raw_text": "string",
  • "scan_confidence": 0,
  • "image_url": "string",
  • "notes": "string"
}

Response samples

Content type
application/json
null

List Scripts

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
Status (string) or Status (null) (Status)
include_archived
boolean (Include Archived)
Default: false
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Upload Script Image

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: multipart/form-data
required
image
required
string <binary> (Image)

Responses

Response samples

Content type
application/json
null

Serve Image

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Script Alerts

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Dismiss Script Alert

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
script_id
required
integer (Script Id)
alert_type
required
string (Alert Type)
Enum: "stock_low" "stock_tracking_incomplete" "approaching_last_fill" "exhausted" "expired"

Responses

Request samples

Content type
application/json
{
  • "script_id": 0,
  • "alert_type": "stock_low"
}

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Medicine Script Summary

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Script

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Script

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Medicine Name Raw (string) or Medicine Name Raw (null) (Medicine Name Raw)
Color Hex (string) or Color Hex (null) (Color Hex)
As Needed (boolean) or As Needed (null) (As Needed)
Strength (string) or Strength (null) (Strength)
Form (string) or Form (null) (Form)
Dose Text (string) or Dose Text (null) (Dose Text)
Frequency Text (string) or Frequency Text (null) (Frequency Text)
Dose Instructions (string) or Dose Instructions (null) (Dose Instructions)
Unit (string) or Unit (null) (Unit)
Quantity Per Fill (integer) or Quantity Per Fill (null) (Quantity Per Fill)
Total Fills Authorised (integer) or Total Fills Authorised (null) (Total Fills Authorised)
Fills Completed (integer) or Fills Completed (null) (Fills Completed)
Stock Adjustment (integer) or Stock Adjustment (null) (Stock Adjustment)
Pills Available (integer) or Pills Available (null) (Pills Available)

Admin physical dose count on hand (tablets, ml, etc.); persists last_physical_count + last_physical_count_at as authoritative baseline.

Low Stock Threshold (integer) or Low Stock Threshold (null) (Low Stock Threshold)
Prescriber Name (string) or Prescriber Name (null) (Prescriber Name)
Prescriber Practice (string) or Prescriber Practice (null) (Prescriber Practice)
Issued Date (string) or Issued Date (null) (Issued Date)
Expiry Date (string) or Expiry Date (null) (Expiry Date)
Status (string) or Status (null) (Status)
Notes (string) or Notes (null) (Notes)
Scan Status (string) or Scan Status (null) (Scan Status)

Responses

Request samples

Content type
application/json
{
  • "medicine_name_raw": "string",
  • "color_hex": "string",
  • "as_needed": true,
  • "strength": "string",
  • "form": "string",
  • "dose_text": "string",
  • "frequency_text": "string",
  • "dose_instructions": "string",
  • "unit": "string",
  • "quantity_per_fill": 0,
  • "total_fills_authorised": 0,
  • "fills_completed": 0,
  • "stock_adjustment": 0,
  • "pills_available": 0,
  • "low_stock_threshold": 0,
  • "prescriber_name": "string",
  • "prescriber_practice": "string",
  • "issued_date": "string",
  • "expiry_date": "string",
  • "status": "string",
  • "notes": "string",
  • "scan_status": "string"
}

Response samples

Content type
application/json
null

Record Fill

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
quantity_added
required
integer (Quantity Added)
Notes (string) or Notes (null) (Notes)

Responses

Request samples

Content type
application/json
{
  • "quantity_added": 0,
  • "notes": "string"
}

Response samples

Content type
application/json
null

Undo Fill

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
script_id
required
integer (Script Id)
fill_id
required
integer (Fill Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

sleep

List Sleep Entries

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
start_date
required
string (Start Date)

YYYY-MM-DD

end_date
required
string (End Date)

YYYY-MM-DD

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Save Sleep Day

Replace all sleep entries for the given date atomically. Passing an empty entries list clears the day completely.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
date
required
string (Date)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
required
Array of objects (Entries)

Responses

Request samples

Content type
application/json
{
  • "entries": [
    ]
}

Response samples

Content type
application/json
null

List Sleep Entries

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
start_date
required
string (Start Date)

YYYY-MM-DD

end_date
required
string (End Date)

YYYY-MM-DD

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Save Sleep Day

Replace all sleep entries for the given date atomically. Passing an empty entries list clears the day completely.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
date
required
string (Date)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
required
Array of objects (Entries)

Responses

Request samples

Content type
application/json
{
  • "entries": [
    ]
}

Response samples

Content type
application/json
null

vitals

List Vitals

Return all vital readings for the patient on the given date, ordered by time.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
date
required
string (Date)

YYYY-MM-DD

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Vitals Trend

Return every individual vital reading over the past N days.

The frontend groups by date to build per-vital high/low bands with scatter points for intermediate readings (like Bollinger bands).

Each row: { date, recorded_time, pulse_bpm, spo2_pct, temp_celsius } Value columns are nullable — a reading may record only one vital type.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
days
integer (Days) [ 7 .. 365 ]
Default: 30

Number of days to look back

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Vital

Record a single vital reading for a specific time on the given date.

Multiple readings per day are allowed; a conflict at the same minute for the same vital type is rejected with HTTP 409.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
date
required
string (Date)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
recorded_time
required
string (Recorded Time)
Pulse Bpm (integer) or Pulse Bpm (null) (Pulse Bpm)
Spo2 Pct (integer) or Spo2 Pct (null) (Spo2 Pct)
Temp Celsius (number) or Temp Celsius (null) (Temp Celsius)

Responses

Request samples

Content type
application/json
{
  • "recorded_time": "string",
  • "pulse_bpm": 0,
  • "spo2_pct": 0,
  • "temp_celsius": 0
}

Response samples

Content type
application/json
null

Delete Vital

Delete a single vital reading by id.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
entry_id
required
integer (Entry Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Vitals

Return all vital readings for the patient on the given date, ordered by time.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
date
required
string (Date)

YYYY-MM-DD

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Vitals Trend

Return every individual vital reading over the past N days.

The frontend groups by date to build per-vital high/low bands with scatter points for intermediate readings (like Bollinger bands).

Each row: { date, recorded_time, pulse_bpm, spo2_pct, temp_celsius } Value columns are nullable — a reading may record only one vital type.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
days
integer (Days) [ 7 .. 365 ]
Default: 30

Number of days to look back

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Vital

Record a single vital reading for a specific time on the given date.

Multiple readings per day are allowed; a conflict at the same minute for the same vital type is rejected with HTTP 409.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
date
required
string (Date)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
recorded_time
required
string (Recorded Time)
Pulse Bpm (integer) or Pulse Bpm (null) (Pulse Bpm)
Spo2 Pct (integer) or Spo2 Pct (null) (Spo2 Pct)
Temp Celsius (number) or Temp Celsius (null) (Temp Celsius)

Responses

Request samples

Content type
application/json
{
  • "recorded_time": "string",
  • "pulse_bpm": 0,
  • "spo2_pct": 0,
  • "temp_celsius": 0
}

Response samples

Content type
application/json
null

Delete Vital

Delete a single vital reading by id.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
entry_id
required
integer (Entry Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

intake-output

List Intake Output

Return urine and bowel entries for the patient on the given date.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
date
required
string (Date)

YYYY-MM-DD

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Intake Output Trend

Return intake/output rows over the past N days for trend charts.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
days
integer (Days) [ 7 .. 365 ]
Default: 30

Number of days to look back

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Intake Output

Record urine and/or bowel observations for a specific time on the given date.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
date
required
string (Date)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
recorded_time
string (Recorded Time)
Default: "12:00"
Urine Volume Band (integer) or Urine Volume Band (null) (Urine Volume Band)
Urine Color (string) or Urine Color (null) (Urine Color)
Stool Bristol (integer) or Stool Bristol (null) (Stool Bristol)
stool_flags
Array of strings (Stool Flags)
Default: []

Responses

Request samples

Content type
application/json
{
  • "recorded_time": "12:00",
  • "urine_volume_band": 0,
  • "urine_color": "string",
  • "stool_bristol": 0,
  • "stool_flags": [ ]
}

Response samples

Content type
application/json
null

Delete Intake Output

Delete a single intake/output entry by id.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
entry_id
required
integer (Entry Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Intake Output

Return urine and bowel entries for the patient on the given date.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
date
required
string (Date)

YYYY-MM-DD

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Intake Output Trend

Return intake/output rows over the past N days for trend charts.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
days
integer (Days) [ 7 .. 365 ]
Default: 30

Number of days to look back

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Intake Output

Record urine and/or bowel observations for a specific time on the given date.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
date
required
string (Date)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
recorded_time
string (Recorded Time)
Default: "12:00"
Urine Volume Band (integer) or Urine Volume Band (null) (Urine Volume Band)
Urine Color (string) or Urine Color (null) (Urine Color)
Stool Bristol (integer) or Stool Bristol (null) (Stool Bristol)
stool_flags
Array of strings (Stool Flags)
Default: []

Responses

Request samples

Content type
application/json
{
  • "recorded_time": "12:00",
  • "urine_volume_band": 0,
  • "urine_color": "string",
  • "stool_bristol": 0,
  • "stool_flags": [ ]
}

Response samples

Content type
application/json
null

Delete Intake Output

Delete a single intake/output entry by id.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
entry_id
required
integer (Entry Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

pain

List Pain Entries

Return all pain entries recorded for the patient on the given date.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
date
required
string (Date)

YYYY-MM-DD

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Pain Entry

Record a pain assessment for a body region on a given date.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
date
required
string (Date)
body_region
required
string (Body Region)
region_label
required
string (Region Label)
body_side
string (Body Side)
Default: "front"
anatomy_type
string (Anatomy Type)
Default: "muscle"
pain_level
required
integer (Pain Level)
indicator_x_pct
number (Indicator X Pct)
Default: 50
indicator_y_pct
number (Indicator Y Pct)
Default: 50
Notes (string) or Notes (null) (Notes)
body_layer
string (Body Layer)
Default: "surface"

Responses

Request samples

Content type
application/json
{
  • "date": "string",
  • "body_region": "string",
  • "region_label": "string",
  • "body_side": "front",
  • "anatomy_type": "muscle",
  • "pain_level": 0,
  • "indicator_x_pct": 50,
  • "indicator_y_pct": 50,
  • "notes": "string",
  • "body_layer": "surface"
}

Response samples

Content type
application/json
null

Pain Trend

Return the daily max pain level for a body region over the past N days.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
region
required
string (Region)

Body region slug

days
integer (Days) [ 7 .. 365 ]
Default: 30

Number of days to look back

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Pain Trend All

Return daily max pain data for every body region over the past N days.

Response: { slug: { label: str, points: [{date, max_pain, anatomy_type}, ...] } }

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
days
integer (Days) [ 7 .. 365 ]
Default: 30

Number of days to look back

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Latest Pain Entries

Return all entries from the most recent date with data, strictly before before.

Used to offer carry-forward when navigating to a day with no entries yet. Returns an empty list if no prior entries exist.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
before
required
string (Before)

YYYY-MM-DD — return entries from the most recent date strictly before this

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Delete Pain Entry

Remove a specific pain entry. Restricted to the entry's own tenant.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
entry_id
required
integer (Entry Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Pain Entries

Return all pain entries recorded for the patient on the given date.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
date
required
string (Date)

YYYY-MM-DD

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Pain Entry

Record a pain assessment for a body region on a given date.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
date
required
string (Date)
body_region
required
string (Body Region)
region_label
required
string (Region Label)
body_side
string (Body Side)
Default: "front"
anatomy_type
string (Anatomy Type)
Default: "muscle"
pain_level
required
integer (Pain Level)
indicator_x_pct
number (Indicator X Pct)
Default: 50
indicator_y_pct
number (Indicator Y Pct)
Default: 50
Notes (string) or Notes (null) (Notes)
body_layer
string (Body Layer)
Default: "surface"

Responses

Request samples

Content type
application/json
{
  • "date": "string",
  • "body_region": "string",
  • "region_label": "string",
  • "body_side": "front",
  • "anatomy_type": "muscle",
  • "pain_level": 0,
  • "indicator_x_pct": 50,
  • "indicator_y_pct": 50,
  • "notes": "string",
  • "body_layer": "surface"
}

Response samples

Content type
application/json
null

Pain Trend

Return the daily max pain level for a body region over the past N days.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
region
required
string (Region)

Body region slug

days
integer (Days) [ 7 .. 365 ]
Default: 30

Number of days to look back

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Pain Trend All

Return daily max pain data for every body region over the past N days.

Response: { slug: { label: str, points: [{date, max_pain, anatomy_type}, ...] } }

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
days
integer (Days) [ 7 .. 365 ]
Default: 30

Number of days to look back

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Latest Pain Entries

Return all entries from the most recent date with data, strictly before before.

Used to offer carry-forward when navigating to a day with no entries yet. Returns an empty list if no prior entries exist.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
before
required
string (Before)

YYYY-MM-DD — return entries from the most recent date strictly before this

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Delete Pain Entry

Remove a specific pain entry. Restricted to the entry's own tenant.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
entry_id
required
integer (Entry Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

mind

Get Mind Entry

Return the mind assessment for the patient on the given date, or null.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
date
required
string (Date)

YYYY-MM-DD

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Upsert Mind Entry

Create or update the mental state assessment for a patient on a specific date.

Each domain is a nullable SMALLINT (0–4); NULL means not assessed.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
date
required
string (Date)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Mood (integer) or Mood (null) (Mood)
Anxiety (integer) or Anxiety (null) (Anxiety)
Fear (integer) or Fear (null) (Fear)
Cognition (integer) or Cognition (null) (Cognition)
Behaviour (integer) or Behaviour (null) (Behaviour)
Sleep (integer) or Sleep (null) (Sleep)
Coping (integer) or Coping (null) (Coping)

Responses

Request samples

Content type
application/json
{
  • "mood": 0,
  • "anxiety": 0,
  • "fear": 0,
  • "cognition": 0,
  • "behaviour": 0,
  • "sleep": 0,
  • "coping": 0
}

Response samples

Content type
application/json
null

Mind Trend

Return daily mental state scores for all domains over the past N days.

Only dates with at least one non-null score are included. Each row: { date, mood, anxiety, fear, cognition, behaviour, sleep, coping }

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
days
integer (Days) [ 7 .. 365 ]
Default: 30

Number of days to look back

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Mind Entry

Return the mind assessment for the patient on the given date, or null.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
date
required
string (Date)

YYYY-MM-DD

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Upsert Mind Entry

Create or update the mental state assessment for a patient on a specific date.

Each domain is a nullable SMALLINT (0–4); NULL means not assessed.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
date
required
string (Date)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Mood (integer) or Mood (null) (Mood)
Anxiety (integer) or Anxiety (null) (Anxiety)
Fear (integer) or Fear (null) (Fear)
Cognition (integer) or Cognition (null) (Cognition)
Behaviour (integer) or Behaviour (null) (Behaviour)
Sleep (integer) or Sleep (null) (Sleep)
Coping (integer) or Coping (null) (Coping)

Responses

Request samples

Content type
application/json
{
  • "mood": 0,
  • "anxiety": 0,
  • "fear": 0,
  • "cognition": 0,
  • "behaviour": 0,
  • "sleep": 0,
  • "coping": 0
}

Response samples

Content type
application/json
null

Mind Trend

Return daily mental state scores for all domains over the past N days.

Only dates with at least one non-null score are included. Each row: { date, mood, anxiety, fear, cognition, behaviour, sleep, coping }

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
days
integer (Days) [ 7 .. 365 ]
Default: 30

Number of days to look back

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

pain-settings

Get Pain Settings

Return pain module settings for the current tenant, merged with defaults.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Pain Settings

Update pain module settings for the current tenant. Tenant admin only.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Module Label (string) or Module Label (null) (Module Label)
Module Description (string) or Module Description (null) (Module Description)
Enable Body Map (boolean) or Enable Body Map (null) (Enable Body Map)
Enable Vitals (boolean) or Enable Vitals (null) (Enable Vitals)
Enable Mind (boolean) or Enable Mind (null) (Enable Mind)
Standalone Mode (boolean) or Standalone Mode (null) (Standalone Mode)
Storage Key Prefix (string) or Storage Key Prefix (null) (Storage Key Prefix)

Responses

Request samples

Content type
application/json
{
  • "module_label": "string",
  • "module_description": "string",
  • "enable_body_map": true,
  • "enable_vitals": true,
  • "enable_mind": true,
  • "standalone_mode": true,
  • "storage_key_prefix": "string"
}

Response samples

Content type
application/json
null

Get Pain Settings

Return pain module settings for the current tenant, merged with defaults.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Pain Settings

Update pain module settings for the current tenant. Tenant admin only.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Module Label (string) or Module Label (null) (Module Label)
Module Description (string) or Module Description (null) (Module Description)
Enable Body Map (boolean) or Enable Body Map (null) (Enable Body Map)
Enable Vitals (boolean) or Enable Vitals (null) (Enable Vitals)
Enable Mind (boolean) or Enable Mind (null) (Enable Mind)
Standalone Mode (boolean) or Standalone Mode (null) (Standalone Mode)
Storage Key Prefix (string) or Storage Key Prefix (null) (Storage Key Prefix)

Responses

Request samples

Content type
application/json
{
  • "module_label": "string",
  • "module_description": "string",
  • "enable_body_map": true,
  • "enable_vitals": true,
  • "enable_mind": true,
  • "standalone_mode": true,
  • "storage_key_prefix": "string"
}

Response samples

Content type
application/json
null

shopping

List Shopping Lists

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Shopping List

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
name
required
string (Name)
list_type
string (List Type)
Default: "general"
grouping_mode
string (Grouping Mode)
Default: "by_category"

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "list_type": "general",
  • "grouping_mode": "by_category"
}

Response samples

Content type
application/json
null

Update Shopping List

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Grouping Mode (string) or Grouping Mode (null) (Grouping Mode)
Sort Order (integer) or Sort Order (null) (Sort Order)
Is Active (boolean) or Is Active (null) (Is Active)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "grouping_mode": "string",
  • "sort_order": 0,
  • "is_active": true
}

Response samples

Content type
application/json
null

Delete Shopping List

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Shopping Items

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
query Parameters
status
string (Status)
Default: "active"

active|purchased|removed|all

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Add Shopping Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Catalog Item Id (integer) or Catalog Item Id (null) (Catalog Item Id)
Suggestion Id (integer) or Suggestion Id (null) (Suggestion Id)
name
required
string (Name)
Category Id (integer) or Category Id (null) (Category Id)
Subcategory Id (integer) or Subcategory Id (null) (Subcategory Id)
item_type
string (Item Type)
Default: "product"
quantity
number (Quantity)
Default: 1
Unit (string) or Unit (null) (Unit)
Notes (string) or Notes (null) (Notes)
priority
string (Priority)
Default: "normal"
Supplier Notes (string) or Supplier Notes (null) (Supplier Notes)
is_recurring
boolean (Is Recurring)
Default: false
Recurrence Interval Days (integer) or Recurrence Interval Days (null) (Recurrence Interval Days)
Shift Id (integer) or Shift Id (null) (Shift Id)
Photo Url (string) or Photo Url (null) (Photo Url)

Responses

Request samples

Content type
application/json
{
  • "catalog_item_id": 0,
  • "suggestion_id": 0,
  • "name": "string",
  • "category_id": 0,
  • "subcategory_id": 0,
  • "item_type": "product",
  • "quantity": 1,
  • "unit": "string",
  • "notes": "string",
  • "priority": "normal",
  • "supplier_notes": "string",
  • "is_recurring": false,
  • "recurrence_interval_days": 0,
  • "shift_id": 0,
  • "photo_url": "string"
}

Response samples

Content type
application/json
null

Update Shopping Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Quantity (number) or Quantity (null) (Quantity)
Unit (string) or Unit (null) (Unit)
Notes (string) or Notes (null) (Notes)
Priority (string) or Priority (null) (Priority)
Supplier Notes (string) or Supplier Notes (null) (Supplier Notes)
Is Recurring (boolean) or Is Recurring (null) (Is Recurring)
Recurrence Interval Days (integer) or Recurrence Interval Days (null) (Recurrence Interval Days)
Category Id (integer) or Category Id (null) (Category Id)
Subcategory Id (integer) or Subcategory Id (null) (Subcategory Id)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "quantity": 0,
  • "unit": "string",
  • "notes": "string",
  • "priority": "string",
  • "supplier_notes": "string",
  • "is_recurring": true,
  • "recurrence_interval_days": 0,
  • "category_id": 0,
  • "subcategory_id": 0
}

Response samples

Content type
application/json
null

Delete Shopping Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Purchase Shopping Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Unpurchase Shopping Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Remove Shopping Item Post

POST variant of remove — matches the purchase/unpurchase pattern.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Upload Item Photo

Attach or replace the branded product photo on a shopping list item.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: multipart/form-data
required
image
required
string <binary> (Image)

Responses

Response samples

Content type
application/json
{ }

Delete Item Photo

Admin-only: remove the custom product photo and revert the item to its default icon.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Serve Item Photo

Serve the stored product photo (authenticated — not public static).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Serve Catalog Item Photo

Serve the most recent custom product photo taken for a catalog item by this patient/tenant. Used to show user's own branded photo on catalog tiles.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
catalog_item_id
required
integer (Catalog Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Serve Suggestion Item Photo

Serve the most recent custom product photo taken for a user-added suggestion item by this patient/tenant. Mirrors serve_catalog_item_photo but keyed by suggestion_id.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
suggestion_id
required
integer (Suggestion Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Clear Purchased Items

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Used Before

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
limit
integer (Limit) [ 1 .. 100 ]
Default: 30
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Catalog Badge Overrides

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Put Catalog Badge Override

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Catalog Item Id (integer) or Catalog Item Id (null) (Catalog Item Id)
Suggestion Id (integer) or Suggestion Id (null) (Suggestion Id)
mode
required
string (Mode)

Responses

Request samples

Content type
application/json
{
  • "catalog_item_id": 0,
  • "suggestion_id": 0,
  • "mode": "string"
}

Response samples

Content type
application/json
null

Shopping Events

Server-Sent Events stream for real-time shopping list updates.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Catalog Categories

Authorizations:
OAuth2PasswordBearer
query Parameters
Locale (string) or Locale (null) (Locale)

BCP-47 locale e.g. en-AU

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Catalog Search

Authorizations:
OAuth2PasswordBearer
query Parameters
q
required
string (Q) >= 2 characters

Search query (min 2 chars)

Locale (string) or Locale (null) (Locale)

BCP-47 locale

List Type (string) or List Type (null) (List Type)
limit
integer (Limit) [ 1 .. 50 ]
Default: 20
Patient Id (integer) or Patient Id (null) (Patient Id)

When set, each row may include patient_photo_url for this patient's custom photos

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Catalog Browse

Browse catalog items for a category/subcategory without a text query.

Authorizations:
OAuth2PasswordBearer
query Parameters
Category Id (integer) or Category Id (null) (Category Id)

Filter by category id

Subcategory Id (integer) or Subcategory Id (null) (Subcategory Id)

Filter by subcategory id

List Type (string) or List Type (null) (List Type)
Locale (string) or Locale (null) (Locale)

BCP-47 locale

limit
integer (Limit) [ 1 .. 500 ]
Default: 60
Patient Id (integer) or Patient Id (null) (Patient Id)

When set, each row may include patient_photo_url for this patient's custom photos

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Suggest Catalog Item

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
suggested_name
required
string (Suggested Name)
Suggested Category Id (integer) or Suggested Category Id (null) (Suggested Category Id)
Suggested Subcategory Id (integer) or Suggested Subcategory Id (null) (Suggested Subcategory Id)
item_type
string (Item Type)
Default: "product"
Locale (string) or Locale (null) (Locale)
Icon Emoji (string) or Icon Emoji (null) (Icon Emoji)
is_explicit
boolean (Is Explicit)
Default: false

Responses

Request samples

Content type
application/json
{
  • "suggested_name": "string",
  • "suggested_category_id": 0,
  • "suggested_subcategory_id": 0,
  • "item_type": "product",
  • "locale": "string",
  • "icon_emoji": "string",
  • "is_explicit": false
}

Response samples

Content type
application/json
{ }

Patch Catalog Suggestion

Update a pending explicit custom product. Creators may edit their own; tenant admins may edit any.

Authorizations:
OAuth2PasswordBearer
path Parameters
suggestion_id
required
integer (Suggestion Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Suggested Name (string) or Suggested Name (null) (Suggested Name)
Suggested Category Id (integer) or Suggested Category Id (null) (Suggested Category Id)
Suggested Subcategory Id (integer) or Suggested Subcategory Id (null) (Suggested Subcategory Id)

Responses

Request samples

Content type
application/json
{
  • "suggested_name": "string",
  • "suggested_category_id": 0,
  • "suggested_subcategory_id": 0
}

Response samples

Content type
application/json
null

Delete Tenant Custom Suggestion

Tenant administrators may remove their own pending explicit custom-product suggestion from the catalog (same effect as rejecting it in the admin queue).

Authorizations:
OAuth2PasswordBearer
path Parameters
suggestion_id
required
integer (Suggestion Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Catalog Pending Suggestions Count

Return the count of the current tenant's pending explicit custom-product suggestions and (for super-admins) the global pending count.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Shopping Lists

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Shopping List

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
name
required
string (Name)
list_type
string (List Type)
Default: "general"
grouping_mode
string (Grouping Mode)
Default: "by_category"

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "list_type": "general",
  • "grouping_mode": "by_category"
}

Response samples

Content type
application/json
null

Update Shopping List

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Grouping Mode (string) or Grouping Mode (null) (Grouping Mode)
Sort Order (integer) or Sort Order (null) (Sort Order)
Is Active (boolean) or Is Active (null) (Is Active)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "grouping_mode": "string",
  • "sort_order": 0,
  • "is_active": true
}

Response samples

Content type
application/json
null

Delete Shopping List

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Shopping Items

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
query Parameters
status
string (Status)
Default: "active"

active|purchased|removed|all

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Add Shopping Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Catalog Item Id (integer) or Catalog Item Id (null) (Catalog Item Id)
Suggestion Id (integer) or Suggestion Id (null) (Suggestion Id)
name
required
string (Name)
Category Id (integer) or Category Id (null) (Category Id)
Subcategory Id (integer) or Subcategory Id (null) (Subcategory Id)
item_type
string (Item Type)
Default: "product"
quantity
number (Quantity)
Default: 1
Unit (string) or Unit (null) (Unit)
Notes (string) or Notes (null) (Notes)
priority
string (Priority)
Default: "normal"
Supplier Notes (string) or Supplier Notes (null) (Supplier Notes)
is_recurring
boolean (Is Recurring)
Default: false
Recurrence Interval Days (integer) or Recurrence Interval Days (null) (Recurrence Interval Days)
Shift Id (integer) or Shift Id (null) (Shift Id)
Photo Url (string) or Photo Url (null) (Photo Url)

Responses

Request samples

Content type
application/json
{
  • "catalog_item_id": 0,
  • "suggestion_id": 0,
  • "name": "string",
  • "category_id": 0,
  • "subcategory_id": 0,
  • "item_type": "product",
  • "quantity": 1,
  • "unit": "string",
  • "notes": "string",
  • "priority": "normal",
  • "supplier_notes": "string",
  • "is_recurring": false,
  • "recurrence_interval_days": 0,
  • "shift_id": 0,
  • "photo_url": "string"
}

Response samples

Content type
application/json
null

Update Shopping Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Quantity (number) or Quantity (null) (Quantity)
Unit (string) or Unit (null) (Unit)
Notes (string) or Notes (null) (Notes)
Priority (string) or Priority (null) (Priority)
Supplier Notes (string) or Supplier Notes (null) (Supplier Notes)
Is Recurring (boolean) or Is Recurring (null) (Is Recurring)
Recurrence Interval Days (integer) or Recurrence Interval Days (null) (Recurrence Interval Days)
Category Id (integer) or Category Id (null) (Category Id)
Subcategory Id (integer) or Subcategory Id (null) (Subcategory Id)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "quantity": 0,
  • "unit": "string",
  • "notes": "string",
  • "priority": "string",
  • "supplier_notes": "string",
  • "is_recurring": true,
  • "recurrence_interval_days": 0,
  • "category_id": 0,
  • "subcategory_id": 0
}

Response samples

Content type
application/json
null

Delete Shopping Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Purchase Shopping Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Unpurchase Shopping Item

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Remove Shopping Item Post

POST variant of remove — matches the purchase/unpurchase pattern.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Upload Item Photo

Attach or replace the branded product photo on a shopping list item.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: multipart/form-data
required
image
required
string <binary> (Image)

Responses

Response samples

Content type
application/json
{ }

Delete Item Photo

Admin-only: remove the custom product photo and revert the item to its default icon.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Serve Item Photo

Serve the stored product photo (authenticated — not public static).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Serve Catalog Item Photo

Serve the most recent custom product photo taken for a catalog item by this patient/tenant. Used to show user's own branded photo on catalog tiles.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
catalog_item_id
required
integer (Catalog Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Serve Suggestion Item Photo

Serve the most recent custom product photo taken for a user-added suggestion item by this patient/tenant. Mirrors serve_catalog_item_photo but keyed by suggestion_id.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
suggestion_id
required
integer (Suggestion Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Clear Purchased Items

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
list_id
required
integer (List Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Used Before

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
limit
integer (Limit) [ 1 .. 100 ]
Default: 30
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Catalog Badge Overrides

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Put Catalog Badge Override

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Catalog Item Id (integer) or Catalog Item Id (null) (Catalog Item Id)
Suggestion Id (integer) or Suggestion Id (null) (Suggestion Id)
mode
required
string (Mode)

Responses

Request samples

Content type
application/json
{
  • "catalog_item_id": 0,
  • "suggestion_id": 0,
  • "mode": "string"
}

Response samples

Content type
application/json
null

Shopping Events

Server-Sent Events stream for real-time shopping list updates.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Catalog Categories

Authorizations:
OAuth2PasswordBearer
query Parameters
Locale (string) or Locale (null) (Locale)

BCP-47 locale e.g. en-AU

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Catalog Search

Authorizations:
OAuth2PasswordBearer
query Parameters
q
required
string (Q) >= 2 characters

Search query (min 2 chars)

Locale (string) or Locale (null) (Locale)

BCP-47 locale

List Type (string) or List Type (null) (List Type)
limit
integer (Limit) [ 1 .. 50 ]
Default: 20
Patient Id (integer) or Patient Id (null) (Patient Id)

When set, each row may include patient_photo_url for this patient's custom photos

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Catalog Browse

Browse catalog items for a category/subcategory without a text query.

Authorizations:
OAuth2PasswordBearer
query Parameters
Category Id (integer) or Category Id (null) (Category Id)

Filter by category id

Subcategory Id (integer) or Subcategory Id (null) (Subcategory Id)

Filter by subcategory id

List Type (string) or List Type (null) (List Type)
Locale (string) or Locale (null) (Locale)

BCP-47 locale

limit
integer (Limit) [ 1 .. 500 ]
Default: 60
Patient Id (integer) or Patient Id (null) (Patient Id)

When set, each row may include patient_photo_url for this patient's custom photos

As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Suggest Catalog Item

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
suggested_name
required
string (Suggested Name)
Suggested Category Id (integer) or Suggested Category Id (null) (Suggested Category Id)
Suggested Subcategory Id (integer) or Suggested Subcategory Id (null) (Suggested Subcategory Id)
item_type
string (Item Type)
Default: "product"
Locale (string) or Locale (null) (Locale)
Icon Emoji (string) or Icon Emoji (null) (Icon Emoji)
is_explicit
boolean (Is Explicit)
Default: false

Responses

Request samples

Content type
application/json
{
  • "suggested_name": "string",
  • "suggested_category_id": 0,
  • "suggested_subcategory_id": 0,
  • "item_type": "product",
  • "locale": "string",
  • "icon_emoji": "string",
  • "is_explicit": false
}

Response samples

Content type
application/json
{ }

Patch Catalog Suggestion

Update a pending explicit custom product. Creators may edit their own; tenant admins may edit any.

Authorizations:
OAuth2PasswordBearer
path Parameters
suggestion_id
required
integer (Suggestion Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Suggested Name (string) or Suggested Name (null) (Suggested Name)
Suggested Category Id (integer) or Suggested Category Id (null) (Suggested Category Id)
Suggested Subcategory Id (integer) or Suggested Subcategory Id (null) (Suggested Subcategory Id)

Responses

Request samples

Content type
application/json
{
  • "suggested_name": "string",
  • "suggested_category_id": 0,
  • "suggested_subcategory_id": 0
}

Response samples

Content type
application/json
null

Delete Tenant Custom Suggestion

Tenant administrators may remove their own pending explicit custom-product suggestion from the catalog (same effect as rejecting it in the admin queue).

Authorizations:
OAuth2PasswordBearer
path Parameters
suggestion_id
required
integer (Suggestion Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Catalog Pending Suggestions Count

Return the count of the current tenant's pending explicit custom-product suggestions and (for super-admins) the global pending count.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

key_contacts

List Contacts

List all active contacts for a patient, pinned first then by display_order.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Contact

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
name
required
string (Name)
role_tag
string (Role Tag)
Default: "other"
Organisation (string) or Organisation (null) (Organisation)
Phone (string) or Phone (null) (Phone)
Email (string) or Email (null) (Email)
Address (string) or Address (null) (Address)
Notes (string) or Notes (null) (Notes)
is_emergency
boolean (Is Emergency)
Default: false
is_pinned
boolean (Is Pinned)
Default: false
display_order
integer (Display Order)
Default: 0

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "role_tag": "other",
  • "organisation": "string",
  • "phone": "string",
  • "email": "string",
  • "address": "string",
  • "notes": "string",
  • "is_emergency": false,
  • "is_pinned": false,
  • "display_order": 0
}

Response samples

Content type
application/json
null

List Emergency Contacts

Return up to 4 emergency contacts for the quick-dial dashboard widget.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Contact

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Role Tag (string) or Role Tag (null) (Role Tag)
Organisation (string) or Organisation (null) (Organisation)
Phone (string) or Phone (null) (Phone)
Email (string) or Email (null) (Email)
Address (string) or Address (null) (Address)
Notes (string) or Notes (null) (Notes)
Is Emergency (boolean) or Is Emergency (null) (Is Emergency)
Is Pinned (boolean) or Is Pinned (null) (Is Pinned)
Display Order (integer) or Display Order (null) (Display Order)
Active (boolean) or Active (null) (Active)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "role_tag": "string",
  • "organisation": "string",
  • "phone": "string",
  • "email": "string",
  • "address": "string",
  • "notes": "string",
  • "is_emergency": true,
  • "is_pinned": true,
  • "display_order": 0,
  • "active": true
}

Response samples

Content type
application/json
null

Delete Contact

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Notes

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Note

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
body
required
string (Body)
direction
string (Direction)
Default: "outgoing"
channel
string (Channel)
Default: "phone"
priority
string (Priority)
Default: "routine"
Follow Up Date (string) or Follow Up Date (null) (Follow Up Date)

Responses

Request samples

Content type
application/json
{
  • "body": "string",
  • "direction": "outgoing",
  • "channel": "phone",
  • "priority": "routine",
  • "follow_up_date": "string"
}

Response samples

Content type
application/json
null

Update Note

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
note_id
required
integer (Note Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Body (string) or Body (null) (Body)
Direction (string) or Direction (null) (Direction)
Channel (string) or Channel (null) (Channel)
Priority (string) or Priority (null) (Priority)
Follow Up Date (string) or Follow Up Date (null) (Follow Up Date)

Responses

Request samples

Content type
application/json
{
  • "body": "string",
  • "direction": "string",
  • "channel": "string",
  • "priority": "string",
  • "follow_up_date": "string"
}

Response samples

Content type
application/json
null

Delete Note

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
note_id
required
integer (Note Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Upload Attachment

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
note_id
required
integer (Note Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: multipart/form-data
required
file
required
string <binary> (File)

Responses

Response samples

Content type
application/json
null

Serve Attachment

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
note_id
required
integer (Note Id)
attach_id
required
integer (Attach Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Delete Attachment

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
note_id
required
integer (Note Id)
attach_id
required
integer (Attach Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Contacts

List all active contacts for a patient, pinned first then by display_order.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Contact

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
name
required
string (Name)
role_tag
string (Role Tag)
Default: "other"
Organisation (string) or Organisation (null) (Organisation)
Phone (string) or Phone (null) (Phone)
Email (string) or Email (null) (Email)
Address (string) or Address (null) (Address)
Notes (string) or Notes (null) (Notes)
is_emergency
boolean (Is Emergency)
Default: false
is_pinned
boolean (Is Pinned)
Default: false
display_order
integer (Display Order)
Default: 0

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "role_tag": "other",
  • "organisation": "string",
  • "phone": "string",
  • "email": "string",
  • "address": "string",
  • "notes": "string",
  • "is_emergency": false,
  • "is_pinned": false,
  • "display_order": 0
}

Response samples

Content type
application/json
null

List Emergency Contacts

Return up to 4 emergency contacts for the quick-dial dashboard widget.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Contact

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Role Tag (string) or Role Tag (null) (Role Tag)
Organisation (string) or Organisation (null) (Organisation)
Phone (string) or Phone (null) (Phone)
Email (string) or Email (null) (Email)
Address (string) or Address (null) (Address)
Notes (string) or Notes (null) (Notes)
Is Emergency (boolean) or Is Emergency (null) (Is Emergency)
Is Pinned (boolean) or Is Pinned (null) (Is Pinned)
Display Order (integer) or Display Order (null) (Display Order)
Active (boolean) or Active (null) (Active)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "role_tag": "string",
  • "organisation": "string",
  • "phone": "string",
  • "email": "string",
  • "address": "string",
  • "notes": "string",
  • "is_emergency": true,
  • "is_pinned": true,
  • "display_order": 0,
  • "active": true
}

Response samples

Content type
application/json
null

Delete Contact

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Notes

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Note

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
body
required
string (Body)
direction
string (Direction)
Default: "outgoing"
channel
string (Channel)
Default: "phone"
priority
string (Priority)
Default: "routine"
Follow Up Date (string) or Follow Up Date (null) (Follow Up Date)

Responses

Request samples

Content type
application/json
{
  • "body": "string",
  • "direction": "outgoing",
  • "channel": "phone",
  • "priority": "routine",
  • "follow_up_date": "string"
}

Response samples

Content type
application/json
null

Update Note

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
note_id
required
integer (Note Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Body (string) or Body (null) (Body)
Direction (string) or Direction (null) (Direction)
Channel (string) or Channel (null) (Channel)
Priority (string) or Priority (null) (Priority)
Follow Up Date (string) or Follow Up Date (null) (Follow Up Date)

Responses

Request samples

Content type
application/json
{
  • "body": "string",
  • "direction": "string",
  • "channel": "string",
  • "priority": "string",
  • "follow_up_date": "string"
}

Response samples

Content type
application/json
null

Delete Note

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
note_id
required
integer (Note Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Upload Attachment

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
note_id
required
integer (Note Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: multipart/form-data
required
file
required
string <binary> (File)

Responses

Response samples

Content type
application/json
null

Serve Attachment

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
note_id
required
integer (Note Id)
attach_id
required
integer (Attach Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Delete Attachment

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
contact_id
required
integer (Contact Id)
note_id
required
integer (Note Id)
attach_id
required
integer (Attach Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

admin-shopping

List Suggestions

Authorizations:
OAuth2PasswordBearer
query Parameters
status
string (Status)
Default: "pending"

pending|approved|rejected|merged

limit
integer (Limit) [ 1 .. 500 ]
Default: 100
offset
integer (Offset) >= 0
Default: 0
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
null

Approve Suggestion

Authorizations:
OAuth2PasswordBearer
path Parameters
suggestion_id
required
integer (Suggestion Id)
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
canonical_name
required
string (Canonical Name)
category_id
required
integer (Category Id)
Subcategory Id (integer) or Subcategory Id (null) (Subcategory Id)
Default Unit (string) or Default Unit (null) (Default Unit)
Icon Emoji (string) or Icon Emoji (null) (Icon Emoji)
aliases
Array of strings (Aliases)
Default: []

Responses

Request samples

Content type
application/json
{
  • "canonical_name": "string",
  • "category_id": 0,
  • "subcategory_id": 0,
  • "default_unit": "string",
  • "icon_emoji": "string",
  • "aliases": [ ]
}

Response samples

Content type
application/json
null

Reject Suggestion

Authorizations:
OAuth2PasswordBearer
path Parameters
suggestion_id
required
integer (Suggestion Id)
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
Review Notes (string) or Review Notes (null) (Review Notes)

Responses

Request samples

Content type
application/json
{
  • "review_notes": "string"
}

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Merge Suggestion

Authorizations:
OAuth2PasswordBearer
path Parameters
suggestion_id
required
integer (Suggestion Id)
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
target_catalog_item_id
required
integer (Target Catalog Item Id)

Responses

Request samples

Content type
application/json
{
  • "target_catalog_item_id": 0
}

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Catalog Items

Authorizations:
OAuth2PasswordBearer
query Parameters
Q (string) or Q (null) (Q)
limit
integer (Limit) [ 1 .. 200 ]
Default: 50
offset
integer (Offset) >= 0
Default: 0
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
null

Create Catalog Item

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
category_id
required
integer (Category Id)
Subcategory Id (integer) or Subcategory Id (null) (Subcategory Id)
name
required
string (Name)
item_type
string (Item Type)
Default: "product"
Default Unit (string) or Default Unit (null) (Default Unit)
default_quantity
number (Default Quantity)
Default: 1
Icon Emoji (string) or Icon Emoji (null) (Icon Emoji)
icon_type
string (Icon Type)
Default: "emoji"
Icon Value (string) or Icon Value (null) (Icon Value)
aliases
Array of strings (Aliases)
Default: []

Responses

Request samples

Content type
application/json
{
  • "category_id": 0,
  • "subcategory_id": 0,
  • "name": "string",
  • "item_type": "product",
  • "default_unit": "string",
  • "default_quantity": 1,
  • "icon_emoji": "string",
  • "icon_type": "emoji",
  • "icon_value": "string",
  • "aliases": [ ]
}

Response samples

Content type
application/json
null

Update Catalog Item

Authorizations:
OAuth2PasswordBearer
path Parameters
item_id
required
integer (Item Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Category Id (integer) or Category Id (null) (Category Id)
Subcategory Id (integer) or Subcategory Id (null) (Subcategory Id)
Default Unit (string) or Default Unit (null) (Default Unit)
Default Quantity (number) or Default Quantity (null) (Default Quantity)
Icon Emoji (string) or Icon Emoji (null) (Icon Emoji)
Icon Type (string) or Icon Type (null) (Icon Type)
Icon Value (string) or Icon Value (null) (Icon Value)
Active (boolean) or Active (null) (Active)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "category_id": 0,
  • "subcategory_id": 0,
  • "default_unit": "string",
  • "default_quantity": 0,
  • "icon_emoji": "string",
  • "icon_type": "string",
  • "icon_value": "string",
  • "active": true
}

Response samples

Content type
application/json
null

Delete Catalog Item

Authorizations:
OAuth2PasswordBearer
path Parameters
item_id
required
integer (Item Id)
query Parameters
Ticket (string) or Ticket (null) (Ticket)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

pwa-auth

Create Pwa Session

Create a pending PWA auth session.

Returns a random session_id the PWA uses as the OAuth state parameter and as the key for subsequent poll/complete calls.

Responses

Response samples

Content type
application/json
{ }

Complete Pwa Session

Record the Google access_token for a pending PWA session.

Called by the login page in Safari after Google's OAuth redirect delivers the token. The PWA (still in the background) will pick up the token via the poll endpoint and exchange it for LynCareOS JWTs through the normal POST /api/auth/google/token path.

path Parameters
session_id
required
string (Session Id)
Request Body schema: application/json
required
access_token
required
string (Access Token)

Responses

Request samples

Content type
application/json
{
  • "access_token": "string"
}

Response samples

Content type
application/json
{ }

Poll Pwa Session

Poll for the result of a PWA auth session.

Returns {"status": "pending"} while waiting, or {"status": "complete", "access_token": "…"} once the Safari tab has posted the token. The complete response is returned exactly once.

path Parameters
session_id
required
string (Session Id)

Responses

Response samples

Content type
application/json
{ }

stripe

Care Start Offer

Public catalogue for Palliative Care Start on the marketing signup modal.

Responses

Response samples

Content type
application/json
{ }

Create Checkout Session

Create a Stripe Checkout session and return the hosted URL.

Left unauthenticated so the marketing site can call it before the tenant exists. Anti-abuse is via the 10/minute rate limit and Stripe's own payment-method challenges.

The tier_slug path is the one used by the marketing site — the client posts e.g. {"tier_slug": "essential", "billing_email": ...} and the router resolves the active Stripe price_id from stripe_tiers. This means a price change (re-run of the seeder) takes effect on the next checkout without any marketing-page redeploy.

Request Body schema: application/json
required
price_ids
Array of strings (Price Ids)
tier_slug
string (Tier Slug)
Default: ""
currency
string (Currency)
Default: ""
billing_email
required
string (Billing Email)
success_path
string (Success Path)
Default: "/billing/success"
cancel_path
string (Cancel Path)
Default: "/billing/cancel"

Responses

Request samples

Content type
application/json
{
  • "price_ids": [
    ],
  • "tier_slug": "",
  • "currency": "",
  • "billing_email": "string",
  • "success_path": "/billing/success",
  • "cancel_path": "/billing/cancel"
}

Response samples

Content type
application/json
null

Webhook

Receive and dispatch Stripe webhook events.

Must read the raw request body before JSON parsing so the Stripe-Signature HMAC stays intact. Idempotent via stripe_webhook_events — duplicate deliveries return 200 immediately without re-running handlers.

Responses

Response samples

Content type
application/json
null

Billing Portal

Return a Stripe billing-portal URL for the active tenant.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Cancel Subscription

Cancel the active Stripe subscription and record the data-deletion choice.

For 'immediate': cancels in Stripe (no proration), marks the tenant as cancelled, then permanently purges all tenant data. The HTTP response is returned after the purge so the caller knows it succeeded.

For 'anniversary': sets cancel_at_period_end=True in Stripe (so the tenant retains access through the paid period), records the deletion choice, and schedules an APScheduler one-shot job to purge data on the next occurrence of the annual_anniversary_at date.

Either way the caller should log the user out and redirect to the home page because the tenant account is either gone or will be shortly.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
deletion_choice
required
string (Deletion Choice) ^(immediate|anniversary)$

Responses

Request samples

Content type
application/json
{
  • "deletion_choice": "string"
}

Response samples

Content type
application/json
{ }

Start Signup

Start the marketing-page signup flow.

Validates that username and email are free, bcrypts the password, stores a pending_signups row, and creates a Stripe Checkout session carrying the pending row's token as client_reference_id.

Returns the hosted Stripe Checkout URL plus:

  • signup_token – opaque; the client echoes it back on /complete-signup so we can pair the SPA call with the payment.
  • nonce – same value, used client-side to derive the AES-GCM key that encrypts the plaintext password into the _lync_pw_blob cookie. We return it now (rather than later) because the marketing page needs the nonce to encrypt the cookie BEFORE the Stripe redirect; the /complete-signup endpoint re-returns it only after Stripe confirms payment so the app-side welcome modal can decrypt.
Request Body schema: application/json
required
tier_slug
required
string (Tier Slug)
username
required
string (Username)
email
required
string (Email)
password
required
string (Password)
currency
string (Currency)
Default: ""
success_path
string (Success Path)
Default: "/billing/success"
cancel_path
string (Cancel Path)
Default: "/billing/cancel"
Care Start Bundle (string) or Care Start Bundle (null) (Care Start Bundle)
Care Start Pack Slug (string) or Care Start Pack Slug (null) (Care Start Pack Slug)
Archetype Slug (string) or Archetype Slug (null) (Archetype Slug)

Responses

Request samples

Content type
application/json
{
  • "tier_slug": "string",
  • "username": "string",
  • "email": "string",
  • "password": "string",
  • "currency": "",
  • "success_path": "/billing/success",
  • "cancel_path": "/billing/cancel",
  • "care_start_bundle": "string",
  • "care_start_pack_slug": "string",
  • "archetype_slug": "string"
}

Response samples

Content type
application/json
null

Start Signup Google

Start the marketing-page signup flow using Google as the credential.

Mirrors /start-signup but takes a Google Identity Services credential instead of username/email/password. We:

  1. Verify the ID token with Google (checks audience = GOOGLE_CLIENT_ID, signature, expiry).
  2. Extract sub and email from the verified payload.
  3. Reject if a live user or in-flight pending signup already owns that email (tell them to log in instead).
  4. Derive a username from the email localpart (collision-suffixed with the first six chars of sub).
  5. Create a pending_signups row with google_sub set and password_hash NULL.
  6. Open a Stripe Checkout session keyed by the signup token.

Returns {checkout_url, signup_token, nonce} for API parity with /start-signup; the SPA uses the nonce purely as a webhook-wait token and skips password-cookie decryption on the success page.

Request Body schema: application/json
required
tier_slug
required
string (Tier Slug)
google_id_token
required
string (Google Id Token)
currency
string (Currency)
Default: ""
success_path
string (Success Path)
Default: "/billing/success"
cancel_path
string (Cancel Path)
Default: "/billing/cancel"
Care Start Bundle (string) or Care Start Bundle (null) (Care Start Bundle)
Care Start Pack Slug (string) or Care Start Pack Slug (null) (Care Start Pack Slug)
Archetype Slug (string) or Archetype Slug (null) (Archetype Slug)

Responses

Request samples

Content type
application/json
{
  • "tier_slug": "string",
  • "google_id_token": "string",
  • "currency": "",
  • "success_path": "/billing/success",
  • "cancel_path": "/billing/cancel",
  • "care_start_bundle": "string",
  • "care_start_pack_slug": "string",
  • "archetype_slug": "string"
}

Response samples

Content type
application/json
null

Checkout Outcome

Return a user-friendly payment outcome for a Stripe Checkout session.

Used by /billing/success and /billing/cancel to explain whether a charge was taken and what the subscriber should do next. Logs a structured outcome code server-side for operator review.

query Parameters
session_id
required
string (Session Id) >= 8 characters

Responses

Response samples

Content type
application/json
null

Complete Signup

Finalise signup once Stripe has confirmed payment.

The SPA's /billing/success page calls this with the session_id it received in the Stripe success_url. We:

  1. Look up the pending_signups row by checkout session id.
  2. If the webhook has not completed yet, poll Stripe directly for up to 4 seconds for session.payment_status == 'paid', then re-check the row. If still not consumed we return 202 so the SPA can retry.
  3. On success, issue a normal access/refresh token pair for the owner user and return it alongside the nonce the client needs to decrypt the _lync_pw_blob cookie.
Request Body schema: application/json
required
session_id
required
string (Session Id)

Responses

Request samples

Content type
application/json
{
  • "session_id": "string"
}

Response samples

Content type
application/json
null

Upgrade Tier

Start a Stripe Checkout session that upgrades the tenant's tier.

Charging model (per user choice): flat difference now + full new annual term starting today (anniversary reset). Implemented by applying a one-time amount_off coupon equal to the old tier's price to the new tier's subscription, so the first invoice equals (new − old) and the next renewal is the full new-tier price.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
new_tier_slug
required
string (New Tier Slug)
success_path
string (Success Path)
Default: "/billing/upgrade-success"
cancel_path
string (Cancel Path)
Default: "/subscriptions"

Responses

Request samples

Content type
application/json
{
  • "new_tier_slug": "string",
  • "success_path": "/billing/upgrade-success",
  • "cancel_path": "/subscriptions"
}

Response samples

Content type
application/json
null

Start Additional Tenant

Authenticated path for an existing user to open a new paid care account.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
tier_slug
required
string (Tier Slug)
tenant_name
required
string (Tenant Name)
currency
string (Currency)
Default: ""
success_path
string (Success Path)
Default: "/billing/success"
cancel_path
string (Cancel Path)
Default: "/billing/cancel"

Responses

Request samples

Content type
application/json
{
  • "tier_slug": "string",
  • "tenant_name": "string",
  • "currency": "",
  • "success_path": "/billing/success",
  • "cancel_path": "/billing/cancel"
}

Response samples

Content type
application/json
null

Complete Additional Tenant

After additional-tenant Checkout, re-issue JWT with tid = new tenant.

Authorizations:
OAuth2PasswordBearer
query Parameters
Ticket (string) or Ticket (null) (Ticket)
Request Body schema: application/json
required
session_id
required
string (Session Id)

Responses

Request samples

Content type
application/json
{
  • "session_id": "string"
}

Response samples

Content type
application/json
null

Add Module To Subscription

Add a single module subscription item to the tenant's Stripe subscription.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
module_slug
required
string (Module Slug)
currency
string (Currency)
Default: "USD"

Responses

Request samples

Content type
application/json
{
  • "module_slug": "string",
  • "currency": "USD"
}

Response samples

Content type
application/json
null

Remove Module From Subscription

Remove an a la carte module line item from the tenant subscription.

Authorizations:
OAuth2PasswordBearer
query Parameters
module_slug
required
string (Module Slug)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

billing

Get Tiers

Public tier catalog for the marketing page.

Shape: { "publishable_key": "pk_test_...", "currency": "usd", "tiers": [ { slug, name, description, usd, modules, stripe_price_id }, ... ] }

Tiers whose Stripe catalog has not been seeded yet will have stripe_price_id: null — the client should disable checkout for those rows but still display the USD number.

Responses

Response samples

Content type
application/json
{ }

Get Fx

USD -> target-currency mid-market rate (cached 12h).

query Parameters
to
required
string (To) = 3 characters

ISO 4217 currency code

Responses

Response samples

Content type
application/json
{ }

Check Availability

Live validation endpoint used by the marketing-page signup modal.

Returns {username_ok, email_ok} where "ok" means "currently free". Accepts either or both parameters; an empty / whitespace value is reported as None so the UI can skip rendering a green tick until the user has actually typed something.

query Parameters
username
string (Username) <= 64 characters
Default: ""
email
string (Email) <= 254 characters
Default: ""

Responses

Response samples

Content type
application/json
{ }

Get My Tier

Return the tenant's current tier plus the full upgrade matrix.

Shape: { "current_tier": { slug, name, usd, modules } | None, "all_tiers": [ { slug, name, usd, modules, description } ], "upgrades": [ { to_slug, to_name, diff_usd, adds_modules } ], "anniversary_at": "2027-04-18T12:34:56Z" | None }

The UI uses upgrades to render the "Upgrade to X" button next to each locked module on the Subscriptions page. diff_usd is the flat difference the user will pay — the same value the /upgrade-tier endpoint will charge.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{ }

List Module Prices

Public catalog of a la carte module monthly prices (Shape 2).

Responses

Response samples

Content type
application/json
{ }

Get Tiers

Public tier catalog for the marketing page.

Shape: { "publishable_key": "pk_test_...", "currency": "usd", "tiers": [ { slug, name, description, usd, modules, stripe_price_id }, ... ] }

Tiers whose Stripe catalog has not been seeded yet will have stripe_price_id: null — the client should disable checkout for those rows but still display the USD number.

Responses

Response samples

Content type
application/json
{ }

Get Fx

USD -> target-currency mid-market rate (cached 12h).

query Parameters
to
required
string (To) = 3 characters

ISO 4217 currency code

Responses

Response samples

Content type
application/json
{ }

Check Availability

Live validation endpoint used by the marketing-page signup modal.

Returns {username_ok, email_ok} where "ok" means "currently free". Accepts either or both parameters; an empty / whitespace value is reported as None so the UI can skip rendering a green tick until the user has actually typed something.

query Parameters
username
string (Username) <= 64 characters
Default: ""
email
string (Email) <= 254 characters
Default: ""

Responses

Response samples

Content type
application/json
{ }

Get My Tier

Return the tenant's current tier plus the full upgrade matrix.

Shape: { "current_tier": { slug, name, usd, modules } | None, "all_tiers": [ { slug, name, usd, modules, description } ], "upgrades": [ { to_slug, to_name, diff_usd, adds_modules } ], "anniversary_at": "2027-04-18T12:34:56Z" | None }

The UI uses upgrades to render the "Upgrade to X" button next to each locked module on the Subscriptions page. diff_usd is the flat difference the user will pay — the same value the /upgrade-tier endpoint will charge.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{ }

List Module Prices

Public catalog of a la carte module monthly prices (Shape 2).

Responses

Response samples

Content type
application/json
{ }

billing-export

Get Export Categories

Return export category labels for the admin export UI.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{ }

Create Tenant Export

Build and return a privacy-scoped ZIP for the active tenant.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
categories
required
Array of strings (Categories) non-empty
Patient Id (integer) or Patient Id (null) (Patient Id)

Responses

Request samples

Content type
application/json
{
  • "categories": [
    ],
  • "patient_id": 0
}

Response samples

Content type
application/json
null

Get Export Categories

Return export category labels for the admin export UI.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{ }

Create Tenant Export

Build and return a privacy-scoped ZIP for the active tenant.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
categories
required
Array of strings (Categories) non-empty
Patient Id (integer) or Patient Id (null) (Patient Id)

Responses

Request samples

Content type
application/json
{
  • "categories": [
    ],
  • "patient_id": 0
}

Response samples

Content type
application/json
null

onboarding

Get Progress

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{ }

Mark Step Completed

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
step_key
required
string (Step Key)

Responses

Request samples

Content type
application/json
{
  • "step_key": "string"
}

Response samples

Content type
application/json
{
  • "property1": true,
  • "property2": true
}

alerts

List Alerts

Return care alerts visible to the caller.

REQ-MED-15: carer-facing surfaces pass the selected patient so one person's alerts (and their decrypted name) never appear while another is selected. Access to the requested patient is validated before any row is returned.

Authorizations:
OAuth2PasswordBearer
query Parameters
status
string (Status) ^(open|resolved|dismissed)$
Default: "open"
Patient Id (integer) or Patient Id (null) (Patient Id)
limit
integer (Limit) [ 1 .. 100 ]
Default: 50
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Open Count

Return open alert count for the app icon badge.

REQ-MED-15: when a patient is selected the badge counts only that person's open alerts, matching the inbox. Without patient_id it stays account-wide (admin) or scoped to all accessible patients (member).

Authorizations:
OAuth2PasswordBearer
query Parameters
Patient Id (integer) or Patient Id (null) (Patient Id)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Resolve Alert

Resolve an open alert; records who resolved it in care_alert_events.

Authorizations:
OAuth2PasswordBearer
path Parameters
alert_id
required
integer (Alert Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Note (string) or Note (null) (Note)

Responses

Request samples

Content type
application/json
{
  • "note": "string"
}

Response samples

Content type
application/json
null

List Alert Events

Return the act/resolve history for one alert.

Authorizations:
OAuth2PasswordBearer
path Parameters
alert_id
required
integer (Alert Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Alert Settings

Return tenant-wide alert channel settings (admin only).

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Alert Settings

Update tenant alert channel toggles (admin only).

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Master Enabled (boolean) or Master Enabled (null) (Master Enabled)
Shift Reminder (boolean) or Shift Reminder (null) (Shift Reminder)
Shift Cancelled (boolean) or Shift Cancelled (null) (Shift Cancelled)
Calendar Events (boolean) or Calendar Events (null) (Calendar Events)
Handover Notes (boolean) or Handover Notes (null) (Handover Notes)
Shopping (boolean) or Shopping (null) (Shopping)
Family Help (boolean) or Family Help (null) (Family Help)
Module Purchase Requests (boolean) or Module Purchase Requests (null) (Module Purchase Requests)
Body Pain High (boolean) or Body Pain High (null) (Body Pain High)
Mind Elevated (boolean) or Mind Elevated (null) (Mind Elevated)
Overdue Dose (boolean) or Overdue Dose (null) (Overdue Dose)
First Dose Reaction (boolean) or First Dose Reaction (null) (First Dose Reaction)

Responses

Request samples

Content type
application/json
{
  • "master_enabled": true,
  • "shift_reminder": true,
  • "shift_cancelled": true,
  • "calendar_events": true,
  • "handover_notes": true,
  • "shopping": true,
  • "family_help": true,
  • "module_purchase_requests": true,
  • "body_pain_high": true,
  • "mind_elevated": true,
  • "overdue_dose": true,
  • "first_dose_reaction": true
}

Response samples

Content type
application/json
null

List Alerts

Return care alerts visible to the caller.

REQ-MED-15: carer-facing surfaces pass the selected patient so one person's alerts (and their decrypted name) never appear while another is selected. Access to the requested patient is validated before any row is returned.

Authorizations:
OAuth2PasswordBearer
query Parameters
status
string (Status) ^(open|resolved|dismissed)$
Default: "open"
Patient Id (integer) or Patient Id (null) (Patient Id)
limit
integer (Limit) [ 1 .. 100 ]
Default: 50
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Open Count

Return open alert count for the app icon badge.

REQ-MED-15: when a patient is selected the badge counts only that person's open alerts, matching the inbox. Without patient_id it stays account-wide (admin) or scoped to all accessible patients (member).

Authorizations:
OAuth2PasswordBearer
query Parameters
Patient Id (integer) or Patient Id (null) (Patient Id)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Resolve Alert

Resolve an open alert; records who resolved it in care_alert_events.

Authorizations:
OAuth2PasswordBearer
path Parameters
alert_id
required
integer (Alert Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Note (string) or Note (null) (Note)

Responses

Request samples

Content type
application/json
{
  • "note": "string"
}

Response samples

Content type
application/json
null

List Alert Events

Return the act/resolve history for one alert.

Authorizations:
OAuth2PasswordBearer
path Parameters
alert_id
required
integer (Alert Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Get Alert Settings

Return tenant-wide alert channel settings (admin only).

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Update Alert Settings

Update tenant alert channel toggles (admin only).

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Master Enabled (boolean) or Master Enabled (null) (Master Enabled)
Shift Reminder (boolean) or Shift Reminder (null) (Shift Reminder)
Shift Cancelled (boolean) or Shift Cancelled (null) (Shift Cancelled)
Calendar Events (boolean) or Calendar Events (null) (Calendar Events)
Handover Notes (boolean) or Handover Notes (null) (Handover Notes)
Shopping (boolean) or Shopping (null) (Shopping)
Family Help (boolean) or Family Help (null) (Family Help)
Module Purchase Requests (boolean) or Module Purchase Requests (null) (Module Purchase Requests)
Body Pain High (boolean) or Body Pain High (null) (Body Pain High)
Mind Elevated (boolean) or Mind Elevated (null) (Mind Elevated)
Overdue Dose (boolean) or Overdue Dose (null) (Overdue Dose)
First Dose Reaction (boolean) or First Dose Reaction (null) (First Dose Reaction)

Responses

Request samples

Content type
application/json
{
  • "master_enabled": true,
  • "shift_reminder": true,
  • "shift_cancelled": true,
  • "calendar_events": true,
  • "handover_notes": true,
  • "shopping": true,
  • "family_help": true,
  • "module_purchase_requests": true,
  • "body_pain_high": true,
  • "mind_elevated": true,
  • "overdue_dose": true,
  • "first_dose_reaction": true
}

Response samples

Content type
application/json
null

condition-packs

List Packs

Return all condition packs with has_access flag for this tenant.

Free starter packs are always included; paid packs show price and purchase CTA.

Display prices use the tenant's subscription billing currency.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Archetypes

Return the 7 care archetypes for the onboarding selector.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Preview Pack

Return the full content preview of a pack (reason types, obs types, tasks).

Available to all authenticated users so they can evaluate before purchasing.

Authorizations:
OAuth2PasswordBearer
path Parameters
pack_id
required
integer (Pack Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Purchase Pack

Create a Stripe Checkout session for a one-time pack purchase.

Returns {checkout_url, amount_cents, currency} for Stripe Checkout redirect.

On payment success the Stripe webhook calls record_pack_purchase().

Authorizations:
OAuth2PasswordBearer
path Parameters
pack_id
required
integer (Pack Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Currency (string) or Currency (null) (Currency)

Responses

Request samples

Content type
application/json
{
  • "currency": "string"
}

Response samples

Content type
application/json
null

List Packs

Return all condition packs with has_access flag for this tenant.

Free starter packs are always included; paid packs show price and purchase CTA.

Display prices use the tenant's subscription billing currency.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Archetypes

Return the 7 care archetypes for the onboarding selector.

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Preview Pack

Return the full content preview of a pack (reason types, obs types, tasks).

Available to all authenticated users so they can evaluate before purchasing.

Authorizations:
OAuth2PasswordBearer
path Parameters
pack_id
required
integer (Pack Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Purchase Pack

Create a Stripe Checkout session for a one-time pack purchase.

Returns {checkout_url, amount_cents, currency} for Stripe Checkout redirect.

On payment success the Stripe webhook calls record_pack_purchase().

Authorizations:
OAuth2PasswordBearer
path Parameters
pack_id
required
integer (Pack Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Currency (string) or Currency (null) (Currency)

Responses

Request samples

Content type
application/json
{
  • "currency": "string"
}

Response samples

Content type
application/json
null

care-start

Apply Care Start

Apply an unlocked Care Profile to a patient (idempotent merge).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Pack Id (integer) or Pack Id (null) (Pack Id)
Pack Slug (string) or Pack Slug (null) (Pack Slug)
Archetype Id (integer) or Archetype Id (null) (Archetype Id)

Responses

Request samples

Content type
application/json
{
  • "pack_id": 0,
  • "pack_slug": "string",
  • "archetype_id": 0
}

Response samples

Content type
application/json
null

Patch Care Pattern

Update care archetype and/or apply a different unlocked profile (non-destructive).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Archetype Id (integer) or Archetype Id (null) (Archetype Id)
Pack Slug (string) or Pack Slug (null) (Pack Slug)

Responses

Request samples

Content type
application/json
{
  • "archetype_id": 0,
  • "pack_slug": "string"
}

Response samples

Content type
application/json
null

Apply Care Start

Apply an unlocked Care Profile to a patient (idempotent merge).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Pack Id (integer) or Pack Id (null) (Pack Id)
Pack Slug (string) or Pack Slug (null) (Pack Slug)
Archetype Id (integer) or Archetype Id (null) (Archetype Id)

Responses

Request samples

Content type
application/json
{
  • "pack_id": 0,
  • "pack_slug": "string",
  • "archetype_id": 0
}

Response samples

Content type
application/json
null

Patch Care Pattern

Update care archetype and/or apply a different unlocked profile (non-destructive).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
Archetype Id (integer) or Archetype Id (null) (Archetype Id)
Pack Slug (string) or Pack Slug (null) (Pack Slug)

Responses

Request samples

Content type
application/json
{
  • "archetype_id": 0,
  • "pack_slug": "string"
}

Response samples

Content type
application/json
null

observations

Observation Types

Return observation types applicable to this patient.

Currently returns all system types; future versions will filter by active packs.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Observations

Return observations for a patient.

Supports filtering by observation type slug and date range (YYYY-MM-DD). Multiple readings per day are intentional — trend charts use all of them.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
Obs Type Slug (string) or Obs Type Slug (null) (Obs Type Slug)
Date From (string) or Date From (null) (Date From)
Date To (string) or Date To (null) (Date To)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Record Observation

Record a single patient observation.

Multiple calls in the same day are fine — each creates a new timestamped row so the trend graph can show intra-day variability.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
observation_type_id
required
integer (Observation Type Id)
Value Number (number) or Value Number (null) (Value Number)
Value Text (string) or Value Text (null) (Value Text)
Value Boolean (boolean) or Value Boolean (null) (Value Boolean)
Notes (string) or Notes (null) (Notes)
Obs Date (string) or Obs Date (null) (Obs Date)
Obs Time (string) or Obs Time (null) (Obs Time)

Responses

Request samples

Content type
application/json
{
  • "observation_type_id": 0,
  • "value_number": 0,
  • "value_text": "string",
  • "value_boolean": true,
  • "notes": "string",
  • "obs_date": "string",
  • "obs_time": "string"
}

Response samples

Content type
application/json
null

Observation Trend

Return Bollinger-band trend data for one observation type.

window: 'today' | 'week' | 'month' | 'three_months'

Each data point in series includes rolling_mean, upper_band, lower_band computed over the patient's personal baseline.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
obs_type_id
required
integer (Obs Type Id)
window
string (Window) ^(today|week|month|three_months)$
Default: "week"
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Delete Observation

Soft-delete an observation entry (admin or original recorder only).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
obs_id
required
integer (Obs Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Observation Types

Return observation types applicable to this patient.

Currently returns all system types; future versions will filter by active packs.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Observations

Return observations for a patient.

Supports filtering by observation type slug and date range (YYYY-MM-DD). Multiple readings per day are intentional — trend charts use all of them.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
Obs Type Slug (string) or Obs Type Slug (null) (Obs Type Slug)
Date From (string) or Date From (null) (Date From)
Date To (string) or Date To (null) (Date To)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Record Observation

Record a single patient observation.

Multiple calls in the same day are fine — each creates a new timestamped row so the trend graph can show intra-day variability.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
observation_type_id
required
integer (Observation Type Id)
Value Number (number) or Value Number (null) (Value Number)
Value Text (string) or Value Text (null) (Value Text)
Value Boolean (boolean) or Value Boolean (null) (Value Boolean)
Notes (string) or Notes (null) (Notes)
Obs Date (string) or Obs Date (null) (Obs Date)
Obs Time (string) or Obs Time (null) (Obs Time)

Responses

Request samples

Content type
application/json
{
  • "observation_type_id": 0,
  • "value_number": 0,
  • "value_text": "string",
  • "value_boolean": true,
  • "notes": "string",
  • "obs_date": "string",
  • "obs_time": "string"
}

Response samples

Content type
application/json
null

Observation Trend

Return Bollinger-band trend data for one observation type.

window: 'today' | 'week' | 'month' | 'three_months'

Each data point in series includes rolling_mean, upper_band, lower_band computed over the patient's personal baseline.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
obs_type_id
required
integer (Obs Type Id)
window
string (Window) ^(today|week|month|three_months)$
Default: "week"
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Delete Observation

Soft-delete an observation entry (admin or original recorder only).

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
obs_id
required
integer (Obs Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

help-requests

List Types

Return the full list of help request types for the icon-grid picker.

Tenant-scoped catalogue only — no patient_id in the path, so we must not use require_carer_role (that dependency resolves patient_id from the query string).

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Requests

Return help requests for a patient, optionally filtered by status tab.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
Status (string) or Status (null) (Status)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Request

Post a new help request to the family help board.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
request_type_id
required
integer (Request Type Id)
title
required
string (Title)
Notes (string) or Notes (null) (Notes)
Needed At (string) or Needed At (null) (Needed At)

Responses

Request samples

Content type
application/json
{
  • "request_type_id": 0,
  • "title": "string",
  • "notes": "string",
  • "needed_at": "string"
}

Response samples

Content type
application/json
null

Take Request

Volunteer to fulfil an open help request ('I'll do this').

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
request_id
required
integer (Request Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Complete Request

Mark a taken help request as completed.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
request_id
required
integer (Request Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Cancel Request

Cancel a help request — only the original requester can cancel.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
request_id
required
integer (Request Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Types

Return the full list of help request types for the icon-grid picker.

Tenant-scoped catalogue only — no patient_id in the path, so we must not use require_carer_role (that dependency resolves patient_id from the query string).

Authorizations:
OAuth2PasswordBearer
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

List Requests

Return help requests for a patient, optionally filtered by status tab.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
Status (string) or Status (null) (Status)
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Create Request

Post a new help request to the family help board.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)
Request Body schema: application/json
required
request_type_id
required
integer (Request Type Id)
title
required
string (Title)
Notes (string) or Notes (null) (Notes)
Needed At (string) or Needed At (null) (Needed At)

Responses

Request samples

Content type
application/json
{
  • "request_type_id": 0,
  • "title": "string",
  • "notes": "string",
  • "needed_at": "string"
}

Response samples

Content type
application/json
null

Take Request

Volunteer to fulfil an open help request ('I'll do this').

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
request_id
required
integer (Request Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Complete Request

Mark a taken help request as completed.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
request_id
required
integer (Request Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
null

Cancel Request

Cancel a help request — only the original requester can cancel.

Authorizations:
OAuth2PasswordBearer
path Parameters
patient_id
required
integer (Patient Id)
request_id
required
integer (Request Id)
query Parameters
As Tenant (integer) or As Tenant (null) (As Tenant)
Ticket (string) or Ticket (null) (Ticket)
header Parameters
X-Tenant-Id (string) or X-Tenant-Id (null) (X-Tenant-Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

dev-tools

Provision Test User

Create a fresh test user + tenant for E2E Playwright tests.

Only available outside production. The created account has the tier's modules active and optional pre-seeded medicines/patients, so tests can jump straight to the limit-boundary condition without clicking through the full data-entry flow.

Request Body schema: application/json
required
username
required
string (Username)
email
required
string (Email)
password
string (Password)
Default: "TestE2EPass99!"
tier_slug
string (Tier Slug)
Default: "essential"
seed_medicines
integer (Seed Medicines)
Default: 0
seed_patients
integer (Seed Patients)
Default: 0

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "email": "string",
  • "password": "TestE2EPass99!",
  • "tier_slug": "essential",
  • "seed_medicines": 0,
  • "seed_patients": 0
}

Response samples

Content type
application/json
{
  • "user_id": 0,
  • "tenant_id": 0,
  • "username": "string",
  • "email": "string",
  • "password": "string",
  • "access_token": "string",
  • "tier_slug": "string",
  • "modules": [
    ]
}

Teardown Test User

Hard-delete a previously provisioned E2E test user and all tenant data.

Only safe to call against throwaway test accounts (username must start with e2e_ to prevent accidental deletion of real users).

Request Body schema: application/json
required
username
required
string (Username)

Responses

Request samples

Content type
application/json
{
  • "username": "string"
}

Response samples

Content type
application/json
{ }