curl --request PATCH \
--url https://api.gcore.com/security/sifter/v3/protected_networks/{protected_network_id} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"comment": "Switching to backup GRE tunnel",
"gre_endpoint": "198.51.100.1"
}
'import requests
url = "https://api.gcore.com/security/sifter/v3/protected_networks/{protected_network_id}"
payload = {
"comment": "Switching to backup GRE tunnel",
"gre_endpoint": "198.51.100.1"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({comment: 'Switching to backup GRE tunnel', gre_endpoint: '198.51.100.1'})
};
fetch('https://api.gcore.com/security/sifter/v3/protected_networks/{protected_network_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/security/sifter/v3/protected_networks/{protected_network_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'comment' => 'Switching to backup GRE tunnel',
'gre_endpoint' => '198.51.100.1'
]),
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/security/sifter/v3/protected_networks/{protected_network_id}"
payload := strings.NewReader("{\n \"comment\": \"Switching to backup GRE tunnel\",\n \"gre_endpoint\": \"198.51.100.1\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.gcore.com/security/sifter/v3/protected_networks/{protected_network_id}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"comment\": \"Switching to backup GRE tunnel\",\n \"gre_endpoint\": \"198.51.100.1\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gcore.com/security/sifter/v3/protected_networks/{protected_network_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"comment\": \"Switching to backup GRE tunnel\",\n \"gre_endpoint\": \"198.51.100.1\"\n}"
response = http.request(request)
puts response.read_body{
"as_number": 65001,
"client_id": 150,
"comment": "Production network for web services",
"created_at": "2025-06-15T10:30:00Z",
"documents": [
{
"id": 501,
"name": "network_authorization.pdf"
},
{
"id": 502,
"name": "service_agreement.pdf"
}
],
"gre_endpoint": "203.0.113.10",
"id": 1024,
"is_active": true,
"is_error": false,
"is_processing": false,
"lifecycle_status": "APPROVED",
"modified_at": "2025-07-20T14:45:00Z",
"network": "198.51.100.0/24",
"profile": {
"id": 42,
"name": "Standard DDoS Protection"
},
"protection_status": "ACTIVE",
"status": "ENABLED"
}{}{}{}{}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Partially update protected network
Partially update protected network. Only provided fields are updated.
curl --request PATCH \
--url https://api.gcore.com/security/sifter/v3/protected_networks/{protected_network_id} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"comment": "Switching to backup GRE tunnel",
"gre_endpoint": "198.51.100.1"
}
'import requests
url = "https://api.gcore.com/security/sifter/v3/protected_networks/{protected_network_id}"
payload = {
"comment": "Switching to backup GRE tunnel",
"gre_endpoint": "198.51.100.1"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({comment: 'Switching to backup GRE tunnel', gre_endpoint: '198.51.100.1'})
};
fetch('https://api.gcore.com/security/sifter/v3/protected_networks/{protected_network_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/security/sifter/v3/protected_networks/{protected_network_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'comment' => 'Switching to backup GRE tunnel',
'gre_endpoint' => '198.51.100.1'
]),
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/security/sifter/v3/protected_networks/{protected_network_id}"
payload := strings.NewReader("{\n \"comment\": \"Switching to backup GRE tunnel\",\n \"gre_endpoint\": \"198.51.100.1\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.gcore.com/security/sifter/v3/protected_networks/{protected_network_id}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"comment\": \"Switching to backup GRE tunnel\",\n \"gre_endpoint\": \"198.51.100.1\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gcore.com/security/sifter/v3/protected_networks/{protected_network_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"comment\": \"Switching to backup GRE tunnel\",\n \"gre_endpoint\": \"198.51.100.1\"\n}"
response = http.request(request)
puts response.read_body{
"as_number": 65001,
"client_id": 150,
"comment": "Production network for web services",
"created_at": "2025-06-15T10:30:00Z",
"documents": [
{
"id": 501,
"name": "network_authorization.pdf"
},
{
"id": 502,
"name": "service_agreement.pdf"
}
],
"gre_endpoint": "203.0.113.10",
"id": 1024,
"is_active": true,
"is_error": false,
"is_processing": false,
"lifecycle_status": "APPROVED",
"modified_at": "2025-07-20T14:45:00Z",
"network": "198.51.100.0/24",
"profile": {
"id": 42,
"name": "Standard DDoS Protection"
},
"protection_status": "ACTIVE",
"status": "ENABLED"
}{}{}{}{}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}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
A positive integer ID
1 <= x <= 1000000000Body
Response
Successful Response
Identifier for the protected network
Identifier of the client owning this network
IP network address (IPv4 or IPv6)
Autonomous System number associated with the network
65000
GRE tunnel endpoint IP address
"172.16.31.10"
Current administrative status of the network
PENDING, ACTIVE, INACTIVE, NEED_INFO, PROCESSING, ERROR Current protection status of the network (ACTIVE, INACTIVE, NONE)
NONE, ACTIVE, INACTIVE, ACTIVATING, DEACTIVATING, UPDATING, ERROR Current lifecycle status of the network (PENDING, APPROVED, REJECTED)
PENDING, APPROVED, REJECTED, DELETED Optional comment or note about the network
List of associated documents
Show child attributes
Show child attributes
Timestamp when the network was created
Timestamp of the last modification
Associated protection profile
Show child attributes
Show child attributes
{
"id": 42,
"name": "Standard DDoS Protection"
}
Whether the network protection is currently active
Whether the network is currently being processed
Whether the network is in an error state
Was this page helpful?