cURL
curl --request PUT \
--url https://api.opal.dev/v1/owners/{owner_id}/users \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"user_ids": [
"7870617d-e72a-47f5-a84c-693817ab4567",
"1520617d-e72a-47f5-a84c-693817ab48ad2"
]
}
'import requests
url = "https://api.opal.dev/v1/owners/{owner_id}/users"
payload = { "user_ids": ["7870617d-e72a-47f5-a84c-693817ab4567", "1520617d-e72a-47f5-a84c-693817ab48ad2"] }
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({
user_ids: [
'7870617d-e72a-47f5-a84c-693817ab4567',
'1520617d-e72a-47f5-a84c-693817ab48ad2'
]
})
};
fetch('https://api.opal.dev/v1/owners/{owner_id}/users', 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.opal.dev/v1/owners/{owner_id}/users",
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([
'user_ids' => [
'7870617d-e72a-47f5-a84c-693817ab4567',
'1520617d-e72a-47f5-a84c-693817ab48ad2'
]
]),
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.opal.dev/v1/owners/{owner_id}/users"
payload := strings.NewReader("{\n \"user_ids\": [\n \"7870617d-e72a-47f5-a84c-693817ab4567\",\n \"1520617d-e72a-47f5-a84c-693817ab48ad2\"\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.opal.dev/v1/owners/{owner_id}/users")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"user_ids\": [\n \"7870617d-e72a-47f5-a84c-693817ab4567\",\n \"1520617d-e72a-47f5-a84c-693817ab48ad2\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.opal.dev/v1/owners/{owner_id}/users")
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 \"user_ids\": [\n \"7870617d-e72a-47f5-a84c-693817ab4567\",\n \"1520617d-e72a-47f5-a84c-693817ab48ad2\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"users": [
{
"user_id": "29827fb8-f2dd-4e80-9576-28e31e9934ac",
"email": "john.doe@company.dev",
"full_name": "John Doe",
"first_name": "John",
"last_name": "Doe",
"position": "Engineer"
}
]
}Put owners users
Sets the list of users for this owner. If escalation is enabled, the order of this list is the escalation priority order of the users. If the owner has a source group, adding or removing users from this list won’t be possible.
PUT
/
owners
/
{owner_id}
/
users
cURL
curl --request PUT \
--url https://api.opal.dev/v1/owners/{owner_id}/users \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"user_ids": [
"7870617d-e72a-47f5-a84c-693817ab4567",
"1520617d-e72a-47f5-a84c-693817ab48ad2"
]
}
'import requests
url = "https://api.opal.dev/v1/owners/{owner_id}/users"
payload = { "user_ids": ["7870617d-e72a-47f5-a84c-693817ab4567", "1520617d-e72a-47f5-a84c-693817ab48ad2"] }
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({
user_ids: [
'7870617d-e72a-47f5-a84c-693817ab4567',
'1520617d-e72a-47f5-a84c-693817ab48ad2'
]
})
};
fetch('https://api.opal.dev/v1/owners/{owner_id}/users', 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.opal.dev/v1/owners/{owner_id}/users",
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([
'user_ids' => [
'7870617d-e72a-47f5-a84c-693817ab4567',
'1520617d-e72a-47f5-a84c-693817ab48ad2'
]
]),
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.opal.dev/v1/owners/{owner_id}/users"
payload := strings.NewReader("{\n \"user_ids\": [\n \"7870617d-e72a-47f5-a84c-693817ab4567\",\n \"1520617d-e72a-47f5-a84c-693817ab48ad2\"\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.opal.dev/v1/owners/{owner_id}/users")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"user_ids\": [\n \"7870617d-e72a-47f5-a84c-693817ab4567\",\n \"1520617d-e72a-47f5-a84c-693817ab48ad2\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.opal.dev/v1/owners/{owner_id}/users")
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 \"user_ids\": [\n \"7870617d-e72a-47f5-a84c-693817ab4567\",\n \"1520617d-e72a-47f5-a84c-693817ab48ad2\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"users": [
{
"user_id": "29827fb8-f2dd-4e80-9576-28e31e9934ac",
"email": "john.doe@company.dev",
"full_name": "John Doe",
"first_name": "John",
"last_name": "Doe",
"position": "Engineer"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The ID of the owner.
Body
application/json
A list of user IDs.
Response
200 - application/json
The updated users for the owner.
A list of users.
Show child attributes
Show child attributes
Last modified on October 1, 2026
Was this page helpful?