curl --request PUT \
--url https://api.opal.dev/v1/apps/{app_id}/visibility \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"visibility": "LIMITED",
"visibility_group_ids": [
"7870617d-e72a-47f5-a84c-693817ab4567",
"1520617d-e72a-47f5-a84c-693817ab48ad"
],
"import_visibility": "LIMITED"
}
'import requests
url = "https://api.opal.dev/v1/apps/{app_id}/visibility"
payload = {
"visibility": "LIMITED",
"visibility_group_ids": ["7870617d-e72a-47f5-a84c-693817ab4567", "1520617d-e72a-47f5-a84c-693817ab48ad"],
"import_visibility": "LIMITED"
}
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({
visibility: 'LIMITED',
visibility_group_ids: ['7870617d-e72a-47f5-a84c-693817ab4567', '1520617d-e72a-47f5-a84c-693817ab48ad'],
import_visibility: 'LIMITED'
})
};
fetch('https://api.opal.dev/v1/apps/{app_id}/visibility', 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/apps/{app_id}/visibility",
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([
'visibility' => 'LIMITED',
'visibility_group_ids' => [
'7870617d-e72a-47f5-a84c-693817ab4567',
'1520617d-e72a-47f5-a84c-693817ab48ad'
],
'import_visibility' => 'LIMITED'
]),
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/apps/{app_id}/visibility"
payload := strings.NewReader("{\n \"visibility\": \"LIMITED\",\n \"visibility_group_ids\": [\n \"7870617d-e72a-47f5-a84c-693817ab4567\",\n \"1520617d-e72a-47f5-a84c-693817ab48ad\"\n ],\n \"import_visibility\": \"LIMITED\"\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/apps/{app_id}/visibility")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"visibility\": \"LIMITED\",\n \"visibility_group_ids\": [\n \"7870617d-e72a-47f5-a84c-693817ab4567\",\n \"1520617d-e72a-47f5-a84c-693817ab48ad\"\n ],\n \"import_visibility\": \"LIMITED\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.opal.dev/v1/apps/{app_id}/visibility")
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 \"visibility\": \"LIMITED\",\n \"visibility_group_ids\": [\n \"7870617d-e72a-47f5-a84c-693817ab4567\",\n \"1520617d-e72a-47f5-a84c-693817ab48ad\"\n ],\n \"import_visibility\": \"LIMITED\"\n}"
response = http.request(request)
puts response.read_body{
"visibility": "LIMITED",
"visibility_group_ids": [
"7870617d-e72a-47f5-a84c-693817ab4567",
"1520617d-e72a-47f5-a84c-693817ab48ad"
],
"import_visibility": "LIMITED"
}Set app visibility
Sets the visibility of this app. Preferred over setting
visibility / visibility_group_ids / import_visibility inline on
POST /apps or PATCH /apps/{app_id} for drift-sensitive callers
(Terraform, GitOps). Semantics are a replace, not a merge:
visibility_group_ids is written to exactly what the request sends
(an omitted or empty array clears all groups), and import_visibility
is updated only when present.
curl --request PUT \
--url https://api.opal.dev/v1/apps/{app_id}/visibility \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"visibility": "LIMITED",
"visibility_group_ids": [
"7870617d-e72a-47f5-a84c-693817ab4567",
"1520617d-e72a-47f5-a84c-693817ab48ad"
],
"import_visibility": "LIMITED"
}
'import requests
url = "https://api.opal.dev/v1/apps/{app_id}/visibility"
payload = {
"visibility": "LIMITED",
"visibility_group_ids": ["7870617d-e72a-47f5-a84c-693817ab4567", "1520617d-e72a-47f5-a84c-693817ab48ad"],
"import_visibility": "LIMITED"
}
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({
visibility: 'LIMITED',
visibility_group_ids: ['7870617d-e72a-47f5-a84c-693817ab4567', '1520617d-e72a-47f5-a84c-693817ab48ad'],
import_visibility: 'LIMITED'
})
};
fetch('https://api.opal.dev/v1/apps/{app_id}/visibility', 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/apps/{app_id}/visibility",
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([
'visibility' => 'LIMITED',
'visibility_group_ids' => [
'7870617d-e72a-47f5-a84c-693817ab4567',
'1520617d-e72a-47f5-a84c-693817ab48ad'
],
'import_visibility' => 'LIMITED'
]),
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/apps/{app_id}/visibility"
payload := strings.NewReader("{\n \"visibility\": \"LIMITED\",\n \"visibility_group_ids\": [\n \"7870617d-e72a-47f5-a84c-693817ab4567\",\n \"1520617d-e72a-47f5-a84c-693817ab48ad\"\n ],\n \"import_visibility\": \"LIMITED\"\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/apps/{app_id}/visibility")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"visibility\": \"LIMITED\",\n \"visibility_group_ids\": [\n \"7870617d-e72a-47f5-a84c-693817ab4567\",\n \"1520617d-e72a-47f5-a84c-693817ab48ad\"\n ],\n \"import_visibility\": \"LIMITED\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.opal.dev/v1/apps/{app_id}/visibility")
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 \"visibility\": \"LIMITED\",\n \"visibility_group_ids\": [\n \"7870617d-e72a-47f5-a84c-693817ab4567\",\n \"1520617d-e72a-47f5-a84c-693817ab48ad\"\n ],\n \"import_visibility\": \"LIMITED\"\n}"
response = http.request(request)
puts response.read_body{
"visibility": "LIMITED",
"visibility_group_ids": [
"7870617d-e72a-47f5-a84c-693817ab4567",
"1520617d-e72a-47f5-a84c-693817ab48ad"
],
"import_visibility": "LIMITED"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The ID of the app.
Body
Visibility information for an app. Mirrors VisibilityInfo but adds
the App-specific import_visibility, which governs the default
visibility of items imported from the app.
The visibility level of the entity.
GLOBAL, LIMITED "GLOBAL"
The IDs of groups that can see this app when visibility is LIMITED.
Must be empty when visibility is GLOBAL.
The visibility of items imported from this app. Defaults to
GLOBAL when omitted on a write.
GLOBAL, LIMITED "GLOBAL"
Response
The updated visibility info of this app.
Visibility information for an app. Mirrors VisibilityInfo but adds
the App-specific import_visibility, which governs the default
visibility of items imported from the app.
The visibility level of the entity.
GLOBAL, LIMITED "GLOBAL"
The IDs of groups that can see this app when visibility is LIMITED.
Must be empty when visibility is GLOBAL.
The visibility of items imported from this app. Defaults to
GLOBAL when omitted on a write.
GLOBAL, LIMITED "GLOBAL"
Was this page helpful?