مدیریت دیتابیس

مرجع کامل endpointهای بخش «مدیریت دیتابیس» در API کلاینت پافرلند.

Endpoints دیتابیس

ساخت و مدیریت دیتابیس‌های MySQL/MariaDB سرور. مجوزهای لازم: database.read، database.create، database.update و database.delete.

GET/api/client/servers/{server}/databases

تمام دیتابیس‌های سرور را برمی‌گرداند. هر آیتم server_database شامل id (شناسه‌ی تصادفی مثل YkxXVk6Whost (با address و portname، username، connections_from و max_connections (صفر یعنی نامحدود) است.

نکته: رمز عبور دیتابیس در این پاسخ موجود نیست.

curl "https://pufferland.ir/api/client/servers/1a85a183/databases" \
  -H "Authorization: Bearer ptlc_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Accept: application/json"
نمونه پاسخ واقعی:
{
  "object": "list",
  "data": []
}
POST/api/client/servers/{server}/databases

یک دیتابیس جدید می‌سازد (پاسخ 200). رمز تولیدشده در relationships.password.attributes.password پاسخ برگردانده می‌شود.

فیلدنوعالزامتوضیح
databasestringنام دیتابیس بدون پیشوند سرور.
remotestringالگوی دسترسی ریموت؛ % برای همه‌ی IPها یا یک IP مشخص.
curl -X POST "https://pufferland.ir/api/client/servers/1a85a183/databases" \
  -H "Authorization: Bearer ptlc_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"database": "mydb", "remote": "%"}'
await fetch('https://pufferland.ir/api/client/servers/1a85a183/databases', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ptlc_xxxxxxxxxxxxxxxxxxxxxxxx',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ database: 'mydb', remote: '%' }),
}).then(r => r.json()).then(console.log);
import requests

r = requests.post(
    "https://pufferland.ir/api/client/servers/1a85a183/databases",
    json={"database": "mydb", "remote": "%"},
    headers={"Authorization": "Bearer ptlc_xxxxxxxxxxxxxxxxxxxxxxxx"},
)
print(r.json())
curl_post('https://pufferland.ir/api/client/servers/1a85a183/databases', [
    CURLOPT_POSTFIELDS => json_encode(['database' => 'mydb', 'remote' => '%']),
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ptlc_xxxxxxxxxxxxxxxxxxxxxxxx',
        'Content-Type: application/json',
    ],
]);
نمونه پاسخ واقعی:
{
  "object": "server_database",
  "attributes": {
    "id": "vw9b8qyL",
    "host": {
      "address": "46.38.138.212",
      "port": 25600
    },
    "name": "s760_mydb",
    "username": "u760_NxJERbA8ft",
    "connections_from": "%",
    "max_connections": null,
    "relationships": {
      "password": {
        "object": "database_password",
        "attributes": {
          "password": "t=EQtaaIKy4!LsYTC=vJRvAB"
        }
      }
    }
  }
}
POST/api/client/servers/{server}/databases/{database}/rotate-password

رمز عبور دیتابیس را عوض می‌کند (بدنه‌ی خالی) و دیتابیس به‌روزشده را با رمز جدید در attributes.relationships.password.attributes.password برمی‌گرداند. مجوز لازم: database.update.

نمونه پاسخ واقعی:
{
  "object": "server_database",
  "attributes": {
    "id": "YkxXVk6W",
    "host": { "address": "46.38.138.212", "port": 25600 },
    "name": "s760_docstest",
    "username": "u760_7OCrt3hEXA",
    "connections_from": "%",
    "max_connections": 0,
    "relationships": {
      "password": {
        "object": "database_password",
        "attributes": { "password": "9Qf0fN44En3Wp8^8lseuR^+U" }
      }
    }
  }
}
با چرخش رمز، رمز قبلی بلافاصله باطل می‌شود؛ برنامه‌های متصل را به‌روزرسانی کنید.
curl -X POST "https://pufferland.ir/api/client/servers/1a85a183/databases/YkxXVk6W/rotate-password" \
  -H "Authorization: Bearer ptlc_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"
DELETE/api/client/servers/{server}/databases/{database}

دیتابیس و تمام داده‌های آن را برای همیشه حذف می‌کند. پاسخ موفق: 204 بدون بدنه.

حذف دیتابیس غیرقابل بازگشت است.
curl -X DELETE "https://pufferland.ir/api/client/servers/1a85a183/databases/YkxXVk6W" \
  -H "Authorization: Bearer ptlc_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Accept: application/json"
نمونه پاسخ واقعی:
204 No Content