curl --request POST \
--url https://api.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Deployment_Viewer",
"permissions": [
"deployment.get"
],
"scopeType": "DEPLOYMENT",
"description": "Subject can only view deployments.",
"restrictedWorkspaceIds": [
"cldbvzoi20182g8odxt8ehi5i"
]
}
'import requests
url = "https://api.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles"
payload = {
"name": "Deployment_Viewer",
"permissions": ["deployment.get"],
"scopeType": "DEPLOYMENT",
"description": "Subject can only view deployments.",
"restrictedWorkspaceIds": ["cldbvzoi20182g8odxt8ehi5i"]
}
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({
name: 'Deployment_Viewer',
permissions: ['deployment.get'],
scopeType: 'DEPLOYMENT',
description: 'Subject can only view deployments.',
restrictedWorkspaceIds: ['cldbvzoi20182g8odxt8ehi5i']
})
};
fetch('https://api.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles', 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.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles",
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([
'name' => 'Deployment_Viewer',
'permissions' => [
'deployment.get'
],
'scopeType' => 'DEPLOYMENT',
'description' => 'Subject can only view deployments.',
'restrictedWorkspaceIds' => [
'cldbvzoi20182g8odxt8ehi5i'
]
]),
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.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles"
payload := strings.NewReader("{\n \"name\": \"Deployment_Viewer\",\n \"permissions\": [\n \"deployment.get\"\n ],\n \"scopeType\": \"DEPLOYMENT\",\n \"description\": \"Subject can only view deployments.\",\n \"restrictedWorkspaceIds\": [\n \"cldbvzoi20182g8odxt8ehi5i\"\n ]\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.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Deployment_Viewer\",\n \"permissions\": [\n \"deployment.get\"\n ],\n \"scopeType\": \"DEPLOYMENT\",\n \"description\": \"Subject can only view deployments.\",\n \"restrictedWorkspaceIds\": [\n \"cldbvzoi20182g8odxt8ehi5i\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles")
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 \"name\": \"Deployment_Viewer\",\n \"permissions\": [\n \"deployment.get\"\n ],\n \"scopeType\": \"DEPLOYMENT\",\n \"description\": \"Subject can only view deployments.\",\n \"restrictedWorkspaceIds\": [\n \"cldbvzoi20182g8odxt8ehi5i\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2022-11-22T04:37:12Z",
"createdBy": {
"id": "clm8qv74h000008mlf08scq7k",
"apiTokenName": "my-token",
"avatarUrl": "https://avatar.url",
"fullName": "Jane Doe",
"subjectType": "USER",
"username": "user1@company.com"
},
"id": "cluc9tapx000901qn2xrgqdmn",
"name": "Deployment_Viewer",
"permissions": [
"deployment.get"
],
"restrictedWorkspaceIds": [
"cldbvzoi20182g8odxt8ehi5i"
],
"scopeType": "DEPLOYMENT",
"updatedAt": "2022-11-22T04:37:12Z",
"updatedBy": {
"id": "clm8qv74h000008mlf08scq7k",
"apiTokenName": "my-token",
"avatarUrl": "https://avatar.url",
"fullName": "Jane Doe",
"subjectType": "USER",
"username": "user1@company.com"
},
"description": "Subject can only view deployments."
}{
"message": "<string>",
"requestId": "<string>",
"statusCode": 500
}{
"message": "<string>",
"requestId": "<string>",
"statusCode": 500
}{
"message": "<string>",
"requestId": "<string>",
"statusCode": 500
}{
"message": "<string>",
"requestId": "<string>",
"statusCode": 500
}{
"message": "<string>",
"requestId": "<string>",
"statusCode": 500
}Create a custom role
Create a custom role that you can assign to users, Teams, and API tokens.
curl --request POST \
--url https://api.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Deployment_Viewer",
"permissions": [
"deployment.get"
],
"scopeType": "DEPLOYMENT",
"description": "Subject can only view deployments.",
"restrictedWorkspaceIds": [
"cldbvzoi20182g8odxt8ehi5i"
]
}
'import requests
url = "https://api.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles"
payload = {
"name": "Deployment_Viewer",
"permissions": ["deployment.get"],
"scopeType": "DEPLOYMENT",
"description": "Subject can only view deployments.",
"restrictedWorkspaceIds": ["cldbvzoi20182g8odxt8ehi5i"]
}
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({
name: 'Deployment_Viewer',
permissions: ['deployment.get'],
scopeType: 'DEPLOYMENT',
description: 'Subject can only view deployments.',
restrictedWorkspaceIds: ['cldbvzoi20182g8odxt8ehi5i']
})
};
fetch('https://api.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles', 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.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles",
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([
'name' => 'Deployment_Viewer',
'permissions' => [
'deployment.get'
],
'scopeType' => 'DEPLOYMENT',
'description' => 'Subject can only view deployments.',
'restrictedWorkspaceIds' => [
'cldbvzoi20182g8odxt8ehi5i'
]
]),
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.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles"
payload := strings.NewReader("{\n \"name\": \"Deployment_Viewer\",\n \"permissions\": [\n \"deployment.get\"\n ],\n \"scopeType\": \"DEPLOYMENT\",\n \"description\": \"Subject can only view deployments.\",\n \"restrictedWorkspaceIds\": [\n \"cldbvzoi20182g8odxt8ehi5i\"\n ]\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.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Deployment_Viewer\",\n \"permissions\": [\n \"deployment.get\"\n ],\n \"scopeType\": \"DEPLOYMENT\",\n \"description\": \"Subject can only view deployments.\",\n \"restrictedWorkspaceIds\": [\n \"cldbvzoi20182g8odxt8ehi5i\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.astronomer.io/iam/v1beta1/organizations/{organizationId}/roles")
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 \"name\": \"Deployment_Viewer\",\n \"permissions\": [\n \"deployment.get\"\n ],\n \"scopeType\": \"DEPLOYMENT\",\n \"description\": \"Subject can only view deployments.\",\n \"restrictedWorkspaceIds\": [\n \"cldbvzoi20182g8odxt8ehi5i\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2022-11-22T04:37:12Z",
"createdBy": {
"id": "clm8qv74h000008mlf08scq7k",
"apiTokenName": "my-token",
"avatarUrl": "https://avatar.url",
"fullName": "Jane Doe",
"subjectType": "USER",
"username": "user1@company.com"
},
"id": "cluc9tapx000901qn2xrgqdmn",
"name": "Deployment_Viewer",
"permissions": [
"deployment.get"
],
"restrictedWorkspaceIds": [
"cldbvzoi20182g8odxt8ehi5i"
],
"scopeType": "DEPLOYMENT",
"updatedAt": "2022-11-22T04:37:12Z",
"updatedBy": {
"id": "clm8qv74h000008mlf08scq7k",
"apiTokenName": "my-token",
"avatarUrl": "https://avatar.url",
"fullName": "Jane Doe",
"subjectType": "USER",
"username": "user1@company.com"
},
"description": "Subject can only view deployments."
}{
"message": "<string>",
"requestId": "<string>",
"statusCode": 500
}{
"message": "<string>",
"requestId": "<string>",
"statusCode": 500
}{
"message": "<string>",
"requestId": "<string>",
"statusCode": 500
}{
"message": "<string>",
"requestId": "<string>",
"statusCode": 500
}{
"message": "<string>",
"requestId": "<string>",
"statusCode": 500
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The ID of the Organization where you want to create the custom role.
Body
The request body for creating the custom role.
The role's name.
"Deployment_Viewer"
The permissions included in the role.
1["deployment.get"]
The scope of the role.
DEPLOYMENT, DAG "DEPLOYMENT"
The role's description.
"Subject can only view deployments."
The IDs of the Workspaces that the role is restricted to.
["cldbvzoi20182g8odxt8ehi5i"]
Response
OK
The time the role was created.
"2022-11-22T04:37:12Z"
Show child attributes
Show child attributes
The role's ID.
"cluc9tapx000901qn2xrgqdmn"
The role's name.
"Deployment_Viewer"
The role's permissions.
["deployment.get"]
The IDs of Workspaces that the role is restricted to.
["cldbvzoi20182g8odxt8ehi5i"]
The role's scope.
DEPLOYMENT, WORKSPACE, ORGANIZATION "DEPLOYMENT"
The time the role was last updated.
"2022-11-22T04:37:12Z"
Show child attributes
Show child attributes
The role's description.
"Subject can only view deployments."
Was this page helpful?