---
title: "Create Admin User"
method: POST
path: "/api/registration/admin/create/"
tags: ["Sign Up"]
---

# Create Admin User

`POST /api/registration/admin/create/`

**Function**: `CreateAdminUser`  
**Type**: API Endpoint (POST)

**Purpose**:  
This function is used to create a new administrator user with the provided details, ensuring unique email addresses and securely storing user credentials.

**URL**:  
`POST /api/admin/create/`

**Request Example**:  
```json
{
    "user_name": "<user_name>",      // Administrator's full name
    "email": "<email>", // Administrator's email
    "mobile": "<mobile>",      // Administrator's mobile number
    "password": "<password>", // Password for the new user
    "active": <active>,                  // User status (1 for active, 0 for inactive)
    "lscode": "<lscode>"        // LSCode for the administrator
}
```

**Steps**:
1. **Email Check**:  
The function first checks if an administrator with the provided email already exists in the system. If the email is already in use, the function raises an HTTP exception with a status code of 400, indicating a conflict.

2. **User Code & LSCode Generation**:  
The function then generates a unique `user_code` and `lscode` for the new user using the `code_generator` function. These codes ensure each user has distinct identification values.

3. **Password Hashing**:  
The provided password is securely hashed using a hashing function before being stored in the database.

4. **User Creation**:  
A new `LSAPIUserCredential` entry is created with the provided details, including the generated codes, email, mobile number, hashed password, and the current user's email as the creator.

5. **Database Commit**:  
The new user is added to the database, committed, and the newly created user's details are refreshed for further use if needed.

**Response**:
If the user is successfully created, the response contains a success message and the details of the newly created user.

**Response Example**:
```json
{
    "message": "Administrator user created successfully",
    "user": {
        "user_code": "<user_code>",
        "LSCode": "<LSCode>",
        "user_name": "<user_name>",
        "email": "<email>",
        "mobile": "<mobile>",
        "active": 0 | 1,
        "date_of_creation": "<date_of_creation>",
        "created_user": "<created_user>",
        "date_of_modification": "<date_of_modification>",
        "modified_user": "<modified_user>"
    }
}
```

**Security**:
- This function ensures that only authenticated users can create new administrator accounts by depending on `get_current_user`.
- Passwords are securely hashed before being stored in the database, preventing plaintext passwords from being exposed.

**Error Handling**:
- If a user with the provided email already exists, the function raises an `HTTPException` with a `400` status code and an error message.
- If any other error occurs during database operations, appropriate rollback mechanisms should be applied.

**Notes**:
- The user and LS codes are generated using the `code_generator` function, ensuring uniqueness and adherence to the required format.
- The `current_user` is captured from the session to ensure that only authorized users perform administrative actions.

## Request body

- AdminUserCreate
  - `lscode` string, required
  - `user_name` string, required
  - `email` string, email, required
  - `mobile` string, required
  - `password` string, required
  - `active` integer

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/leapsurgebi/apis/leapsurgeapi.md) · [All operations](https://skmtc.dev/leapsurgebi/apis/leapsurgeapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/leapsurgebi/leapsurgeapi/revisions/5a6b1464bfeb/schema)
