KB Article #182629

REST API: Using the PATCH method to update an Account

Problem

There could be an "Error validating request" error message returned from the API if the PATCH method is used to update an Account more than once, and the below configuration is present:


the Account has a "Login Restriction Policy" assigned

the Account belongs to a Business Unit with the settings

"Allow Delivery Method modifying" set to enabled

"Delivery Method" set to non-default (Anonymous or Account Without Enrollment or Account With Enrollment)

"Implicit Enrollment Type" set to any option other than "Selected by Sender"

"Allow Login Restriction Policy modifying" set to enabled


Resolution

Commands for disabling or locking an Account in this specific situation when the error message below is encountered:


"message" : "Error validating request",
"validationErrors" : [ "Implicit enrollment type is not allowed" ]


Disabling an Account

curl -k -u ADMINUSER:ADMINPASS -X PATCH'  'https://HOSTNAME:ADMINPORT/api/v2.0/accounts/user?ownershipChangeMode=recursive' -H 'accept: */*' -H 'Content-Type: application/json' -d "[{\"op\":\"replace\",\"path\":\"/disabled\",\"value\":\"true\"},{\"op\": \"replace\",\"path\": \"/adhocSettings\",\"value\": {\"implicitEnrollmentType\":null}}]"


Locking an Account

curl -k -u ADMINUSER:ADMINPASS -X 'PATCH'  'https://HOSTNAME:ADMINPORT/api/v2.0/accounts/user?ownershipChangeMode=recursive' -H 'accept: */*' -H 'Content-Type: application/json' -d "[{\"op\":\"replace\",\"path\":\"/user/locked\",\"value\":\"true\"},{\"op\": \"replace\",\"path\": \"/adhocSettings\",\"value\": {\"implicitEnrollmentType\":null}}]"


To enable or unlock an Account, replace the true with false in the commands. Keep in mind that using null for the value of implicitEnrollmentType will not update the value of the field. If changes are made from the Admin UI the implicitEnrollmentType return to its original value which is indeed null as when hitting the error with API PATCH the value could change to ANONYMUS_LINK.



If the above described configuration is not present, then the commands below can be used for disabling or locking an Account.


Disabling an Account

curl -k -u ADMINUSER:ADMINPASS -X PATCH' 'https://HOSTNAME:ADMINPORT/api/v2.0/accounts/user?ownershipChangeMode=recursive' -H 'accept: */*' -H 'Content-Type: application/json' -d "[{\"op\":\"replace\",\"path\":\"/disabled\",\"value\":\"true\"}]"'


Locking an Account

curl -k -u ADMINUSER:ADMINPASS -X PATCH' 'https://HOSTNAME:ADMINPORT/api/v2.0/accounts/user?ownershipChangeMode=recursive' -H 'accept: */*' -H 'Content-Type: application/json' -d "[{\"op\":\"replace\",\"path\":\"/user/locked\",\"value\":\"true\"}]"



A GET API request can be used to check the current settings of the Account


curl -k -u ADMINUSER:ADMINPASS -X GET' 'https://HOSTNAME:ADMINPORT/api/v2.0/accounts/user?fields=user.locked%2Cname%2CadhocSettings%2CbusinessUnit%2Cdisabled%2CloginRestrictionPolicy&type=user' -H 'accept: application/json'"


The GET command returns the selected fields user.locked, name, adhocSettings, businessUnit, disabled and loginRestrictionPolicy. If needed the filter can be removed by deleting ?fields=user.locked%2Cname%2CadhocSettings%2CbusinessUnit%2Cdisabled%2CloginRestrictionPolicy&type=user.



In the above command replace:


MASTER_ADMINISTRATOR:ADMIN_PASSWORD with the proper master admin credentials

HOSTNAME with the hotname or IP of SecureTransport

ADMINPORT with the port, on which the ST's admin service runs on

Example:


Demonstration of all commands in this article