Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

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:

AreaFeatureAreaFeature
account_apiaccountknowledge_bases_apiknowledge-bases
ai_agent_integrations_apiai-agent-integrationskubernetes_apikubernetes
ai_agent_skills_apiai-agent-skillslocations_apilocations
ai_agents_apiai-agentsmail_apimail
ai_gateway_apiai-gatewaymcp_apimcp
ai_gateway_inference_apiai-gateway-inferencenetwork_drives_apinetwork-drives
ai_models_apiai-modelspayments_apipayments
ai_solutions_apiai-solutionsprojects_apiprojects
apps_apiappsrouters_apirouters
balancers_apibalancerss3_apis3
cdn_apicdnservers_apiservers
container_registry_apicontainer-registryssh_apissh
databases_apidatabasesvpc_apivpc
dedicated_servers_apidedicated-servers
domains_apidomains
firewall_apifirewall
floating_ip_apifloating-ip
images_apiimages

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 a 4xx or 5xx. 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 5xx response.

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

AreaModuleHostPaths
Gateway managementai_gateway_apiapi.timeweb.cloud/api/v1/cloud-ai/…
Inferenceai_gateway_inference_apiapi.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

MethodPathFunctionSummary
DELETE/api/v1/cloud-ai/agent/{agent_id}/crispdeleteAgentIntegrationCrispОтключение агента от Crisp
GET/api/v1/cloud-ai/agent/{agent_id}/crispgetAgentIntegrationCrispПолучение интеграции агента с Crisp
POST/api/v1/cloud-ai/agent/{agent_id}/crispcreateAgentIntegrationCrispПодключение агента к Crisp
DELETE/api/v1/cloud-ai/agent/{agent_id}/jivodeleteAgentIntegrationJivoОтключение агента от Jivo
GET/api/v1/cloud-ai/agent/{agent_id}/jivogetAgentIntegrationJivoПолучение интеграции агента с Jivo
POST/api/v1/cloud-ai/agent/{agent_id}/jivocreateAgentIntegrationJivoПодключение агента к Jivo
GET/api/v1/cloud-ai/agents/{agent_id}/botsgetAgentBotTelegramBotsByAgentПолучение списка Telegram-ботов агента
GET/api/v1/cloud-ai/agents/{agent_id}/max-botsgetAgentBotMaxBotsByAgentПолучение списка ботов MAX агента
GET/api/v1/cloud-ai/botsgetAgentBotTelegramBotsПолучение списка Telegram-ботов
POST/api/v1/cloud-ai/botscreateAgentBotTelegramBotПодключение 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-botsgetAgentBotMaxBotsПолучение списка ботов MAX
POST/api/v1/cloud-ai/max-botscreateAgentBotMaxBotПодключение бота 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

MethodPathFunctionSummary
GET/api/v1/cloud-ai/agents/{agent_id}/skillsgetAgentSkillsForAgentПолучение навыков агента
POST/api/v1/cloud-ai/agents/{agent_id}/skills/connectconnectAgentSkillsToAgentПодключение нескольких навыков к агенту
POST/api/v1/cloud-ai/agents/{agent_id}/skills/install-and-connectinstallAndConnectAgentSkillУстановка навыка из каталога и включение у агента
POST/api/v1/cloud-ai/agents/{agent_id}/skills/sync-versionssyncAgentSkillVersionsForAgentПеревод всех навыков агента на текущие версии
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-versionupdateAgentSkillVersionForAgentПеревод агента на текущую версию навыка
GET/api/v1/cloud-ai/skill-cataloggetAgentSkillCatalogПолучение каталога навыков
POST/api/v1/cloud-ai/skill-catalog/{catalog_item_id}/installinstallAgentSkillFromCatalogУстановка навыка из каталога
GET/api/v1/cloud-ai/skillsgetAgentSkillLibraryПолучение списка навыков
POST/api/v1/cloud-ai/skillscreateAgentSkillСоздание навыка
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-versionssyncAgentSkillAgentsVersionsПеревод всех агентов навыка на текущую версию
POST/api/v1/cloud-ai/skills/{skill_id}/apply-catalog-updateapplyAgentSkillCatalogUpdateПрименение обновления навыка из каталога
POST/api/v1/cloud-ai/skills/{skill_id}/duplicateduplicateAgentSkillКопирование навыка
GET/api/v1/cloud-ai/skills/{skill_id}/versionsgetAgentSkillVersionsПолучение истории версий навыка
GET/api/v1/cloud-ai/skills/{skill_id}/versions/{version}getAgentSkillVersionПолучение версии навыка
POST/api/v1/cloud-ai/skills/{skill_id}/versions/{version}/rollbackrollbackAgentSkillVersionПереключение навыка на версию из истории

AI Agents

Cargo feature: ai-agents · operations: 20

MethodPathFunctionSummary
GET/api/v1/cloud-ai/agentsgetAgentsПолучение списка AI агентов
POST/api/v1/cloud-ai/agentscreateAgentСоздание 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-packageaddAdditionalTokenPackageДобавление дополнительного пакета токенов
GET/api/v1/cloud-ai/agents/{id}/chat-listgetAgentChatListПолучение списка чатов агента
GET/api/v1/cloud-ai/agents/{id}/chat-list/{chat_id}/messagesgetAgentChatMessagesПолучение сообщений чата агента
GET/api/v1/cloud-ai/agents/{id}/chats/docsexportAgentChatsCsvВыгрузка чатов агента в CSV
GET/api/v1/cloud-ai/agents/{id}/entity-limitsgetAgentEntityLimitsПолучение лимитов агента
POST/api/v1/cloud-ai/agents/{id}/entity-limitscreateAgentEntityLimitСоздание лимита агента
PUT/api/v1/cloud-ai/agents/{id}/entity-limits/syncsyncAgentEntityLimitsСинхронизация лимитов агента за период
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}/modelchangeAgentModelСмена модели AI агента
GET/api/v1/cloud-ai/agents/{id}/statisticgetAgentStatisticsПолучение статистики использования токенов агента
POST/api/v2/cloud-ai/agentscreateAgentV2Создание AI агента
GET/api/v3/cloud-ai/agentsgetAgentsV3Получение списка AI агентов (v3)
GET/api/v3/cloud-ai/agents/{id}getAgentV3Получение AI агента (v3)

AI Gateway

Cargo feature: ai-gateway · operations: 14

MethodPathFunctionSummary
GET/api/v1/cloud-ai/ai-keysgetAiKeysПолучение списка ключей AI Gateway
POST/api/v1/cloud-ai/ai-keyscreateAiKeyСоздание ключа AI Gateway
GET/api/v1/cloud-ai/ai-keys/statistic/callsgetAiKeyCallsStatisticПолучение статистики запросов ключа AI Gateway
GET/api/v1/cloud-ai/ai-keys/statistic/modelsgetAiKeyModelsStatisticПолучение списка моделей, использованных ключом AI Gateway
GET/api/v1/cloud-ai/ai-keys/statistic/token-usagegetAiKeyTokenUsageStatisticПолучение статистики расхода токенов ключа 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-limitsgetAiKeyLimitsПолучение списка лимитов ключа AI Gateway
POST/api/v1/cloud-ai/ai-keys/{key_id}/entity-limitscreateAiKeyLimitСоздание лимита ключа AI Gateway
PUT/api/v1/cloud-ai/ai-keys/{key_id}/entity-limits/syncsyncAiKeyLimitsСинхронизация лимитов ключа 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}/regenerateregenerateAiKeyПеревыпуск ключа AI Gateway

AI Gateway Inference

Cargo feature: ai-gateway-inference · operations: 20

MethodPathFunctionSummary
POST/v1/audio/speechcreateAiGatewaySpeechСинтез речи
POST/v1/audio/transcriptionscreateAiGatewayTranscriptionРаспознавание речи
GET/v1/batchesgetAiGatewayBatchesПолучение списка батчей
POST/v1/batchescreateAiGatewayBatchСоздание батча
GET/v1/batches/{batch_id}getAiGatewayBatchПолучение батча
POST/v1/batches/{batch_id}/cancelcancelAiGatewayBatchОтмена батча
POST/v1/chat/completionscreateAiGatewayChatCompletionГенерация ответа в диалоге (Chat Completions)
POST/v1/completionscreateAiGatewayCompletionПродолжение текста (Completions)
POST/v1/embeddingscreateAiGatewayEmbeddingПолучение эмбеддингов
POST/v1/filesuploadAiGatewayFileЗагрузка файла
DELETE/v1/files/{file_id}deleteAiGatewayFileУдаление файла
GET/v1/files/{file_id}getAiGatewayFileПолучение информации о файле
GET/v1/files/{file_id}/contentdownloadAiGatewayFileContentСкачивание файла
POST/v1/images/editscreateAiGatewayImageEditРедактирование изображений
POST/v1/images/generationscreateAiGatewayImageГенерация изображений
GET/v1/modelsgetAiGatewayModelsПолучение списка моделей AI Gateway
POST/v1/responsescreateAiGatewayResponseСоздание ответа (Responses API)
DELETE/v1/responses/{response_id}deleteAiGatewayResponseУдаление ответа (Responses API)
GET/v1/responses/{response_id}getAiGatewayResponseПолучение ответа (Responses API)
POST/v1/responses/{response_id}/cancelcancelAiGatewayResponseОтмена фонового ответа (Responses API)

AI Models

Cargo feature: ai-models · operations: 8

MethodPathFunctionSummary
GET/api/v1/cloud-ai/modelsgetModelsПолучение списка моделей (v1)
GET/api/v1/cloud-ai/models/{id}/token-packagesgetAiModelTokenPackagesПолучение пакетов токенов модели
GET/api/v1/cloud-ai/providersgetAiProvidersПолучение списка провайдеров моделей
GET/api/v1/cloud-ai/providers/{id}getAiProviderПолучение провайдера моделей
GET/api/v1/cloud-ai/token-packages/agentsgetAgentsTokenPackagesПолучение списка пакетов токенов для агентов
GET/api/v1/cloud-ai/token-packages/knowledge-basesgetKnowledgebasesTokenPackagesПолучение списка пакетов токенов для баз знаний
GET/api/v3/cloud-ai/model-parametersgetAiModelParametersПолучение справочника характеристик моделей
GET/api/v3/cloud-ai/modelsgetModelsV3Получение списка моделей

AI Solutions

Cargo feature: ai-solutions · operations: 22

MethodPathFunctionSummary
GET/api/v1/cloud-ai/solutionslistAiSolutionsПолучение списка AI-решений
POST/api/v1/cloud-ai/solutionscreateAiSolutionСоздание AI-решения
GET/api/v1/cloud-ai/solutions/typeslistAiSolutionTypesПолучение списка типов 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/regenerateregenerateAiSolutionAiKeyПеревыпуск ключа AI Gateway решения
GET/api/v1/cloud-ai/solutions/{solution_id}/chat/conversationslistAiSolutionConversationsПолучение списка разговоров AI-решения
GET/api/v1/cloud-ai/solutions/{solution_id}/chat/conversations/{conversation_id}/messagesgetAiSolutionChatHistoryПолучение истории разговора AI-решения
GET/api/v1/cloud-ai/solutions/{solution_id}/chat/historygetAiSolutionChatFullHistoryПолучение всей истории чата AI-решения
GET/api/v1/cloud-ai/solutions/{solution_id}/chat/messagesgetAiSolutionMainChatHistoryПолучение истории основного разговора AI-решения
POST/api/v1/cloud-ai/solutions/{solution_id}/chat/messagessendAiSolutionMessageОтправка сообщения агенту AI-решения
POST/api/v1/cloud-ai/solutions/{solution_id}/chat/resetresetAiSolutionChatСброс контекста разговора AI-решения
GET/api/v1/cloud-ai/solutions/{solution_id}/chat/statusgetAiSolutionChatStatusПолучение статуса чата AI-решения
POST/api/v1/cloud-ai/solutions/{solution_id}/chat/stopstopAiSolutionChatОстановка хода агента AI-решения
POST/api/v1/cloud-ai/solutions/{solution_id}/chat/streamstreamAiSolutionChatОтправка сообщения агенту AI-решения с потоковым ответом
POST/api/v1/cloud-ai/solutions/{solution_id}/shutdownshutdownAiSolutionВыключение AI-решения
POST/api/v1/cloud-ai/solutions/{solution_id}/startstartAiSolutionЗапуск AI-решения
GET/api/v1/cloud-ai/solutions/{solution_id}/telegram/botslistAiSolutionTelegramBotsПолучение списка Telegram-ботов AI-решения
POST/api/v1/cloud-ai/solutions/{solution_id}/telegram/botsaddAiSolutionTelegramBotПодключение 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/approveapproveAiSolutionTelegramPairingПодтверждение владельца Telegram-бота AI-решения

Account

Cargo feature: account · operations: 11

MethodPathFunctionSummary
GET/api/v1/account/notification-settingsgetNotificationSettingsПолучение настроек уведомлений аккаунта
PATCH/api/v1/account/notification-settingsupdateNotificationSettingsИзменение настроек уведомлений аккаунта
GET/api/v1/account/statusgetAccountStatusПолучение статуса аккаунта
GET/api/v1/auth/accessgetAuthAccessSettingsПолучить информацию о ограничениях авторизации пользователя
DELETE/api/v1/auth/access/countriesdeleteCountriesFromAllowedListУдаление стран из списка разрешенных
GET/api/v1/auth/access/countriesgetCountriesПолучение списка стран
POST/api/v1/auth/access/countriesaddCountriesToAllowedListДобавление стран в список разрешенных
POST/api/v1/auth/access/countries/enabledupdateAuthRestrictionsByCountriesВключение/отключение ограничений по стране
DELETE/api/v1/auth/access/ipsdeleteIPsFromAllowedListУдаление IP-адресов из списка разрешенных
POST/api/v1/auth/access/ipsaddIPsToAllowedListДобавление IP-адресов в список разрешенных
POST/api/v1/auth/access/ips/enabledupdateAuthRestrictionsByIPВключение/отключение ограничений по IP-адресу

Apps

Cargo feature: apps · operations: 22

MethodPathFunctionSummary
GET/api/v1/appsgetAppsПолучение списка приложений
POST/api/v1/appscreateAppСоздание приложения
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}/deploycreateDeployЗапуск деплоя приложения
GET/api/v1/apps/{app_id}/deploy/{deploy_id}/logsgetDeployLogsПолучение логов деплоя приложения
POST/api/v1/apps/{app_id}/deploy/{deploy_id}/stopdeployActionОстановка деплоя приложения
GET/api/v1/apps/{app_id}/deploysgetAppDeploysПолучение списка деплоев приложения
GET/api/v1/apps/{app_id}/logsgetAppLogsПолучение логов приложения
GET/api/v1/apps/{app_id}/statisticsgetAppStatisticsПолучение статистики приложения
GET/api/v1/deploy-settings/appsgetDeploySettingsПолучение списка дефолтных настроек деплоя для приложения
GET/api/v1/frameworks/appsgetFrameworksПолучение списка доступных фреймворков для приложения
GET/api/v1/presets/appsgetAppsPresetsПолучение списка доступных тарифов для приложения
GET/api/v1/vcs-providergetProvidersПолучение списка vcs провайдеров
POST/api/v1/vcs-provideraddProviderПривязка 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}/branchgetCommitsПолучение списка коммитов ветки репозитория
POST/api/v2/appscreateAppV2Создание приложения (v2)

Balancers

Cargo feature: balancers · operations: 13

MethodPathFunctionSummary
GET/api/v1/balancersgetBalancersПолучение списка всех бaлансировщиков
POST/api/v1/balancerscreateBalancerСоздание б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}/ipsdeleteIPsFromBalancerУдаление IP-адресов из балансировщика
GET/api/v1/balancers/{balancer_id}/ipsgetBalancerIPsПолучение списка IP-адресов балансировщика
POST/api/v1/balancers/{balancer_id}/ipsaddIPsToBalancerДобавление IP-адресов к балансировщику
GET/api/v1/balancers/{balancer_id}/rulesgetBalancerRulesПолучение правил балансировщика
POST/api/v1/balancers/{balancer_id}/rulescreateBalancerRuleСоздание правила для балансировщика
DELETE/api/v1/balancers/{balancer_id}/rules/{rule_id}deleteBalancerRuleУдаление правила для балансировщика
PATCH/api/v1/balancers/{balancer_id}/rules/{rule_id}updateBalancerRuleОбновление правила для балансировщика
GET/api/v1/presets/balancersgetBalancersPresetsПолучение списка тарифов для балансировщика

CDN

Cargo feature: cdn · operations: 20

MethodPathFunctionSummary
GET/api/v1/cdn/certificatesgetCdnCertificatesПолучение списка сертификатов CDN
POST/api/v1/cdn/certificatesaddCdnCertificateЗагрузка собственного сертификата CDN
POST/api/v1/cdn/certificates/issueissueCdnCertificateВыпуск сертификата Let’s Encrypt для CDN-ресурса
GET/api/v1/cdn/certificates/tasksgetCdnCertificateTasksПолучение списка задач на выпуск сертификатов
POST/api/v1/cdn/certificates/tasks/{task_id}/archivearchiveCdnCertificateTaskАрхивация задачи на выпуск сертификата
DELETE/api/v1/cdn/certificates/{certificate_id}deleteCdnCertificateУдаление сертификата CDN
GET/api/v1/cdn/http-resourcesgetCdnResourcesПолучение списка CDN-ресурсов
POST/api/v1/cdn/http-resourcescreateCdnResourceСоздание 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-cacheclearCdnResourceCacheОчистка кэша CDN-ресурса
GET/api/v1/cdn/http-resources/{resource_id}/configurationgetCdnResourceConfigurationПолучение конфигурации CDN-ресурса
POST/api/v1/cdn/http-resources/{resource_id}/preload-cachepreloadCdnResourceCacheПредварительная загрузка кэша CDN-ресурса
POST/api/v1/cdn/http-resources/{resource_id}/resumeresumeCdnResourceВозобновление раздачи CDN-ресурса
GET/api/v1/cdn/http-resources/{resource_id}/statisticsgetCdnResourceStatisticsПолучение статистики CDN-ресурса
POST/api/v1/cdn/http-resources/{resource_id}/suspendsuspendCdnResourceПриостановка раздачи CDN-ресурса
GET/api/v1/cdn/nodes/http-resources/{resource_id}getCdnResourceNodesПолучение списка раздающих узлов CDN-ресурса
GET/api/v1/cdn/nodes/origingetCdnOriginNodesПолучение списка подсетей узлов CDN
GET/api/v1/cdn/presetsgetCdnPresetsПолучение списка тарифов CDN

Container Registry

Cargo feature: container-registry · operations: 7

MethodPathFunctionSummary
GET/api/v1/container-registrygetRegistriesПолучение списка реестров контейнеров
POST/api/v1/container-registrycreateRegistryСоздание реестра
GET/api/v1/container-registry/presetsgetRegistryPresetsПолучение списка тарифов
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}/repositoriesgetRegistryRepositoriesПолучение списка репозиториев

Databases

Cargo feature: databases · operations: 40

MethodPathFunctionSummary
GET/api/v1/configurator/databasesgetDatabaseConfiguratorsПолучение списка конфигураторов баз данных
GET/api/v1/database-typesgetDatabaseClusterTypesПолучение списка типов кластеров баз данных
GET/api/v1/databasesgetDatabaseClustersПолучение списка кластеров баз данных
POST/api/v1/databasescreateDatabaseClusterСоздание кластера базы данных
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}/actionperformDatabaseClusterActionВыполнение действия над кластером базы данных
GET/api/v1/databases/{db_cluster_id}/adminsgetDatabaseUsersПолучение списка пользователей базы данных
POST/api/v1/databases/{db_cluster_id}/adminscreateDatabaseUserСоздание пользователя базы данных
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}/instancesgetDatabaseInstancesПолучение списка инстансов баз данных
POST/api/v1/databases/{db_cluster_id}/instancescreateDatabaseInstanceСоздание инстанса базы данных
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}/privilegesgetDatabasePrivilegesПолучение привилегий кластера базы данных
GET/api/v1/databases/{db_cluster_id}/replicasgetDatabaseClusterReplicasПолучение списка реплик кластера базы данных
GET/api/v1/dbs/default-parametersgetDatabaseDefaultParametersПолучение рекомендуемых значений параметров баз данных
GET/api/v1/dbs/parametersgetDatabaseParametersПолучение списка параметров баз данных
GET/api/v1/dbs/{db_id}/auto-backupsgetDatabaseAutoBackupsSettingsПолучение настроек автобэкапов базы данных
PATCH/api/v1/dbs/{db_id}/auto-backupsupdateDatabaseAutoBackupsSettingsИзменение настроек автобэкапов базы данных
GET/api/v1/dbs/{db_id}/backupsgetDatabaseBackupsСписок бэкапов базы данных
POST/api/v1/dbs/{db_id}/backupscreateDatabaseBackupСоздание бэкапа базы данных
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-urlcreateDatabaseBackupDownloadUrlПолучение ссылки для скачивания бэкапа базы данных
PATCH/api/v2/databases/{db_cluster_id}updateDatabaseClusterV2Изменение кластера базы данных (v2)
GET/api/v2/databases/{db_id}/backupsgetDatabaseS3BackupsСписок S3-бэкапов базы данных
POST/api/v2/databases/{db_id}/backupscreateDatabaseS3BackupСоздание 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}/restorerestoreDatabaseFromS3BackupВосстановление базы данных из S3-бэкапа
GET/api/v2/dbs/presets/{preset_id}getDatabasePresetПолучение тарифа для базы данных
GET/api/v2/presets/dbsgetDatabasesPresetsПолучение списка тарифов для баз данных

Dedicated servers

Cargo feature: dedicated-servers · operations: 7

MethodPathFunctionSummary
GET/api/v1/dedicated-serversgetDedicatedServersПолучение списка выделенных серверов
POST/api/v1/dedicated-serverscreateDedicatedServerСоздание выделенного сервера
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-serversgetDedicatedServersPresetsПолучение списка тарифов для выделенного сервера
GET/api/v1/presets/dedicated-servers/{preset_id}/additional-servicesgetDedicatedServerPresetAdditionalServicesПолучение дополнительных услуг для выделенного сервера

Domains

Cargo feature: domains · operations: 29

MethodPathFunctionSummary
POST/api/v1/add-domain/{fqdn}addDomainДобавление домена на аккаунт
GET/api/v1/check-domain/{fqdn}checkDomainПроверить, доступен ли домен для регистрации
GET/api/v1/domainsgetDomainsПолучение списка всех доменов
GET/api/v1/domains-requestsgetDomainRequestsПолучение списка заявок на регистрацию/продление/трансфер домена
POST/api/v1/domains-requestscreateDomainRequestСоздание заявки на регистрацию/продление/трансфер домена
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-recordsgetDomainDefaultDNSRecordsПолучить информацию обо всех DNS-записях по умолчанию домена или поддомена
GET/api/v1/domains/{fqdn}/dns-recordsgetDomainDNSRecordsПолучить информацию обо всех пользовательских DNS-записях домена или поддомена
POST/api/v1/domains/{fqdn}/dns-recordscreateDomainDNSRecordДобавить информацию о 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-serversgetDomainNameServersПолучение списка name-серверов домена
PUT/api/v1/domains/{fqdn}/name-serversupdateDomainNameServersИзменение name-серверов домена
DELETE/api/v1/domains/{fqdn}/subdomains/{subdomain}deleteSubdomainУдаление поддомена
POST/api/v1/domains/{fqdn}/subdomains/{subdomain}addSubdomainДобавление поддомена
GET/api/v1/personsgetPersonsПолучение списка администраторов доменов
POST/api/v1/personscreatePersonСоздание администратора доменов
DELETE/api/v1/persons/{person_id}deletePersonУдаление администратора доменов
GET/api/v1/persons/{person_id}getPersonПолучение администратора доменов
PUT/api/v1/persons/{person_id}updatePersonОбновление контактных данных администратора доменов
GET/api/v1/tldsgetTLDsПолучить информацию о доменных зонах
GET/api/v1/tlds/{tld_id}getTLDПолучить информацию о доменной зоне по ID
POST/api/v2/domains/{fqdn}/dns-recordscreateDomainDNSRecordV2Добавить информацию о 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

MethodPathFunctionSummary
GET/api/v1/firewall/groupsgetGroupsПолучение групп правил
POST/api/v1/firewall/groupscreateGroupСоздание группы правил
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}/resourcesgetGroupResourcesПолучение слинкованных ресурсов
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}/rulesgetGroupRulesПолучение списка правил
POST/api/v1/firewall/groups/{group_id}/rulescreateGroupRuleСоздание 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

MethodPathFunctionSummary
GET/api/v1/floating-ipsgetFloatingIpsПолучение списка плавающих IP
POST/api/v1/floating-ipscreateFloatingIpСоздание плавающего 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}/bindbindFloatingIpПривязать IP к сервису
POST/api/v1/floating-ips/{floating_ip_id}/unbindunbindFloatingIpОтвязать IP от сервиса

Images

Cargo feature: images · operations: 10

MethodPathFunctionSummary
GET/api/v1/imagesgetImagesПолучение списка образов
POST/api/v1/imagescreateImageСоздание образа
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-urlgetImageDownloadURLsПолучение информации о ссылках на скачивание образов
POST/api/v1/images/{image_id}/download-urlcreateImageDownloadUrlСоздание ссылки на скачивание образа
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

MethodPathFunctionSummary
GET/api/v1/cloud-ai/knowledge-basesgetKnowledgebasesПолучение списка баз знаний (v1)
POST/api/v1/cloud-ai/knowledge-basescreateKnowledgebaseСоздание базы знаний
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-packageaddAdditionalTokenPackageToKnowledgebaseПокупка дополнительных пакетов токенов
POST/api/v1/cloud-ai/knowledge-bases/{id}/documentscreateKnowledgebaseDocumentДобавление документа по ссылке
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}/downloaddownloadDocumentСкачивание файла документа
POST/api/v1/cloud-ai/knowledge-bases/{id}/documents/{document_id}/reindexreindexDocumentПереиндексация документа
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}/uploaduploadFilesToKnowledgebaseЗагрузка файлов в базу знаний
GET/api/v2/cloud-ai/knowledge-basesgetKnowledgebasesV2Получение списка баз знаний (v2)
GET/api/v2/cloud-ai/knowledge-bases/{id}/documentsgetKnowledgebaseDocumentsV2Получение списка документов базы знаний
GET/api/v3/cloud-ai/knowledge-basesgetKnowledgebasesV3Получение списка баз знаний
GET/api/v3/cloud-ai/knowledge-bases/{id}getKnowledgebaseV3Получение базы знаний

Kubernetes

Cargo feature: kubernetes · operations: 25

MethodPathFunctionSummary
GET/api/v1/k8s/clustersgetClustersПолучение списка кластеров
POST/api/v1/k8s/clusterscreateClusterСоздание кластера
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}/addonsgetKubernetesAddonsПолучение списка установленных дополнений
POST/api/v1/k8s/clusters/{cluster_id}/addonspostKubernetesAddonsУстановка дополнения
GET/api/v1/k8s/clusters/{cluster_id}/addons-configsgetKubernetesAddonsConfigПолучение списка конфигураций дополнений
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}/groupsgetClusterNodeGroupsПолучение групп нод кластера
POST/api/v1/k8s/clusters/{cluster_id}/groupscreateClusterNodeGroupСоздание группы нод
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}/nodesreduceCountOfNodesInGroupУменьшение количества нод в группе на указанное количество
GET/api/v1/k8s/clusters/{cluster_id}/groups/{group_id}/nodesgetClusterNodesFromGroupПолучение списка нод, принадлежащих группе
POST/api/v1/k8s/clusters/{cluster_id}/groups/{group_id}/nodesincreaseCountOfNodesInGroupУвеличение количества нод в группе на указанное количество
GET/api/v1/k8s/clusters/{cluster_id}/kubeconfiggetClusterKubeconfigПолучение файла kubeconfig
GET/api/v1/k8s/clusters/{cluster_id}/nodesgetClusterNodesПолучение списка нод
DELETE/api/v1/k8s/clusters/{cluster_id}/nodes/{node_id}deleteClusterNodeУдаление ноды
GET/api/v1/k8s/clusters/{cluster_id}/resourcesgetClusterResourcesПолучение ресурсов кластера
PATCH/api/v1/k8s/clusters/{cluster_id}/versions/updateupdateClusterVersionОбновление версии кластера
GET/api/v1/k8s/k8s-versionsgetK8SVersionsПолучение списка версий k8s
GET/api/v1/k8s/network-driversgetK8SNetworkDriversПолучение списка сетевых драйверов k8s
GET/api/v1/presets/k8sgetKubernetesPresetsПолучение списка тарифов

Locations

Cargo feature: locations · operations: 1

MethodPathFunctionSummary
GET/api/v2/locationsgetLocationsПолучение списка локаций

MCP

Cargo feature: mcp · operations: 20

MethodPathFunctionSummary
GET/api/v1/cloud-ai/agents/{agent_id}/toolsgetAgentToolsByAgentПолучение MCP-инструментов агента
POST/api/v1/cloud-ai/agents/{agent_id}/toolsconnectAgentToolToAgentПодключение 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/toolsgetAgentToolsПолучение списка MCP-инструментов
POST/api/v1/cloud-ai/toolscreateAgentToolПодключение собственного MCP-сервера
POST/api/v1/cloud-ai/tools/installinstallAgentToolFromTemplateУстановка MCP-инструмента из маркетплейса
GET/api/v1/cloud-ai/tools/oauth2/authorize-url/{tool_id}getAgentToolOAuth2AuthorizeUrlПолучение ссылки на OAuth2-авторизацию инструмента
GET/api/v1/cloud-ai/tools/templates/marketplacegetAgentToolTemplatesПолучение шаблонов MCP-инструментов из маркетплейса
GET/api/v1/cloud-ai/tools/templates/pricesgetAgentToolTemplatePricesПолучение цен системных инструментов
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-methodsrefreshAgentToolMethodsОбновление списка методов MCP-инструмента
DELETE/api/v1/mcpdeleteMcpSessionЗавершение сессии сервера MCP
GET/api/v1/mcpopenMcpStreamОткрытие потока событий сервера MCP
POST/api/v1/mcpsendMcpMessageОтправка JSON-RPC-сообщения серверу MCP
DELETE/api/v1/mcp/searchdeleteMcpSearchSessionЗавершение сессии сервера MCP с поиском инструментов
GET/api/v1/mcp/searchopenMcpSearchStreamОткрытие потока событий сервера MCP с поиском инструментов
POST/api/v1/mcp/searchsendMcpSearchMessageОтправка JSON-RPC-сообщения серверу MCP с поиском инструментов

Mail

Cargo feature: mail · operations: 14

MethodPathFunctionSummary
GET/api/v1/mailgetMailboxesПолучение списка почтовых ящиков аккаунта
GET/api/v1/mail/domains/{domain}getDomainMailboxesПолучение списка почтовых ящиков домена
POST/api/v1/mail/domains/{domain}createDomainMailboxСоздание почтового ящика
POST/api/v1/mail/domains/{domain}/batchcreateMultipleDomainMailboxesМножественное создание почтовых ящиков
GET/api/v1/mail/domains/{domain}/infogetDomainMailInfoПолучение почтовой информации о домене
PATCH/api/v1/mail/domains/{domain}/infoupdateDomainMailInfoИзменение почтовой информации о домене
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/mailgetAllMailboxesV2Получение списка всех почтовых ящиков аккаунта
POST/api/v2/mail/domains/{domain}createDomainMailboxV2Создание почтового ящика
POST/api/v2/mail/domains/{domain}/batchcreateMultipleDomainMailboxesV2Множественное создание почтовых ящиков
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

MethodPathFunctionSummary
GET/api/v1/network-drivesgetNetworkDrivesПолучение списка cетевых дисков
POST/api/v1/network-drivescreateNetworkDriveСоздание сетевого диска
GET/api/v1/network-drives/available-resourcesgetNetworkDrivesAvailableResourcesПолучение списка сервисов доступных для подключения диска
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}/mountmountNetworkDriveПодключить сетевой диск к сервису
POST/api/v1/network-drives/{network_drive_id}/unmountunmountNetworkDriveОтключить сетевой диск от сервиса
GET/api/v1/presets/network-drivesgetNetworkDrivesPresetsПолучение списка доступных тарифов для сетевого диска

Payments

Cargo feature: payments · operations: 2

MethodPathFunctionSummary
GET/api/v1/account/financesgetFinancesПолучение платежной информации
GET/api/v1/account/services/costgetServicePricesПолучение стоимости сервисов

Projects

Cargo feature: projects · operations: 25

MethodPathFunctionSummary
GET/api/v1/projectsgetProjectsПолучение списка проектов
POST/api/v1/projectscreateProjectСоздание проекта
GET/api/v1/projects/resources/balancersgetAccountBalancersПолучение списка всех балансировщиков на аккаунте
GET/api/v1/projects/resources/bucketsgetAccountStoragesПолучение списка всех хранилищ на аккаунте
GET/api/v1/projects/resources/clustersgetAccountClustersПолучение списка всех кластеров на аккаунте
GET/api/v1/projects/resources/databasesgetAccountDatabasesПолучение списка всех баз данных на аккаунте
GET/api/v1/projects/resources/dedicatedgetAccountDedicatedServersПолучение списка всех выделенных серверов на аккаунте
GET/api/v1/projects/resources/serversgetAccountServersПолучение списка всех серверов на аккаунте
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}/resourcesgetAllProjectResourcesПолучение всех ресурсов проекта
GET/api/v1/projects/{project_id}/resources/balancersgetProjectBalancersПолучение списка балансировщиков проекта
POST/api/v1/projects/{project_id}/resources/balancersaddBalancerToProjectДобавление балансировщика в проект
GET/api/v1/projects/{project_id}/resources/bucketsgetProjectStoragesПолучение списка хранилищ проекта
POST/api/v1/projects/{project_id}/resources/bucketsaddStorageToProjectДобавление хранилища в проект
GET/api/v1/projects/{project_id}/resources/clustersgetProjectClustersПолучение списка кластеров проекта
POST/api/v1/projects/{project_id}/resources/clustersaddClusterToProjectДобавление кластера в проект
GET/api/v1/projects/{project_id}/resources/databasesgetProjectDatabasesПолучение списка баз данных проекта
POST/api/v1/projects/{project_id}/resources/databasesaddDatabaseToProjectДобавление базы данных в проект
GET/api/v1/projects/{project_id}/resources/dedicatedgetProjectDedicatedServersПолучение списка выделенных серверов проекта
POST/api/v1/projects/{project_id}/resources/dedicatedaddDedicatedServerToProjectДобавление выделенного сервера в проект
GET/api/v1/projects/{project_id}/resources/serversgetProjectServersПолучение списка серверов проекта
POST/api/v1/projects/{project_id}/resources/serversaddServerToProjectДобавление сервера в проект
PUT/api/v1/projects/{project_id}/resources/transfertransferResourceToAnotherProjectПеренести ресурс в другой проект

Routers

Cargo feature: routers · operations: 23

MethodPathFunctionSummary
GET/api/v1/presets/routersgetRouterPresetsПолучение списка тарифов роутеров
GET/api/v1/routersgetRoutersПолучение списка роутеров
POST/api/v1/routerscreateRouterСоздание роутера
GET/api/v1/routers/networks/availablegetRouterAvailableNetworksПолучение списка доступных сетей
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-rulesgetDnatПолучение списка правил проброса портов
POST/api/v1/routers/{router_id}/dnat-rulespostDnatДобавление правила проброса портов
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}/networksgetNetworksПолучение списка сетей роутера
PATCH/api/v1/routers/{router_id}/networkspatchNetworksОбновление сетей роутера
POST/api/v1/routers/{router_id}/networksaddNetworksПодключение сетей к роутеру
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}/natdeleteRouterNatВыключение NAT для сети
PATCH/api/v1/routers/{router_id}/networks/{network_name}/natupdateRouterNatВключение NAT для сети
GET/api/v1/routers/{router_id}/static-routesgetStaticRoutesПолучение списка статических маршрутов
POST/api/v1/routers/{router_id}/static-routespostStaticRouteДобавление статического маршрута
GET/api/v1/routers/{router_id}/static-routes/availablegetAvailableStaticRoutesПолучение доступных подсетей для статических маршрутов
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

MethodPathFunctionSummary
GET/api/v1/presets/storagesgetStoragesPresetsПолучение списка тарифов для хранилищ
GET/api/v1/storages/bucketsgetStoragesПолучение списка хранилищ аккаунта
POST/api/v1/storages/bucketscreateStorageСоздание хранилища
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}/subdomainsdeleteStorageSubdomainsУдаление поддоменов хранилища
GET/api/v1/storages/buckets/{bucket_id}/subdomainsgetStorageSubdomainsПолучение списка поддоменов хранилища
POST/api/v1/storages/buckets/{bucket_id}/subdomainsaddStorageSubdomainsДобавление поддоменов для хранилища
GET/api/v1/storages/buckets/{bucket_id}/transfer-statusgetStorageTransferStatusПолучение статуса переноса хранилища от стороннего S3 в Timeweb Cloud
POST/api/v1/storages/certificates/generateaddStorageSubdomainCertificateДобавление сертификата для поддомена хранилища
POST/api/v1/storages/transfertransferStorageПеренос хранилища от стороннего провайдера S3 в Timeweb Cloud
GET/api/v1/storages/usersgetStorageUsersПолучение списка пользователей хранилищ аккаунта
PATCH/api/v1/storages/users/{user_id}updateStorageUserИзменение пароля пользователя-администратора хранилища

SSH

Cargo feature: ssh · operations: 7

MethodPathFunctionSummary
POST/api/v1/servers/{server_id}/ssh-keysaddKeyToServerДобавление SSH-ключей на сервер
DELETE/api/v1/servers/{server_id}/ssh-keys/{ssh_key_id}deleteKeyFromServerУдаление SSH-ключей с сервера
GET/api/v1/ssh-keysgetKeysПолучение списка SSH-ключей
POST/api/v1/ssh-keyscreateKeyСоздание 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

MethodPathFunctionSummary
GET/api/v1/configurator/serversgetConfiguratorsПолучение списка конфигураторов серверов
GET/api/v1/os/serversgetOsListПолучение списка операционных систем
GET/api/v1/presets/serversgetServersPresetsПолучение списка тарифов серверов
GET/api/v1/restore-pointsgetRestorePointsПолучение списка снапшотов
GET/api/v1/restore-points/{vds_id}getRestorePointПолучение снапшота сервера
POST/api/v1/restore-points/{vds_id}/commitcommitRestorePointФиксация снапшота
POST/api/v1/restore-points/{vds_id}/createcreateRestorePointСоздание снапшота
POST/api/v1/restore-points/{vds_id}/rollbackrollbackRestorePointОткат к снапшоту
GET/api/v1/serversgetServersПолучение списка серверов
POST/api/v1/serverscreateServerСоздание сервера
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}/actionperformActionOnServerВыполнение действия над сервером
POST/api/v1/servers/{server_id}/boot-modeupdateServerOSBootModeВыбор типа загрузки операционной системы сервера
POST/api/v1/servers/{server_id}/clonecloneServerКлонирование сервера
GET/api/v1/servers/{server_id}/disksgetServerDisksПолучение списка дисков сервера
POST/api/v1/servers/{server_id}/diskscreateServerDiskСоздание диска сервера
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-backupsgetServerDiskAutoBackupSettingsПолучить настройки автобэкапов диска сервера
PATCH/api/v1/servers/{server_id}/disks/{disk_id}/auto-backupsupdateServerDiskAutoBackupSettingsИзменение настроек автобэкапов диска сервера
GET/api/v1/servers/{server_id}/disks/{disk_id}/backupsgetServerDiskBackupsПолучение списка бэкапов диска сервера
POST/api/v1/servers/{server_id}/disks/{disk_id}/backupscreateServerDiskBackupСоздание бэкапа диска сервера
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}/actionperformActionOnBackupВыполнение действия над бэкапом диска сервера
POST/api/v1/servers/{server_id}/disks/{disk_id}/backups/{backup_id}/download-urlcreateServerDiskBackupDownloadUrlПолучение ссылки для скачивания бэкапа диска сервера
POST/api/v1/servers/{server_id}/hard-rebootrebootServerHardПринудительная перезагрузка сервера
POST/api/v1/servers/{server_id}/hard-shutdownhardShutdownServerПринудительное выключение сервера
POST/api/v1/servers/{server_id}/image-unmountimageUnmountAndServerReloadОтмонтирование ISO образа и перезагрузка сервера
DELETE/api/v1/servers/{server_id}/ipsdeleteServerIPУдаление IP-адреса сервера
GET/api/v1/servers/{server_id}/ipsgetServerIPsПолучение списка IP-адресов сервера
PATCH/api/v1/servers/{server_id}/ipsupdateServerIPИзменение IP-адреса сервера
POST/api/v1/servers/{server_id}/ipsaddServerIPДобавление IP-адреса сервера
PATCH/api/v1/servers/{server_id}/local-networks/nat-modeupdateServerNATИзменение правил маршрутизации трафика сервера (NAT)
GET/api/v1/servers/{server_id}/logsgetServerLogsПолучение списка логов сервера
POST/api/v1/servers/{server_id}/rebootrebootServerПерезагрузка сервера
POST/api/v1/servers/{server_id}/reset-passwordresetServerPasswordСброс пароля сервера
POST/api/v1/servers/{server_id}/shutdownshutdownServerВыключение сервера
POST/api/v1/servers/{server_id}/startstartServerЗапуск сервера
GET/api/v1/servers/{server_id}/statisticsgetServerStatisticsПолучение статистики сервера
GET/api/v1/servers/{server_id}/statistics/{time_from}/{period}/{keys}getServerStatisticsNewПолучение статистики сервера
GET/api/v1/software/serversgetSoftwareПолучение списка ПО из маркетплейса

VPC

Cargo feature: vpc · operations: 7

MethodPathFunctionSummary
DELETE/api/v1/vpcs/{vpc_id}deleteVPCУдаление VPC по ID сети
GET/api/v1/vpcs/{vpc_id}/portsgetVPCPortsПолучение списка портов для VPC
GET/api/v2/vpcsgetVPCsПолучение списка VPCs
POST/api/v2/vpcscreateVPCСоздание VPC
GET/api/v2/vpcs/{vpc_id}getVPCПолучение VPC
PATCH/api/v2/vpcs/{vpc_id}updateVPCsИзменение VPC по ID сети
GET/api/v2/vpcs/{vpc_id}/servicesgetVPCServicesПолучение списка сервисов в VPC

Architecture

The SDK has three layers. Only the middle one is generated.

The vendored specification goes through the xtask pipeline into the generated layer; the hand-written layer is added on top of it, and together they are the crate.
The three layers. Click the diagram to open it full size.

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: path whose 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_api module. The English name of every tag is carried in x-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_id is a required uuid upstream, while the API returns null on 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> with deserialize_with = "Option::deserialize" is still mandatory for serde: a response that omits the field fails with “missing field x”. The patcher adds default, so an absent field deserializes to None while a present null keeps mapping to None.
  • 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_object aborts 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:

ModuleWhat it does
client.rsThe constructors: the base URLs, the token, the timeout.
retry.rsTimewebClient, RetryPolicy, the jitter and Retry-After.
pagination.rspaginate, the stream over the offset pagination.
error_body.rsErrorDetails, the uniform envelope of the API.
datetime.rsThe 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.

Your code hands a closure to TimewebClient.execute, the retry policy decides whether to wait and retry, the generated operation sends the request to api.timeweb.cloud through reqwest.
The path of one retried call.

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.

Every Monday the upstream specification is compared with the vendored file; if it is the same nothing happens, otherwise the client is regenerated and a pull request is opened, CI checks it, and it is merged unless the semver checks find a breaking change.
The weekly synchronization of the specification.

Support

timeweb-rs is free and open source. If it saved you time, you can say thanks.

Bank transfer

QR code for a transfer through T-Bank or Sberbank

Payment link

Crypto

Double-check the network before sending — funds sent on the wrong network are unrecoverable.

AssetNetworkAddress
USDTTRC-20 (Tron)TBaHhbUDgk1NX6XvcE5fhGKTtQbGY5K8zG
USDTERC-20 (Ethereum)0xD653E9c96910D44923027bB0365Ca4A8f580894F
ETHERC-20 (Ethereum)0xD653E9c96910D44923027bB0365Ca4A8f580894F
TONTONUQAGpZjkvVwwHbHMSQOwyPtTA_1hUlvAHwmPfykWgxDtT3c8

Other ways to help

  • Open an issue or a pull request.
  • Tell someone about the SDK.