Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Provide code for creating and managing users via Joomla REST API


Provide code for creating and managing users via Joomla REST API


To create and manage users via the Joomla REST API, you can use the following approaches:

1. Creating a new user:

Make a POST request to `/api/index.php/v1/users` with the following JSON payload:

json
{
  "name": "John Doe",
  "username": "johndoe",
  "email": "
 <script language='JavaScript' type='text/javascript'>
 <!--
 var prefix = 'm&#97;&#105;lt&#111;:';
 var suffix = '';
 var attribs = '';
 var path = 'hr' + 'ef' + '=';
 var addy76092 = 'j&#111;hnd&#111;&#101;' + '&#64;';
 addy76092 = addy76092 + '&#101;x&#97;mpl&#101;' + '&#46;' + 'c&#111;m';
 document.write( '<a ' + path + '\'' + prefix + addy76092 + suffix + '\'' + attribs + '>' );
 document.write( addy76092 );
 document.write( '<\/a>' );
 //-->
 </script><script language='JavaScript' type='text/javascript'>
 <!--
 document.write( '<span style=\'display: none;\'>' );
 //-->
 </script>This e-mail address is being protected from spambots. You need JavaScript enabled to view it
 <script language='JavaScript' type='text/javascript'>
 <!--
 document.write( '</' );
 document.write( 'span>' );
 //-->
 </script>",
  "password": "securepassword",
  "groups": [2],
  "block": 0,
  "sendEmail": 1
}

The `groups` array specifies the user groups (2 is Registered Users). Set `block` to 0 to activate the account immediately. The `sendEmail` parameter controls whether to send admin notification emails[1][2].

2. Retrieving user information:

Make a GET request to `/api/index.php/v1/users/{user_id}` to get details for a specific user.

3. Updating a user:

Make a PATCH request to `/api/index.php/v1/users/{user_id}` with the fields you want to update in the JSON payload.

4. Deleting a user:

Make a DELETE request to `/api/index.php/v1/users/{user_id}`.

Some important points to note:

- You need to authenticate your API requests using a token or basic auth.
- The API doesn't automatically send welcome emails to new users. You may need to implement this separately if required[1][2].
- If you have custom required fields for users, you'll need to include those in your create/update requests[5].
- User activation settings from the Joomla configuration (like self-activation) may not apply to API-created users. You may need to handle activation manually if needed[1][2].

To use these API endpoints in your code, you can use a HTTP client library to make the requests. Here's a PHP example using cURL to create a new user:

php
$apiUrl = 'https://your-joomla-site.com/api/index.php/v1/users';
$data = [
  'name' => 'John Doe',
  'username' => 'johndoe',
  'email' => '
 <script language='JavaScript' type='text/javascript'>
 <!--
 var prefix = 'm&#97;&#105;lt&#111;:';
 var suffix = '';
 var attribs = '';
 var path = 'hr' + 'ef' + '=';
 var addy81639 = 'j&#111;hnd&#111;&#101;' + '&#64;';
 addy81639 = addy81639 + '&#101;x&#97;mpl&#101;' + '&#46;' + 'c&#111;m';
 document.write( '<a ' + path + '\'' + prefix + addy81639 + suffix + '\'' + attribs + '>' );
 document.write( addy81639 );
 document.write( '<\/a>' );
 //-->
 </script><script language='JavaScript' type='text/javascript'>
 <!--
 document.write( '<span style=\'display: none;\'>' );
 //-->
 </script>This e-mail address is being protected from spambots. You need JavaScript enabled to view it
 <script language='JavaScript' type='text/javascript'>
 <!--
 document.write( '</' );
 document.write( 'span>' );
 //-->
 </script>',
  'password' => 'securepassword',
  'groups' => [2],
  'block' => 0,
  'sendEmail' => 1
];

$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  'Content-Type: application/json',
  'Authorization: Bearer YOUR_API_TOKEN'
]);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);

Remember to replace `YOUR_API_TOKEN` with your actual API token. Also, ensure you have the necessary permissions to perform these operations via the API.

Citations:
[1] https://github.com/joomla/joomla-cms/issues/37128
[2] https://forum.joomla.org/viewtopic.php?t=992104
[3] https://manual.joomla.org/docs/general-concepts/user/
[4] https://stackoverflow.com/questions/1904809/how-can-i-create-a-new-joomla-user-account-from-within-a-script
[5] https://github.com/joomla/joomla-cms/issues/36936