curl --request POST \
--url https://api.gcore.com/cloud/v1/securitygroups/{project_id}/{region_id} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"security_group": {
"name": "my_security_group",
"description": "Some description",
"security_group_rules": [
{
"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"
}
],
"tags": {}
},
"instances": [
"00000000-0000-4000-8000-000000000000"
]
}
'import requests
url = "https://api.gcore.com/cloud/v1/securitygroups/{project_id}/{region_id}"
payload = {
"security_group": {
"name": "my_security_group",
"description": "Some description",
"security_group_rules": [
{
"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"
}
],
"tags": {}
},
"instances": ["00000000-0000-4000-8000-000000000000"]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
security_group: {
name: 'my_security_group',
description: 'Some description',
security_group_rules: [
{
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'
}
],
tags: {}
},
instances: ['00000000-0000-4000-8000-000000000000']
})
};
fetch('https://api.gcore.com/cloud/v1/securitygroups/{project_id}/{region_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.gcore.com/cloud/v1/securitygroups/{project_id}/{region_id}",
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([
'security_group' => [
'name' => 'my_security_group',
'description' => 'Some description',
'security_group_rules' => [
[
'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'
]
],
'tags' => [
]
],
'instances' => [
'00000000-0000-4000-8000-000000000000'
]
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gcore.com/cloud/v1/securitygroups/{project_id}/{region_id}"
payload := strings.NewReader("{\n \"security_group\": {\n \"name\": \"my_security_group\",\n \"description\": \"Some description\",\n \"security_group_rules\": [\n {\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 }\n ],\n \"tags\": {}\n },\n \"instances\": [\n \"00000000-0000-4000-8000-000000000000\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.gcore.com/cloud/v1/securitygroups/{project_id}/{region_id}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"security_group\": {\n \"name\": \"my_security_group\",\n \"description\": \"Some description\",\n \"security_group_rules\": [\n {\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 }\n ],\n \"tags\": {}\n },\n \"instances\": [\n \"00000000-0000-4000-8000-000000000000\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gcore.com/cloud/v1/securitygroups/{project_id}/{region_id}")
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 \"security_group\": {\n \"name\": \"my_security_group\",\n \"description\": \"Some description\",\n \"security_group_rules\": [\n {\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 }\n ],\n \"tags\": {}\n },\n \"instances\": [\n \"00000000-0000-4000-8000-000000000000\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"created_at": "2019-06-18T11:56:16+0000",
"description": "Some description",
"id": "00000000-0000-4000-8000-000000000000",
"name": "my_security_group",
"project_id": 1337,
"region": "Luxembourg 1",
"region_id": 7,
"revision_number": 1,
"tags_v2": [
{
"key": "my-tag",
"read_only": false,
"value": "my-tag-value"
}
],
"updated_at": "2019-06-18T11:57:00+0000",
"security_group_rules": [
{
"created_at": "2019-06-18T11:56:16+0000",
"description": "Some description",
"ethertype": "IPv4",
"id": "00000000-0000-4000-8000-000000000000",
"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",
"revision_number": 0,
"security_group_id": "00000000-0000-4000-8000-000000000000",
"updated_at": "2019-06-18T11:57:00+0000"
}
]
}Create security group
Deprecated Use /v2/security_groups/<project_id>/<region_id> instead.
curl --request POST \
--url https://api.gcore.com/cloud/v1/securitygroups/{project_id}/{region_id} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"security_group": {
"name": "my_security_group",
"description": "Some description",
"security_group_rules": [
{
"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"
}
],
"tags": {}
},
"instances": [
"00000000-0000-4000-8000-000000000000"
]
}
'import requests
url = "https://api.gcore.com/cloud/v1/securitygroups/{project_id}/{region_id}"
payload = {
"security_group": {
"name": "my_security_group",
"description": "Some description",
"security_group_rules": [
{
"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"
}
],
"tags": {}
},
"instances": ["00000000-0000-4000-8000-000000000000"]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
security_group: {
name: 'my_security_group',
description: 'Some description',
security_group_rules: [
{
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'
}
],
tags: {}
},
instances: ['00000000-0000-4000-8000-000000000000']
})
};
fetch('https://api.gcore.com/cloud/v1/securitygroups/{project_id}/{region_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.gcore.com/cloud/v1/securitygroups/{project_id}/{region_id}",
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([
'security_group' => [
'name' => 'my_security_group',
'description' => 'Some description',
'security_group_rules' => [
[
'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'
]
],
'tags' => [
]
],
'instances' => [
'00000000-0000-4000-8000-000000000000'
]
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gcore.com/cloud/v1/securitygroups/{project_id}/{region_id}"
payload := strings.NewReader("{\n \"security_group\": {\n \"name\": \"my_security_group\",\n \"description\": \"Some description\",\n \"security_group_rules\": [\n {\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 }\n ],\n \"tags\": {}\n },\n \"instances\": [\n \"00000000-0000-4000-8000-000000000000\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.gcore.com/cloud/v1/securitygroups/{project_id}/{region_id}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"security_group\": {\n \"name\": \"my_security_group\",\n \"description\": \"Some description\",\n \"security_group_rules\": [\n {\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 }\n ],\n \"tags\": {}\n },\n \"instances\": [\n \"00000000-0000-4000-8000-000000000000\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gcore.com/cloud/v1/securitygroups/{project_id}/{region_id}")
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 \"security_group\": {\n \"name\": \"my_security_group\",\n \"description\": \"Some description\",\n \"security_group_rules\": [\n {\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 }\n ],\n \"tags\": {}\n },\n \"instances\": [\n \"00000000-0000-4000-8000-000000000000\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"created_at": "2019-06-18T11:56:16+0000",
"description": "Some description",
"id": "00000000-0000-4000-8000-000000000000",
"name": "my_security_group",
"project_id": 1337,
"region": "Luxembourg 1",
"region_id": 7,
"revision_number": 1,
"tags_v2": [
{
"key": "my-tag",
"read_only": false,
"value": "my-tag-value"
}
],
"updated_at": "2019-06-18T11:57:00+0000",
"security_group_rules": [
{
"created_at": "2019-06-18T11:56:16+0000",
"description": "Some description",
"ethertype": "IPv4",
"id": "00000000-0000-4000-8000-000000000000",
"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",
"revision_number": 0,
"security_group_id": "00000000-0000-4000-8000-000000000000",
"updated_at": "2019-06-18T11:57:00+0000"
}
]
}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
Body
Response
OK
Datetime when the security group was created
"2019-06-18T11:56:16+0000"
Security group description
"Some description"
Security group ID
"00000000-0000-4000-8000-000000000000"
Security group name
^[a-zA-Z0-9][a-zA-Z 0-9._\-]{1,61}[a-zA-Z0-9._]$"my_security_group"
Project ID
1337
Region name
"Luxembourg 1"
Region ID
7
The number of revisions
1
List of key-value tags associated with the resource. A tag is a key-value pair that can be associated with a resource, enabling efficient filtering and grouping for better organization and management. Some tags are read-only and cannot be modified by the user. Tags are also integrated with cost reports, allowing cost data to be filtered based on tag keys or values.
Show child attributes
Show child attributes
[
{
"key": "my-tag",
"read_only": false,
"value": "my-tag-value"
}
]
Datetime when the security group was last updated
"2019-06-18T11:57:00+0000"
Security group rules
Show child attributes
Show child attributes
Was this page helpful?