> For the complete documentation index, see [llms.txt](https://docs.gaiodataos.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.gaiodataos.com/settings/gaio-user-manager-api.md).

# Gaio User Manager API

This documentation describes the Gaio User Manager API, based on the OpenAPI 3.0 specification.

### Users API

#### GET /api/auth/manager/users/{page}

**Description:** Retrieves all users.

**Parameters:**

* `page` (path, optional): Page number.

**Responses:**

* `200 OK`: Returns all users.

  **Response Example:**

  ```json
  jsonCopyEdit{
    "userId": 1,
    "name": "Gaio User",
    "email": "gaio.user@gaio.io",
    "status": "active",
    "groups": [
      "Analytics team",
      "Development team",
      "RH team"
    ]
  }
  ```

***

#### GET /api/auth/manager/user/{userId}

**Description:** Retrieves a single user.

**Parameters:**

* `userId` (path, required): User ID.

**Responses:**

* `200 OK`: Returns the user.

  **Response Example:**

  ```json
  jsonCopyEdit{
    "userId": 1,
    "name": "Gaio User",
    "email": "gaio.user@gaio.io",
    "status": "active",
    "groups": [
      "Analytics team",
      "Development team",
      "RH team"
    ]
  }
  ```

***

#### POST /api/auth/manager/create-user

**Description:** Creates a new user.

**Parameters:**

* `body` (request body, required): Data for the user to be created.

  **Request Example:**

  ```json
  jsonCopyEdit{
    "name": "New User",
    "email": "new.user@gaio.io",
    "password": "securePassword123",
    "groups": [
      "Development team"
    ]
  }
  ```

**Responses:**

* `200 OK`: User successfully created.

  **Response Example:**

  ```json
  jsonCopyEdit{
    "userId": 2,
    "name": "New User",
    "email": "new.user@gaio.io",
    "status": "active",
    "groups": [
      "Development team"
    ]
  }
  ```

***

#### POST /api/auth/manager/status

**Description:** Changes the status of a user.

**Parameters:**

* `body` (request body, required): User ID and new status.

  **Request Example:**

  ```json
  jsonCopyEdit{
    "userId": 0,
    "status": "active"
  }
  ```

**Responses:**

* `200 OK`: User status successfully updated.

***

#### POST /api/auth/manager/update

**Description:** Updates user information.

**Parameters:**

* `body` (request body, required): Data of the user to be updated.

  **Request Example:**

  ```json
  jsonCopyEdit{
    "userId": 1,
    "name": "Updated Gaio User",
    "email": "gaio.user.updated@gaio.io"
  }
  ```

**Responses:**

* `200 OK`: User successfully updated.

***

#### POST /api/auth/manager/update-password

**Description:** Updates a user's password.

**Parameters:**

* `body` (request body, required): User ID and new password.

  **Request Example:**

  ```json
  jsonCopyEdit{
    "userId": 0,
    "password": "newSecurePassword"
  }
  ```

**Responses:**

* `200 OK`: User password successfully updated.

***

#### DELETE /api/auth/manager/delete

**Description:** Deletes a user.

**Parameters:**

* `body` (request body, required): ID of the user to be deleted.

  **Request Example:**

  ```json
  jsonCopyEdit{
    "userId": 0
  }
  ```

**Responses:**

* `200 OK`: User successfully deleted.

***

### Groups API

#### POST /api/auth/manager/create-group

**Description:** Creates a new group.

**Parameters:**

* `body` (request body, required): Name of the group to be created.

  **Request Example:**

  ```json
  jsonCopyEdit{
    "name": "New Group"
  }
  ```

**Responses:**

* `200 OK`: Group successfully created.

***

#### DELETE /api/auth/manager/delete-group

**Description:** Deletes a group.

**Parameters:**

* `body` (request body, required): ID of the group to be deleted.

  **Request Example:**

  ```json
  jsonCopyEdit{
    "groupId": 0
  }
  ```

**Responses:**

* `200 OK`: Group successfully deleted.

***

#### GET /api/auth/manager/groups/{page}

**Description:** Retrieves all groups.

**Parameters:**

* `page` (path, optional): Page number.

**Responses:**

* `200 OK`: Returns all groups.

  **Response Example:**

  ```json
  jsonCopyEdit{
    "groupId": 1,
    "name": "Example Group"
  }
  ```

***

#### POST /api/auth/manager/group/grant

**Description:** Assigns user groups.

**Parameters:**

* `body` (request body, required): User ID and group IDs to be granted.

  **Request Example:**

  ```json
  jsonCopyEdit{
    "userId": 0,
    "groupIds": [
      0
    ]
  }
  ```

**Responses:**

* `200 OK`: User groups successfully assigned.

***

#### POST /api/auth/manager/group/revoke

**Description:** Revokes user groups.

**Parameters:**

* `body` (request body, required): User ID and group IDs to be revoked.

  **Request Example:**

  ```json
  jsonCopyEdit{
    "userId": 0,
    "groupIds": [
      0
    ]
  }
  ```

**Responses:**

* `200 OK`: User groups successfully revoked.

***

### Permissions API

#### POST /api/auth/manager/tag/grant

**Description:** Adds app/source permission to a user/group.

**Parameters:**

* `body` (request body, required): User/group ID and permission tags.

  **Request Example:**

  ```json
  jsonCopyEdit{
    "userId": 0,
    "tags": [
      "admin"
    ]
  }
  ```

**Responses:**

* `200 OK`: Permission successfully added.

***

#### POST /api/auth/manager/tag/revoke

**Description:** Removes app/source permission from a user/group.

**Parameters:**

* `body` (request body, required): User/group ID and permission tags to be revoked.

  **Request Example:**

  ```json
  jsonCopyEdit{
    "userId": 0,
    "tags": [
      "admin"
    ]
  }
  ```

**Responses:**

* `200 OK`: Permission successfully removed.
