> ## Documentation Index
> Fetch the complete documentation index at: https://docs.authsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Server SDKs - Users

> Use Authsignal's server-side SDK methods for users.

## Get User

<Card title="API schema" icon="file-code" href="/api-reference/server-api/get-user" horizontal />

This method lets you retrieve information about a user.

<CodeGroup>
  ```ts Node.js theme={null}
  const request = {
    userId: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833",
  };

  const response = await authsignal.getUser(request);

  const isEnrolled = response.isEnrolled;
  ```

  ```csharp C# theme={null}
  var request = new GetUserRequest(
      UserId: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833"
  );

  var response = await authsignal.GetUser(request);

  var isEnrolled = response.IsEnrolled;
  ```

  ```java Java theme={null}
  UserRequest request = new GetUserRequest();
  request.userId = "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833";

  GetUserResponse response = authsignal.getUser(request).get();

  boolean isEnrolled = response.isEnrolled;
  ```

  ```ruby Ruby theme={null}
  response = Authsignal.get_user(user_id: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833")

  is_enrolled = response[:is_enrolled]
  ```

  ```python Python theme={null}
  response = authsignal.get_user(
      user_id="dc58c6dc-a1fd-4a4f-8e2f-846636dd4833"
  )

  is_enrolled = response["is_enrolled"]
  ```

  ```PHP PHP theme={null}
  $response = Authsignal::getUser([
      'userId' => "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833"
  ]);

  $isEnrolled = $response["isEnrolled"];
  ```

  ```go Go theme={null}
  response, err := client.GetUser(
      GetUserRequest{
          UserId: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833",
      },
  )


  isEnrolled := response.IsEnrolled != nil && *response.IsEnrolled
  ```
</CodeGroup>

## Update User

<Card title="API schema" icon="file-code" href="/api-reference/server-api/update-user" horizontal />

This method lets you update information about a user.
Any fields which are omitted in the request will be left unchanged.

<CodeGroup>
  ```ts Node.js theme={null}
  const request = {
    userId: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833",
    attributes: {
      email: "jane.smith@authsignal.com",
      phoneNumber: "+64270000000",
      displayName: "Jane Smith",
    },
  };

  const updatedAttributes = await authsignal.updateUser(request);
  ```

  ```csharp C# theme={null}
  var request = new UserRequest(
      UserId: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833",
      Attributes: new UserAttributes(
          Email: "jane.smith@authsignal.com",
          PhoneNumber: "+64270000000",
          DisplayName: "Jane Smith"
      )
  );

  var updatedAttributes = await authsignal.UpdateUser(request);
  ```

  ```java Java theme={null}
  UpdateUserRequest request = new UpdateUserRequest();
  request.userId = "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833";
  request.attributes = new UserAttributes();
  request.attributes.email = "jane.smith@authsignal.com";
  request.attributes.phoneNumber = "+64270000000";
  request.attributes.displayName = "Jane Smith";

  UserAttributes updatedAttributes = authsignal.updateUser(request).get();
  ```

  ```ruby Ruby theme={null}
  response = Authsignal.update_user(
      user_id: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833",
      attributes: {
          email: "jane.smith@authsignal.com",
          phone_number: "+64270000000",
          display_name: "Jane Smith"
      })
  ```

  ```python Python theme={null}
  response = authsignal.update_user(
      user_id="dc58c6dc-a1fd-4a4f-8e2f-846636dd4833",
      attributes={
          "email": "jane.smith@authsignal.com",
          "phoneNumber": "+64270000000",
          "displayName": "Jane Smith"
      }
  )
  ```

  ```PHP PHP theme={null}
  $response = Authsignal::updateUser([
      'userId' => "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833",
      'attributes' => [
          "email" => "jane.smith@authsignal.com",
          "phoneNumber" => "+64270000000",
          "displayName" => "Jane Smith",
      ]
  ]);
  ```

  ```go Go theme={null}
  updatedAttributes, err := client.UpdateUser(
      UpdateUserRequest{
          UserId: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833",
          Attributes: &UserAttributes{
              Email:       "jane.smith@authsignal.com",
              PhoneNumber: "+64270000000",
              DisplayName: "Jane Smith",
          },
      },
  )
  ```
</CodeGroup>

## Delete User

<Card title="API schema" icon="file-code" href="/api-reference/server-api/delete-user" horizontal />

This method lets you delete a user and all their associated authenticator data.

<CodeGroup>
  ```ts Node.js theme={null}
  const request = {
    userId: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833",
  };

  await authsignal.deleteUser(request);
  ```

  ```csharp C# theme={null}
  var request = new DeleteUserRequest(
      UserId: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833"
  );

  await authsignal.DeleteUser(request);
  ```

  ```java Java theme={null}
  DeleteUserRequest request = new DeleteUserRequest();
  request.userId = "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833";

  authsignal.deleteUser(request).get();
  ```

  ```ruby Ruby theme={null}
  Authsignal.delete_user(user_id: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833")
  ```

  ```python Python theme={null}
  authsignal_client.delete_user(user_id="dc58c6dc-a1fd-4a4f-8e2f-846636dd4833")
  ```

  ```PHP PHP theme={null}
  Authsignal::deleteUser(userId: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833");
  ```

  ```go Go theme={null}
  err := authsignal.DeleteUser(
    client.UserRequest{
      UserId: "dc58c6dc-a1fd-4a4f-8e2f-846636dd4833",
    },
  )
  ```
</CodeGroup>

## Query Users

<Card title="API schema" icon="file-code" href="/api-reference/server-api/query-users" horizontal />

This method lets you query users based on a set of filters.

<CodeGroup>
  ```ts Node.js theme={null}
  const request = {
    email: "jane.smith@authsignal.com",
  };

  const response = await authsignal.queryUsers(request);

  const users = response.users;
  ```

  ```csharp C# theme={null}
  var request = new QueryUsersRequest(
      Email: "jane.smith@authsignal.com"
  );

  var response = await authsignal.QueryUsers(request);

  var users = response.Users;
  ```

  ```java Java theme={null}
  QueryUsersRequest request = new QueryUsersRequest();
  request.email = "jane.smith@authsignal.com";

  QueryUsersResponse response = authsignal.queryUsers(request).get();

  QueryUsersResponseUser[] users = response.users;
  ```

  ```ruby Ruby theme={null}
  response = Authsignal.query_users(email: "jane.smith@authsignal.com")

  users = response[:users]
  ```

  ```python Python theme={null}
  response = authsignal.query_users(
      email="jane.smith@authsignal.com"
  )

  users = response["users"]
  ```

  ```php PHP theme={null}
  $response = Authsignal::queryUsers([
      'email' => "jane.smith@authsignal.com"
  ]);

  $users = $response["users"];
  ```

  ```go Go theme={null}
  response, err := client.QueryUsers(
      QueryUsersRequest{
          Email: "jane.smith@authsignal.com",
      },
  )

  users := response.Users
  ```
</CodeGroup>
