curl --request POST \
--url https://api.rafftechnologies.com/api/v1/databases/{database_id}/public-access \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"enabled": true,
"allowlist": [
"203.0.113.0/24"
]
}
'import requests
url = "https://api.rafftechnologies.com/api/v1/databases/{database_id}/public-access"
payload = {
"enabled": True,
"allowlist": ["203.0.113.0/24"]
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({enabled: true, allowlist: ['203.0.113.0/24']})
};
fetch('https://api.rafftechnologies.com/api/v1/databases/{database_id}/public-access', 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.rafftechnologies.com/api/v1/databases/{database_id}/public-access",
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([
'enabled' => true,
'allowlist' => [
'203.0.113.0/24'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.rafftechnologies.com/api/v1/databases/{database_id}/public-access"
payload := strings.NewReader("{\n \"enabled\": true,\n \"allowlist\": [\n \"203.0.113.0/24\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<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.rafftechnologies.com/api/v1/databases/{database_id}/public-access")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"enabled\": true,\n \"allowlist\": [\n \"203.0.113.0/24\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rafftechnologies.com/api/v1/databases/{database_id}/public-access")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"enabled\": true,\n \"allowlist\": [\n \"203.0.113.0/24\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"database": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"database_id": "<string>",
"project_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "orders-db",
"engine": "postgres",
"engine_version": "16",
"status": "pending",
"status_message": "<string>",
"region": "us-east",
"plan_id": 5,
"storage_gb": 25,
"ha_enabled": true,
"replica_count": 0,
"vpc_id": "<string>",
"public_access": true,
"connection_host": "a1b2c3d4.db.raffusercloud.com",
"connection_port": 6432,
"billing_type": "payg",
"subscription_id": "<string>",
"price_per_hour": 0.010945,
"monthly_price": 7.99,
"public_port": 25060,
"public_dns_hostname": "a1b2c3d4.public.db.raffusercloud.com",
"public_allowlist": [
"203.0.113.0/24"
],
"is_free": true,
"suspended_at": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Set public access
Open or close public access to the database.
When enabled, the database is reachable at {database_id}.public.db.raffusercloud.com on the port pair Raff assigns to it (public_port on the database object). For PostgreSQL, public_port is the pooled endpoint and public_port + 1 is the direct endpoint, each capped at the plan’s connection limit for that endpoint. TLS is always required.
PostgreSQL is also reachable on the standard ports of the same hostname: 6543 (pooled) and 5432 (direct). These route by the hostname your client sends during TLS, so use the hostname, not an IP address.
The ports stay assigned while public access is off, so enabling it again returns the same ports. They are released only when the database is deleted.
allowlist restricts which source CIDRs may connect. Omit it to keep the stored list; pass [] to allow all sources. Re-post enabled: true with a new allowlist to update the restriction in place.
curl --request POST \
--url https://api.rafftechnologies.com/api/v1/databases/{database_id}/public-access \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"enabled": true,
"allowlist": [
"203.0.113.0/24"
]
}
'import requests
url = "https://api.rafftechnologies.com/api/v1/databases/{database_id}/public-access"
payload = {
"enabled": True,
"allowlist": ["203.0.113.0/24"]
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({enabled: true, allowlist: ['203.0.113.0/24']})
};
fetch('https://api.rafftechnologies.com/api/v1/databases/{database_id}/public-access', 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.rafftechnologies.com/api/v1/databases/{database_id}/public-access",
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([
'enabled' => true,
'allowlist' => [
'203.0.113.0/24'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.rafftechnologies.com/api/v1/databases/{database_id}/public-access"
payload := strings.NewReader("{\n \"enabled\": true,\n \"allowlist\": [\n \"203.0.113.0/24\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<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.rafftechnologies.com/api/v1/databases/{database_id}/public-access")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"enabled\": true,\n \"allowlist\": [\n \"203.0.113.0/24\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rafftechnologies.com/api/v1/databases/{database_id}/public-access")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"enabled\": true,\n \"allowlist\": [\n \"203.0.113.0/24\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"database": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"database_id": "<string>",
"project_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "orders-db",
"engine": "postgres",
"engine_version": "16",
"status": "pending",
"status_message": "<string>",
"region": "us-east",
"plan_id": 5,
"storage_gb": 25,
"ha_enabled": true,
"replica_count": 0,
"vpc_id": "<string>",
"public_access": true,
"connection_host": "a1b2c3d4.db.raffusercloud.com",
"connection_port": 6432,
"billing_type": "payg",
"subscription_id": "<string>",
"price_per_hour": 0.010945,
"monthly_price": 7.99,
"public_port": 25060,
"public_dns_hostname": "a1b2c3d4.public.db.raffusercloud.com",
"public_allowlist": [
"203.0.113.0/24"
],
"is_free": true,
"suspended_at": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
API key for authentication. Each key is bound to a specific account.
Path Parameters
Database ID (UUID) or short id (the database_id field, e.g. a1b2c3d4)