Skip to main content

Settings

Manage your account: profile and password, API keys, notification preferences, unit preferences, and your team's members and roles. All endpoints are authenticated with a Bearer JWT (see Authentication).

Endpoints

MethodPathDescription
PATCH/api/v1/settings/profileUpdate your profile
POST/api/v1/settings/change-passwordChange your password
POST/api/v1/settings/logout-other-sessionsSign out your other devices
POST/api/v1/api-keysCreate an API key (Admin)
GET/api/v1/api-keysList API keys
DELETE/api/v1/settings/api-keys/{key_id}Revoke an API key (Admin)
GET/api/v1/settings/email-notificationsGet email notification preferences
PATCH/api/v1/settings/email-notificationsUpdate email notification preferences (Admin)
GET/api/v1/settings/report-scheduleGet scheduled-report settings
PATCH/api/v1/settings/report-scheduleUpdate scheduled-report settings
GET/api/v1/units/supportedList supported units and conversions
GET/api/v1/settings/unitsGet unit preferences
PATCH/api/v1/settings/unitsUpdate unit preferences
GET/api/v1/usersList team members (Admin)
POST/api/v1/usersAdd a team member (Admin)
POST/api/v1/users/inviteInvite a team member by email (Admin)
PATCH/api/v1/users/{user_id}Update a team member's details (Admin)
PUT/api/v1/users/{user_id}/roleChange a team member's role (Admin)
DELETE/api/v1/users/{user_id}Deactivate a team member (Admin)
GET/api/v1/settings/rolesList roles
POST/api/v1/settings/rolesCreate a custom role (Admin)
PATCH/api/v1/settings/roles/{key}Update a role (Admin)
DELETE/api/v1/settings/roles/{key}Delete a custom role (Admin)

Endpoints marked Admin require an account administrator role.

Profile

Update your profile

PATCH /api/v1/settings/profile

{
"full_name": "Jane Smith",
"email": "jane@example.com",
"current_password": "your-current-password",
"phone": "+1 555 0100",
"timezone": "America/New_York",
"locale": "en-US"
}

Changing your email requires current_password. All fields are optional; send an empty string to clear an optional field.

Change your password

POST /api/v1/settings/change-password

{ "current_password": "old-password", "new_password": "NewSecureP@ss123!" }

Changing your password signs out your other devices and returns a fresh access token so your current device stays signed in.

Sign out other sessions

POST /api/v1/settings/logout-other-sessions

Signs out every other device while keeping the current one signed in.

API keys

API keys authenticate machine-to-machine access, such as the edge agent or a data-ingestion script. See the API Keys guide.

Create an API key

POST /api/v1/api-keys — the request body is just a name:

{ "name": "edge-agent-prod" }

The response (201 Created) returns the secret once:

{
"id": "...",
"name": "edge-agent-prod",
"key": "hlts_…",
"created_at": "2026-08-05T10:00:00Z"
}
warning

The key value is shown only once, at creation. Store it securely; it cannot be retrieved again.

List and revoke

GET /api/v1/api-keys returns your keys with only a masked key_prefix — never the secret — plus is_active and created_at. DELETE /api/v1/settings/api-keys/{key_id} revokes a key immediately.

Notification preferences

Email notifications

GET /api/v1/settings/email-notifications returns each toggleable transactional email and whether it is enabled. PATCH accepts a partial map and merges it.

{ "prefs": { "role_changed": true, "password_changed": true } }

Scheduled reports

GET / PATCH /api/v1/settings/report-schedule controls automatic report delivery.

{
"report_schedule": "weekly",
"report_emails": ["reports@example.com", "ops@example.com"]
}

report_schedule is daily, weekly, monthly, or null (disabled).

Unit preferences

GET /api/v1/units/supported lists every supported unit and conversion pair plus the defaults. GET / PATCH /api/v1/settings/units reads and updates your account's preferred display units.

{ "unit_preferences": { "temperature": "fahrenheit", "pressure": "bar" } }

Team members

Account administrators manage who has access.

Add a team member

POST /api/v1/users

{ "email": "operator@example.com", "password": "TempP@ss123!", "full_name": "John Doe", "role": "operator" }

Invite a team member

POST /api/v1/users/invite creates a pending account and emails an invitation link; the invitee sets their own password to activate.

{ "email": "colleague@example.com", "full_name": "Chris Lee", "role": "viewer" }

Change a member's role

PUT /api/v1/users/{user_id}/role

{ "role": "admin" }

Deactivate a member

DELETE /api/v1/users/{user_id} deactivates a member. You cannot deactivate your own account.

Roles

Roles bundle a level of access you can assign to team members. GET /api/v1/settings/roles lists the built-in roles and any custom roles you have created, along with how many members hold each.

Create a custom role

POST /api/v1/settings/roles

{ "name": "Line Lead", "base_tier": "operator" }

Give the role a name and a starting access level (admin, operator, or viewer). Use PATCH /api/v1/settings/roles/{key} to rename it and DELETE /api/v1/settings/roles/{key} to remove a custom role.