timeweb-rs
Async Rust SDK for the Timeweb Cloud API.
The client is generated from the vendor’s own OpenAPI specification, so it covers the whole public API surface — 514 operations across 31 areas: cloud servers, managed databases, Kubernetes, projects, domains, S3 storage, load balancers, firewalls, mail, AI agents, AI Gateway, knowledge bases, floating IPs, VPC, SSH keys, images, dedicated servers, container registry, network drives and more.
Three things make it more than a generated client:
- It is always in sync with the vendor. A scheduled workflow compares the vendored specification with the upstream bundle every week, regenerates the client when the API changes and opens a pull request with the API diff. The SDK never drifts from the API it wraps.
- It parses what the API really sends. The specification and the live API disagree in a few places — nullable fields the API omits, timestamps without a UTC offset, unions the generator renders as empty structs. The generation pipeline repairs those cases, so the documented responses deserialize instead of failing.
- It stays small. Every API area is behind its own Cargo feature, so a consumer that needs one area does not compile the other thousand models.
extern crate tokio;
extern crate timeweb_rs;
use timeweb_rs::apis::servers_api;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = timeweb_rs::authenticated("your-jwt-token");
let servers = servers_api::get_servers(&config, None, None).await?;
println!("{servers:#?}");
Ok(())
}
Where to go next
- Quickstart — install the crate and call the API.
- API reference — every operation, grouped by area.
- Internals — how the generation pipeline works.
- Support — how to support the project.
Quickstart
Install
cargo add timeweb-rs
The crate uses native-tls by default. To use rustls instead:
timeweb-rs = { version = "0.9", default-features = false, features = ["rustls", "full"] }
Every API area is compiled by default. See Feature flags to compile only the areas you need.
Authenticate
The API authenticates with a JWT token issued in the Timeweb Cloud control panel, under the “API и Terraform” section.
extern crate tokio;
extern crate timeweb_rs;
use timeweb_rs::apis::servers_api;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = timeweb_rs::authenticated(std::env::var("TIMEWEB_CLOUD_TOKEN")?);
let servers = servers_api::get_servers(&config, None, None).await?;
for server in &servers.servers {
println!("{} ({:?})", server.name, server.status);
}
Ok(())
}
authenticated returns a Configuration with a 30 second request timeout.
Pass it to any operation — every operation is a free async function in an
apis::*_api module and takes the configuration as its first argument.
Call an operation
Path parameters and the request body are ordinary arguments:
extern crate tokio;
extern crate timeweb_rs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = timeweb_rs::authenticated("your-jwt-token");
use timeweb_rs::{apis::ssh_api, models::AddKeyToServerRequest};
ssh_api::add_key_to_server(
&config,
42,
AddKeyToServerRequest {
ssh_key_ids: vec![7.0],
},
)
.await?;
Ok(())
}
Handle the errors
Every operation returns Result<_, apis::Error<T>>, where T is the typed
error body of that operation. The uniform envelope of the API is available
through ErrorDetails:
extern crate tokio;
extern crate timeweb_rs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = timeweb_rs::authenticated("your-jwt-token");
use timeweb_rs::{apis::servers_api, ErrorDetails};
match servers_api::get_server(&config, 42).await {
Ok(server) => println!("{server:#?}"),
Err(error) => match ErrorDetails::from_api_error(&error) {
Some(details) => {
eprintln!("{}: {}", details.status_code, details.messages().join("; "))
}
None => eprintln!("{error}"),
},
}
Ok(())
}
See Error handling for the details.
Use the retries
TimewebClient owns the configuration and re-runs an operation under a
RetryPolicy when the API answers 429, 5xx or the transport fails:
extern crate tokio;
extern crate timeweb_rs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use timeweb_rs::{apis::servers_api, TimewebClient};
let client = TimewebClient::new(std::env::var("TIMEWEB_CLOUD_TOKEN")?);
let servers = client
.execute(|| servers_api::get_servers(client.config(), None, None))
.await?;
println!("{} servers", servers.servers.len());
Ok(())
}
Only wrap idempotent operations: a retried POST that creates a resource
may create it twice. See Retries and timeouts.
Feature flags
The crate ships one Cargo feature per API area, named after the area with underscores replaced by dashes:
| Area | Feature | Area | Feature |
|---|---|---|---|
account_api | account | knowledge_bases_api | knowledge-bases |
ai_agent_integrations_api | ai-agent-integrations | kubernetes_api | kubernetes |
ai_agent_skills_api | ai-agent-skills | locations_api | locations |
ai_agents_api | ai-agents | mail_api | mail |
ai_gateway_api | ai-gateway | mcp_api | mcp |
ai_gateway_inference_api | ai-gateway-inference | network_drives_api | network-drives |
ai_models_api | ai-models | payments_api | payments |
ai_solutions_api | ai-solutions | projects_api | projects |
apps_api | apps | routers_api | routers |
balancers_api | balancers | s3_api | s3 |
cdn_api | cdn | servers_api | servers |
container_registry_api | container-registry | ssh_api | ssh |
databases_api | databases | vpc_api | vpc |
dedicated_servers_api | dedicated-servers | ||
domains_api | domains | ||
firewall_api | firewall | ||
floating_ip_api | floating-ip | ||
images_api | images |
The full feature turns every area on, and the default features are
native-tls and full.
Compile a single area
timeweb-rs = { version = "0.9", default-features = false, features = ["native-tls", "servers"] }
Only the models the servers area uses are compiled — the other thousand
models are left out. A model shared by two areas is compiled when either of
them is enabled.
Check the names
The list above is generated from the specification. The authoritative list lives in the manifest, and the CI verifies that the manifest and the generated code stay in sync on every pull request.
Error handling
Every operation returns Result<T, apis::Error<E>>, where E is the typed
error body of that operation. The four variants of apis::Error say which kind
of failure happened:
extern crate tokio;
extern crate timeweb_rs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = timeweb_rs::authenticated("your-jwt-token");
use timeweb_rs::apis::{servers_api, Error};
match servers_api::get_server(&config, 42).await {
Ok(server) => println!("{server:#?}"),
Err(Error::Reqwest(error)) => eprintln!("the request never reached the API: {error}"),
Err(Error::Serde(error)) => eprintln!("the body was not the expected JSON: {error}"),
Err(Error::Io(error)) => eprintln!("a local file could not be read: {error}"),
Err(Error::ResponseError(response)) => {
eprintln!("the API answered with an error: {}", response.status);
}
}
Ok(())
}
Reqwest— the request never reached the API: DNS, TLS, a dropped connection or a timeout.Serde— the API answered, but the body is not the expected JSON.Io— a local file of a multipart upload could not be read.ResponseError— the API answered with a4xxor5xx. It carries the status, the raw body, the response headers and the parsed error entity.
The uniform envelope
Timeweb Cloud answers errors with the same envelope: a status code, a machine
readable error code, a message that is either a string or a list of strings,
and a correlation id. ErrorDetails extracts it from any operation error
without naming the per-operation entity:
extern crate tokio;
extern crate timeweb_rs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = timeweb_rs::authenticated("your-jwt-token");
use timeweb_rs::{apis::servers_api, ErrorDetails};
let error = servers_api::get_server(&config, 42).await.unwrap_err();
if let Some(details) = ErrorDetails::from_api_error(&error) {
eprintln!("status: {}", details.status_code);
eprintln!("code: {}", details.error_code);
eprintln!("text: {}", details.messages().join("; "));
if let Some(id) = &details.response_id {
eprintln!("id: {id}"); // quote it in a support ticket
}
}
Ok(())
}
messages() returns the message of the envelope whatever shape it has — one
string or a list.
The typed error
When the operation has a documented error body, it is parsed into the typed
entity and reachable through ResponseContent:
extern crate tokio;
extern crate timeweb_rs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = timeweb_rs::authenticated("your-jwt-token");
use timeweb_rs::apis::{servers_api, Error};
let error = servers_api::get_server(&config, 42).await.unwrap_err();
if let Error::ResponseError(response) = error {
println!("status: {}", response.status);
if let Some(entity) = &response.entity {
println!("{entity:#?}");
}
}
Ok(())
}
The entity is Option: it is None when the body does not match the schema
of that operation.
Rate limits and retries
A 429 carries a Retry-After header. The retrying client reads it and waits
exactly as long as the API asked. See Retries and timeouts.
Pagination
The list endpoints take a limit and an offset and answer with a meta
object that carries the total number of items. paginate turns that into a
Stream of items:
extern crate futures_util;
extern crate tokio;
extern crate timeweb_rs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use futures_util::TryStreamExt;
use timeweb_rs::{apis::servers_api, paginate};
let config = timeweb_rs::authenticated("your-jwt-token");
let mut servers = paginate(100, |limit, offset| {
let config = &config;
async move {
let page = servers_api::get_servers(config, Some(limit), Some(offset)).await?;
Ok(page.servers)
}
});
while let Some(server) = servers.try_next().await? {
println!("{}", server.name);
}
Ok(())
}
The closure receives (limit, offset) and returns the items of that page. The
stream asks for the next page only when the current one is exhausted, so a
large collection never lands in memory at once.
The last request
Offset pagination cannot know that a full page is the last one, so the stream asks for one more page when the total number of items is a multiple of the page size. That last request answers with an empty collection.
Errors
A failed page ends the stream and yields the error:
extern crate futures_util;
extern crate tokio;
extern crate timeweb_rs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use timeweb_rs::{apis::servers_api, paginate};
let config = timeweb_rs::authenticated("your-jwt-token");
use futures_util::TryStreamExt;
let mut servers = paginate(100, |limit, offset| {
let config = &config;
async move {
let page = servers_api::get_servers(config, Some(limit), Some(offset)).await?;
Ok(page.servers)
}
});
loop {
match servers.try_next().await {
Ok(Some(server)) => println!("{}", server.name),
Ok(None) => break,
Err(error) => {
eprintln!("{error}");
break;
}
}
}
Ok(())
}
The retrying client
paginate does not retry: it is a thin stream over the API. Wrap the fetch
closure in the retrying client when the pages should be retried:
extern crate tokio;
extern crate timeweb_rs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use timeweb_rs::{apis::servers_api, paginate, TimewebClient};
let client = TimewebClient::new("your-jwt-token");
let retrying = &client;
let mut servers = paginate(100, |limit, offset| {
async move {
let page = retrying
.execute(|| servers_api::get_servers(retrying.config(), Some(limit), Some(offset)))
.await?;
Ok(page.servers)
}
});
let _ = servers;
Ok(())
}
The list operations are idempotent, so retrying them is safe.
Retries and timeouts
The timeout
Every configuration built with authenticated uses an HTTP client with a
30 second timeout, so a stalled connection cannot block a task forever. The
timeout is a constant:
#![allow(unused)]
fn main() {
extern crate timeweb_rs;
use std::time::Duration;
use timeweb_rs::DEFAULT_TIMEOUT;
assert_eq!(DEFAULT_TIMEOUT, Duration::from_secs(30));
}
A request that runs into the timeout fails with Error::Reqwest.
Bring your own client when the default does not fit — a proxy, a connection pool or a different timeout:
extern crate reqwest;
extern crate timeweb_rs;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::builder()
.timeout(std::time::Duration::from_secs(5))
.build()?;
let config = timeweb_rs::authenticated_with_client("your-jwt-token", client);
let _ = config;
Ok(())
}
The retry policy
TimewebClient retries an operation when the failure is worth retrying:
- a transport failure — the request never reached the API;
429 Too Many Requests;- any
5xxresponse.
Every other error is returned immediately. The delay grows exponentially from the base delay, doubles per attempt and is capped by the maximum delay; half of it is random, so the clients of a fleet do not retry in lockstep.
extern crate timeweb_rs;
fn main() {
use std::time::Duration;
use timeweb_rs::{RetryPolicy, TimewebClient};
let policy = RetryPolicy {
max_retries: 5,
base_delay: Duration::from_millis(200),
max_delay: Duration::from_secs(10),
};
let client = TimewebClient::new("your-jwt-token").with_policy(policy);
assert_eq!(client.config().base_path, timeweb_rs::DEFAULT_BASE_URL);
}
The default policy retries three times, starting from 500 milliseconds and capping the delay at eight seconds.
Retry-After
A 429 may carry a Retry-After header, either as a number of seconds or as
an HTTP date. The client honors it: the delay becomes exactly what the API
asked for, capped by the maximum delay of the policy.
Idempotency
Only retry idempotent operations. A POST that creates a resource may
reach the API even when the response never arrives, so retrying it can create
the resource twice.
execute retries whatever you give it, because the policy is a property of
the client, not of the operation. For an operation that is not idempotent,
use execute_once:
extern crate tokio;
extern crate timeweb_rs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use timeweb_rs::{
apis::ssh_api,
models::CreateKeyRequest,
TimewebClient,
};
let client = TimewebClient::new("your-jwt-token");
let key = client
.execute_once(|| {
ssh_api::create_key(
client.config(),
CreateKeyRequest {
name: "deploy".to_owned(),
body: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG…".to_owned(),
..CreateKeyRequest::default()
},
)
})
.await?;
println!("created key {}", key.ssh_key.id);
Ok(())
}
The policy is public
RetryPolicy::delay_for returns the nominal delay of a retry — the delay
before the jitter is applied. It is deterministic, which makes it easy to
assert on in tests.
AI Gateway
The AI Gateway is a second API surface of Timeweb Cloud with its own host,
its own keys and an OpenAI-compatible protocol. It lives at
https://api.timeweb.ai, while the rest of the API lives at
https://api.timeweb.cloud.
Two areas, two hosts
| Area | Module | Host | Paths |
|---|---|---|---|
| Gateway management | ai_gateway_api | api.timeweb.cloud | /api/v1/cloud-ai/… |
| Inference | ai_gateway_inference_api | api.timeweb.ai | /v1/… |
The management of the keys — listing them, their limits, their usage — is part of the regular Timeweb Cloud API and uses the ordinary configuration. The inference calls talk to the gateway host.
The keys
A gateway key is created in the control panel or with
POST /api/v1/cloud-ai/ai-keys, and looks like sk-…. It is not the JWT
token of the control panel: the two surfaces have separate credentials.
extern crate tokio;
extern crate timeweb_rs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use timeweb_rs::apis::ai_gateway_inference_api;
let config = timeweb_rs::authenticated_ai_gateway("sk-your-key");
let models = ai_gateway_inference_api::get_ai_gateway_models(&config).await?;
println!("{models:#?}");
Ok(())
}
authenticated_ai_gateway builds a configuration for
AI_GATEWAY_BASE_URL
and sends the key as a bearer token, exactly like the control panel token.
The retrying client
The gateway has its own client, because the base URL differs:
extern crate tokio;
extern crate timeweb_rs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use timeweb_rs::{apis::ai_gateway_inference_api, TimewebClient};
let client = TimewebClient::ai_gateway("sk-your-key");
let models = client
.execute(|| ai_gateway_inference_api::get_ai_gateway_models(client.config()))
.await?;
println!("{models:#?}");
Ok(())
}
Streaming and multipart
The inference area includes the streaming chat completions and the multipart file uploads of the OpenAI-compatible protocol. The generated operations take the same request and response models as the rest of the SDK, and the file arguments are ordinary paths — the client reads the file and sends it as a part.
API reference
The SDK covers 514 operations across 31 areas of the Timeweb Cloud API. Every area is compiled only when its Cargo feature is enabled, so a consumer that needs one area does not compile the rest. The summaries are quoted from the vendor’s specification.
AI Agent Integrations
Cargo feature: ai-agent-integrations · operations: 18
| Method | Path | Function | Summary |
|---|---|---|---|
DELETE | /api/v1/cloud-ai/agent/{agent_id}/crisp | deleteAgentIntegrationCrisp | Отключение агента от Crisp |
GET | /api/v1/cloud-ai/agent/{agent_id}/crisp | getAgentIntegrationCrisp | Получение интеграции агента с Crisp |
POST | /api/v1/cloud-ai/agent/{agent_id}/crisp | createAgentIntegrationCrisp | Подключение агента к Crisp |
DELETE | /api/v1/cloud-ai/agent/{agent_id}/jivo | deleteAgentIntegrationJivo | Отключение агента от Jivo |
GET | /api/v1/cloud-ai/agent/{agent_id}/jivo | getAgentIntegrationJivo | Получение интеграции агента с Jivo |
POST | /api/v1/cloud-ai/agent/{agent_id}/jivo | createAgentIntegrationJivo | Подключение агента к Jivo |
GET | /api/v1/cloud-ai/agents/{agent_id}/bots | getAgentBotTelegramBotsByAgent | Получение списка Telegram-ботов агента |
GET | /api/v1/cloud-ai/agents/{agent_id}/max-bots | getAgentBotMaxBotsByAgent | Получение списка ботов MAX агента |
GET | /api/v1/cloud-ai/bots | getAgentBotTelegramBots | Получение списка Telegram-ботов |
POST | /api/v1/cloud-ai/bots | createAgentBotTelegramBot | Подключение Telegram-бота к агенту |
DELETE | /api/v1/cloud-ai/bots/{bot_id} | deleteAgentBotTelegramBot | Отключение Telegram-бота |
GET | /api/v1/cloud-ai/bots/{bot_id} | getAgentBotTelegramBot | Получение информации о Telegram-боте |
PATCH | /api/v1/cloud-ai/bots/{bot_id} | updateAgentBotTelegramBot | Изменение Telegram-бота |
GET | /api/v1/cloud-ai/max-bots | getAgentBotMaxBots | Получение списка ботов MAX |
POST | /api/v1/cloud-ai/max-bots | createAgentBotMaxBot | Подключение бота MAX к агенту |
DELETE | /api/v1/cloud-ai/max-bots/{bot_id} | deleteAgentBotMaxBot | Отключение бота MAX |
GET | /api/v1/cloud-ai/max-bots/{bot_id} | getAgentBotMaxBot | Получение информации о боте MAX |
PATCH | /api/v1/cloud-ai/max-bots/{bot_id} | updateAgentBotMaxBot | Изменение бота MAX |
AI Agent Skills
Cargo feature: ai-agent-skills · operations: 20
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/cloud-ai/agents/{agent_id}/skills | getAgentSkillsForAgent | Получение навыков агента |
POST | /api/v1/cloud-ai/agents/{agent_id}/skills/connect | connectAgentSkillsToAgent | Подключение нескольких навыков к агенту |
POST | /api/v1/cloud-ai/agents/{agent_id}/skills/install-and-connect | installAndConnectAgentSkill | Установка навыка из каталога и включение у агента |
POST | /api/v1/cloud-ai/agents/{agent_id}/skills/sync-versions | syncAgentSkillVersionsForAgent | Перевод всех навыков агента на текущие версии |
DELETE | /api/v1/cloud-ai/agents/{agent_id}/skills/{skill_id} | disconnectAgentSkillFromAgent | Отключение навыка от агента |
PUT | /api/v1/cloud-ai/agents/{agent_id}/skills/{skill_id} | setAgentSkillForAgent | Включение и выключение навыка у агента |
POST | /api/v1/cloud-ai/agents/{agent_id}/skills/{skill_id}/update-version | updateAgentSkillVersionForAgent | Перевод агента на текущую версию навыка |
GET | /api/v1/cloud-ai/skill-catalog | getAgentSkillCatalog | Получение каталога навыков |
POST | /api/v1/cloud-ai/skill-catalog/{catalog_item_id}/install | installAgentSkillFromCatalog | Установка навыка из каталога |
GET | /api/v1/cloud-ai/skills | getAgentSkillLibrary | Получение списка навыков |
POST | /api/v1/cloud-ai/skills | createAgentSkill | Создание навыка |
DELETE | /api/v1/cloud-ai/skills/{skill_id} | deleteAgentSkill | Удаление навыка |
GET | /api/v1/cloud-ai/skills/{skill_id} | getAgentSkill | Получение навыка |
PATCH | /api/v1/cloud-ai/skills/{skill_id} | updateAgentSkill | Изменение навыка |
POST | /api/v1/cloud-ai/skills/{skill_id}/agents/sync-versions | syncAgentSkillAgentsVersions | Перевод всех агентов навыка на текущую версию |
POST | /api/v1/cloud-ai/skills/{skill_id}/apply-catalog-update | applyAgentSkillCatalogUpdate | Применение обновления навыка из каталога |
POST | /api/v1/cloud-ai/skills/{skill_id}/duplicate | duplicateAgentSkill | Копирование навыка |
GET | /api/v1/cloud-ai/skills/{skill_id}/versions | getAgentSkillVersions | Получение истории версий навыка |
GET | /api/v1/cloud-ai/skills/{skill_id}/versions/{version} | getAgentSkillVersion | Получение версии навыка |
POST | /api/v1/cloud-ai/skills/{skill_id}/versions/{version}/rollback | rollbackAgentSkillVersion | Переключение навыка на версию из истории |
AI Agents
Cargo feature: ai-agents · operations: 20
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/cloud-ai/agents | getAgents | Получение списка AI агентов |
POST | /api/v1/cloud-ai/agents | createAgent | Создание AI агента |
DELETE | /api/v1/cloud-ai/agents/{id} | deleteAgent | Удаление AI агента |
GET | /api/v1/cloud-ai/agents/{id} | getAgent | Получение AI агента |
PATCH | /api/v1/cloud-ai/agents/{id} | updateAgent | Обновление AI агента |
POST | /api/v1/cloud-ai/agents/{id}/add-additional-token-package | addAdditionalTokenPackage | Добавление дополнительного пакета токенов |
GET | /api/v1/cloud-ai/agents/{id}/chat-list | getAgentChatList | Получение списка чатов агента |
GET | /api/v1/cloud-ai/agents/{id}/chat-list/{chat_id}/messages | getAgentChatMessages | Получение сообщений чата агента |
GET | /api/v1/cloud-ai/agents/{id}/chats/docs | exportAgentChatsCsv | Выгрузка чатов агента в CSV |
GET | /api/v1/cloud-ai/agents/{id}/entity-limits | getAgentEntityLimits | Получение лимитов агента |
POST | /api/v1/cloud-ai/agents/{id}/entity-limits | createAgentEntityLimit | Создание лимита агента |
PUT | /api/v1/cloud-ai/agents/{id}/entity-limits/sync | syncAgentEntityLimits | Синхронизация лимитов агента за период |
DELETE | /api/v1/cloud-ai/agents/{id}/entity-limits/{limit_id} | deleteAgentEntityLimit | Удаление лимита агента |
GET | /api/v1/cloud-ai/agents/{id}/entity-limits/{limit_id} | getAgentEntityLimit | Получение лимита агента |
PATCH | /api/v1/cloud-ai/agents/{id}/entity-limits/{limit_id} | updateAgentEntityLimit | Изменение лимита агента |
PATCH | /api/v1/cloud-ai/agents/{id}/model | changeAgentModel | Смена модели AI агента |
GET | /api/v1/cloud-ai/agents/{id}/statistic | getAgentStatistics | Получение статистики использования токенов агента |
POST | /api/v2/cloud-ai/agents | createAgentV2 | Создание AI агента |
GET | /api/v3/cloud-ai/agents | getAgentsV3 | Получение списка AI агентов (v3) |
GET | /api/v3/cloud-ai/agents/{id} | getAgentV3 | Получение AI агента (v3) |
AI Gateway
Cargo feature: ai-gateway · operations: 14
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/cloud-ai/ai-keys | getAiKeys | Получение списка ключей AI Gateway |
POST | /api/v1/cloud-ai/ai-keys | createAiKey | Создание ключа AI Gateway |
GET | /api/v1/cloud-ai/ai-keys/statistic/calls | getAiKeyCallsStatistic | Получение статистики запросов ключа AI Gateway |
GET | /api/v1/cloud-ai/ai-keys/statistic/models | getAiKeyModelsStatistic | Получение списка моделей, использованных ключом AI Gateway |
GET | /api/v1/cloud-ai/ai-keys/statistic/token-usage | getAiKeyTokenUsageStatistic | Получение статистики расхода токенов ключа AI Gateway |
DELETE | /api/v1/cloud-ai/ai-keys/{key_id} | deleteAiKey | Удаление ключа AI Gateway |
PATCH | /api/v1/cloud-ai/ai-keys/{key_id} | updateAiKey | Изменение ключа AI Gateway |
GET | /api/v1/cloud-ai/ai-keys/{key_id}/entity-limits | getAiKeyLimits | Получение списка лимитов ключа AI Gateway |
POST | /api/v1/cloud-ai/ai-keys/{key_id}/entity-limits | createAiKeyLimit | Создание лимита ключа AI Gateway |
PUT | /api/v1/cloud-ai/ai-keys/{key_id}/entity-limits/sync | syncAiKeyLimits | Синхронизация лимитов ключа AI Gateway |
DELETE | /api/v1/cloud-ai/ai-keys/{key_id}/entity-limits/{limit_id} | deleteAiKeyLimit | Удаление лимита ключа AI Gateway |
GET | /api/v1/cloud-ai/ai-keys/{key_id}/entity-limits/{limit_id} | getAiKeyLimit | Получение лимита ключа AI Gateway |
PATCH | /api/v1/cloud-ai/ai-keys/{key_id}/entity-limits/{limit_id} | updateAiKeyLimit | Изменение лимита ключа AI Gateway |
PUT | /api/v1/cloud-ai/ai-keys/{key_id}/regenerate | regenerateAiKey | Перевыпуск ключа AI Gateway |
AI Gateway Inference
Cargo feature: ai-gateway-inference · operations: 20
| Method | Path | Function | Summary |
|---|---|---|---|
POST | /v1/audio/speech | createAiGatewaySpeech | Синтез речи |
POST | /v1/audio/transcriptions | createAiGatewayTranscription | Распознавание речи |
GET | /v1/batches | getAiGatewayBatches | Получение списка батчей |
POST | /v1/batches | createAiGatewayBatch | Создание батча |
GET | /v1/batches/{batch_id} | getAiGatewayBatch | Получение батча |
POST | /v1/batches/{batch_id}/cancel | cancelAiGatewayBatch | Отмена батча |
POST | /v1/chat/completions | createAiGatewayChatCompletion | Генерация ответа в диалоге (Chat Completions) |
POST | /v1/completions | createAiGatewayCompletion | Продолжение текста (Completions) |
POST | /v1/embeddings | createAiGatewayEmbedding | Получение эмбеддингов |
POST | /v1/files | uploadAiGatewayFile | Загрузка файла |
DELETE | /v1/files/{file_id} | deleteAiGatewayFile | Удаление файла |
GET | /v1/files/{file_id} | getAiGatewayFile | Получение информации о файле |
GET | /v1/files/{file_id}/content | downloadAiGatewayFileContent | Скачивание файла |
POST | /v1/images/edits | createAiGatewayImageEdit | Редактирование изображений |
POST | /v1/images/generations | createAiGatewayImage | Генерация изображений |
GET | /v1/models | getAiGatewayModels | Получение списка моделей AI Gateway |
POST | /v1/responses | createAiGatewayResponse | Создание ответа (Responses API) |
DELETE | /v1/responses/{response_id} | deleteAiGatewayResponse | Удаление ответа (Responses API) |
GET | /v1/responses/{response_id} | getAiGatewayResponse | Получение ответа (Responses API) |
POST | /v1/responses/{response_id}/cancel | cancelAiGatewayResponse | Отмена фонового ответа (Responses API) |
AI Models
Cargo feature: ai-models · operations: 8
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/cloud-ai/models | getModels | Получение списка моделей (v1) |
GET | /api/v1/cloud-ai/models/{id}/token-packages | getAiModelTokenPackages | Получение пакетов токенов модели |
GET | /api/v1/cloud-ai/providers | getAiProviders | Получение списка провайдеров моделей |
GET | /api/v1/cloud-ai/providers/{id} | getAiProvider | Получение провайдера моделей |
GET | /api/v1/cloud-ai/token-packages/agents | getAgentsTokenPackages | Получение списка пакетов токенов для агентов |
GET | /api/v1/cloud-ai/token-packages/knowledge-bases | getKnowledgebasesTokenPackages | Получение списка пакетов токенов для баз знаний |
GET | /api/v3/cloud-ai/model-parameters | getAiModelParameters | Получение справочника характеристик моделей |
GET | /api/v3/cloud-ai/models | getModelsV3 | Получение списка моделей |
AI Solutions
Cargo feature: ai-solutions · operations: 22
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/cloud-ai/solutions | listAiSolutions | Получение списка AI-решений |
POST | /api/v1/cloud-ai/solutions | createAiSolution | Создание AI-решения |
GET | /api/v1/cloud-ai/solutions/types | listAiSolutionTypes | Получение списка типов AI-решений |
DELETE | /api/v1/cloud-ai/solutions/{solution_id} | deleteAiSolution | Удаление AI-решения |
GET | /api/v1/cloud-ai/solutions/{solution_id} | getAiSolution | Получение AI-решения |
PATCH | /api/v1/cloud-ai/solutions/{solution_id} | updateAiSolution | Изменение AI-решения |
POST | /api/v1/cloud-ai/solutions/{solution_id}/ai-key/regenerate | regenerateAiSolutionAiKey | Перевыпуск ключа AI Gateway решения |
GET | /api/v1/cloud-ai/solutions/{solution_id}/chat/conversations | listAiSolutionConversations | Получение списка разговоров AI-решения |
GET | /api/v1/cloud-ai/solutions/{solution_id}/chat/conversations/{conversation_id}/messages | getAiSolutionChatHistory | Получение истории разговора AI-решения |
GET | /api/v1/cloud-ai/solutions/{solution_id}/chat/history | getAiSolutionChatFullHistory | Получение всей истории чата AI-решения |
GET | /api/v1/cloud-ai/solutions/{solution_id}/chat/messages | getAiSolutionMainChatHistory | Получение истории основного разговора AI-решения |
POST | /api/v1/cloud-ai/solutions/{solution_id}/chat/messages | sendAiSolutionMessage | Отправка сообщения агенту AI-решения |
POST | /api/v1/cloud-ai/solutions/{solution_id}/chat/reset | resetAiSolutionChat | Сброс контекста разговора AI-решения |
GET | /api/v1/cloud-ai/solutions/{solution_id}/chat/status | getAiSolutionChatStatus | Получение статуса чата AI-решения |
POST | /api/v1/cloud-ai/solutions/{solution_id}/chat/stop | stopAiSolutionChat | Остановка хода агента AI-решения |
POST | /api/v1/cloud-ai/solutions/{solution_id}/chat/stream | streamAiSolutionChat | Отправка сообщения агенту AI-решения с потоковым ответом |
POST | /api/v1/cloud-ai/solutions/{solution_id}/shutdown | shutdownAiSolution | Выключение AI-решения |
POST | /api/v1/cloud-ai/solutions/{solution_id}/start | startAiSolution | Запуск AI-решения |
GET | /api/v1/cloud-ai/solutions/{solution_id}/telegram/bots | listAiSolutionTelegramBots | Получение списка Telegram-ботов AI-решения |
POST | /api/v1/cloud-ai/solutions/{solution_id}/telegram/bots | addAiSolutionTelegramBot | Подключение Telegram-бота к AI-решению |
DELETE | /api/v1/cloud-ai/solutions/{solution_id}/telegram/bots/{account_key} | removeAiSolutionTelegramBot | Отключение Telegram-бота от AI-решения |
POST | /api/v1/cloud-ai/solutions/{solution_id}/telegram/bots/{account_key}/pairing/approve | approveAiSolutionTelegramPairing | Подтверждение владельца Telegram-бота AI-решения |
Account
Cargo feature: account · operations: 11
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/account/notification-settings | getNotificationSettings | Получение настроек уведомлений аккаунта |
PATCH | /api/v1/account/notification-settings | updateNotificationSettings | Изменение настроек уведомлений аккаунта |
GET | /api/v1/account/status | getAccountStatus | Получение статуса аккаунта |
GET | /api/v1/auth/access | getAuthAccessSettings | Получить информацию о ограничениях авторизации пользователя |
DELETE | /api/v1/auth/access/countries | deleteCountriesFromAllowedList | Удаление стран из списка разрешенных |
GET | /api/v1/auth/access/countries | getCountries | Получение списка стран |
POST | /api/v1/auth/access/countries | addCountriesToAllowedList | Добавление стран в список разрешенных |
POST | /api/v1/auth/access/countries/enabled | updateAuthRestrictionsByCountries | Включение/отключение ограничений по стране |
DELETE | /api/v1/auth/access/ips | deleteIPsFromAllowedList | Удаление IP-адресов из списка разрешенных |
POST | /api/v1/auth/access/ips | addIPsToAllowedList | Добавление IP-адресов в список разрешенных |
POST | /api/v1/auth/access/ips/enabled | updateAuthRestrictionsByIP | Включение/отключение ограничений по IP-адресу |
Apps
Cargo feature: apps · operations: 22
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/apps | getApps | Получение списка приложений |
POST | /api/v1/apps | createApp | Создание приложения |
DELETE | /api/v1/apps/{app_id} | deleteApp | Удаление приложения |
GET | /api/v1/apps/{app_id} | getApp | Получение приложения по id |
PATCH | /api/v1/apps/{app_id} | updateAppSettings | Изменение настроек приложения |
PATCH | /api/v1/apps/{app_id}/action/{action} | updateAppState | Изменение состояния приложения |
POST | /api/v1/apps/{app_id}/deploy | createDeploy | Запуск деплоя приложения |
GET | /api/v1/apps/{app_id}/deploy/{deploy_id}/logs | getDeployLogs | Получение логов деплоя приложения |
POST | /api/v1/apps/{app_id}/deploy/{deploy_id}/stop | deployAction | Остановка деплоя приложения |
GET | /api/v1/apps/{app_id}/deploys | getAppDeploys | Получение списка деплоев приложения |
GET | /api/v1/apps/{app_id}/logs | getAppLogs | Получение логов приложения |
GET | /api/v1/apps/{app_id}/statistics | getAppStatistics | Получение статистики приложения |
GET | /api/v1/deploy-settings/apps | getDeploySettings | Получение списка дефолтных настроек деплоя для приложения |
GET | /api/v1/frameworks/apps | getFrameworks | Получение списка доступных фреймворков для приложения |
GET | /api/v1/presets/apps | getAppsPresets | Получение списка доступных тарифов для приложения |
GET | /api/v1/vcs-provider | getProviders | Получение списка vcs провайдеров |
POST | /api/v1/vcs-provider | addProvider | Привязка vcs провайдера |
DELETE | /api/v1/vcs-provider/{provider_id} | deleteProvider | Отвязка vcs провайдера от аккаунта |
GET | /api/v1/vcs-provider/{provider_id} | getRepositories | Получение списка репозиториев vcs провайдера |
GET | /api/v1/vcs-provider/{provider_id}/repository/{repository_id} | getBranches | Получение списка веток репозитория |
GET | /api/v1/vcs-provider/{provider_id}/repository/{repository_id}/branch | getCommits | Получение списка коммитов ветки репозитория |
POST | /api/v2/apps | createAppV2 | Создание приложения (v2) |
Balancers
Cargo feature: balancers · operations: 13
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/balancers | getBalancers | Получение списка всех бaлансировщиков |
POST | /api/v1/balancers | createBalancer | Создание бaлансировщика |
DELETE | /api/v1/balancers/{balancer_id} | deleteBalancer | Удаление балансировщика |
GET | /api/v1/balancers/{balancer_id} | getBalancer | Получение бaлансировщика |
PATCH | /api/v1/balancers/{balancer_id} | updateBalancer | Обновление балансировщика |
DELETE | /api/v1/balancers/{balancer_id}/ips | deleteIPsFromBalancer | Удаление IP-адресов из балансировщика |
GET | /api/v1/balancers/{balancer_id}/ips | getBalancerIPs | Получение списка IP-адресов балансировщика |
POST | /api/v1/balancers/{balancer_id}/ips | addIPsToBalancer | Добавление IP-адресов к балансировщику |
GET | /api/v1/balancers/{balancer_id}/rules | getBalancerRules | Получение правил балансировщика |
POST | /api/v1/balancers/{balancer_id}/rules | createBalancerRule | Создание правила для балансировщика |
DELETE | /api/v1/balancers/{balancer_id}/rules/{rule_id} | deleteBalancerRule | Удаление правила для балансировщика |
PATCH | /api/v1/balancers/{balancer_id}/rules/{rule_id} | updateBalancerRule | Обновление правила для балансировщика |
GET | /api/v1/presets/balancers | getBalancersPresets | Получение списка тарифов для балансировщика |
CDN
Cargo feature: cdn · operations: 20
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/cdn/certificates | getCdnCertificates | Получение списка сертификатов CDN |
POST | /api/v1/cdn/certificates | addCdnCertificate | Загрузка собственного сертификата CDN |
POST | /api/v1/cdn/certificates/issue | issueCdnCertificate | Выпуск сертификата Let’s Encrypt для CDN-ресурса |
GET | /api/v1/cdn/certificates/tasks | getCdnCertificateTasks | Получение списка задач на выпуск сертификатов |
POST | /api/v1/cdn/certificates/tasks/{task_id}/archive | archiveCdnCertificateTask | Архивация задачи на выпуск сертификата |
DELETE | /api/v1/cdn/certificates/{certificate_id} | deleteCdnCertificate | Удаление сертификата CDN |
GET | /api/v1/cdn/http-resources | getCdnResources | Получение списка CDN-ресурсов |
POST | /api/v1/cdn/http-resources | createCdnResource | Создание CDN-ресурса |
DELETE | /api/v1/cdn/http-resources/{resource_id} | deleteCdnResource | Удаление CDN-ресурса |
GET | /api/v1/cdn/http-resources/{resource_id} | getCdnResource | Получение CDN-ресурса |
PATCH | /api/v1/cdn/http-resources/{resource_id} | updateCdnResource | Изменение CDN-ресурса |
POST | /api/v1/cdn/http-resources/{resource_id}/clear-cache | clearCdnResourceCache | Очистка кэша CDN-ресурса |
GET | /api/v1/cdn/http-resources/{resource_id}/configuration | getCdnResourceConfiguration | Получение конфигурации CDN-ресурса |
POST | /api/v1/cdn/http-resources/{resource_id}/preload-cache | preloadCdnResourceCache | Предварительная загрузка кэша CDN-ресурса |
POST | /api/v1/cdn/http-resources/{resource_id}/resume | resumeCdnResource | Возобновление раздачи CDN-ресурса |
GET | /api/v1/cdn/http-resources/{resource_id}/statistics | getCdnResourceStatistics | Получение статистики CDN-ресурса |
POST | /api/v1/cdn/http-resources/{resource_id}/suspend | suspendCdnResource | Приостановка раздачи CDN-ресурса |
GET | /api/v1/cdn/nodes/http-resources/{resource_id} | getCdnResourceNodes | Получение списка раздающих узлов CDN-ресурса |
GET | /api/v1/cdn/nodes/origin | getCdnOriginNodes | Получение списка подсетей узлов CDN |
GET | /api/v1/cdn/presets | getCdnPresets | Получение списка тарифов CDN |
Container Registry
Cargo feature: container-registry · operations: 7
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/container-registry | getRegistries | Получение списка реестров контейнеров |
POST | /api/v1/container-registry | createRegistry | Создание реестра |
GET | /api/v1/container-registry/presets | getRegistryPresets | Получение списка тарифов |
DELETE | /api/v1/container-registry/{registry_id} | deleteRegistry | Удаление реестра |
GET | /api/v1/container-registry/{registry_id} | getRegistry | Получение информации о реестре |
PATCH | /api/v1/container-registry/{registry_id} | updateRegistry | Обновление информации о реестре |
GET | /api/v1/container-registry/{registry_id}/repositories | getRegistryRepositories | Получение списка репозиториев |
Databases
Cargo feature: databases · operations: 40
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/configurator/databases | getDatabaseConfigurators | Получение списка конфигураторов баз данных |
GET | /api/v1/database-types | getDatabaseClusterTypes | Получение списка типов кластеров баз данных |
GET | /api/v1/databases | getDatabaseClusters | Получение списка кластеров баз данных |
POST | /api/v1/databases | createDatabaseCluster | Создание кластера базы данных |
DELETE | /api/v1/databases/{db_cluster_id} | deleteDatabaseCluster | Удаление кластера базы данных |
GET | /api/v1/databases/{db_cluster_id} | getDatabaseCluster | Получение кластера базы данных |
PATCH | /api/v1/databases/{db_cluster_id} | updateDatabaseCluster | Изменение кластера базы данных |
POST | /api/v1/databases/{db_cluster_id}/action | performDatabaseClusterAction | Выполнение действия над кластером базы данных |
GET | /api/v1/databases/{db_cluster_id}/admins | getDatabaseUsers | Получение списка пользователей базы данных |
POST | /api/v1/databases/{db_cluster_id}/admins | createDatabaseUser | Создание пользователя базы данных |
DELETE | /api/v1/databases/{db_cluster_id}/admins/{admin_id} | deleteDatabaseUser | Удаление пользователя базы данных |
GET | /api/v1/databases/{db_cluster_id}/admins/{admin_id} | getDatabaseUser | Получение пользователя базы данных |
PATCH | /api/v1/databases/{db_cluster_id}/admins/{admin_id} | updateDatabaseUser | Изменение пользователя базы данных |
GET | /api/v1/databases/{db_cluster_id}/instances | getDatabaseInstances | Получение списка инстансов баз данных |
POST | /api/v1/databases/{db_cluster_id}/instances | createDatabaseInstance | Создание инстанса базы данных |
DELETE | /api/v1/databases/{db_cluster_id}/instances/{instance_id} | deleteDatabaseInstance | Удаление инстанса базы данных |
GET | /api/v1/databases/{db_cluster_id}/instances/{instance_id} | getDatabaseInstance | Получение инстанса базы данных |
PATCH | /api/v1/databases/{db_cluster_id}/instances/{instance_id} | updateDatabaseInstance | Изменение инстанса базы данных |
GET | /api/v1/databases/{db_cluster_id}/privileges | getDatabasePrivileges | Получение привилегий кластера базы данных |
GET | /api/v1/databases/{db_cluster_id}/replicas | getDatabaseClusterReplicas | Получение списка реплик кластера базы данных |
GET | /api/v1/dbs/default-parameters | getDatabaseDefaultParameters | Получение рекомендуемых значений параметров баз данных |
GET | /api/v1/dbs/parameters | getDatabaseParameters | Получение списка параметров баз данных |
GET | /api/v1/dbs/{db_id}/auto-backups | getDatabaseAutoBackupsSettings | Получение настроек автобэкапов базы данных |
PATCH | /api/v1/dbs/{db_id}/auto-backups | updateDatabaseAutoBackupsSettings | Изменение настроек автобэкапов базы данных |
GET | /api/v1/dbs/{db_id}/backups | getDatabaseBackups | Список бэкапов базы данных |
POST | /api/v1/dbs/{db_id}/backups | createDatabaseBackup | Создание бэкапа базы данных |
DELETE | /api/v1/dbs/{db_id}/backups/{backup_id} | deleteDatabaseBackup | Удаление бэкапа базы данных |
GET | /api/v1/dbs/{db_id}/backups/{backup_id} | getDatabaseBackup | Получение бэкапа базы данных |
PATCH | /api/v1/dbs/{db_id}/backups/{backup_id} | updateDatabaseBackup | Изменение комментария к бэкапу базы данных |
PUT | /api/v1/dbs/{db_id}/backups/{backup_id} | restoreDatabaseFromBackup | Восстановление базы данных из бэкапа |
POST | /api/v1/dbs/{db_id}/backups/{backup_id}/download-url | createDatabaseBackupDownloadUrl | Получение ссылки для скачивания бэкапа базы данных |
PATCH | /api/v2/databases/{db_cluster_id} | updateDatabaseClusterV2 | Изменение кластера базы данных (v2) |
GET | /api/v2/databases/{db_id}/backups | getDatabaseS3Backups | Список S3-бэкапов базы данных |
POST | /api/v2/databases/{db_id}/backups | createDatabaseS3Backup | Создание S3-бэкапа базы данных |
DELETE | /api/v2/databases/{db_id}/backups/{backup_id} | deleteDatabaseS3Backup | Удаление S3-бэкапа базы данных |
GET | /api/v2/databases/{db_id}/backups/{backup_id} | getDatabaseS3Backup | Получение S3-бэкапа базы данных |
PATCH | /api/v2/databases/{db_id}/backups/{backup_id} | updateDatabaseS3Backup | Изменение комментария S3-бэкапа базы данных |
POST | /api/v2/databases/{db_id}/backups/{backup_id}/restore | restoreDatabaseFromS3Backup | Восстановление базы данных из S3-бэкапа |
GET | /api/v2/dbs/presets/{preset_id} | getDatabasePreset | Получение тарифа для базы данных |
GET | /api/v2/presets/dbs | getDatabasesPresets | Получение списка тарифов для баз данных |
Dedicated servers
Cargo feature: dedicated-servers · operations: 7
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/dedicated-servers | getDedicatedServers | Получение списка выделенных серверов |
POST | /api/v1/dedicated-servers | createDedicatedServer | Создание выделенного сервера |
DELETE | /api/v1/dedicated-servers/{dedicated_id} | deleteDedicatedServer | Удаление выделенного сервера |
GET | /api/v1/dedicated-servers/{dedicated_id} | getDedicatedServer | Получение выделенного сервера |
PATCH | /api/v1/dedicated-servers/{dedicated_id} | updateDedicatedServer | Обновление выделенного сервера |
GET | /api/v1/presets/dedicated-servers | getDedicatedServersPresets | Получение списка тарифов для выделенного сервера |
GET | /api/v1/presets/dedicated-servers/{preset_id}/additional-services | getDedicatedServerPresetAdditionalServices | Получение дополнительных услуг для выделенного сервера |
Domains
Cargo feature: domains · operations: 29
| Method | Path | Function | Summary |
|---|---|---|---|
POST | /api/v1/add-domain/{fqdn} | addDomain | Добавление домена на аккаунт |
GET | /api/v1/check-domain/{fqdn} | checkDomain | Проверить, доступен ли домен для регистрации |
GET | /api/v1/domains | getDomains | Получение списка всех доменов |
GET | /api/v1/domains-requests | getDomainRequests | Получение списка заявок на регистрацию/продление/трансфер домена |
POST | /api/v1/domains-requests | createDomainRequest | Создание заявки на регистрацию/продление/трансфер домена |
GET | /api/v1/domains-requests/{request_id} | getDomainRequest | Получение заявки на регистрацию/продление/трансфер домена |
PATCH | /api/v1/domains-requests/{request_id} | updateDomainRequest | Оплата/обновление заявки на регистрацию/продление/трансфер домена |
DELETE | /api/v1/domains/{fqdn} | deleteDomain | Удаление домена |
GET | /api/v1/domains/{fqdn} | getDomain | Получение информации о домене |
PATCH | /api/v1/domains/{fqdn} | updateDomainAutoProlongation | Включение/выключение автопродления домена |
GET | /api/v1/domains/{fqdn}/default-dns-records | getDomainDefaultDNSRecords | Получить информацию обо всех DNS-записях по умолчанию домена или поддомена |
GET | /api/v1/domains/{fqdn}/dns-records | getDomainDNSRecords | Получить информацию обо всех пользовательских DNS-записях домена или поддомена |
POST | /api/v1/domains/{fqdn}/dns-records | createDomainDNSRecord | Добавить информацию о DNS-записи для домена или поддомена |
DELETE | /api/v1/domains/{fqdn}/dns-records/{record_id} | deleteDomainDNSRecord | Удалить информацию о DNS-записи для домена или поддомена |
PATCH | /api/v1/domains/{fqdn}/dns-records/{record_id} | updateDomainDNSRecord | Обновить информацию о DNS-записи домена или поддомена |
GET | /api/v1/domains/{fqdn}/name-servers | getDomainNameServers | Получение списка name-серверов домена |
PUT | /api/v1/domains/{fqdn}/name-servers | updateDomainNameServers | Изменение name-серверов домена |
DELETE | /api/v1/domains/{fqdn}/subdomains/{subdomain} | deleteSubdomain | Удаление поддомена |
POST | /api/v1/domains/{fqdn}/subdomains/{subdomain} | addSubdomain | Добавление поддомена |
GET | /api/v1/persons | getPersons | Получение списка администраторов доменов |
POST | /api/v1/persons | createPerson | Создание администратора доменов |
DELETE | /api/v1/persons/{person_id} | deletePerson | Удаление администратора доменов |
GET | /api/v1/persons/{person_id} | getPerson | Получение администратора доменов |
PUT | /api/v1/persons/{person_id} | updatePerson | Обновление контактных данных администратора доменов |
GET | /api/v1/tlds | getTLDs | Получить информацию о доменных зонах |
GET | /api/v1/tlds/{tld_id} | getTLD | Получить информацию о доменной зоне по ID |
POST | /api/v2/domains/{fqdn}/dns-records | createDomainDNSRecordV2 | Добавить информацию о DNS-записи для домена или поддомена |
DELETE | /api/v2/domains/{fqdn}/dns-records/{record_id} | deleteDomainDNSRecordV2 | Удалить информацию о DNS-записи для домена или поддомена |
PATCH | /api/v2/domains/{fqdn}/dns-records/{record_id} | updateDomainDNSRecordV2 | Обновить информацию о DNS-записи домена или поддомена |
Firewall
Cargo feature: firewall · operations: 14
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/firewall/groups | getGroups | Получение групп правил |
POST | /api/v1/firewall/groups | createGroup | Создание группы правил |
DELETE | /api/v1/firewall/groups/{group_id} | deleteGroup | Удаление группы правил |
GET | /api/v1/firewall/groups/{group_id} | getGroup | Получение информации о группе правил |
PATCH | /api/v1/firewall/groups/{group_id} | updateGroup | Обновление группы правил |
GET | /api/v1/firewall/groups/{group_id}/resources | getGroupResources | Получение слинкованных ресурсов |
DELETE | /api/v1/firewall/groups/{group_id}/resources/{resource_id} | deleteResourceFromGroup | Отлинковка ресурса из firewall group |
POST | /api/v1/firewall/groups/{group_id}/resources/{resource_id} | addResourceToGroup | Линковка ресурса в firewall group |
GET | /api/v1/firewall/groups/{group_id}/rules | getGroupRules | Получение списка правил |
POST | /api/v1/firewall/groups/{group_id}/rules | createGroupRule | Создание firewall правила |
DELETE | /api/v1/firewall/groups/{group_id}/rules/{rule_id} | deleteGroupRule | Удаление firewall правила |
GET | /api/v1/firewall/groups/{group_id}/rules/{rule_id} | getGroupRule | Получение информации о правиле |
PATCH | /api/v1/firewall/groups/{group_id}/rules/{rule_id} | updateGroupRule | Обновление firewall правила |
GET | /api/v1/firewall/service/{resource_type}/{resource_id} | getRulesForResource | Получение групп правил для ресурса |
Floating IP
Cargo feature: floating-ip · operations: 7
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/floating-ips | getFloatingIps | Получение списка плавающих IP |
POST | /api/v1/floating-ips | createFloatingIp | Создание плавающего IP |
DELETE | /api/v1/floating-ips/{floating_ip_id} | deleteFloatingIP | Удаление плавающего IP по ID |
GET | /api/v1/floating-ips/{floating_ip_id} | getFloatingIp | Получение плавающего IP |
PATCH | /api/v1/floating-ips/{floating_ip_id} | updateFloatingIP | Изменение плавающего IP по ID |
POST | /api/v1/floating-ips/{floating_ip_id}/bind | bindFloatingIp | Привязать IP к сервису |
POST | /api/v1/floating-ips/{floating_ip_id}/unbind | unbindFloatingIp | Отвязать IP от сервиса |
Images
Cargo feature: images · operations: 10
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/images | getImages | Получение списка образов |
POST | /api/v1/images | createImage | Создание образа |
DELETE | /api/v1/images/{image_id} | deleteImage | Удаление образа |
GET | /api/v1/images/{image_id} | getImage | Получение информации о образе |
PATCH | /api/v1/images/{image_id} | updateImage | Обновление информации о образе |
POST | /api/v1/images/{image_id} | uploadImage | Загрузка образа |
GET | /api/v1/images/{image_id}/download-url | getImageDownloadURLs | Получение информации о ссылках на скачивание образов |
POST | /api/v1/images/{image_id}/download-url | createImageDownloadUrl | Создание ссылки на скачивание образа |
DELETE | /api/v1/images/{image_id}/download-url/{image_url_id} | deleteImageDownloadURL | Удаление ссылки на образ |
GET | /api/v1/images/{image_id}/download-url/{image_url_id} | getImageDownloadURL | Получение информации о ссылке на скачивание образа |
Knowledge Bases
Cargo feature: knowledge-bases · operations: 19
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/cloud-ai/knowledge-bases | getKnowledgebases | Получение списка баз знаний (v1) |
POST | /api/v1/cloud-ai/knowledge-bases | createKnowledgebase | Создание базы знаний |
DELETE | /api/v1/cloud-ai/knowledge-bases/{id} | deleteKnowledgebase | Удаление базы знаний |
GET | /api/v1/cloud-ai/knowledge-bases/{id} | getKnowledgebase | Получение базы знаний со списком документов |
PATCH | /api/v1/cloud-ai/knowledge-bases/{id} | updateKnowledgebase | Изменение базы знаний |
POST | /api/v1/cloud-ai/knowledge-bases/{id}/add-additional-token-package | addAdditionalTokenPackageToKnowledgebase | Покупка дополнительных пакетов токенов |
POST | /api/v1/cloud-ai/knowledge-bases/{id}/documents | createKnowledgebaseDocument | Добавление документа по ссылке |
DELETE | /api/v1/cloud-ai/knowledge-bases/{id}/documents/{document_id} | deleteDocument | Удаление документа из базы знаний |
PATCH | /api/v1/cloud-ai/knowledge-bases/{id}/documents/{document_id} | updateKnowledgebaseDocument | Изменение документа |
GET | /api/v1/cloud-ai/knowledge-bases/{id}/documents/{document_id}/download | downloadDocument | Скачивание файла документа |
POST | /api/v1/cloud-ai/knowledge-bases/{id}/documents/{document_id}/reindex | reindexDocument | Переиндексация документа |
DELETE | /api/v1/cloud-ai/knowledge-bases/{id}/link/{agent_id} | unlinkKnowledgebaseFromAgent | Отвязка базы знаний от агента |
PATCH | /api/v1/cloud-ai/knowledge-bases/{id}/link/{agent_id} | updateKnowledgebaseAgentLink | Изменение режима поиска по базе знаний для агента |
POST | /api/v1/cloud-ai/knowledge-bases/{id}/link/{agent_id} | linkKnowledgebaseToAgent | Привязка базы знаний к агенту |
POST | /api/v1/cloud-ai/knowledge-bases/{id}/upload | uploadFilesToKnowledgebase | Загрузка файлов в базу знаний |
GET | /api/v2/cloud-ai/knowledge-bases | getKnowledgebasesV2 | Получение списка баз знаний (v2) |
GET | /api/v2/cloud-ai/knowledge-bases/{id}/documents | getKnowledgebaseDocumentsV2 | Получение списка документов базы знаний |
GET | /api/v3/cloud-ai/knowledge-bases | getKnowledgebasesV3 | Получение списка баз знаний |
GET | /api/v3/cloud-ai/knowledge-bases/{id} | getKnowledgebaseV3 | Получение базы знаний |
Kubernetes
Cargo feature: kubernetes · operations: 25
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/k8s/clusters | getClusters | Получение списка кластеров |
POST | /api/v1/k8s/clusters | createCluster | Создание кластера |
DELETE | /api/v1/k8s/clusters/{cluster_id} | deleteCluster | Удаление кластера |
GET | /api/v1/k8s/clusters/{cluster_id} | getCluster | Получение информации о кластере |
PATCH | /api/v1/k8s/clusters/{cluster_id} | updateCluster | Обновление информации о кластере |
GET | /api/v1/k8s/clusters/{cluster_id}/addons | getKubernetesAddons | Получение списка установленных дополнений |
POST | /api/v1/k8s/clusters/{cluster_id}/addons | postKubernetesAddons | Установка дополнения |
GET | /api/v1/k8s/clusters/{cluster_id}/addons-configs | getKubernetesAddonsConfig | Получение списка конфигураций дополнений |
DELETE | /api/v1/k8s/clusters/{cluster_id}/addons/{addon_id} | deleteKubernetesAddons | Удаление дополнения |
POST | /api/v1/k8s/clusters/{cluster_id}/addons/{addon_id} | postKubernetesAddonsUpdate | Изменение конфигурации дополнения |
GET | /api/v1/k8s/clusters/{cluster_id}/groups | getClusterNodeGroups | Получение групп нод кластера |
POST | /api/v1/k8s/clusters/{cluster_id}/groups | createClusterNodeGroup | Создание группы нод |
DELETE | /api/v1/k8s/clusters/{cluster_id}/groups/{group_id} | deleteClusterNodeGroup | Удаление группы нод |
GET | /api/v1/k8s/clusters/{cluster_id}/groups/{group_id} | getClusterNodeGroup | Получение информации о группе нод |
DELETE | /api/v1/k8s/clusters/{cluster_id}/groups/{group_id}/nodes | reduceCountOfNodesInGroup | Уменьшение количества нод в группе на указанное количество |
GET | /api/v1/k8s/clusters/{cluster_id}/groups/{group_id}/nodes | getClusterNodesFromGroup | Получение списка нод, принадлежащих группе |
POST | /api/v1/k8s/clusters/{cluster_id}/groups/{group_id}/nodes | increaseCountOfNodesInGroup | Увеличение количества нод в группе на указанное количество |
GET | /api/v1/k8s/clusters/{cluster_id}/kubeconfig | getClusterKubeconfig | Получение файла kubeconfig |
GET | /api/v1/k8s/clusters/{cluster_id}/nodes | getClusterNodes | Получение списка нод |
DELETE | /api/v1/k8s/clusters/{cluster_id}/nodes/{node_id} | deleteClusterNode | Удаление ноды |
GET | /api/v1/k8s/clusters/{cluster_id}/resources | getClusterResources | Получение ресурсов кластера |
PATCH | /api/v1/k8s/clusters/{cluster_id}/versions/update | updateClusterVersion | Обновление версии кластера |
GET | /api/v1/k8s/k8s-versions | getK8SVersions | Получение списка версий k8s |
GET | /api/v1/k8s/network-drivers | getK8SNetworkDrivers | Получение списка сетевых драйверов k8s |
GET | /api/v1/presets/k8s | getKubernetesPresets | Получение списка тарифов |
Locations
Cargo feature: locations · operations: 1
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v2/locations | getLocations | Получение списка локаций |
MCP
Cargo feature: mcp · operations: 20
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/cloud-ai/agents/{agent_id}/tools | getAgentToolsByAgent | Получение MCP-инструментов агента |
POST | /api/v1/cloud-ai/agents/{agent_id}/tools | connectAgentToolToAgent | Подключение MCP-инструмента к агенту |
DELETE | /api/v1/cloud-ai/agents/{agent_id}/tools/{tool_id} | disconnectAgentToolFromAgent | Отключение MCP-инструмента от агента |
PUT | /api/v1/cloud-ai/agents/{agent_id}/tools/{tool_id} | updateAgentToolConnection | Изменение разрешённых методов MCP-инструмента у агента |
GET | /api/v1/cloud-ai/tools | getAgentTools | Получение списка MCP-инструментов |
POST | /api/v1/cloud-ai/tools | createAgentTool | Подключение собственного MCP-сервера |
POST | /api/v1/cloud-ai/tools/install | installAgentToolFromTemplate | Установка MCP-инструмента из маркетплейса |
GET | /api/v1/cloud-ai/tools/oauth2/authorize-url/{tool_id} | getAgentToolOAuth2AuthorizeUrl | Получение ссылки на OAuth2-авторизацию инструмента |
GET | /api/v1/cloud-ai/tools/templates/marketplace | getAgentToolTemplates | Получение шаблонов MCP-инструментов из маркетплейса |
GET | /api/v1/cloud-ai/tools/templates/prices | getAgentToolTemplatePrices | Получение цен системных инструментов |
DELETE | /api/v1/cloud-ai/tools/{id} | deleteAgentTool | Удаление MCP-инструмента |
GET | /api/v1/cloud-ai/tools/{id} | getAgentTool | Получение MCP-инструмента |
PUT | /api/v1/cloud-ai/tools/{id} | updateAgentTool | Изменение MCP-инструмента |
POST | /api/v1/cloud-ai/tools/{id}/refresh-methods | refreshAgentToolMethods | Обновление списка методов MCP-инструмента |
DELETE | /api/v1/mcp | deleteMcpSession | Завершение сессии сервера MCP |
GET | /api/v1/mcp | openMcpStream | Открытие потока событий сервера MCP |
POST | /api/v1/mcp | sendMcpMessage | Отправка JSON-RPC-сообщения серверу MCP |
DELETE | /api/v1/mcp/search | deleteMcpSearchSession | Завершение сессии сервера MCP с поиском инструментов |
GET | /api/v1/mcp/search | openMcpSearchStream | Открытие потока событий сервера MCP с поиском инструментов |
POST | /api/v1/mcp/search | sendMcpSearchMessage | Отправка JSON-RPC-сообщения серверу MCP с поиском инструментов |
Cargo feature: mail · operations: 14
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/mail | getMailboxes | Получение списка почтовых ящиков аккаунта |
GET | /api/v1/mail/domains/{domain} | getDomainMailboxes | Получение списка почтовых ящиков домена |
POST | /api/v1/mail/domains/{domain} | createDomainMailbox | Создание почтового ящика |
POST | /api/v1/mail/domains/{domain}/batch | createMultipleDomainMailboxes | Множественное создание почтовых ящиков |
GET | /api/v1/mail/domains/{domain}/info | getDomainMailInfo | Получение почтовой информации о домене |
PATCH | /api/v1/mail/domains/{domain}/info | updateDomainMailInfo | Изменение почтовой информации о домене |
DELETE | /api/v1/mail/domains/{domain}/mailboxes/{mailbox} | deleteMailbox | Удаление почтового ящика |
GET | /api/v1/mail/domains/{domain}/mailboxes/{mailbox} | getMailbox | Получение почтового ящика |
PATCH | /api/v1/mail/domains/{domain}/mailboxes/{mailbox} | updateMailbox | Изменение почтового ящика |
GET | /api/v2/mail | getAllMailboxesV2 | Получение списка всех почтовых ящиков аккаунта |
POST | /api/v2/mail/domains/{domain} | createDomainMailboxV2 | Создание почтового ящика |
POST | /api/v2/mail/domains/{domain}/batch | createMultipleDomainMailboxesV2 | Множественное создание почтовых ящиков |
GET | /api/v2/mail/domains/{domain}/mailboxes/{mailbox} | getMailboxV2 | Получение почтового ящика |
PATCH | /api/v2/mail/domains/{domain}/mailboxes/{mailbox} | updateMailboxV2 | Изменение почтового ящика |
Network drives
Cargo feature: network-drives · operations: 9
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/network-drives | getNetworkDrives | Получение списка cетевых дисков |
POST | /api/v1/network-drives | createNetworkDrive | Создание сетевого диска |
GET | /api/v1/network-drives/available-resources | getNetworkDrivesAvailableResources | Получение списка сервисов доступных для подключения диска |
DELETE | /api/v1/network-drives/{network_drive_id} | deleteNetworkDrive | Удаление сетевого диска по идентификатору |
GET | /api/v1/network-drives/{network_drive_id} | getNetworkDrive | Получение сетевого диска |
PATCH | /api/v1/network-drives/{network_drive_id} | updateNetworkDrive | Изменение сетевого диска по ID |
POST | /api/v1/network-drives/{network_drive_id}/mount | mountNetworkDrive | Подключить сетевой диск к сервису |
POST | /api/v1/network-drives/{network_drive_id}/unmount | unmountNetworkDrive | Отключить сетевой диск от сервиса |
GET | /api/v1/presets/network-drives | getNetworkDrivesPresets | Получение списка доступных тарифов для сетевого диска |
Payments
Cargo feature: payments · operations: 2
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/account/finances | getFinances | Получение платежной информации |
GET | /api/v1/account/services/cost | getServicePrices | Получение стоимости сервисов |
Projects
Cargo feature: projects · operations: 25
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/projects | getProjects | Получение списка проектов |
POST | /api/v1/projects | createProject | Создание проекта |
GET | /api/v1/projects/resources/balancers | getAccountBalancers | Получение списка всех балансировщиков на аккаунте |
GET | /api/v1/projects/resources/buckets | getAccountStorages | Получение списка всех хранилищ на аккаунте |
GET | /api/v1/projects/resources/clusters | getAccountClusters | Получение списка всех кластеров на аккаунте |
GET | /api/v1/projects/resources/databases | getAccountDatabases | Получение списка всех баз данных на аккаунте |
GET | /api/v1/projects/resources/dedicated | getAccountDedicatedServers | Получение списка всех выделенных серверов на аккаунте |
GET | /api/v1/projects/resources/servers | getAccountServers | Получение списка всех серверов на аккаунте |
DELETE | /api/v1/projects/{project_id} | deleteProject | Удаление проекта |
GET | /api/v1/projects/{project_id} | getProject | Получение проекта по ID |
PUT | /api/v1/projects/{project_id} | updateProject | Изменение проекта |
GET | /api/v1/projects/{project_id}/resources | getAllProjectResources | Получение всех ресурсов проекта |
GET | /api/v1/projects/{project_id}/resources/balancers | getProjectBalancers | Получение списка балансировщиков проекта |
POST | /api/v1/projects/{project_id}/resources/balancers | addBalancerToProject | Добавление балансировщика в проект |
GET | /api/v1/projects/{project_id}/resources/buckets | getProjectStorages | Получение списка хранилищ проекта |
POST | /api/v1/projects/{project_id}/resources/buckets | addStorageToProject | Добавление хранилища в проект |
GET | /api/v1/projects/{project_id}/resources/clusters | getProjectClusters | Получение списка кластеров проекта |
POST | /api/v1/projects/{project_id}/resources/clusters | addClusterToProject | Добавление кластера в проект |
GET | /api/v1/projects/{project_id}/resources/databases | getProjectDatabases | Получение списка баз данных проекта |
POST | /api/v1/projects/{project_id}/resources/databases | addDatabaseToProject | Добавление базы данных в проект |
GET | /api/v1/projects/{project_id}/resources/dedicated | getProjectDedicatedServers | Получение списка выделенных серверов проекта |
POST | /api/v1/projects/{project_id}/resources/dedicated | addDedicatedServerToProject | Добавление выделенного сервера в проект |
GET | /api/v1/projects/{project_id}/resources/servers | getProjectServers | Получение списка серверов проекта |
POST | /api/v1/projects/{project_id}/resources/servers | addServerToProject | Добавление сервера в проект |
PUT | /api/v1/projects/{project_id}/resources/transfer | transferResourceToAnotherProject | Перенести ресурс в другой проект |
Routers
Cargo feature: routers · operations: 23
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/presets/routers | getRouterPresets | Получение списка тарифов роутеров |
GET | /api/v1/routers | getRouters | Получение списка роутеров |
POST | /api/v1/routers | createRouter | Создание роутера |
GET | /api/v1/routers/networks/available | getRouterAvailableNetworks | Получение списка доступных сетей |
DELETE | /api/v1/routers/{router_id} | deleteRouter | Удаление роутера |
GET | /api/v1/routers/{router_id} | getRouter | Получение информации о роутере |
PATCH | /api/v1/routers/{router_id} | updateRouter | Обновление информации о роутере |
GET | /api/v1/routers/{router_id}/dnat-rules | getDnat | Получение списка правил проброса портов |
POST | /api/v1/routers/{router_id}/dnat-rules | postDnat | Добавление правила проброса портов |
DELETE | /api/v1/routers/{router_id}/dnat-rules/{dnat_id} | deleteDnat | Удаление правила проброса портов |
GET | /api/v1/routers/{router_id}/dnat-rules/{dnat_id} | getDnatRule | Получение правила проброса портов |
GET | /api/v1/routers/{router_id}/networks | getNetworks | Получение списка сетей роутера |
PATCH | /api/v1/routers/{router_id}/networks | patchNetworks | Обновление сетей роутера |
POST | /api/v1/routers/{router_id}/networks | addNetworks | Подключение сетей к роутеру |
DELETE | /api/v1/routers/{router_id}/networks/{network_name} | deleteRouterNetwork | Удаление сети из роутера |
PATCH | /api/v1/routers/{router_id}/networks/{network_name} | patchNetwork | Обновление информации о сети |
DELETE | /api/v1/routers/{router_id}/networks/{network_name}/nat | deleteRouterNat | Выключение NAT для сети |
PATCH | /api/v1/routers/{router_id}/networks/{network_name}/nat | updateRouterNat | Включение NAT для сети |
GET | /api/v1/routers/{router_id}/static-routes | getStaticRoutes | Получение списка статических маршрутов |
POST | /api/v1/routers/{router_id}/static-routes | postStaticRoute | Добавление статического маршрута |
GET | /api/v1/routers/{router_id}/static-routes/available | getAvailableStaticRoutes | Получение доступных подсетей для статических маршрутов |
DELETE | /api/v1/routers/{router_id}/static-routes/{static_route_id} | deleteStaticRoute | Удаление статического маршрута |
GET | /api/v1/routers/{router_id}/statistics/{time_from}/{period}/{keys} | getRouterStatistics | Получение статистики роутера |
S3
Cargo feature: s3 · operations: 14
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/presets/storages | getStoragesPresets | Получение списка тарифов для хранилищ |
GET | /api/v1/storages/buckets | getStorages | Получение списка хранилищ аккаунта |
POST | /api/v1/storages/buckets | createStorage | Создание хранилища |
DELETE | /api/v1/storages/buckets/{bucket_id} | deleteStorage | Удаление хранилища на аккаунте |
GET | /api/v1/storages/buckets/{bucket_id} | getStorage | Получение хранилища по ID |
PATCH | /api/v1/storages/buckets/{bucket_id} | updateStorage | Изменение хранилища на аккаунте |
DELETE | /api/v1/storages/buckets/{bucket_id}/subdomains | deleteStorageSubdomains | Удаление поддоменов хранилища |
GET | /api/v1/storages/buckets/{bucket_id}/subdomains | getStorageSubdomains | Получение списка поддоменов хранилища |
POST | /api/v1/storages/buckets/{bucket_id}/subdomains | addStorageSubdomains | Добавление поддоменов для хранилища |
GET | /api/v1/storages/buckets/{bucket_id}/transfer-status | getStorageTransferStatus | Получение статуса переноса хранилища от стороннего S3 в Timeweb Cloud |
POST | /api/v1/storages/certificates/generate | addStorageSubdomainCertificate | Добавление сертификата для поддомена хранилища |
POST | /api/v1/storages/transfer | transferStorage | Перенос хранилища от стороннего провайдера S3 в Timeweb Cloud |
GET | /api/v1/storages/users | getStorageUsers | Получение списка пользователей хранилищ аккаунта |
PATCH | /api/v1/storages/users/{user_id} | updateStorageUser | Изменение пароля пользователя-администратора хранилища |
SSH
Cargo feature: ssh · operations: 7
| Method | Path | Function | Summary |
|---|---|---|---|
POST | /api/v1/servers/{server_id}/ssh-keys | addKeyToServer | Добавление SSH-ключей на сервер |
DELETE | /api/v1/servers/{server_id}/ssh-keys/{ssh_key_id} | deleteKeyFromServer | Удаление SSH-ключей с сервера |
GET | /api/v1/ssh-keys | getKeys | Получение списка SSH-ключей |
POST | /api/v1/ssh-keys | createKey | Создание SSH-ключа |
DELETE | /api/v1/ssh-keys/{ssh_key_id} | deleteKey | Удаление SSH-ключа по ID |
GET | /api/v1/ssh-keys/{ssh_key_id} | getKey | Получение SSH-ключа по ID |
PATCH | /api/v1/ssh-keys/{ssh_key_id} | updateKey | Изменение SSH-ключа по ID |
Servers
Cargo feature: servers · operations: 46
| Method | Path | Function | Summary |
|---|---|---|---|
GET | /api/v1/configurator/servers | getConfigurators | Получение списка конфигураторов серверов |
GET | /api/v1/os/servers | getOsList | Получение списка операционных систем |
GET | /api/v1/presets/servers | getServersPresets | Получение списка тарифов серверов |
GET | /api/v1/restore-points | getRestorePoints | Получение списка снапшотов |
GET | /api/v1/restore-points/{vds_id} | getRestorePoint | Получение снапшота сервера |
POST | /api/v1/restore-points/{vds_id}/commit | commitRestorePoint | Фиксация снапшота |
POST | /api/v1/restore-points/{vds_id}/create | createRestorePoint | Создание снапшота |
POST | /api/v1/restore-points/{vds_id}/rollback | rollbackRestorePoint | Откат к снапшоту |
GET | /api/v1/servers | getServers | Получение списка серверов |
POST | /api/v1/servers | createServer | Создание сервера |
DELETE | /api/v1/servers/{server_id} | deleteServer | Удаление сервера |
GET | /api/v1/servers/{server_id} | getServer | Получение сервера |
PATCH | /api/v1/servers/{server_id} | updateServer | Изменение сервера |
POST | /api/v1/servers/{server_id}/action | performActionOnServer | Выполнение действия над сервером |
POST | /api/v1/servers/{server_id}/boot-mode | updateServerOSBootMode | Выбор типа загрузки операционной системы сервера |
POST | /api/v1/servers/{server_id}/clone | cloneServer | Клонирование сервера |
GET | /api/v1/servers/{server_id}/disks | getServerDisks | Получение списка дисков сервера |
POST | /api/v1/servers/{server_id}/disks | createServerDisk | Создание диска сервера |
DELETE | /api/v1/servers/{server_id}/disks/{disk_id} | deleteServerDisk | Удаление диска сервера |
GET | /api/v1/servers/{server_id}/disks/{disk_id} | getServerDisk | Получение диска сервера |
PATCH | /api/v1/servers/{server_id}/disks/{disk_id} | updateServerDisk | Изменение параметров диска сервера |
GET | /api/v1/servers/{server_id}/disks/{disk_id}/auto-backups | getServerDiskAutoBackupSettings | Получить настройки автобэкапов диска сервера |
PATCH | /api/v1/servers/{server_id}/disks/{disk_id}/auto-backups | updateServerDiskAutoBackupSettings | Изменение настроек автобэкапов диска сервера |
GET | /api/v1/servers/{server_id}/disks/{disk_id}/backups | getServerDiskBackups | Получение списка бэкапов диска сервера |
POST | /api/v1/servers/{server_id}/disks/{disk_id}/backups | createServerDiskBackup | Создание бэкапа диска сервера |
DELETE | /api/v1/servers/{server_id}/disks/{disk_id}/backups/{backup_id} | deleteServerDiskBackup | Удаление бэкапа диска сервера |
GET | /api/v1/servers/{server_id}/disks/{disk_id}/backups/{backup_id} | getServerDiskBackup | Получение бэкапа диска сервера |
PATCH | /api/v1/servers/{server_id}/disks/{disk_id}/backups/{backup_id} | updateServerDiskBackup | Изменение бэкапа диска сервера |
POST | /api/v1/servers/{server_id}/disks/{disk_id}/backups/{backup_id}/action | performActionOnBackup | Выполнение действия над бэкапом диска сервера |
POST | /api/v1/servers/{server_id}/disks/{disk_id}/backups/{backup_id}/download-url | createServerDiskBackupDownloadUrl | Получение ссылки для скачивания бэкапа диска сервера |
POST | /api/v1/servers/{server_id}/hard-reboot | rebootServerHard | Принудительная перезагрузка сервера |
POST | /api/v1/servers/{server_id}/hard-shutdown | hardShutdownServer | Принудительное выключение сервера |
POST | /api/v1/servers/{server_id}/image-unmount | imageUnmountAndServerReload | Отмонтирование ISO образа и перезагрузка сервера |
DELETE | /api/v1/servers/{server_id}/ips | deleteServerIP | Удаление IP-адреса сервера |
GET | /api/v1/servers/{server_id}/ips | getServerIPs | Получение списка IP-адресов сервера |
PATCH | /api/v1/servers/{server_id}/ips | updateServerIP | Изменение IP-адреса сервера |
POST | /api/v1/servers/{server_id}/ips | addServerIP | Добавление IP-адреса сервера |
PATCH | /api/v1/servers/{server_id}/local-networks/nat-mode | updateServerNAT | Изменение правил маршрутизации трафика сервера (NAT) |
GET | /api/v1/servers/{server_id}/logs | getServerLogs | Получение списка логов сервера |
POST | /api/v1/servers/{server_id}/reboot | rebootServer | Перезагрузка сервера |
POST | /api/v1/servers/{server_id}/reset-password | resetServerPassword | Сброс пароля сервера |
POST | /api/v1/servers/{server_id}/shutdown | shutdownServer | Выключение сервера |
POST | /api/v1/servers/{server_id}/start | startServer | Запуск сервера |
GET | /api/v1/servers/{server_id}/statistics | getServerStatistics | Получение статистики сервера |
GET | /api/v1/servers/{server_id}/statistics/{time_from}/{period}/{keys} | getServerStatisticsNew | Получение статистики сервера |
GET | /api/v1/software/servers | getSoftware | Получение списка ПО из маркетплейса |
VPC
Cargo feature: vpc · operations: 7
| Method | Path | Function | Summary |
|---|---|---|---|
DELETE | /api/v1/vpcs/{vpc_id} | deleteVPC | Удаление VPC по ID сети |
GET | /api/v1/vpcs/{vpc_id}/ports | getVPCPorts | Получение списка портов для VPC |
GET | /api/v2/vpcs | getVPCs | Получение списка VPCs |
POST | /api/v2/vpcs | createVPC | Создание VPC |
GET | /api/v2/vpcs/{vpc_id} | getVPC | Получение VPC |
PATCH | /api/v2/vpcs/{vpc_id} | updateVPCs | Изменение VPC по ID сети |
GET | /api/v2/vpcs/{vpc_id}/services | getVPCServices | Получение списка сервисов в VPC |
Architecture
The SDK has three layers. Only the middle one is generated.
The generated layer
src/apis and src/models come out of openapi-generator with the rust
generator and the reqwest library. The generator is pinned to a version in
openapitools.json, so a regeneration produces the same code.
Every operation is a free async function that takes a Configuration and
returns Result<T, Error<E>>. Every model is a serde struct with the
constructors the generator emits.
The normalizer
The vendor’s specification is not quite what the generator expects. The normalizer is a set of passes that reconcile it before the generation:
- Path parameters. A parameter declared
in: pathwhose name has no{placeholder}in the route makes the generator emit an unused format argument; a{placeholder}without a declared parameter makes it reference an undefined variable. The passes reconcile the two, and add the missing declarations. - Tags. Every tag is written in Russian, which the generator cannot turn
into Rust module names — all operations would collapse into a single
default_apimodule. The English name of every tag is carried inx-name-i18n, and the passes put it in place. - Unions. The generator renders a union of a string and a list as an empty
struct, and names the variants of a union after the item type, which produces
identifiers like
ArrayVecstd::collections::HashMap(...). The passes rewrite the shapes the generator cannot render. - Responses.
response_idis a requireduuidupstream, while the API returnsnullon some endpoints; several documented bodies contradict their own schema. The passes relax those schemas.
The normalizer is idempotent: running it twice produces the same document.
The model patcher
The generator follows the specification to the letter, and the live API is more forgiving than the specification. The patcher repairs the difference in the generated models:
- Nullable fields. A nullable property the generator emits as
Option<T>withdeserialize_with = "Option::deserialize"is still mandatory forserde: a response that omits the field fails with “missing fieldx”. The patcher addsdefault, so an absent field deserializes toNonewhile a presentnullkeeps mapping toNone. - Timestamps. The API sends some timestamps without a UTC offset, which the
strict
chrono::DateTime<FixedOffset>deserializer rejects. The patched fields use the tolerant deserializers of the crate, which accept both shapes. - The panic. The generated
parse_deep_objectaborts the process when it is handed a value that is not an object. The patched version returns an empty list.
The hand-written layer
Five small modules carry everything the generator cannot:
| Module | What it does |
|---|---|
client.rs | The constructors: the base URLs, the token, the timeout. |
retry.rs | TimewebClient, RetryPolicy, the jitter and Retry-After. |
pagination.rs | paginate, the stream over the offset pagination. |
error_body.rs | ErrorDetails, the uniform envelope of the API. |
datetime.rs | The deserializers that accept a timestamp with or without an offset. |
A call goes through those modules in a straight line: the client decides whether
a failure is worth another attempt, the generated operation builds the request,
and reqwest carries it to the API.
The pipeline
The whole generation is reproducible and lives in the xtask crate:
cargo xtask normalize-spec openapi/timeweb-cloud.json /tmp/normalized.json
# … openapi-generator …
cargo xtask layout
cargo xtask feature-gates
cargo xtask patch-models
cargo xtask example-tests
cargo xtask api-index
cargo xtask readme
cargo +nightly fmt --all
The CI checks that the committed code matches the pipeline on every pull request, so a hand edit of the generated code cannot slip through.
The weekly sync
A scheduled workflow compares the vendored specification with the upstream
bundle. When the API changes, it regenerates the client, summarizes the API
diff with oasdiff, opens a pull request and merges it once CI is green —
unless cargo-semver-checks finds breaking changes, in which case the pull
request stays open for review.
Support
timeweb-rs is free and open source. If it saved you time, you can say
thanks.
Bank transfer
Crypto
Double-check the network before sending — funds sent on the wrong network are unrecoverable.
| Asset | Network | Address |
|---|---|---|
| USDT | TRC-20 (Tron) | TBaHhbUDgk1NX6XvcE5fhGKTtQbGY5K8zG |
| USDT | ERC-20 (Ethereum) | 0xD653E9c96910D44923027bB0365Ca4A8f580894F |
| ETH | ERC-20 (Ethereum) | 0xD653E9c96910D44923027bB0365Ca4A8f580894F |
| TON | TON | UQAGpZjkvVwwHbHMSQOwyPtTA_1hUlvAHwmPfykWgxDtT3c8 |
Other ways to help
- Open an issue or a pull request.
- Tell someone about the SDK.