curl --request POST \
--url https://api.opal.dev/v1/configuration-templates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"visibility": "private",
"linked_audit_message_channel_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"request_configuration_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"member_oncall_schedule_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"break_glass_user_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"require_mfa_to_approve": false,
"require_mfa_to_connect": false,
"name": "Prod AWS Template"
}
'import requests
url = "https://api.opal.dev/v1/configuration-templates"
payload = {
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"visibility": "private",
"linked_audit_message_channel_ids": ["37cb7e41-12ba-46da-92ff-030abe0450b1", "37cb7e41-12ba-46da-92ff-030abe0450b2"],
"request_configuration_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"member_oncall_schedule_ids": ["37cb7e41-12ba-46da-92ff-030abe0450b1", "37cb7e41-12ba-46da-92ff-030abe0450b2"],
"break_glass_user_ids": ["37cb7e41-12ba-46da-92ff-030abe0450b1", "37cb7e41-12ba-46da-92ff-030abe0450b2"],
"require_mfa_to_approve": False,
"require_mfa_to_connect": False,
"name": "Prod AWS Template"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
admin_owner_id: '7c86c85d-0651-43e2-a748-d69d658418e8',
visibility: 'private',
linked_audit_message_channel_ids: ['37cb7e41-12ba-46da-92ff-030abe0450b1', '37cb7e41-12ba-46da-92ff-030abe0450b2'],
request_configuration_id: '7c86c85d-0651-43e2-a748-d69d658418e8',
member_oncall_schedule_ids: ['37cb7e41-12ba-46da-92ff-030abe0450b1', '37cb7e41-12ba-46da-92ff-030abe0450b2'],
break_glass_user_ids: ['37cb7e41-12ba-46da-92ff-030abe0450b1', '37cb7e41-12ba-46da-92ff-030abe0450b2'],
require_mfa_to_approve: false,
require_mfa_to_connect: false,
name: 'Prod AWS Template'
})
};
fetch('https://api.opal.dev/v1/configuration-templates', 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/configuration-templates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'admin_owner_id' => '7c86c85d-0651-43e2-a748-d69d658418e8',
'visibility' => 'private',
'linked_audit_message_channel_ids' => [
'37cb7e41-12ba-46da-92ff-030abe0450b1',
'37cb7e41-12ba-46da-92ff-030abe0450b2'
],
'request_configuration_id' => '7c86c85d-0651-43e2-a748-d69d658418e8',
'member_oncall_schedule_ids' => [
'37cb7e41-12ba-46da-92ff-030abe0450b1',
'37cb7e41-12ba-46da-92ff-030abe0450b2'
],
'break_glass_user_ids' => [
'37cb7e41-12ba-46da-92ff-030abe0450b1',
'37cb7e41-12ba-46da-92ff-030abe0450b2'
],
'require_mfa_to_approve' => false,
'require_mfa_to_connect' => false,
'name' => 'Prod AWS Template'
]),
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/configuration-templates"
payload := strings.NewReader("{\n \"admin_owner_id\": \"7c86c85d-0651-43e2-a748-d69d658418e8\",\n \"visibility\": \"private\",\n \"linked_audit_message_channel_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"request_configuration_id\": \"7c86c85d-0651-43e2-a748-d69d658418e8\",\n \"member_oncall_schedule_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"break_glass_user_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"require_mfa_to_approve\": false,\n \"require_mfa_to_connect\": false,\n \"name\": \"Prod AWS Template\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.opal.dev/v1/configuration-templates")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"admin_owner_id\": \"7c86c85d-0651-43e2-a748-d69d658418e8\",\n \"visibility\": \"private\",\n \"linked_audit_message_channel_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"request_configuration_id\": \"7c86c85d-0651-43e2-a748-d69d658418e8\",\n \"member_oncall_schedule_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"break_glass_user_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"require_mfa_to_approve\": false,\n \"require_mfa_to_connect\": false,\n \"name\": \"Prod AWS Template\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.opal.dev/v1/configuration-templates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"admin_owner_id\": \"7c86c85d-0651-43e2-a748-d69d658418e8\",\n \"visibility\": \"private\",\n \"linked_audit_message_channel_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"request_configuration_id\": \"7c86c85d-0651-43e2-a748-d69d658418e8\",\n \"member_oncall_schedule_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"break_glass_user_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"require_mfa_to_approve\": false,\n \"require_mfa_to_connect\": false,\n \"name\": \"Prod AWS Template\"\n}"
response = http.request(request)
puts response.read_body{
"configuration_template_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"visibility": "private",
"linked_audit_message_channel_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"request_configuration_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"member_oncall_schedule_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"break_glass_user_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"require_mfa_to_approve": false,
"require_mfa_to_connect": false,
"name": "Prod AWS Template"
}Post configuration templates
Creates a configuration template.
curl --request POST \
--url https://api.opal.dev/v1/configuration-templates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"visibility": "private",
"linked_audit_message_channel_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"request_configuration_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"member_oncall_schedule_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"break_glass_user_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"require_mfa_to_approve": false,
"require_mfa_to_connect": false,
"name": "Prod AWS Template"
}
'import requests
url = "https://api.opal.dev/v1/configuration-templates"
payload = {
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"visibility": "private",
"linked_audit_message_channel_ids": ["37cb7e41-12ba-46da-92ff-030abe0450b1", "37cb7e41-12ba-46da-92ff-030abe0450b2"],
"request_configuration_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"member_oncall_schedule_ids": ["37cb7e41-12ba-46da-92ff-030abe0450b1", "37cb7e41-12ba-46da-92ff-030abe0450b2"],
"break_glass_user_ids": ["37cb7e41-12ba-46da-92ff-030abe0450b1", "37cb7e41-12ba-46da-92ff-030abe0450b2"],
"require_mfa_to_approve": False,
"require_mfa_to_connect": False,
"name": "Prod AWS Template"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
admin_owner_id: '7c86c85d-0651-43e2-a748-d69d658418e8',
visibility: 'private',
linked_audit_message_channel_ids: ['37cb7e41-12ba-46da-92ff-030abe0450b1', '37cb7e41-12ba-46da-92ff-030abe0450b2'],
request_configuration_id: '7c86c85d-0651-43e2-a748-d69d658418e8',
member_oncall_schedule_ids: ['37cb7e41-12ba-46da-92ff-030abe0450b1', '37cb7e41-12ba-46da-92ff-030abe0450b2'],
break_glass_user_ids: ['37cb7e41-12ba-46da-92ff-030abe0450b1', '37cb7e41-12ba-46da-92ff-030abe0450b2'],
require_mfa_to_approve: false,
require_mfa_to_connect: false,
name: 'Prod AWS Template'
})
};
fetch('https://api.opal.dev/v1/configuration-templates', 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/configuration-templates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'admin_owner_id' => '7c86c85d-0651-43e2-a748-d69d658418e8',
'visibility' => 'private',
'linked_audit_message_channel_ids' => [
'37cb7e41-12ba-46da-92ff-030abe0450b1',
'37cb7e41-12ba-46da-92ff-030abe0450b2'
],
'request_configuration_id' => '7c86c85d-0651-43e2-a748-d69d658418e8',
'member_oncall_schedule_ids' => [
'37cb7e41-12ba-46da-92ff-030abe0450b1',
'37cb7e41-12ba-46da-92ff-030abe0450b2'
],
'break_glass_user_ids' => [
'37cb7e41-12ba-46da-92ff-030abe0450b1',
'37cb7e41-12ba-46da-92ff-030abe0450b2'
],
'require_mfa_to_approve' => false,
'require_mfa_to_connect' => false,
'name' => 'Prod AWS Template'
]),
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/configuration-templates"
payload := strings.NewReader("{\n \"admin_owner_id\": \"7c86c85d-0651-43e2-a748-d69d658418e8\",\n \"visibility\": \"private\",\n \"linked_audit_message_channel_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"request_configuration_id\": \"7c86c85d-0651-43e2-a748-d69d658418e8\",\n \"member_oncall_schedule_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"break_glass_user_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"require_mfa_to_approve\": false,\n \"require_mfa_to_connect\": false,\n \"name\": \"Prod AWS Template\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.opal.dev/v1/configuration-templates")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"admin_owner_id\": \"7c86c85d-0651-43e2-a748-d69d658418e8\",\n \"visibility\": \"private\",\n \"linked_audit_message_channel_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"request_configuration_id\": \"7c86c85d-0651-43e2-a748-d69d658418e8\",\n \"member_oncall_schedule_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"break_glass_user_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"require_mfa_to_approve\": false,\n \"require_mfa_to_connect\": false,\n \"name\": \"Prod AWS Template\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.opal.dev/v1/configuration-templates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"admin_owner_id\": \"7c86c85d-0651-43e2-a748-d69d658418e8\",\n \"visibility\": \"private\",\n \"linked_audit_message_channel_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"request_configuration_id\": \"7c86c85d-0651-43e2-a748-d69d658418e8\",\n \"member_oncall_schedule_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"break_glass_user_ids\": [\n \"37cb7e41-12ba-46da-92ff-030abe0450b1\",\n \"37cb7e41-12ba-46da-92ff-030abe0450b2\"\n ],\n \"require_mfa_to_approve\": false,\n \"require_mfa_to_connect\": false,\n \"name\": \"Prod AWS Template\"\n}"
response = http.request(request)
puts response.read_body{
"configuration_template_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"admin_owner_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"visibility": "private",
"linked_audit_message_channel_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"request_configuration_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"member_oncall_schedule_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"break_glass_user_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"require_mfa_to_approve": false,
"require_mfa_to_connect": false,
"name": "Prod AWS Template"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
CreateConfigurationTemplateInfo Object
Description
The CreateConfigurationTemplateInfo object is used to store creation info for a configuration template.
Usage Example
Use in the POST Configuration Templates endpoint.
The ID of the owner of the configuration template.
"7c86c85d-0651-43e2-a748-d69d658418e8"
The visibility info of the configuration template.
Show child attributes
Show child attributes
"private"
A bool representing whether or not to require MFA for reviewers to approve requests for this configuration template.
false
A bool representing whether or not to require MFA to connect to resources associated with this configuration template.
false
The name of the configuration template.
"Prod AWS Template"
The IDs of the audit message channels linked to the configuration template.
[
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
]
The IDs of the on-call schedules linked to the configuration template.
[
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
]
The IDs of the break glass users linked to the configuration template.
[
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
]
The request configuration list of the configuration template. If not provided, the default request configuration will be used.
Show child attributes
Show child attributes
The request configuration list of the configuration template. If not provided, the default request configuration will be used. Deprecated in favor of request_configurations.
Show child attributes
Show child attributes
{
"request_configurations": [
{
"request_configuration_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"organization_id": "w86c85d-0651-43e2-a748-d69d658418e8",
"condition": null,
"allow_requests": true,
"auto_approval": false,
"require_mfa_to_request": false,
"max_duration_minutes": 120,
"recommended_duration_minutes": 120,
"require_support_ticket": false,
"reviewer_stages": [
{
"reviewer_stage_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"owner_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"stage": 1
}
],
"priority": 0
},
{
"request_configuration_id": "7c86c85d-0651-43e2-a748-d69d658418e9",
"organization_id": "w86c85d-0651-43e2-a748-d69d658418e8",
"condition": {
"group_id": "1b978423-db0a-4037-a4cf-f79c60cb67b4"
},
"allow_requests": true,
"auto_approval": false,
"require_mfa_to_request": false,
"max_duration_minutes": 120,
"recommended_duration_minutes": 120,
"require_support_ticket": false,
"reviewer_stages": [
{
"reviewer_stage_id": "7c86c85d-0651-43e2-a748-d69d658418e8",
"owner_ids": [
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
],
"stage": 1
}
],
"priority": 1
}
]
}
Configuration for ticket propagation, when enabled, a ticket will be created for access changes related to the users in this resource.
Show child attributes
Show child attributes
Custom request notification sent upon request approval for this configuration template.
800"Check your email to register your account."
Response
The configuration template just created.
Configuration Template Object
Description
The ConfigurationTemplate object is used to represent a configuration template.
Usage Example
Returned from the GET Configuration Templates endpoint.
The ID of the configuration template.
"7c86c85d-0651-43e2-a748-d69d658418e8"
The name of the configuration template.
"Prod AWS Template"
The ID of the owner of the configuration template.
"7c86c85d-0651-43e2-a748-d69d658418e8"
The visibility info of the configuration template.
Show child attributes
Show child attributes
"private"
The IDs of the audit message channels linked to the configuration template.
[
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
]
The ID of the request configuration linked to the configuration template.
"7c86c85d-0651-43e2-a748-d69d658418e8"
The IDs of the on-call schedules linked to the configuration template.
[
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"7c86c85d-0651-43e2-a748-d69d658418e8"
]
The IDs of the break glass users linked to the configuration template.
[
"37cb7e41-12ba-46da-92ff-030abe0450b1",
"37cb7e41-12ba-46da-92ff-030abe0450b2"
]
A bool representing whether or not to require MFA for reviewers to approve requests for this configuration template.
false
A bool representing whether or not to require MFA to connect to resources associated with this configuration template.
false
Configuration for ticket propagation, when enabled, a ticket will be created for access changes related to the users in this resource.
Show child attributes
Show child attributes
Custom request notification sent upon request approval for this configuration template.
800"Check your email to register your account."
Was this page helpful?