dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #51623
Re: User PUT issue
Please also be aware that the User object is very much a "special" type,
and does not always follow the rules of other types in the system
(dataElements, indicators etc).
I would recommend to be very careful with partial updating of the user
object, and instead always use the full payload required (an example full
payload can be found in the docs)
--
Morten Olav Hansen
Senior Engineer, DHIS 2
Team Integration Lead
University of Oslo
http://www.dhis2.org
On Tue, Aug 14, 2018 at 11:30 PM Vladimer Shioshvili <vshioshvili@xxxxxxxxx>
wrote:
> Hey Greg,
>
> The section of the documentation you included has a reference to the user
> object schema, which specifies that for the user object only firstName and
> surname are required (/api/schemas/user). I've just tried in 2.27 (not sure
> if things changed in 2.29) and this is the minimal package i was able to
> use to update the user object:
>
> {
> "id": "Vx7Vgp1I3EK",
> "surname": "Doe",
> "firstName": "John"
> }
>
> However, if you include the userCredentials object, you have to include
> the id, otherwise it attempts to create a new one and ends up throwing the
> already exists. Similarly, /api/schemas/userCredentials has the details
> about minimum requirement, and that is username, but as you are doing an
> update you have to specify the id as well.
>
> PUT of the entire object with save date and the rest works for me too.
>
> Vlad
>
> On Tue, Aug 14, 2018 at 12:17 PM Greg Wilson <gwilson@xxxxxxxxxxxxxx>
> wrote:
>
>> Thank you Hendrik. PATCH is the way to go for most objects.
>> Unfortunately (per or discussion and here for posterity) it does not
>> currently work with user.userGroupos and user.userCredentials.userRoles. I
>> will need to make a clean copy of the user object and PUT.
>>
>> *Gregory Wilson*
>>
>> On Tue, Aug 14, 2018 at 8:16 AM Hendrik de Graaf <hendrik@xxxxxxxxx>
>> wrote:
>>
>>> Hi Gregory,
>>>
>>> For updating a single field on a user record, I would try doing a PATCH
>>> request with exactly the same payload as you were doing.
>>>
>>> I do this type of request to disable a user in the User Management app,
>>> so it should work.
>>>
>>> Best regards,
>>> Hendrik
>>> On 14 Aug 2018, 11:16 +0200, Greg Wilson <gwilson@xxxxxxxxxxxxxx>,
>>> wrote:
>>>
>>> Can someone tell me what I am doing wrong here? According to the docs (
>>> https://docs.dhis2.org/2.29/en/developer/html/dhis2_developer_manual_full.html#webapi_users_create_update)
>>> this should work to update a user's account:
>>>
>>> curl -X PUT -u "admin:district" -d @u.json -H "Content-Type:
>>> application/json" https://play.dhis2.org/2.26/api/26/users/DXyJmlo9rge
>>>
>>> In this case I am using {"firstName":"ATEST"} as the u.json file.
>>> Unfortunately I keep receiving errors such as:
>>>
>>> "Missing required property `surname`."
>>>
>>> If I send a more complete user object it complains that I am missing the
>>> userCredentials.username property. When I add that, it complains that user
>>> already exists.
>>>
>>> *Gregory Wilson*
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~dhis2-devs
>>> Post to : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>> More help : https://help.launchpad.net/ListHelp
>>>
>>> _______________________________________________
>> Mailing list: https://launchpad.net/~dhis2-devs
>> Post to : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~dhis2-devs
>> More help : https://help.launchpad.net/ListHelp
>>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs
> Post to : dhis2-devs@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dhis2-devs
> More help : https://help.launchpad.net/ListHelp
>
References