import os
from gcore import Gcore
client = Gcore(
api_key=os.environ.get("GCORE_API_KEY"), # This is the default and can be omitted
)
task_id_list = client.cloud.security_groups.rules.create(
group_id="00000000-0000-4000-8000-000000000000",
project_id=1,
region_id=1,
direction="ingress",
)
print(task_id_list.tasks)package main
import (
"context"
"fmt"
"github.com/G-Core/gcore-go"
"github.com/G-Core/gcore-go/cloud"
"github.com/G-Core/gcore-go/option"
)
func main() {
client := gcore.NewClient(
option.WithAPIKey("My API Key"),
)
taskIDList, err := client.Cloud.SecurityGroups.Rules.New(
context.TODO(),
"00000000-0000-4000-8000-000000000000",
cloud.SecurityGroupRuleNewParams{
ProjectID: gcore.Int(1),
RegionID: gcore.Int(1),
Direction: cloud.SecurityGroupRuleNewParamsDirectionIngress,
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", taskIDList.Tasks)
}
curl --request POST \
--url https://api.gcore.com/cloud/v2/security_groups/{project_id}/{region_id}/{group_id}/rules \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"direction": "ingress",
"description": "Some description",
"ethertype": "IPv4",
"port_range_max": 80,
"port_range_min": 80,
"protocol": "tcp",
"remote_group_id": "00000000-0000-4000-8000-000000000000",
"remote_ip_prefix": "10.0.0.0/8"
}
'const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
direction: 'ingress',
description: 'Some description',
ethertype: 'IPv4',
port_range_max: 80,
port_range_min: 80,
protocol: 'tcp',
remote_group_id: '00000000-0000-4000-8000-000000000000',
remote_ip_prefix: '10.0.0.0/8'
})
};
fetch('https://api.gcore.com/cloud/v2/security_groups/{project_id}/{region_id}/{group_id}/rules', 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.gcore.com/cloud/v2/security_groups/{project_id}/{region_id}/{group_id}/rules",
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([
'direction' => 'ingress',
'description' => 'Some description',
'ethertype' => 'IPv4',
'port_range_max' => 80,
'port_range_min' => 80,
'protocol' => 'tcp',
'remote_group_id' => '00000000-0000-4000-8000-000000000000',
'remote_ip_prefix' => '10.0.0.0/8'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://api.gcore.com/cloud/v2/security_groups/{project_id}/{region_id}/{group_id}/rules")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"direction\": \"ingress\",\n \"description\": \"Some description\",\n \"ethertype\": \"IPv4\",\n \"port_range_max\": 80,\n \"port_range_min\": 80,\n \"protocol\": \"tcp\",\n \"remote_group_id\": \"00000000-0000-4000-8000-000000000000\",\n \"remote_ip_prefix\": \"10.0.0.0/8\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gcore.com/cloud/v2/security_groups/{project_id}/{region_id}/{group_id}/rules")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"direction\": \"ingress\",\n \"description\": \"Some description\",\n \"ethertype\": \"IPv4\",\n \"port_range_max\": 80,\n \"port_range_min\": 80,\n \"protocol\": \"tcp\",\n \"remote_group_id\": \"00000000-0000-4000-8000-000000000000\",\n \"remote_ip_prefix\": \"10.0.0.0/8\"\n}"
response = http.request(request)
puts response.read_body{
"tasks": [
"d478ae29-dedc-4869-82f0-96104425f565"
]
}Create security group rule
Add a new rule to an existing security group. Returns a task ID for tracking the asynchronous operation.
import os
from gcore import Gcore
client = Gcore(
api_key=os.environ.get("GCORE_API_KEY"), # This is the default and can be omitted
)
task_id_list = client.cloud.security_groups.rules.create(
group_id="00000000-0000-4000-8000-000000000000",
project_id=1,
region_id=1,
direction="ingress",
)
print(task_id_list.tasks)package main
import (
"context"
"fmt"
"github.com/G-Core/gcore-go"
"github.com/G-Core/gcore-go/cloud"
"github.com/G-Core/gcore-go/option"
)
func main() {
client := gcore.NewClient(
option.WithAPIKey("My API Key"),
)
taskIDList, err := client.Cloud.SecurityGroups.Rules.New(
context.TODO(),
"00000000-0000-4000-8000-000000000000",
cloud.SecurityGroupRuleNewParams{
ProjectID: gcore.Int(1),
RegionID: gcore.Int(1),
Direction: cloud.SecurityGroupRuleNewParamsDirectionIngress,
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", taskIDList.Tasks)
}
curl --request POST \
--url https://api.gcore.com/cloud/v2/security_groups/{project_id}/{region_id}/{group_id}/rules \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"direction": "ingress",
"description": "Some description",
"ethertype": "IPv4",
"port_range_max": 80,
"port_range_min": 80,
"protocol": "tcp",
"remote_group_id": "00000000-0000-4000-8000-000000000000",
"remote_ip_prefix": "10.0.0.0/8"
}
'const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
direction: 'ingress',
description: 'Some description',
ethertype: 'IPv4',
port_range_max: 80,
port_range_min: 80,
protocol: 'tcp',
remote_group_id: '00000000-0000-4000-8000-000000000000',
remote_ip_prefix: '10.0.0.0/8'
})
};
fetch('https://api.gcore.com/cloud/v2/security_groups/{project_id}/{region_id}/{group_id}/rules', 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.gcore.com/cloud/v2/security_groups/{project_id}/{region_id}/{group_id}/rules",
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([
'direction' => 'ingress',
'description' => 'Some description',
'ethertype' => 'IPv4',
'port_range_max' => 80,
'port_range_min' => 80,
'protocol' => 'tcp',
'remote_group_id' => '00000000-0000-4000-8000-000000000000',
'remote_ip_prefix' => '10.0.0.0/8'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://api.gcore.com/cloud/v2/security_groups/{project_id}/{region_id}/{group_id}/rules")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"direction\": \"ingress\",\n \"description\": \"Some description\",\n \"ethertype\": \"IPv4\",\n \"port_range_max\": 80,\n \"port_range_min\": 80,\n \"protocol\": \"tcp\",\n \"remote_group_id\": \"00000000-0000-4000-8000-000000000000\",\n \"remote_ip_prefix\": \"10.0.0.0/8\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gcore.com/cloud/v2/security_groups/{project_id}/{region_id}/{group_id}/rules")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"direction\": \"ingress\",\n \"description\": \"Some description\",\n \"ethertype\": \"IPv4\",\n \"port_range_max\": 80,\n \"port_range_min\": 80,\n \"protocol\": \"tcp\",\n \"remote_group_id\": \"00000000-0000-4000-8000-000000000000\",\n \"remote_ip_prefix\": \"10.0.0.0/8\"\n}"
response = http.request(request)
puts response.read_body{
"tasks": [
"d478ae29-dedc-4869-82f0-96104425f565"
]
}Authorizations
API key for authentication. Make sure to include the word apikey, followed by a single space and then your token.
Example: apikey 1234_abcdef
Path Parameters
Project ID
1
Region ID
1
Security group ID
"00000000-0000-4000-8000-000000000000"
Body
Ingress or egress, which is the direction in which the security group is applied
egress, ingress "ingress"
Rule description
255"Some description"
Ether type
IPv4, IPv6 "IPv4"
The maximum port number in the range that is matched by the security group rule
0 <= x <= 6553580
The minimum port number in the range that is matched by the security group rule
0 <= x <= 6553580
Protocol. Use null for all protocols.
ah, dccp, egp, esp, gre, icmp, igmp, ipencap, ipip, ipv6-encap, ipv6-frag, ipv6-icmp, ipv6-nonxt, ipv6-opts, ipv6-route, ospf, pgm, rsvp, sctp, tcp, udp, udplite, vrrp "tcp"
The remote group UUID to associate with this security group
"00000000-0000-4000-8000-000000000000"
The remote IP prefix that is matched by this security group rule
"10.0.0.0/8"
Response
OK
List of task IDs representing asynchronous operations. Use these IDs to monitor operation progress:
GET /v1/tasks/{task_id}- Check individual task status and details Poll task status until completion (FINISHED/ERROR) before proceeding with dependent operations.
["d478ae29-dedc-4869-82f0-96104425f565"]
Was this page helpful?