Manager Users
Role names and
user_group_idvalues are listed in User groups.
Administrative endpoints for managing user accounts. Requires manager or administrator role.
List Users
Section titled “List Users”GET /manager/users.json
Retrieve all users in the company.
Response
Section titled “Response”[ { "User": { "id": "123", "active": true, "email_status": "confirmed", "pilot": true, "two_factor": "OFF", "api": false, "email": "john@example.com", "user_group_id": "110", "expiration": null }, "UserDetail": { "name": "John", "surname": "Doe", "photo": "https://..." }, "UserGroup": { "name": "Pilot", "id": "110" } }]Users List (Simplified)
Section titled “Users List (Simplified)”GET /manager/users/list.json
Retrieve a simplified user list (ID to name mapping). Useful for dropdowns.
Response
Section titled “Response”{ "123": { "name": "John Doe" }, "124": { "name": "Jane Smith" }}View User
Section titled “View User”GET /manager/users/view/{id}.json
Retrieve full user details including login history and company context.
Path Parameters
Section titled “Path Parameters”| Parameter | Type | Description |
|---|---|---|
| id | string | User ID |
Response
Section titled “Response”{ "user": { "User": { "id": "123", "base_id": "5", "user_group_id": "110", "active": true, "pilot": true, "api": false, "email_status": "confirmed", "email": "john@example.com", "expiration": null, "user_login_count": "42", "created": "2023-01-15" }, "UserDetail": { "id": "123", "name": "John", "surname": "Doe", "color": "#3498db", "photo": "https://...", "dob": "1990-05-20", "address": "123 Airport Road", "city": "Madrid", "pc": "28001", "phone": "600123456", "passport": "AB123456", "companyid": "EMP-001", "country_id": "195", "timezone_id": "85" }, "UserGroup": { "id": "110", "name": "Pilot" }, "Company": { "name": "Acme Flight School", "id": "42" }, "UserLogin": [ { "id": "999", "user_id": "123", "city": "Madrid", "country": "Spain", "provider": "Chrome", "browser": "Chrome 120", "ip": "192.168.1.1", "modified": "2025-03-10 08:00:00" } ] }, "mycompany": { "Company": { "id": "42", "name": "Acme Flight School", "plan": "premium", "type": "flight_school", "user_count": "50", "expiration": "2026-01-01" } }, "languages": { "en": "English", "es": "Español" }, "bases": { "5": "Madrid Base", "6": "Barcelona Base" }}Create User
Section titled “Create User”POST /manager/users/create.json
Create a new user account. This is also how pilot and student accounts are created (the NEO Add Pilot form and Import both post here).
Permissions
Section titled “Permissions”- Restricted to
user_group_id∈ {1, 100, 105, 110, 120} (Company Administrators, Operations Managers, Compliance & Safety Managers and Human Resources Managers). Every other group, including Chief Pilots (150), gets403"You are not allowed to create users". User.user_group_idis required and must be between100and300; it can never be more senior (lower) than the caller’s own group.- On the
freeplan, creating a pilot (user_group_id151–299) is refused with400once the company has more than 100 pilots.
Request Body
Section titled “Request Body”Fields should match the user and user detail structure (email, name, surname, user_group_id, etc.).
Response
Section titled “Response”{ "success": true, "result": true, "user_id": "125", "message": "User created successfully"}Validation Errors
Section titled “Validation Errors”{ "success": false, "errors": { "email": ["This email is already registered"], "UserDetail": { "country_id": ["Country is required"] } }}External Auditor accounts (user_group_id: 250)
Section titled “External Auditor accounts (user_group_id: 250)”Auditor accounts are always temporary, external, read-only. These rules are enforced server-side on both create and edit — they cannot be bypassed by the client:
pilotis forced tofalse. Auditors never have flying privileges.expirationis required and must be no more than 90 days from the time of the request. Validation errors:"Auditor accounts must have an expiration date","Expiration date must be in the future","Auditor accounts cannot be granted for more than 90 days from today".- Two-factor authentication is forced to
EMAIL— an auditor’s credential can never be switched toTOTPorOFF, regardless of which endpoint attempts it.
{ "success": false, "errors": { "expiration": ["Auditor accounts cannot be granted for more than 90 days from today"] }}Edit User
Section titled “Edit User”POST /manager/users/edit.json
Update an existing user account. The same External Auditor account validation described under Create User above applies here too.
Delete User
Section titled “Delete User”POST /manager/users/delete/{id}.json
Delete a user account. Requires confirmation.
Path Parameters
Section titled “Path Parameters”| Parameter | Type | Description |
|---|---|---|
| id | string | User ID |
Request Body
Section titled “Request Body”| Field | Type | Required | Description |
|---|---|---|---|
| confirm | boolean | Yes | Must be true to confirm deletion |
Resend Activation
Section titled “Resend Activation”POST /pilots/reminder.json
Resend the activation/welcome email to a user.
Request Body
Section titled “Request Body”| Field | Type | Required | Description |
|---|---|---|---|
| user | string | Yes | User ID |
Billing Pilots
Section titled “Billing Pilots”GET /manager/bills/pilots.json
Retrieve pilot list for billing operations.
Response
Section titled “Response”Same structure as pilot list endpoint.