Sync all user accounts
To send us data related to users in your system, you send us UserAccount resources. Every partner must send us UserAccount resources. This helps us determine whether users have appropriate levels of access and have a secure authentication mechanism.
This call replaces ALL existing UserAccount resources for the given app and source_id - this is a “state of the world” sync. In other words, if a UserAccount resource is sent for a user in a previous sync_all call, but is not included in a later sync_all call for that customer, it is assumed to no longer exist and it is “deletedAt” time in is set to that of the sync_all call. The resource will still show in the Vanta UI as a Deactivated UserAccount, and list_all calls.
** Headers **
Authorization: Bearer <access_token>
** Scopes **
connectors.self:write-resource
** Schema **
Expand the resources array below for the schema of UserAccount.
curl --request PUT \
--url https://api.vanta.com/v1/resources/user_account \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resourceId": "<string>",
"resources": [
{
"displayName": "<string>",
"uniqueId": "<string>",
"externalUrl": "<string>",
"fullName": "<string>",
"accountName": "<string>",
"email": "<string>",
"createdTimestamp": "2023-11-07T05:31:56Z",
"mfaEnabled": true,
"mfaMethods": [],
"roleDescription": "<string>",
"updatedTimestamp": "2023-11-07T05:31:56Z",
"deactivatedTimestamp": "2023-11-07T05:31:56Z",
"lastLoginTimestamp": "2023-11-07T05:31:56Z",
"lastPasswordResetTimestamp": "2023-11-07T05:31:56Z",
"groupIds": [
"<string>"
]
}
]
}
'import requests
url = "https://api.vanta.com/v1/resources/user_account"
payload = {
"resourceId": "<string>",
"resources": [
{
"displayName": "<string>",
"uniqueId": "<string>",
"externalUrl": "<string>",
"fullName": "<string>",
"accountName": "<string>",
"email": "<string>",
"createdTimestamp": "2023-11-07T05:31:56Z",
"mfaEnabled": True,
"mfaMethods": [],
"roleDescription": "<string>",
"updatedTimestamp": "2023-11-07T05:31:56Z",
"deactivatedTimestamp": "2023-11-07T05:31:56Z",
"lastLoginTimestamp": "2023-11-07T05:31:56Z",
"lastPasswordResetTimestamp": "2023-11-07T05:31:56Z",
"groupIds": ["<string>"]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
resourceId: '<string>',
resources: [
{
displayName: '<string>',
uniqueId: '<string>',
externalUrl: '<string>',
fullName: '<string>',
accountName: '<string>',
email: '<string>',
createdTimestamp: '2023-11-07T05:31:56Z',
mfaEnabled: true,
mfaMethods: [],
roleDescription: '<string>',
updatedTimestamp: '2023-11-07T05:31:56Z',
deactivatedTimestamp: '2023-11-07T05:31:56Z',
lastLoginTimestamp: '2023-11-07T05:31:56Z',
lastPasswordResetTimestamp: '2023-11-07T05:31:56Z',
groupIds: ['<string>']
}
]
})
};
fetch('https://api.vanta.com/v1/resources/user_account', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.vanta.com/v1/resources/user_account",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'resourceId' => '<string>',
'resources' => [
[
'displayName' => '<string>',
'uniqueId' => '<string>',
'externalUrl' => '<string>',
'fullName' => '<string>',
'accountName' => '<string>',
'email' => '<string>',
'createdTimestamp' => '2023-11-07T05:31:56Z',
'mfaEnabled' => true,
'mfaMethods' => [
],
'roleDescription' => '<string>',
'updatedTimestamp' => '2023-11-07T05:31:56Z',
'deactivatedTimestamp' => '2023-11-07T05:31:56Z',
'lastLoginTimestamp' => '2023-11-07T05:31:56Z',
'lastPasswordResetTimestamp' => '2023-11-07T05:31:56Z',
'groupIds' => [
'<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vanta.com/v1/resources/user_account"
payload := strings.NewReader("{\n \"resourceId\": \"<string>\",\n \"resources\": [\n {\n \"displayName\": \"<string>\",\n \"uniqueId\": \"<string>\",\n \"externalUrl\": \"<string>\",\n \"fullName\": \"<string>\",\n \"accountName\": \"<string>\",\n \"email\": \"<string>\",\n \"createdTimestamp\": \"2023-11-07T05:31:56Z\",\n \"mfaEnabled\": true,\n \"mfaMethods\": [],\n \"roleDescription\": \"<string>\",\n \"updatedTimestamp\": \"2023-11-07T05:31:56Z\",\n \"deactivatedTimestamp\": \"2023-11-07T05:31:56Z\",\n \"lastLoginTimestamp\": \"2023-11-07T05:31:56Z\",\n \"lastPasswordResetTimestamp\": \"2023-11-07T05:31:56Z\",\n \"groupIds\": [\n \"<string>\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.vanta.com/v1/resources/user_account")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resourceId\": \"<string>\",\n \"resources\": [\n {\n \"displayName\": \"<string>\",\n \"uniqueId\": \"<string>\",\n \"externalUrl\": \"<string>\",\n \"fullName\": \"<string>\",\n \"accountName\": \"<string>\",\n \"email\": \"<string>\",\n \"createdTimestamp\": \"2023-11-07T05:31:56Z\",\n \"mfaEnabled\": true,\n \"mfaMethods\": [],\n \"roleDescription\": \"<string>\",\n \"updatedTimestamp\": \"2023-11-07T05:31:56Z\",\n \"deactivatedTimestamp\": \"2023-11-07T05:31:56Z\",\n \"lastLoginTimestamp\": \"2023-11-07T05:31:56Z\",\n \"lastPasswordResetTimestamp\": \"2023-11-07T05:31:56Z\",\n \"groupIds\": [\n \"<string>\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vanta.com/v1/resources/user_account")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resourceId\": \"<string>\",\n \"resources\": [\n {\n \"displayName\": \"<string>\",\n \"uniqueId\": \"<string>\",\n \"externalUrl\": \"<string>\",\n \"fullName\": \"<string>\",\n \"accountName\": \"<string>\",\n \"email\": \"<string>\",\n \"createdTimestamp\": \"2023-11-07T05:31:56Z\",\n \"mfaEnabled\": true,\n \"mfaMethods\": [],\n \"roleDescription\": \"<string>\",\n \"updatedTimestamp\": \"2023-11-07T05:31:56Z\",\n \"deactivatedTimestamp\": \"2023-11-07T05:31:56Z\",\n \"lastLoginTimestamp\": \"2023-11-07T05:31:56Z\",\n \"lastPasswordResetTimestamp\": \"2023-11-07T05:31:56Z\",\n \"groupIds\": [\n \"<string>\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Body
List of resources to sync
Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/<app_id>?tab=resources
Show child attributes
Show child attributes
Response
The current resources synced.
Related topics
Sync all user security training statusesSync all Windows User ComputersSync all MacOS User ComputersList all user accountsSync all secretsWas this page helpful?
curl --request PUT \
--url https://api.vanta.com/v1/resources/user_account \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resourceId": "<string>",
"resources": [
{
"displayName": "<string>",
"uniqueId": "<string>",
"externalUrl": "<string>",
"fullName": "<string>",
"accountName": "<string>",
"email": "<string>",
"createdTimestamp": "2023-11-07T05:31:56Z",
"mfaEnabled": true,
"mfaMethods": [],
"roleDescription": "<string>",
"updatedTimestamp": "2023-11-07T05:31:56Z",
"deactivatedTimestamp": "2023-11-07T05:31:56Z",
"lastLoginTimestamp": "2023-11-07T05:31:56Z",
"lastPasswordResetTimestamp": "2023-11-07T05:31:56Z",
"groupIds": [
"<string>"
]
}
]
}
'import requests
url = "https://api.vanta.com/v1/resources/user_account"
payload = {
"resourceId": "<string>",
"resources": [
{
"displayName": "<string>",
"uniqueId": "<string>",
"externalUrl": "<string>",
"fullName": "<string>",
"accountName": "<string>",
"email": "<string>",
"createdTimestamp": "2023-11-07T05:31:56Z",
"mfaEnabled": True,
"mfaMethods": [],
"roleDescription": "<string>",
"updatedTimestamp": "2023-11-07T05:31:56Z",
"deactivatedTimestamp": "2023-11-07T05:31:56Z",
"lastLoginTimestamp": "2023-11-07T05:31:56Z",
"lastPasswordResetTimestamp": "2023-11-07T05:31:56Z",
"groupIds": ["<string>"]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
resourceId: '<string>',
resources: [
{
displayName: '<string>',
uniqueId: '<string>',
externalUrl: '<string>',
fullName: '<string>',
accountName: '<string>',
email: '<string>',
createdTimestamp: '2023-11-07T05:31:56Z',
mfaEnabled: true,
mfaMethods: [],
roleDescription: '<string>',
updatedTimestamp: '2023-11-07T05:31:56Z',
deactivatedTimestamp: '2023-11-07T05:31:56Z',
lastLoginTimestamp: '2023-11-07T05:31:56Z',
lastPasswordResetTimestamp: '2023-11-07T05:31:56Z',
groupIds: ['<string>']
}
]
})
};
fetch('https://api.vanta.com/v1/resources/user_account', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.vanta.com/v1/resources/user_account",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'resourceId' => '<string>',
'resources' => [
[
'displayName' => '<string>',
'uniqueId' => '<string>',
'externalUrl' => '<string>',
'fullName' => '<string>',
'accountName' => '<string>',
'email' => '<string>',
'createdTimestamp' => '2023-11-07T05:31:56Z',
'mfaEnabled' => true,
'mfaMethods' => [
],
'roleDescription' => '<string>',
'updatedTimestamp' => '2023-11-07T05:31:56Z',
'deactivatedTimestamp' => '2023-11-07T05:31:56Z',
'lastLoginTimestamp' => '2023-11-07T05:31:56Z',
'lastPasswordResetTimestamp' => '2023-11-07T05:31:56Z',
'groupIds' => [
'<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vanta.com/v1/resources/user_account"
payload := strings.NewReader("{\n \"resourceId\": \"<string>\",\n \"resources\": [\n {\n \"displayName\": \"<string>\",\n \"uniqueId\": \"<string>\",\n \"externalUrl\": \"<string>\",\n \"fullName\": \"<string>\",\n \"accountName\": \"<string>\",\n \"email\": \"<string>\",\n \"createdTimestamp\": \"2023-11-07T05:31:56Z\",\n \"mfaEnabled\": true,\n \"mfaMethods\": [],\n \"roleDescription\": \"<string>\",\n \"updatedTimestamp\": \"2023-11-07T05:31:56Z\",\n \"deactivatedTimestamp\": \"2023-11-07T05:31:56Z\",\n \"lastLoginTimestamp\": \"2023-11-07T05:31:56Z\",\n \"lastPasswordResetTimestamp\": \"2023-11-07T05:31:56Z\",\n \"groupIds\": [\n \"<string>\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.vanta.com/v1/resources/user_account")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resourceId\": \"<string>\",\n \"resources\": [\n {\n \"displayName\": \"<string>\",\n \"uniqueId\": \"<string>\",\n \"externalUrl\": \"<string>\",\n \"fullName\": \"<string>\",\n \"accountName\": \"<string>\",\n \"email\": \"<string>\",\n \"createdTimestamp\": \"2023-11-07T05:31:56Z\",\n \"mfaEnabled\": true,\n \"mfaMethods\": [],\n \"roleDescription\": \"<string>\",\n \"updatedTimestamp\": \"2023-11-07T05:31:56Z\",\n \"deactivatedTimestamp\": \"2023-11-07T05:31:56Z\",\n \"lastLoginTimestamp\": \"2023-11-07T05:31:56Z\",\n \"lastPasswordResetTimestamp\": \"2023-11-07T05:31:56Z\",\n \"groupIds\": [\n \"<string>\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vanta.com/v1/resources/user_account")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resourceId\": \"<string>\",\n \"resources\": [\n {\n \"displayName\": \"<string>\",\n \"uniqueId\": \"<string>\",\n \"externalUrl\": \"<string>\",\n \"fullName\": \"<string>\",\n \"accountName\": \"<string>\",\n \"email\": \"<string>\",\n \"createdTimestamp\": \"2023-11-07T05:31:56Z\",\n \"mfaEnabled\": true,\n \"mfaMethods\": [],\n \"roleDescription\": \"<string>\",\n \"updatedTimestamp\": \"2023-11-07T05:31:56Z\",\n \"deactivatedTimestamp\": \"2023-11-07T05:31:56Z\",\n \"lastLoginTimestamp\": \"2023-11-07T05:31:56Z\",\n \"lastPasswordResetTimestamp\": \"2023-11-07T05:31:56Z\",\n \"groupIds\": [\n \"<string>\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true
}