TheSync_LDAP_Object method is used to synchronize a remote LDAP object in a tenant context.

It requires the DN of the object being synced. The second parameter required is attrs, an array of LDAP attributes and their corresponding values that define the object.
It is also possible to set the type of LDAP object synced and the uuid of this LDAP object, which correspond to the objectGUID.

This method returns true on success and false on error and is used by RCDevs AD/LDAP sync utilities.


import requests
import json

# Define the method and parameters
method = 'Sync_LDAP_Object'
params = {
    'dn': 'cn=jane.doe,cn=users,dc=rcdevsdocs,dc=com',
    'attrs': {
        'objectclass': ['user', 'person', 'webadmaccount'],
        'samaccountname': ['jane.doe'],
        'userprincipalname': ['jane.doe@rcdevsdocs.com'],
        'userpassword': ['myPassword']
    },
    'type': 'user',
    'uuid': '123e4567-e89b-12d3-a456-426614174000'
}

# Create the request payload
request_payload = {
    'jsonrpc': "2.0",
    'method': method,
    'params': params,
    'id': 0
}

# Convert payload to JSON
json_payload = json.dumps(request_payload)

# Define the URL and credentials
url = "https://webadm1.rcdevsdocs.com/manag/"
auth = ("RCDEVSDOCS\\administrator", "password")

# Define the headers
headers = {
    "Content-Type": "application/json",
    "Connection": "close"
}

# Make the POST request
response = requests.post(url, data=json_payload, headers=headers, auth=auth, verify=False)

# Print the HTTP response code and response content
print(f"HTTP response code: {response.status_code}")
print(response.json())
    

<?php
#!/bin/php
$method = 'Sync_LDAP_Object';
$params = array(
    'dn' => 'cn=jane.doe,cn=users,dc=rcdevsdocs,dc=com',
    'attrs' => array(
        'objectclass' => array('user', 'person', 'inetorgperson'),
        'samaccountname' => array('jane.doe'),
        'userprincipalname' => array('jane.doe@rcdevsdocs.com'),
        'userpassword' => array('myPassword')
    ),
    'type' => 'user',
    'uuid' => '123e4567-e89b-12d3-a456-426614174000'
);

$request = array(
    'jsonrpc' => "2.0",
    'method' => $method,
    'params' => $params,
    'id' => 0
);
$json = json_encode($request);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://webadm1.rcdevsdocs.com/manag/");
curl_setopt($ch, CURLOPT_USERPWD, "RCDEVSDOCS\\administrator:password");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("connection: close"));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
$out = curl_exec($ch);
curl_close($ch);

print_r(json_decode($out));
?>
    

# Define the method and parameters
$method = 'Sync_LDAP_Object'
$params = @{
    dn = 'cn=jane.doe,cn=users,dc=rcdevsdocs,dc=com'
    attrs = @{
        objectclass = @('user', 'person', 'inetorgperson')
        samaccountname = @('jane.doe')
        userprincipalname = @('jane.doe@rcdevsdocs.com')
        userpassword = @('myPassword')
    }
    type = 'user'
    uuid = '123e4567-e89b-12d3-a456-426614174000'
}

# Create the request payload
$requestPayload = @{
    'jsonrpc' = '2.0'
    'method' = $method
    'params' = $params
    'id' = 0
}

# Convert the request payload to JSON
$jsonPayload = $requestPayload | ConvertTo-Json

# Define the URL and credentials
$url = "https://webadm1.rcdevsdocs.com/manag/"
$auth = "RCDEVSDOCS\administrator:password"

# Make the POST request
$response = Invoke-RestMethod -Uri $url -Method Post -Body $jsonPayload -Headers @{ "Content-Type" = "application/json" } -Credential (New-Object System.Management.Automation.PSCredential($auth, (ConvertTo-SecureString "password" -AsPlainText -Force))) -SkipCertificateCheck

# Output the response
Write-Host "HTTP Response Code: $($response.status_code)"
Write-Host $response | ConvertTo-Json