# REST users :: Email address is incorrect

**URL:** <https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628>\
**Category:** Other native modules\
**Tags:** Help\
**Created:** [July 26, 2024, 2:47pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628 "2024-07-26T14:47:36Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![adriansev](https://www.dolibarr.org/forum/user_avatar/www.dolibarr.org/adriansev/32/7378_2.png) [@adriansev](https://www.dolibarr.org/forum/u/adriansev)\
**Post date:** [July 26, 2024, 2:47pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/1 "2024-07-26T14:47:36Z")

</div>

Hi! I’m trying to create a user with an email of the form of `first_name.last_name@mydomain` but i get

```auto
{"error":{"code":500,"message":"Internal Server Error: Error creating","0":"Email address is incorrect"}}

```

the request is on the form of:

```auto
{ "request_data": [
 {'id': str(new_id), 'ref': str(new_id), 'statut': '1', 'status': '1', 'employee': '1', 'admin': is_admin, 'pass_crypted': None,
 'email': email, 'login': login_name, 'lastname': last_name, 'firstname': first_name }
] }

```

any idea what i could be doing wrong?  
Thanks a lot!

---

<div class="post-metadata">

**Author:** ![jonbendtsen](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/977dab/32.png) [@jonbendtsen](https://www.dolibarr.org/forum/u/jonbendtsen)\
**Post date:** [July 26, 2024, 3:12pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/2 "2024-07-26T15:12:07Z")

</div>

Try with a different email address to validate that you can actually create users

---

<div class="post-metadata">

**Author:** ![adriansev](https://www.dolibarr.org/forum/user_avatar/www.dolibarr.org/adriansev/32/7378_2.png) [@adriansev](https://www.dolibarr.org/forum/u/adriansev)\
**Post date:** [July 26, 2024, 8:29pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/3 "2024-07-26T20:29:58Z")

</div>

so, even after i fix my code (the dictionary should be sent as json string), no matter how the email is written i get the same error…

---

<div class="post-metadata">

**Author:** ![jonbendtsen](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/977dab/32.png) [@jonbendtsen](https://www.dolibarr.org/forum/u/jonbendtsen)\
**Post date:** [July 26, 2024, 9:45pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/4 "2024-07-26T21:45:08Z")

</div>

are you willing to share your dolibarr version and the json you feed into it?

---

<div class="post-metadata">

**Author:** ![DG-Rilling](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/d/e495f1/32.png) [@DG-Rilling](https://www.dolibarr.org/forum/u/DG-Rilling)\
**Post date:** [July 27, 2024, 12:13pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/5 "2024-07-27T12:13:47Z")

</div>

The correct syntax for version 17.0.2 is as follows:  
(may be also on the newer versions…)

```auto
{
"email": "your_email@FQDN", 
"login": "login_name", 
"lastname": "last_name", 
"firstname": "first_name", 
"gender": "man", 
"lang": "DE_de"
}

```

These fields cannot be set by api call:  
`'pass_crypted', 'pass_indatabase', 'pass_indatabase_crypted', 'pass_temp', 'api_key'`

---

<div class="post-metadata">

**Author:** ![adriansev](https://www.dolibarr.org/forum/user_avatar/www.dolibarr.org/adriansev/32/7378_2.png) [@adriansev](https://www.dolibarr.org/forum/u/adriansev)\
**Post date:** [July 27, 2024, 12:52pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/6 "2024-07-27T12:52:12Z")

</div>

Dolibar version is latest 19.0.2  
the the json is this:

```auto
info_dict = {'id': str(new_id), 'ref': str(new_id), 'statut': '1', 'status': '1', 'employee': '1', 'admin': is_admin, 'gender': 'man', 'lang': None, 'array_languages': None,
'email': email, 'personal_email': email, 'email_oauth2': None, 'login': login_name, 'lastname': last_name, 'firstname': first_name }

info_dict_str = json.dumps(info_dict)
return { "request_data": [info_dict_str]}

```

Thanks a lot for looking into this!

---

<div class="post-metadata">

**Author:** ![jonbendtsen](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/977dab/32.png) [@jonbendtsen](https://www.dolibarr.org/forum/u/jonbendtsen)\
**Post date:** [July 27, 2024, 1:06pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/7 "2024-07-27T13:06:08Z")

</div>

What is the value of the email variable?

---

<div class="post-metadata">

**Author:** ![adriansev](https://www.dolibarr.org/forum/user_avatar/www.dolibarr.org/adriansev/32/7378_2.png) [@adriansev](https://www.dolibarr.org/forum/u/adriansev)\
**Post date:** [July 27, 2024, 1:07pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/8 "2024-07-27T13:07:49Z")

</div>

it is of the form `first_name.last_name@domain`

---

<div class="post-metadata">

**Author:** ![jonbendtsen](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/977dab/32.png) [@jonbendtsen](https://www.dolibarr.org/forum/u/jonbendtsen)\
**Post date:** [July 27, 2024, 1:08pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/9 "2024-07-27T13:08:04Z")

</div>

This looks a bit like Python, are you using Dolibarrpy from [dolibarrpy · PyPI](https://pypi.org/project/dolibarrpy/) ?

The source code can be found here [GitHub - JonBendtsen/dolibarrpy: Python module for interacting with Dolibarr API](https://github.com/JonBendtsen/dolibarrpy)

---

<div class="post-metadata">

**Author:** ![adriansev](https://www.dolibarr.org/forum/user_avatar/www.dolibarr.org/adriansev/32/7378_2.png) [@adriansev](https://www.dolibarr.org/forum/u/adriansev)\
**Post date:** [July 27, 2024, 1:09pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/10 "2024-07-27T13:09:00Z")

</div>

yes python but i use just the REST API and `requests`

---

<div class="post-metadata">

**Author:** ![jonbendtsen](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/j/977dab/32.png) [@jonbendtsen](https://www.dolibarr.org/forum/u/jonbendtsen)\
**Post date:** [July 27, 2024, 1:09pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/11 "2024-07-27T13:09:16Z")

</div>

> [@adriansev](#):
>
> it is of the form `first_name.last_name@domain`

and domain is a fully qualified domain that the Dolibarr server can lookup?

Does it work if you str(email)

---

<div class="post-metadata">

**Author:** ![adriansev](https://www.dolibarr.org/forum/user_avatar/www.dolibarr.org/adriansev/32/7378_2.png) [@adriansev](https://www.dolibarr.org/forum/u/adriansev)\
**Post date:** [July 27, 2024, 1:14pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/12 "2024-07-27T13:14:19Z")

</div>

yes, it is the same domain as of the server  
no, does not work … what i actually do is:

```auto
def hr_post(path:str, data: dict):
    if not path or not data: return None
    ACTION = f'{HR_URL}{path}'
    return requests.post(ACTION, data = data, headers = headers, verify = False, cert = cert_data)

def mk_user_dict(first_name, last_name, email, is_admin):
    new_id = nr_users + 1
    login_name = f'{first_name.lower()[0]}{last_name.lower()}'
    info_dict = {'id': str(new_id), 'ref': str(new_id), 'statut': '1', 'status': '1', 'employee': '1', 'admin': is_admin, 'gender': 'man', 'lang': None, 'array_languages': None,
                 'email': str(email), 'personal_email': str(email), 'email_oauth2': None, 'login': login_name, 'lastname': last_name, 'firstname': first_name }
    info_dict_str = json.dumps(info_dict)

    return { "request_data": [info_dict_str]}

myuser = mk_user_dict('XXX', 'YYY', 'XXX.YYY@MYDOMAIN', '1')
pprint(myuser)

result = hr_post('users', myuser)
pprint(result.text)

```

---

<div class="post-metadata">

**Author:** ![DG-Rilling](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/d/e495f1/32.png) [@DG-Rilling](https://www.dolibarr.org/forum/u/DG-Rilling)\
**Post date:** [July 27, 2024, 2:05pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/13 "2024-07-27T14:05:35Z")

</div>

From the manual of json\_decode()

```auto
Example #3 common mistakes using json_decode()
<?php

// the following strings are valid JavaScript but not valid JSON

// the name and value must be enclosed in double quotes
// single quotes are not valid 
$bad_json = "{ 'bar': 'baz' }";
json_decode($bad_json); // null

// the name must be enclosed in double quotes
$bad_json = '{ bar: "baz" }';
json_decode($bad_json); // null

// trailing commas are not allowed
$bad_json = '{ bar: "baz", }';
json_decode($bad_json); // null

?>

```

→ exchange `'` with `"` see my example

BTW: id, ref, status are not taken into account. pass\_crypted cannot be set by api call.  
see `~/htdocs/user/class/api_users.class.php in public function post(...)` and `~/htdocs/user/class/users.class.php in public function create(...) and update(...)`

---

<div class="post-metadata">

**Author:** ![adriansev](https://www.dolibarr.org/forum/user_avatar/www.dolibarr.org/adriansev/32/7378_2.png) [@adriansev](https://www.dolibarr.org/forum/u/adriansev)\
**Post date:** [July 27, 2024, 2:38pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/14 "2024-07-27T14:38:17Z")

</div>

hmm, so i realized that `request_data` has the value of an array of _strings_ ! so i have to do this:

```auto
def mk_user_dict(first_name, last_name, email, is_admin):
    login_name = f'{first_name.lower()[0]}{last_name.lower()}'
    info_dict = { "firstname": first_name, "lastname": last_name, "login": login_name, "email": str(email), "statut": "1", "employee": "1", "admin": is_admin }

    print(json.dumps(info_dict))

    whole_dict = { "request_data": [json.dumps(info_dict)]}
    whole_dict_str = json.dumps(whole_dict)
    return whole_dict_str

```

but as a consequence the string that i use as payload looks like this:  
the actual data (dumped to string)

```auto
{"firstname": "XXX", "lastname": "YYY", "login": "XYYY", "email": "XXX.YYY@DOMAIN", "statut": "1", "employee": "1", "admin": "1"}

```

but then when i dump everything to string again (to send as payload)

```auto
{"request_data": ["{\"firstname\": \"XXX\", \"lastname\": \"YYY\", \"login\": \"XYYY\", \"email\": \"XXX.YYY@DOMAIN\", \"statut\": \"1\", \"employee\": \"1\", \"admin\": \"1\"}"]}

```

Is there a way to debug the php (php-fpm in this case) to see what actually is the problem?  
Thanks a lot!

---

<div class="post-metadata">

**Author:** ![DG-Rilling](https://www.dolibarr.org/forum/letter_avatar_proxy/v4/letter/d/e495f1/32.png) [@DG-Rilling](https://www.dolibarr.org/forum/u/DG-Rilling)\
**Post date:** [July 27, 2024, 3:08pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/15 "2024-07-27T15:08:55Z")

</div>

I don’t think php-fpm is the problem.  
Remove the `{"request_data": [` at the beginning and the trailing `"]}`

You can use the inside syslog-function in api\_users.class.php in the function post(…) ala:

```auto
dol_syslog(get_class($this)."::post ".$this->useraccount->$field." value: ".$value, LOG_ERR);

```

insert before `$this->useraccount->$field = $value;`

and look at the results in dolibarr.log if you have the debug-module activated.

Here a screenshot from the Swagger UI

 ![grafik](https://www.dolibarr.org/forum/uploads/dolibarrorg/original/2X/0/0b37cdc0ea82eab4c4bca12b94143019be1db625.png)  
 → user “XYYY” is successfully created

---

<div class="post-metadata">

**Author:** ![adriansev](https://www.dolibarr.org/forum/user_avatar/www.dolibarr.org/adriansev/32/7378_2.png) [@adriansev](https://www.dolibarr.org/forum/u/adriansev)\
**Post date:** [July 27, 2024, 3:18pm UTC](https://www.dolibarr.org/forum/t/rest-users-email-address-is-incorrect/25628/16 "2024-07-27T15:18:04Z")

</div>

OMG, i spent so much time on this!!! THANK YOU!!!  
The problem was that in my API explorer i got this:

 ![image](https://www.dolibarr.org/forum/uploads/dolibarrorg/original/2X/9/9200914c10a6073d6896f3b248f058e855bebce1.png)
