curl --request PUT \
--url https://api.opal.dev/v1/apps/{app_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"admin_owner_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"visibility": "GLOBAL",
"visibility_group_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"import_visibility": "GLOBAL",
"custom_connector": {
"identifier": "<string>",
"base_url": "<string>",
"signing_secret": "<string>",
"tls_mode": true,
"tls_ca_cert_content": "<string>",
"supports_groups": true,
"supports_nested_resources": true,
"supports_nested_groups": true,
"supports_event_ingestion": true
}
}
'import requests
url = "https://api.opal.dev/v1/apps/{app_id}"
payload = {
"name": "<string>",
"description": "<string>",
"admin_owner_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"visibility": "GLOBAL",
"visibility_group_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"import_visibility": "GLOBAL",
"custom_connector": {
"identifier": "<string>",
"base_url": "<string>",
"signing_secret": "<string>",
"tls_mode": True,
"tls_ca_cert_content": "<string>",
"supports_groups": True,
"supports_nested_resources": True,
"supports_nested_groups": True,
"supports_event_ingestion": True
}
}
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({
name: '<string>',
description: '<string>',
admin_owner_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
visibility: 'GLOBAL',
visibility_group_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
import_visibility: 'GLOBAL',
custom_connector: {
identifier: '<string>',
base_url: '<string>',
signing_secret: '<string>',
tls_mode: true,
tls_ca_cert_content: '<string>',
supports_groups: true,
supports_nested_resources: true,
supports_nested_groups: true,
supports_event_ingestion: true
}
})
};
fetch('https://api.opal.dev/v1/apps/{app_id}', 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}",
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([
'name' => '<string>',
'description' => '<string>',
'admin_owner_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'visibility' => 'GLOBAL',
'visibility_group_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'import_visibility' => 'GLOBAL',
'custom_connector' => [
'identifier' => '<string>',
'base_url' => '<string>',
'signing_secret' => '<string>',
'tls_mode' => true,
'tls_ca_cert_content' => '<string>',
'supports_groups' => true,
'supports_nested_resources' => true,
'supports_nested_groups' => true,
'supports_event_ingestion' => true
]
]),
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}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"admin_owner_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"visibility\": \"GLOBAL\",\n \"visibility_group_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"import_visibility\": \"GLOBAL\",\n \"custom_connector\": {\n \"identifier\": \"<string>\",\n \"base_url\": \"<string>\",\n \"signing_secret\": \"<string>\",\n \"tls_mode\": true,\n \"tls_ca_cert_content\": \"<string>\",\n \"supports_groups\": true,\n \"supports_nested_resources\": true,\n \"supports_nested_groups\": true,\n \"supports_event_ingestion\": true\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/apps/{app_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"admin_owner_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"visibility\": \"GLOBAL\",\n \"visibility_group_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"import_visibility\": \"GLOBAL\",\n \"custom_connector\": {\n \"identifier\": \"<string>\",\n \"base_url\": \"<string>\",\n \"signing_secret\": \"<string>\",\n \"tls_mode\": true,\n \"tls_ca_cert_content\": \"<string>\",\n \"supports_groups\": true,\n \"supports_nested_resources\": true,\n \"supports_nested_groups\": true,\n \"supports_event_ingestion\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.opal.dev/v1/apps/{app_id}")
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 \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"admin_owner_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"visibility\": \"GLOBAL\",\n \"visibility_group_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"import_visibility\": \"GLOBAL\",\n \"custom_connector\": {\n \"identifier\": \"<string>\",\n \"base_url\": \"<string>\",\n \"signing_secret\": \"<string>\",\n \"tls_mode\": true,\n \"tls_ca_cert_content\": \"<string>\",\n \"supports_groups\": true,\n \"supports_nested_resources\": true,\n \"supports_nested_groups\": true,\n \"supports_event_ingestion\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"app_id": "f454d283-ca87-4a8a-bdbb-df212eca5353",
"name": "Okta Org",
"description": "Okta directory for the engineering team.",
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"app_type": "OKTA_DIRECTORY"
}Update app
Updates an App. Currently supports only Push-only apps (CUSTOM) and
Custom Connector apps (CUSTOM_CONNECTOR).
curl --request PUT \
--url https://api.opal.dev/v1/apps/{app_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"admin_owner_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"visibility": "GLOBAL",
"visibility_group_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"import_visibility": "GLOBAL",
"custom_connector": {
"identifier": "<string>",
"base_url": "<string>",
"signing_secret": "<string>",
"tls_mode": true,
"tls_ca_cert_content": "<string>",
"supports_groups": true,
"supports_nested_resources": true,
"supports_nested_groups": true,
"supports_event_ingestion": true
}
}
'import requests
url = "https://api.opal.dev/v1/apps/{app_id}"
payload = {
"name": "<string>",
"description": "<string>",
"admin_owner_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"visibility": "GLOBAL",
"visibility_group_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"import_visibility": "GLOBAL",
"custom_connector": {
"identifier": "<string>",
"base_url": "<string>",
"signing_secret": "<string>",
"tls_mode": True,
"tls_ca_cert_content": "<string>",
"supports_groups": True,
"supports_nested_resources": True,
"supports_nested_groups": True,
"supports_event_ingestion": True
}
}
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({
name: '<string>',
description: '<string>',
admin_owner_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
visibility: 'GLOBAL',
visibility_group_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
import_visibility: 'GLOBAL',
custom_connector: {
identifier: '<string>',
base_url: '<string>',
signing_secret: '<string>',
tls_mode: true,
tls_ca_cert_content: '<string>',
supports_groups: true,
supports_nested_resources: true,
supports_nested_groups: true,
supports_event_ingestion: true
}
})
};
fetch('https://api.opal.dev/v1/apps/{app_id}', 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}",
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([
'name' => '<string>',
'description' => '<string>',
'admin_owner_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'visibility' => 'GLOBAL',
'visibility_group_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'import_visibility' => 'GLOBAL',
'custom_connector' => [
'identifier' => '<string>',
'base_url' => '<string>',
'signing_secret' => '<string>',
'tls_mode' => true,
'tls_ca_cert_content' => '<string>',
'supports_groups' => true,
'supports_nested_resources' => true,
'supports_nested_groups' => true,
'supports_event_ingestion' => true
]
]),
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}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"admin_owner_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"visibility\": \"GLOBAL\",\n \"visibility_group_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"import_visibility\": \"GLOBAL\",\n \"custom_connector\": {\n \"identifier\": \"<string>\",\n \"base_url\": \"<string>\",\n \"signing_secret\": \"<string>\",\n \"tls_mode\": true,\n \"tls_ca_cert_content\": \"<string>\",\n \"supports_groups\": true,\n \"supports_nested_resources\": true,\n \"supports_nested_groups\": true,\n \"supports_event_ingestion\": true\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/apps/{app_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"admin_owner_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"visibility\": \"GLOBAL\",\n \"visibility_group_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"import_visibility\": \"GLOBAL\",\n \"custom_connector\": {\n \"identifier\": \"<string>\",\n \"base_url\": \"<string>\",\n \"signing_secret\": \"<string>\",\n \"tls_mode\": true,\n \"tls_ca_cert_content\": \"<string>\",\n \"supports_groups\": true,\n \"supports_nested_resources\": true,\n \"supports_nested_groups\": true,\n \"supports_event_ingestion\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.opal.dev/v1/apps/{app_id}")
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 \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"admin_owner_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"visibility\": \"GLOBAL\",\n \"visibility_group_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"import_visibility\": \"GLOBAL\",\n \"custom_connector\": {\n \"identifier\": \"<string>\",\n \"base_url\": \"<string>\",\n \"signing_secret\": \"<string>\",\n \"tls_mode\": true,\n \"tls_ca_cert_content\": \"<string>\",\n \"supports_groups\": true,\n \"supports_nested_resources\": true,\n \"supports_nested_groups\": true,\n \"supports_event_ingestion\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"app_id": "f454d283-ca87-4a8a-bdbb-df212eca5353",
"name": "Okta Org",
"description": "Okta directory for the engineering team.",
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"app_type": "OKTA_DIRECTORY"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The ID of the app.
Body
Information needed to update an app. Currently supports only Push-only
apps (CUSTOM) and Custom Connector apps (CUSTOM_CONNECTOR).
The updated name of the app.
The updated description of the app.
The updated ID of the owner of the app.
The visibility level of the entity.
GLOBAL, LIMITED "GLOBAL"
The IDs of groups that can see this app when visibility is LIMITED.
The visibility level of the entity.
GLOBAL, LIMITED "GLOBAL"
Updates Custom Connector configuration. Only valid for
CUSTOM_CONNECTOR apps.
Show child attributes
Show child attributes
Response
The updated app.
App Object
Description
The App object is used to represent an app to an application.
Usage Example
List from the GET Apps endpoint.
The ID of the app.
"f454d283-ca87-4a8a-bdbb-df212eca5353"
The name of the app.
"Okta Org"
A description of the app.
"Okta directory for the engineering team."
The ID of the owner of the app.
"7c86c85d-0651-43e2-a748-d69d658418e8"
The type of an app.
ACTIVE_DIRECTORY, ANTHROPIC, AZURE_AD, AWS, AWS_SSO, CLICKHOUSE, COUPA, CURSOR, CUSTOM, CONFLUENCE, CUSTOM_CONNECTOR, DATABRICKS, DATASTAX_ASTRA, ALICLOUD, DEVIN, DOCUSIGN, DUO, GCP, GIT_HUB, GIT_LAB, GOOGLE_GROUPS, GOOGLE_WORKSPACE, GRAFANA, HUBSPOT, ILEVEL, INCIDENTIO, JIRA, LDAP, LINEAR, MARIADB, MONGO, MONGO_ATLAS, MYSQL, NETSUITE, DATADOG, OKTA_CIAM, OKTA_DIRECTORY, OPENAI_PLATFORM, OPAL, ORACLE_FUSION, PAGERDUTY, POSTGRES, ROOTLY, SALESFORCE, SNOWFLAKE, SLACK, TABLEAU, TAILSCALE, TELEPORT, TWINGATE, VAULT, WORKDAY, ZENDESK, ZOOM, RAMP, WRIKE, VERCEL, AXIOM "OKTA_DIRECTORY"
The visibility level of the entity.
GLOBAL, LIMITED "GLOBAL"
Validation checks of an apps' configuration and permissions.
Show child attributes
Show child attributes
Configuration for a Custom Connector app. Does not include the signing secret; secrets are write-only and never returned by the API.
Show child attributes
Show child attributes
Was this page helpful?