operator

Create Operator

post/operator/

Request

  • Base URL
    https://api.verdun.ai (the document declares no server; this is the origin it was published from)
  • URL
    https://api.verdun.ai/operator/
  • Auth
    HTTP bearer

Request body

first_namestring required

The first name of the operator

last_namestring required

The last name of the operator

emailstring required

The email address of the operator

role'owner' | 'operator' | 'site_manager' | 'read_only' | 'account_manager' | 'monitoring_manager' | 'location_manager' | 'support' required
permissionsobject nullable

Per-permission overrides. Omit (null) for role defaults.

parent_idsstring[] nullable

Parent (client) IDs the operator may access. Omit (null) for none. A site_manager must be given exactly one. For role=location_manager the client is DERIVED from site_ids and this field may be omitted, empty, or exactly the derived parent — sending a different one is a 409.

site_idsstring[] nullable

Optional per-site narrowing within the granted parent(s). Omit (null) or empty for access to all sites of each granted parent. Every site must belong to one of parent_ids. REQUIRED and exactly one entry for role=location_manager (the UI's "Site Manager"), whose client is then derived from that site.

account_idstring uuid nullable

The one account an account_manager is bound to. REQUIRED for role=account_manager and rejected for every other role. The account must be live. Any parent_ids/site_ids sent alongside are ignored: an account manager's parent and site access is derived from the account, so they automatically see sites added to it later.

all_sitesboolean nullable

Access to every client and site (operator / read_only only). Omit (null) for the default: TRUE for an operator created by an owner or monitoring manager with no parent_ids/site_ids, FALSE otherwise. An explicit true from any other caller is a 403; on a role that cannot hold it, a 409.

Example request

{
  "first_name": "Joe",
  "last_name": "Johnson",
  "email": "JJ@example.com",
  "permissions": {
    "manage_users": false,
    "view_alarm_queue": true
  },
  "parent_ids": [
    "11111111-1111-1111-1111-111111111111"
  ],
  "site_ids": [
    "33333333-3333-3333-3333-333333333333"
  ],
  "account_id": "55555555-5555-5555-5555-555555555555"
}

Response

Successful Response

idstring uuid required

UUID of operator

first_namestring required

The first name of the operator

last_namestring required

The last name of the operator

emailstring required

The email address of the operator

role'owner' | 'operator' | 'site_manager' | 'read_only' | 'account_manager' | 'monitoring_manager' | 'location_manager' | 'support' required
last_seen_atstring date-time nullable

The time the operator was last seen

last_logged_instring date-time nullable

The time the operator last logged in

created_atstring date-time required

The time the operator was created

permissionsobject nullable

Per-permission overrides ({OperatorPermission value: bool}); null means role defaults apply

is_primary_ownerboolean

The account anchor: cannot be removed or demoted, and only they may edit their own record. Not settable via the API.

all_sitesboolean

EFFECTIVE all-sites access (operator / read_only only; false for every other role). When true the user sees every client and site, including future ones, and their coverage groups and parent/site rows are retained but inert. Set via PUT /operator/{id}/site-access.

deactivated_atstring date-time nullable

When this user was deactivated (POST /operator/{id}/deactivate), or null while active. A deactivated user cannot log in and holds no seats or coverage groups; their records are kept.

Example response

{
  "id": "<Some UUID of some sort>",
  "first_name": "Joe",
  "last_name": "Johnson",
  "email": "JJ@example.com",
  "permissions": {
    "manage_users": false,
    "view_alarm_queue": true
  },
  "parents": [
    {
      "id": "<UUID of some sort>",
      "company_name": "Joe",
      "primary_contact_name": "Joe Johnson",
      "primary_contact_phone_number": "1013217890",
      "primary_contact_email": "JJ@example.com",
      "notes": "Super important notes"
    }
  ],
  "sites": [
    {
      "id": "<UUID of some sort>",
      "name": "Elm St Facility",
      "parent_id": "<UUID of the owning client>"
    }
  ],
  "accounts": [
    {
      "id": "<UUID of some sort>",
      "name": "Northgate Logistics",
      "parent_id": "<UUID of the owning client>"
    }
  ],
  "coverage_groups": [
    {
      "id": "<UUID of some sort>",
      "name": "Overnight High-Risk",
      "color": "#4DFFD2",
      "site_count": 42
    }
  ]
}

Changes

No recorded changes to this operation across all 2 revisions of this API.