diff --git a/openapi/timeweb-cloud.json b/openapi/timeweb-cloud.json
index 5600469..24bfd1c 100644
--- a/openapi/timeweb-cloud.json
+++ b/openapi/timeweb-cloud.json
@@ -1 +1 @@
-{"openapi":"3.0.0","info":{"contact":{"email":"info@timeweb.cloud"},"title":"Документация публичного API","x-title-i18n":{"eng":"Timeweb Cloud API"},"version":"1.0.0","description":"# Введение\nAPI Timeweb Cloud позволяет вам управлять ресурсами в облаке программным способом с использованием обычных HTTP-запросов.\n\nМножество функций, которые доступны в панели управления Timeweb Cloud, также доступны через API, что позволяет вам автоматизировать ваши собственные сценарии.\n\nВ этой документации сперва будет описан общий дизайн и принципы работы API, а после этого конкретные конечные точки. Также будут приведены примеры запросов к ним.\n\n\n## Запросы\nЗапросы должны выполняться по протоколу `HTTPS`, чтобы гарантировать шифрование транзакций. Поддерживаются следующие методы запроса:\n|Метод|Применение|\n|--- |--- |\n|GET|Извлекает данные о коллекциях и отдельных ресурсах.|\n|POST|Для коллекций создает новый ресурс этого типа. Также используется для выполнения действий с конкретным ресурсом.|\n|PUT|Обновляет существующий ресурс.|\n|PATCH|Некоторые ресурсы поддерживают частичное обновление, то есть обновление только части атрибутов ресурса, в этом случае вместо метода PUT будет использован PATCH.|\n|DELETE|Удаляет ресурс.|\n\nМетоды `POST`, `PUT` и `PATCH` могут включать объект в тело запроса с типом содержимого `application/json`.\n\n### Параметры в запросах\nНекоторые коллекции поддерживают пагинацию, поиск или сортировку в запросах. В параметрах запроса требуется передать:\n- `limit` — обозначает количество записей, которое необходимо вернуть\n - `offset` — указывает на смещение, относительно начала списка\n - `search` — позволяет указать набор символов для поиска\n - `sort` — можно задать правило сортировки коллекции\n\n## Ответы\nЗапросы вернут один из следующих кодов состояния ответа HTTP:\n\n|Статус|Описание|\n|--- |--- |\n|200 OK|Действие с ресурсом было выполнено успешно.|\n|201 Created|Ресурс был успешно создан. При этом ресурс может быть как уже готовым к использованию, так и находиться в процессе запуска.|\n|204 No Content|Действие с ресурсом было выполнено успешно, и ответ не содержит дополнительной информации в теле.|\n|400 Bad Request|Был отправлен неверный запрос, например, в нем отсутствуют обязательные параметры и т. д. Тело ответа будет содержать дополнительную информацию об ошибке.|\n|401 Unauthorized|Ошибка аутентификации.|\n|403 Forbidden|Аутентификация прошла успешно, но недостаточно прав для выполнения действия.|\n|404 Not Found|Запрашиваемый ресурс не найден.|\n|409 Conflict|Запрос конфликтует с текущим состоянием.|\n|423 Locked|Ресурс из запроса заблокирован от применения к нему указанного метода.|\n|429 Too Many Requests|Был достигнут лимит по количеству запросов в единицу времени.|\n|500 Internal Server Error|При выполнении запроса произошла какая-то внутренняя ошибка. Чтобы решить эту проблему, лучше всего создать тикет в панели управления.|\n\n### Структура успешного ответа\nВсе конечные точки будут возвращать данные в формате `JSON`. Ответы на `GET`-запросы будут иметь на верхнем уровне следующую структуру атрибутов: \n|Название поля|Тип|Описание|\n|--- |--- |--- |\n|[entity_name]|object, object[], string[], number[], boolean|Динамическое поле, которое будет меняться в зависимости от запрашиваемого ресурса и будет содержать все атрибуты, необходимые для описания этого ресурса. Например, при запросе списка баз данных будет возвращаться поле `dbs`, а при запросе конкретного облачного сервера `server`. Для некоторых конечных точек в ответе может возвращаться сразу несколько ресурсов.|\n|meta|object|Опционально. Объект, который содержит вспомогательную информацию о ресурсе. Чаще всего будет встречаться при запросе коллекций и содержать поле `total`, которое будет указывать на количество элементов в коллекции.|\n|response_id|string|Опционально. В большинстве случаев в ответе будет содержаться ID ответа в формате UUIDv4, который однозначно указывает на ваш запрос внутри нашей системы. Если вам потребуется задать вопрос нашей поддержке, приложите к вопросу этот ID— так мы сможем найти ответ на него намного быстрее. Также вы можете использовать этот ID, чтобы убедиться, что это новый ответ на запрос и результат не был получен из кэша.|\n\nПример запроса на получение списка SSH-ключей:\n```\n HTTP/2.0 200 OK\n {\n \"ssh_keys\":[\n {\n \"body\":\"ssh-rsa AAAAB3NzaC1sdfghjkOAsBwWhs= example@device.local\",\n \"created_at\":\"2021-09-15T19:52:27Z\",\n \"expired_at\":null,\n \"id\":5297,\n \"is_default\":false,\n \"name\":\"example@device.local\",\n \"used_at\":null,\n \"used_by\":[]\n }\n ],\n \"meta\":{\n \"total\":1\n },\n \"response_id\":\"94608d15-8672-4eed-8ab6-28bd6fa3cdf7\"\n }\n```\n\n### Структура ответа с ошибкой\n|Название поля|Тип|Описание|\n|--- |--- |--- |\n|status_code|number|Короткий числовой идентификатор ошибки.|\n|error_code|string|Короткий текстовый идентификатор ошибки, который уточняет числовой идентификатор и удобен для программной обработки. Самый простой пример — это код `not_found` для ошибки 404.|\n|message|string, string[]|Опционально. В большинстве случаев в ответе будет содержаться человекочитаемое подробное описание ошибки или ошибок, которые помогут понять, что нужно исправить.|\n|response_id|string|Опционально. В большинстве случае в ответе будет содержаться ID ответа в формате UUIDv4, который однозначно указывает на ваш запрос внутри нашей системы. Если вам потребуется задать вопрос нашей поддержке, приложите к вопросу этот ID — так мы сможем найти ответ на него намного быстрее.|\n\nПример:\n```\n HTTP/2.0 403 Forbidden\n {\n \"status_code\": 403,\n \"error_code\": \"forbidden\",\n \"message\": \"You do not have access for the attempted action\",\n \"response_id\": \"94608d15-8672-4eed-8ab6-28bd6fa3cdf7\"\n }\n```\n\n## Статусы ресурсов\nВажно учесть, что при создании большинства ресурсов внутри платформы вам будет сразу возвращен ответ от сервера со статусом `200 OK` или `201 Created` и ID созданного ресурса в теле ответа, но при этом этот ресурс может быть ещё в *состоянии запуска*.\n\nДля того чтобы понять, в каком состоянии сейчас находится ваш ресурс, мы добавили поле `status` в ответ на получение информации о ресурсе.\n\nСписок статусов будет отличаться в зависимости от типа ресурса. Увидеть поддерживаемый список статусов вы сможете в описании каждого конкретного ресурса.\n\n \n\n## Ограничение скорости запросов (Rate Limiting)\nЧтобы обеспечить стабильность для всех пользователей, Timeweb Cloud защищает API от всплесков входящего трафика, анализируя количество запросов c каждого аккаунта к каждой конечной точке.\n\nЕсли ваше приложение отправляет более 20 запросов в секунду на одну конечную точку, то для этого запроса API может вернуть код состояния HTTP `429 Too Many Requests`.\n\n\n## Аутентификация\nДоступ к API осуществляется с помощью JWT-токена. Токенами можно управлять внутри панели управления Timeweb Cloud в разделе *API и Terraform*.\n\nТокен необходимо передавать в заголовке каждого запроса в формате:\n```\n Authorization: Bearer $TIMEWEB_CLOUD_TOKEN\n```\n\n## Формат примеров API\nПримеры в этой документации описаны с помощью `curl`, HTTP-клиента командной строки. На компьютерах `Linux` и `macOS` обычно по умолчанию установлен `curl`, и он доступен для загрузки на всех популярных платформах, включая `Windows`.\n\nКаждый пример разделен на несколько строк символом `\\`, который совместим с `bash`. Типичный пример выглядит так:\n```\n curl -X PATCH \n -H \"Content-Type: application/json\" \n -H \"Authorization: Bearer $TIMEWEB_CLOUD_TOKEN\" \n -d '{\"name\":\"Cute Corvus\",\"comment\":\"Development Server\"}' \n \"https://api.timeweb.cloud/api/v1/dedicated/1051\"\n```\n- Параметр `-X` задает метод запроса. Для согласованности метод будет указан во всех примерах, даже если он явно не требуется для методов `GET`.\n- Строки `-H` задают требуемые HTTP-заголовки.\n- Примеры, для которых требуется объект JSON в теле запроса, передают требуемые данные через параметр `-d`.\n\nЧтобы использовать приведенные примеры, не подставляя каждый раз в них свой токен, вы можете добавить токен один раз в переменные окружения в вашей консоли. Например, на `Linux` это можно сделать с помощью команды:\n\n```\nTIMEWEB_CLOUD_TOKEN=\"token\"\n```\n\nПосле этого токен будет автоматически подставляться в ваши запросы.\n\nОбратите внимание, что все значения в этой документации являются примерами. Не полагайтесь на IDы операционных систем, тарифов и т.д., используемые в примерах. Используйте соответствующую конечную точку для получения значений перед созданием ресурсов.\n\n\n## Версионирование\nAPI построено согласно принципам [семантического версионирования](https://semver.org/lang/ru). Это значит, что мы гарантируем обратную совместимость всех изменений в пределах одной мажорной версии.\n\nМажорная версия каждой конечной точки обозначается в пути запроса, например, запрос `/api/v1/servers` указывает, что этот метод имеет версию 1."},"servers":[{"url":"https://api.timeweb.cloud"}],"tags":[{"name":"Аккаунт","x-name-i18n":{"eng":"Account"},"description":"Группа методов, которая позволяет получить информацию о вашем текущем аккаунте. Обратите внимание, что API предоставляет только базовый функционал для получения общей информации об аккаунте. Подробнее о работе с вашим аккаунтом через панель управления – в нашей базе знаний."},{"name":"Оплата","x-name-i18n":{"eng":"Payments"},"description":"Группа методов для управления платежной информацией и финансами вашего аккаунта."},{"name":"Базы данных","x-name-i18n":{"eng":"Databases"},"description":"Облачная база данных, или База данных как сервис (DBaaS) — облачное решение для хранения структурированных данных и управления ими. DBaaS обеспечивает полностью автоматизированную, гибкую и масштабируемую платформу для работы с базами данных. Подробнее об облачных базах данных – в нашей базе знаний."},{"name":"Базы знаний","x-name-i18n":{"eng":"Knowledge Bases"},"description":"Базы знаний — это хранилища документов и информации, которые могут быть использованы AI агентами для предоставления более точных и контекстно-зависимых ответов."},{"name":"Балансировщики","x-name-i18n":{"eng":"Balancers"},"description":"Балансировщик позволяет распределять входящий трафик между несколькими серверами для повышения доступности и отказоустойчивости вашего сервиса. Подробнее о балансировщике нагрузки – в нашей базе знаний."},{"name":"Выделенные серверы","x-name-i18n":{"eng":"Dedicated servers"},"description":"Выделенные серверы используют, когда необходимо разместить сложную нагруженную систему, для которой недостаточно мощностей виртуального хостинга или облачного сервера. Это может быть крупный сайт, интернет-магазин, любой ресурсоемкий проект. Подробнее о выделенных серверах – в нашей базе знаний."},{"name":"Домены","x-name-i18n":{"eng":"Domains"},"description":"В Timeweb Cloud доступна регистрация и продление доменов более чем в 350 зонах. В зависимости от выбранной зоны, домен может быть зарегистрирован через регистратора Таймвэб.Домены или через одного из наших партнеров. Подробнее о доменах – в нашей базе знаний."},{"name":"Локации","x-name-i18n":{"eng":"Locations"},"description":"Локация - это конкретное физическое местоположение дата-центра."},{"name":"Облачные серверы","x-name-i18n":{"eng":"Servers"},"description":"Облачные серверы — это способ размещения данных, при котором вы получаете полный доступ (root-доступ) к виртуальному серверу и его настройкам. Вы можете гибко масштабировать параметры (процессор, память, диск) сервера, постепенно добавляя необходимые мощности, когда растет нагрузка, и снижать их, когда нагрузка уменьшается. Соответствующим образом будет увеличиваться или уменьшаться стоимость сервера. Подробнее об облачных серверах – в нашей базе знаний."},{"name":"Образы","x-name-i18n":{"eng":"Images"},"description":"Образы — это полная копия вашего облачного сервера в формате `Qcow2`, со всеми настройками операционной системы, программного обеспечения и всем содержимым сервера. Подробнее об образах – в нашей базе знаний."},{"name":"Почта","x-name-i18n":{"eng":"Mail"},"description":"В Timeweb Cloud доступна инфраструктура готовых почтовых серверов. Вы можете создавать и настраивать неограниченное число ящиков на своих доменах.
Подробнее о сервисе почты – в нашей базе знаний."},{"name":"Плавающие IP","x-name-i18n":{"eng":"Floating IPs"},"description":"Плавающий IP - это статический внешний IP-адрес, который вы можете переносить между сервисами внутри одной зоны доступности: облачными серверами, базами данных и балансировщиками нагрузки."},{"name":"Проекты","x-name-i18n":{"eng":"Projects"},"description":"Проекты позволяют организовать ваши ресурсы в группы, соответствующие вашему стилю работы. Вы можете группировать ресурсы (например, облачные и выделенные серверы, балансировщики нагрузки, базы данных и т.д.) таким образом, чтобы они соответствовали приложениям, которые вы размещаете в облаке."},{"name":"Реестр контейнеров","x-name-i18n":{"eng":"Container Registry"},"description":"Реестр контейнеров (Container Registry) — это хранилище для Docker-образов. Он позволяет загружать, хранить и распространять образы, которые используются при запуске контейнеров в Kubernetes и других окружениях."},{"name":"Роутеры","x-name-i18n":{"eng":"Routers"},"description":"Виртуальный роутер — это сетевой сервис, выступающий в качестве центрального узла для управления трафиком облачных ресурсов."},{"name":"AI Агенты","x-name-i18n":{"eng":"AI Agents"},"description":"AI Агенты — это интеллектуальные помощники на основе больших языковых моделей (LLM), которые могут отвечать на вопросы пользователей, использовать базы знаний и выполнять различные задачи."},{"name":"Apps","x-name-i18n":{"eng":"Apps"},"description":"Apps - Облачные приложения позволяют автоматически выполнять процесс сборки и развертывания при каждом обновлении кода в Github, Gitlab или Bitbucket. Подробнее об Apps – в нашей базе знаний."},{"name":"CDN","x-name-i18n":{"eng":"CDN"},"description":"CDN (Content Delivery Network) — сеть серверов, распределенных по разным регионам, которая кэширует контент вашего сайта и отдает его пользователям с ближайшего к ним узла. Это ускоряет загрузку и снижает нагрузку на источник контента — S3-хранилище или ваш собственный сервер. Подробнее о CDN – в нашей базе знаний."},{"name":"Firewall","x-name-i18n":{"eng":"Firewall"},"description":"Firewall позволяет фильтровать трафик по заранее установленным правилам. Вы можете создать несколько групп правил и подключить их на один или несколько облачных серверов."},{"name":"Kubernetes","x-name-i18n":{"eng":"Kubernetes"},"description":"Kubernetes — программное обеспечение с открытым исходным кодом, предназначенное для автоматизированного управления контейнерными приложениями. Kubernetes обеспечит автоматическое развертывание, масштабирование, распределение нагрузки, мониторинг сервисов, обработку ошибок и многое другое. Подробнее о Kubernetes – в нашей базе знаний."},{"name":"S3-хранилище","x-name-i18n":{"eng":"S3"},"description":"S3-хранилище — это универсальное объектное хранилище, совместимое с Amazon S3 API, в котором можно размещать любые типы статических данных. Подробнее о хранилище S3 – в нашей базе знаний.Обратите внимание, что данное API предоставляется независимо и совместно с Amazon S3 API. Описание принципов работы и список поддерживаемых методов Amazon S3 API вы можете найти в базе знаний."},{"name":"SSH-ключи","x-name-i18n":{"eng":"SSH"},"description":"Для безопасного подключения к облачным серверам вы можете использовать SSH-ключи. Их удобно сохранять в панели управления в разделе SSH-ключи, чтобы использовать при создании новых серверов."},{"name":"VPC","x-name-i18n":{"eng":"VPC"},"description":"VPC (Virtual Private Cloud) - это виртуальная частная сеть в облаке, которая позволяет изолировать ресурсы в облачной среде. Она предоставляет контроль над сетевой конфигурацией, такими как IP-адреса, маршрутизация и безопасность, и обеспечивает логическое разделение ресурсов для повышения безопасности и управляемости."},{"name":"Сетевые диски","x-name-i18n":{"eng":"Network drives"},"description":"Сетевые диски — это масштабируемые блочные хранилища, подключаемые к серверу по сети. Вы можете использовать их как дополнительные диски для облачных серверов."}],"security":[{"Bearer":[]}],"paths":{"/api/v1/account/finances":{"get":{"summary":"Получение платежной информации","description":"Чтобы получить платежную информацию, отправьте GET-запрос на `/api/v1/account/finances`.","operationId":"getFinances","x-codeSamples":[{"lang":"cURL","label":"cURL","source":"curl -X GET \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TIMEWEB_CLOUD_TOKEN\" \\\n \"https://api.timeweb.cloud/api/v1/account/finances\""},{"lang":"JavaScript","source":"fetch('https://api.timeweb.cloud/api/v1/account/finances', {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${TIMEWEB_CLOUD_TOKEN}`\n }\n});\n"},{"lang":"Node","source":"const axios = require('axios');\n\nconst response = await axios.get('https://api.timeweb.cloud/api/v1/account/finances', {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + process.env['TIMEWEB_CLOUD_TOKEN']\n }\n});\n"},{"lang":"Python","source":"import os\nimport requests\n\nheaders = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + os.getenv('TIMEWEB_CLOUD_TOKEN', ''),\n}\n\nresponse = requests.get('https://api.timeweb.cloud/api/v1/account/finances', headers=headers)\n"},{"lang":"PHP","source":"метод изменения пользователя ","operationId":"createDatabaseInstance","parameters":[{"$ref":"#/components/parameters/database-cluster-id"}],"x-codeSamples":[{"lang":"cURL","label":"cURL","source":"curl -X POST \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TIMEWEB_CLOUD_TOKEN\" \\\n -d '{\n \"name\": \"default_name\",\n \"description\": \"description\"\n}' \"https://api.timeweb.cloud/api/v1/databases/1/instances\""},{"lang":"JavaScript","source":"fetch('https://api.timeweb.cloud/api/v1/databases/1/instances', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${TIMEWEB_CLOUD_TOKEN}`\n },\n // body: '{\\n \"name\": \"default_name\",\\n \"description\": \"description\"\\n}',\n body: JSON.stringify({\n 'name': 'default_name',\n 'description': 'description'\n })\n});\n"},{"lang":"Node","source":"const axios = require('axios');\n\nconst response = await axios.post(\n 'https://api.timeweb.cloud/api/v1/databases/1/instances',\n // '{\\n \"name\": \"default_name\",\\n \"description\": \"description\"\\n}',\n {\n 'name': 'default_name',\n 'description': 'description'\n },\n {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + process.env['TIMEWEB_CLOUD_TOKEN']\n }\n }\n);\n"},{"lang":"Python","source":"import os\nimport requests\n\nheaders = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + os.getenv('TIMEWEB_CLOUD_TOKEN', ''),\n}\n\njson_data = {\n 'name': 'default_name',\n 'description': 'description',\n}\n\nresponse = requests.post('https://api.timeweb.cloud/api/v1/databases/1/instances', headers=headers, json=json_data)\n\n# Note: json_data will not be serialized by requests\n# exactly as it was in the original request.\n#data = '{\\n \"name\": \"default_name\",\\n \"description\": \"description\"\\n}'\n#response = requests.post('https://api.timeweb.cloud/api/v1/databases/1/instances', headers=headers, data=data)\n"},{"lang":"PHP","source":"создании или изменении пользователя базы данных.","operationId":"getDatabasePrivileges","parameters":[{"$ref":"#/components/parameters/database-cluster-id"}],"x-codeSamples":[{"lang":"cURL","label":"cURL","source":"curl -X GET \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TIMEWEB_CLOUD_TOKEN\" \\\n \"https://api.timeweb.cloud/api/v1/databases/1/privileges\""},{"lang":"JavaScript","source":"fetch('https://api.timeweb.cloud/api/v1/databases/1/privileges', {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${TIMEWEB_CLOUD_TOKEN}`\n }\n});\n"},{"lang":"Node","source":"const axios = require('axios');\n\nconst response = await axios.get('https://api.timeweb.cloud/api/v1/databases/1/privileges', {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + process.env['TIMEWEB_CLOUD_TOKEN']\n }\n});\n"},{"lang":"Python","source":"import os\nimport requests\n\nheaders = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + os.getenv('TIMEWEB_CLOUD_TOKEN', ''),\n}\n\nresponse = requests.get('https://api.timeweb.cloud/api/v1/databases/1/privileges', headers=headers)\n"},{"lang":"PHP","source":"
Спасибо за письмо
\",\n \"autoreply_subject\": \"Автоответчик\"\n },\n \"outgoing_settings\": {\n \"is_enabled\": true,\n \"outgoing_email\": \"outgoing@example.com\"\n }\n }' \\\n \"https://api.timeweb.cloud/api/v2/mail/domains/{domain}/mailboxes/{mailbox}\""},{"lang":"JavaScript","source":"fetch('http://0>Спасибо за письмо
\",\\n \"autoreply_subject\": \"Автоответчик\"\\n },\\n \"outgoing_settings\": {\\n \"is_enabled\": true,\\n \"outgoing_email\": \"outgoing@example.com\"\\n }\\n }', {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${TIMEWEB_CLOUD_TOKEN}`\n },\n body: '{\\n \"comment\": \"Рабочая почта\",\\n \"password\": \"NewPass123!\",\\n \"owner_full_name\": \"Иванов Иван Иванович\",\\n \"spam_protection_settings\": {\\n \"is_enabled\": true,\\n \"filter_action\": \"directory\",\\n \"white_list\": [\"trusted@example.com\"]\\n },\\n \"forward_settings\": {\\n \"is_enabled\": true,\\n \"forward_list\": [\"forward@example.com\"],\\n \"is_leave_messages\": false\\n },\\n \"autoreply_settings\": {\\n \"is_enabled\": true,\\n \"autoreply_message\": \"\",\\n \"autoreply_subject\": \"Автоответчик\"\\n },\\n \"outgoing_settings\": {\\n \"is_enabled\": true,\\n \"outgoing_email\": \"outgoing@example.com\"\\n }\\n }',\n '{\\n \"comment\": \"Рабочая почта\",\\n \"password\": \"NewPass123!\",\\n \"owner_full_name\": \"Иванов Иван Иванович\",\\n \"spam_protection_settings\": {\\n \"is_enabled\": true,\\n \"filter_action\": \"directory\",\\n \"white_list\": [\"trusted@example.com\"]\\n },\\n \"forward_settings\": {\\n \"is_enabled\": true,\\n \"forward_list\": [\"forward@example.com\"],\\n \"is_leave_messages\": false\\n },\\n \"autoreply_settings\": {\\n \"is_enabled\": true,\\n \"autoreply_message\": \"\",\\n \"autoreply_subject\": \"Автоответчик\"\\n },\\n \"outgoing_settings\": {\\n \"is_enabled\": true,\\n \"outgoing_email\": \"outgoing@example.com\"\\n }\\n }',\n headers=headers,\n data=data,\n)\nresponse = requests.patch(\n 'https://api.timeweb.cloud/api/v2/mail/domains/{domain}/mailboxes/{mailbox}',\n headers=headers,\n data=data,\n)\n"},{"lang":"PHP","source":"Спасибо за письмо
\\\",\\n \\\"autoreply_subject\\\": \\\"Автоответчик\\\"\\n },\\n \\\"outgoing_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"outgoing_email\\\": \\\"outgoing@example.com\\\"\\n }\\n }\");\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n 'Content-Type: application/json',\n 'Authorization: Bearer ' . getenv('TIMEWEB_CLOUD_TOKEN') ?? '',\n]);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, \"{\\n \\\"comment\\\": \\\"Рабочая почта\\\",\\n \\\"password\\\": \\\"NewPass123!\\\",\\n \\\"owner_full_name\\\": \\\"Иванов Иван Иванович\\\",\\n \\\"spam_protection_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"filter_action\\\": \\\"directory\\\",\\n \\\"white_list\\\": [\\\"trusted@example.com\\\"]\\n },\\n \\\"forward_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"forward_list\\\": [\\\"forward@example.com\\\"],\\n \\\"is_leave_messages\\\": false\\n },\\n \\\"autoreply_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"autoreply_message\\\": \\\"\\\",\\n \\\"autoreply_subject\\\": \\\"Автоответчик\\\"\\n },\\n \\\"outgoing_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"outgoing_email\\\": \\\"outgoing@example.com\\\"\\n }\\n }\", data)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Authorization\", \"Bearer \" + os.Getenv(\"TIMEWEB_CLOUD_TOKEN\"))\n\tresp, err := client.Do(req)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer resp.Body.Close()\n\tbodyText, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%s\\n\", bodyText)\n}\n"},{"lang":"Java","source":"import java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStreamWriter;\nimport java.lang.System;\nimport java.net.HttpURLConnection;\nimport java.net.URL;\nimport java.util.Scanner;\n\nclass Main {\n\n\tpublic static void main(String[] args) throws IOException {\n\t\tURL url = new URL(\"http://0>Спасибо за письмо
\\\",\\n \\\"autoreply_subject\\\": \\\"Автоответчик\\\"\\n },\\n \\\"outgoing_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"outgoing_email\\\": \\\"outgoing@example.com\\\"\\n }\\n }\");\n\t\tHttpURLConnection httpConn = (HttpURLConnection) url.openConnection();\n\t\thttpConn.setRequestMethod(\"PATCH\");\n\n\t\thttpConn.setRequestProperty(\"Content-Type\", \"application/json\");\n\t\thttpConn.setRequestProperty(\"Authorization\", \"Bearer \" + System.getenv(\"TIMEWEB_CLOUD_TOKEN\"));\n\n\t\thttpConn.setDoOutput(true);\n\t\tOutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());\n\t\twriter.write(\"{\\n \\\"comment\\\": \\\"Рабочая почта\\\",\\n \\\"password\\\": \\\"NewPass123!\\\",\\n \\\"owner_full_name\\\": \\\"Иванов Иван Иванович\\\",\\n \\\"spam_protection_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"filter_action\\\": \\\"directory\\\",\\n \\\"white_list\\\": [\\\"trusted@example.com\\\"]\\n },\\n \\\"forward_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"forward_list\\\": [\\\"forward@example.com\\\"],\\n \\\"is_leave_messages\\\": false\\n },\\n \\\"autoreply_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"autoreply_message\\\": \\\"'], 'document1.pdf'));\nform.append('files', File(['
'], 'document2.txt'));\n\nfetch('https://api.timeweb.cloud/api/v1/cloud-ai/knowledge-bases/1/upload', {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${TIMEWEB_CLOUD_TOKEN}`\n },\n body: form\n});\n"},{"lang":"Node","source":"const axios = require('axios');\nconst FormData = require('form-data');\nconst fs = require('fs');\n\nconst form = new FormData();\nform.append('files', fs.readFileSync('document1.pdf'), 'document1.pdf');\nform.append('files', fs.readFileSync('document2.txt'), 'document2.txt');\n\nconst response = await axios.post(\n 'https://api.timeweb.cloud/api/v1/cloud-ai/knowledge-bases/1/upload',\n form,\n {\n headers: {\n ...form.getHeaders(),\n 'Authorization': 'Bearer ' + process.env['TIMEWEB_CLOUD_TOKEN']\n }\n }\n);\n"},{"lang":"Python","source":"import os\nimport requests\n\nheaders = {\n 'Authorization': 'Bearer ' + os.getenv('TIMEWEB_CLOUD_TOKEN', ''),\n}\n\nfiles = [\n ('files', open('document1.pdf', 'rb')),\n ('files', open('document2.txt', 'rb')),\n]\n\nresponse = requests.post('https://api.timeweb.cloud/api/v1/cloud-ai/knowledge-bases/1/upload', headers=headers, files=files)\n"},{"lang":"PHP","source":" new CURLFile('document1.pdf'),\n 'files' => new CURLFile('document2.txt'),\n]);\n\n$response = curl_exec($ch);\n\ncurl_close($ch);\n"},{"lang":"Go","source":"package main\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"mime/multipart\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n)\n\nfunc main() {\n\tform := new(bytes.Buffer)\n\twriter := multipart.NewWriter(form)\n\tfw, err := writer.CreateFormFile(\"document1.pdf\", filepath.Base(\"document1.pdf\"))\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfd, err := os.Open(\"document1.pdf\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer fd.Close()\n\t_, err = io.Copy(fw, fd)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tfw, err = writer.CreateFormFile(\"document2.txt\", filepath.Base(\"document2.txt\"))\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfd, err = os.Open(\"document2.txt\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer fd.Close()\n\t_, err = io.Copy(fw, fd)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\twriter.Close()\n\n\tclient := &http.Client{}\n\treq, err := http.NewRequest(\"POST\", \"https://api.timeweb.cloud/api/v1/cloud-ai/knowledge-bases/1/upload\", form)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \" + os.Getenv(\"TIMEWEB_CLOUD_TOKEN\"))\n\treq.Header.Set(\"Content-Type\", writer.FormDataContentType())\n\tresp, err := client.Do(req)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer resp.Body.Close()\n\tbodyText, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%s\\n\", bodyText)\n}\n"},{"lang":"Java","source":"import java.io.IOException;\nimport java.io.InputStream;\nimport java.lang.System;\nimport java.net.HttpURLConnection;\nimport java.net.URL;\nimport java.util.Scanner;\n\nclass Main {\n\n\tpublic static void main(String[] args) throws IOException {\n\t\tURL url = new URL(\"https://api.timeweb.cloud/api/v1/cloud-ai/knowledge-bases/1/upload\");\n\t\tHttpURLConnection httpConn = (HttpURLConnection) url.openConnection();\n\t\thttpConn.setRequestMethod(\"POST\");\n\n\t\thttpConn.setRequestProperty(\"Authorization\", \"Bearer \" + System.getenv(\"TIMEWEB_CLOUD_TOKEN\"));\n\n\t\tInputStream responseStream = httpConn.getResponseCode() / 100 == 2\n\t\t\t\t? httpConn.getInputStream()\n\t\t\t\t: httpConn.getErrorStream();\n\t\tScanner s = new Scanner(responseStream).useDelimiter(\"\\\\A\");\n\t\tString response = s.hasNext() ? s.next() : \"\";\n\t\tSystem.out.println(response);\n\t}\n}\n"}],"responses":{"200":{"description":"Объект JSON c ключом `uploaded_files`","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"uploaded_files":{"type":"array","items":{"type":"string"},"description":"Список загруженных файлов"}},"required":["uploaded_files"]},{"type":"object","properties":{"response_id":{"$ref":"#/components/schemas/response_id"}},"required":["response_id"]}]}}}},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"tags":["Базы знаний"],"x-tags-i18n":{"eng":["Knowledge Bases"]}}},"/api/v2/cloud-ai/knowledge-bases/{id}/documents":{"get":{"summary":"Получение списка документов базы знаний","description":"Чтобы получить список документов базы знаний, отправьте GET-запрос на `/api/v2/cloud-ai/knowledge-bases/{id}/documents`.\n\nТело ответа будет представлять собой объект JSON с ключами `knowledgebase_documents` и `meta`.","operationId":"getKnowledgebaseDocumentsV2","parameters":[{"$ref":"#/components/parameters/knowledgebase-id"},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","default":10,"minimum":1,"maximum":100,"example":20},"description":"Количество документов на странице (по умолчанию: 10, максимум: 100)"},{"in":"query","name":"offset","required":false,"schema":{"type":"integer","default":0,"minimum":0,"example":0},"description":"Количество документов для пропуска (по умолчанию: 0)"},{"in":"query","name":"sort_by","required":false,"schema":{"type":"string","enum":["name","size","status","indexing_timestamp"],"default":"indexing_timestamp","example":"indexing_timestamp"},"description":"Поле для сортировки (по умолчанию: indexing_timestamp - время последней индексации документа)"},{"in":"query","name":"sort_order","required":false,"schema":{"type":"string","enum":["ASC","DESC"],"default":"DESC","example":"DESC"},"description":"Порядок сортировки (по умолчанию: DESC)"}],"x-codeSamples":[{"lang":"cURL","label":"cURL","source":"curl -X GET \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TIMEWEB_CLOUD_TOKEN\" \\\n \"https://api.timeweb.cloud/api/v2/cloud-ai/knowledge-bases/1/documents?limit=20&offset=0&sort_by=indexing_timestamp&sort_order=DESC\""},{"lang":"JavaScript","source":"fetch('https://api.timeweb.cloud/api/v2/cloud-ai/knowledge-bases/1/documents?limit=20&offset=0&sort_by=indexing_timestamp&sort_order=DESC', {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${TIMEWEB_CLOUD_TOKEN}`\n }\n});\n"},{"lang":"Node","source":"const axios = require('axios');\n\nconst response = await axios.get('https://api.timeweb.cloud/api/v2/cloud-ai/knowledge-bases/1/documents', {\n params: {\n 'limit': '20',\n 'offset': '0',\n 'sort_by': 'indexing_timestamp',\n 'sort_order': 'DESC'\n },\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + process.env['TIMEWEB_CLOUD_TOKEN']\n }\n});\n"},{"lang":"Python","source":"import os\nimport requests\n\nheaders = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + os.getenv('TIMEWEB_CLOUD_TOKEN', ''),\n}\n\nparams = {\n 'limit': '20',\n 'offset': '0',\n 'sort_by': 'indexing_timestamp',\n 'sort_order': 'DESC',\n}\n\nresponse = requests.get('https://api.timeweb.cloud/api/v2/cloud-ai/knowledge-bases/1/documents', params=params, headers=headers)\n"},{"lang":"PHP","source":"Спасибо за письмо
"},"autoreply_status":{"type":"boolean","description":"Включен ли автоответчик на входящие письма","example":true},"autoreply_subject":{"type":"string","description":"Тема сообщения автоответчика на входящие письма","example":"Автоответчик"},"comment":{"type":"string","description":"Комментарий к почтовому ящику","example":"Рабочая почта"},"filter_action":{"type":"string","description":"Что делать с письмами, которые попадают в спам","enum":["directory","forward","delete","tag"],"example":"directory"},"filter_status":{"type":"boolean","description":"Включен ли спам-фильтр","example":true},"forward_list":{"type":"array","description":"Список адресов для пересылки входящих писем","items":{"type":"string","example":"forward@example.com"}},"forward_status":{"type":"boolean","description":"Включена ли пересылка входящих писем","example":true},"outgoing_control":{"type":"boolean","description":"Включена ли пересылка исходящих писем","example":true},"outgoing_email":{"type":"string","description":"Адрес для пересылки исходящих писем","example":"outgoing@example.com"},"password":{"type":"string","description":"Пароль почтового ящика (всегда возвращается пустой строкой)","example":""},"spambox":{"type":"string","description":"Адрес для пересылки спама при выбранном действии forward","example":"spam@example.com"},"white_list":{"type":"array","description":"Белый список адресов от которых письма не будут попадать в спам","items":{"type":"string","example":"trusted@example.com"}},"webmail":{"type":"boolean","description":"Доступен ли Webmail","example":true},"dovecot":{"type":"boolean","description":"Есть ли доступ через dovecot","example":true},"fqdn":{"type":"string","description":"Домен почты","example":"example.com"},"leave_messages":{"type":"boolean","description":"Оставлять ли сообщения на сервере при пересылке","example":false},"mailbox":{"type":"string","description":"Название почтового ящика","example":"info"},"owner_full_name":{"type":"string","description":"ФИО владельца почтового ящика","example":"Иванов Иван Иванович"}},"required":["idn_name","autoreply_message","autoreply_status","autoreply_subject","comment","filter_action","filter_status","forward_list","forward_status","outgoing_control","outgoing_email","password","spambox","white_list","webmail","dovecot","fqdn","leave_messages","mailbox","owner_full_name"]},"mailboxes-batch-v2":{"description":"Результат массового создания почтовых ящиков (API v2)","type":"object","properties":{"mailboxes":{"type":"array","description":"Массив успешно созданных почтовых ящиков","items":{"$ref":"#/components/schemas/mailbox-v2"}},"errors":{"type":"array","description":"Массив ошибок при создании почтовых ящиков","items":{"type":"object"}}},"required":["mailboxes","errors"]},"spam-protection-is-enabled":{"title":"Если защита от спама включена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли спам-фильтр","example":true},"filter_action":{"type":"string","enum":["directory","label"],"description":"Что делать с письмами, которые попадают в спам. \\\n Параметры: \\\n `directory` - переместить в папку спам; \\\n `label` - пометить письмо; \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"directory"},"white_list":{"type":"array","items":{"type":"string"},"description":"Белый список адресов от которых письма не будут попадать в спам. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":["trusted@example.com"]}},"required":["is_enabled"]},"spam-protection-is-disabled":{"title":"Если защита от спама выключена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли спам-фильтр","example":false}},"required":["is_enabled"]},"forward-is-enabled":{"title":"Если пересылка включена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка входящих писем","example":true},"forward_list":{"type":"array","items":{"type":"string"},"description":"Список адресов для пересылки. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":["forward@example.com"]},"is_leave_messages":{"type":"boolean","description":"Оставлять ли копии входящих писем в почтовом ящике (не удалять). \\\n При `is_leave_messages`: `true`— копии входящих писем не сохраняются и будут удаляться. \\\n При `is_leave_messages`: `false` — копии входящих писем сохраняются. \\\n\\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":false}},"required":["is_enabled","forward_list"]},"forward-is-disabled":{"title":"Если пересылка выключена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка входящих писем","example":false}},"required":["is_enabled"]},"autoreply-is-enabled":{"title":"Если автоответчик включен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли автоответчик на входящие письма","example":true},"autoreply_message":{"type":"string","description":"Сообщение автоответчика на входящие письма. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"Спасибо за ваше письмо. Я отсутствую и отвечу позже.
"},"autoreply_subject":{"type":"string","description":"Тема сообщения автоответчика на входящие письма. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"Автоматический ответ"}},"required":["is_enabled"]},"autoreply-is-disabled":{"title":"Если автоответчик выключен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли автоответчик на входящие письма","example":false}},"required":["is_enabled"]},"outgoing-is-enabled":{"title":"Если контроль исходящей почты включен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка исходящих писем","example":true},"outgoing_email":{"type":"string","description":"Адрес для пересылки исходящих писем. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"outgoing@example.com"}},"required":["is_enabled","outgoing_email"]},"outgoing-is-disabled":{"title":"Если контроль исходящей почты выключен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка исходящих писем","example":false}},"required":["is_enabled"]},"update-mailbox-v2":{"description":"Обновление почтового ящика","type":"object","properties":{"password":{"type":"string","minLength":8,"maxLength":30,"description":"Пароль почтового ящика","example":"SecurePass123!"},"comment":{"type":"string","description":"Комментарий к почтовому ящику","example":"Рабочая почта"},"owner_full_name":{"type":"string","description":"ФИО владельца почтового ящика","example":"Иванов Иван Иванович"},"spam_protection_settings":{"description":"Спам-фильтр","type":"object","oneOf":[{"$ref":"#/components/schemas/spam-protection-is-enabled"},{"$ref":"#/components/schemas/spam-protection-is-disabled"}]},"forward_settings":{"description":"Пересылка входящих писем","type":"object","oneOf":[{"$ref":"#/components/schemas/forward-is-enabled"},{"$ref":"#/components/schemas/forward-is-disabled"}]},"autoreply_settings":{"description":"Автоответчик на входящие письма","type":"object","oneOf":[{"$ref":"#/components/schemas/autoreply-is-enabled"},{"$ref":"#/components/schemas/autoreply-is-disabled"}]},"outgoing_settings":{"description":"Пересылка исходящих писем","type":"object","oneOf":[{"$ref":"#/components/schemas/outgoing-is-enabled"},{"$ref":"#/components/schemas/outgoing-is-disabled"}]}}},"mailbox-response":{"type":"object","properties":{"idn_name":{"type":"string","description":"IDN имя домена","example":"example.ru"},"autoreply_message":{"type":"string","description":"Сообщение автоответчика","example":""},"autoreply_status":{"type":"boolean","description":"Статус автоответчика","example":true},"autoreply_subject":{"type":"string","description":"Тема автоответчика","example":"Автоматический ответ"},"comment":{"type":"string","description":"Комментарий","example":"Рабочая почта"},"filter_action":{"type":"string","enum":["directory","label"],"description":"Действие фильтра спама","example":"directory"},"filter_status":{"type":"boolean","description":"Статус фильтра спама","example":true},"forward_list":{"type":"array","items":{"type":"string"},"description":"Список адресов для пересылки","example":["forward@example.com"]},"forward_status":{"type":"boolean","description":"Статус пересылки","example":true},"outgoing_control":{"type":"boolean","description":"Контроль исходящей почты","example":true},"outgoing_email":{"type":"string","description":"Email для исходящих писем","example":"outgoing@example.com"},"password":{"type":"string","description":"Пароль (пустая строка в ответе)","example":""},"white_list":{"type":"array","items":{"type":"string"},"description":"Белый список адресов","example":["trusted@example.com"]},"webmail":{"type":"boolean","description":"Доступ к веб-почте","example":true},"dovecot":{"type":"boolean","description":"Использование Dovecot","example":true},"fqdn":{"type":"string","description":"Полное доменное имя","example":"example.ru"},"leave_messages":{"type":"boolean","description":"Оставлять копии писем при пересылке","example":false},"mailbox":{"type":"string","description":"Имя почтового ящика","example":"user"},"owner_full_name":{"type":"string","description":"ФИО владельца","example":"Иванов Иван Иванович"}}},"mailbox":{"description":"Почтовый ящик","type":"object","properties":{"auto_reply":{"description":"Автоответчик на входящие письма","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли автоответчик на входящие письма","example":true},"message":{"type":"string","description":"Сообщение автоответчика на входящие письма","example":"some message"},"subject":{"type":"string","description":"Тема сообщения автоответчика на входящие письма","example":"some subject"}},"required":["is_enabled","message","subject"]},"spam_filter":{"description":"Спам-фильтр","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли спам-фильтр","example":true},"action":{"type":"string","description":"Что делать с письмами, которые попадают в спам. \\\n Параметры: \\\n `move_to_directory` - переместить в паку спам; \\\n `forward` - переслать письмо на другой адрес; \\\n `delete` - удалить письмо; \\\n `tag` - пометить письмо;","enum":["move_to_directory","forward","delete","tag"],"example":"forward"},"forward_to":{"type":"string","description":"Адрес для пересылки при выбранном действии `forward` из параметра `action`","example":"test@timeweb.ru"},"white_list":{"type":"array","description":"Белый список адресов от которых письма не будут попадать в спам","items":{"type":"string","example":"test@timeweb.ru"}}},"required":["is_enabled","action","forward_to","white_list"]},"forwarding_incoming":{"type":"object","description":"Пересылка входящик писем","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка входящик писем","example":true},"is_delete_messages":{"type":"boolean","description":"Удалять ли входящие письма","example":false},"incoming_list":{"type":"array","description":"Список адресов для пересылки","items":{"type":"string","example":"test@timeweb.ru"}}},"required":["is_enabled","is_delete_messages","incoming_list"]},"forwarding_outgoing":{"type":"object","description":"Пересылка исходящих писем","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка исходящих писем","example":true},"outgoing_to":{"type":"string","description":"Адрес для пересылки исходящих писем","example":"test@timeweb.ru"}},"required":["is_enabled","outgoing_to"]},"comment":{"type":"string","description":"Комментарий к почтовому ящику","example":"some comment"},"fqdn":{"type":"string","description":"Домен почты","example":"timeweb.ru"},"mailbox":{"type":"string","description":"Название почтового ящика","example":"mailbox"},"password":{"type":"string","description":"Пароль почтового ящика","example":"ps3-1asZa"},"usage_space":{"type":"number","description":"Использованное место на почтовом ящике (в Мб)","example":512},"is_webmail":{"type":"boolean","description":"Доступен ли Webmail","example":false},"idn_name":{"type":"string","description":"IDN домен почтового ящика","example":"timeweb.ru"},"is_dovecot":{"type":"boolean","description":"Есть ли доступ через dovecot","example":false}},"required":["auto_reply","spam_filter","forwarding_incoming","forwarding_outgoing","comment","fqdn","mailbox","password","usage_space","is_webmail","idn_name","is_dovecot"]},"domain-info":{"description":"Почтовая информация о домене","type":"object","properties":{"email":{"description":"Адрес для сбора почты с ошибочных ящиков","type":"string","example":1024},"used":{"description":"Использованное место на почте (в Мб).","type":"number","example":512}},"required":["email","used"]},"auto-reply-is-disabled":{"title":"Если автоответчик выключен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли автоответчик на входящие письма","example":true},"message":{"type":"string","description":"Сообщение автоответчика на входящие письма","example":"some message"},"subject":{"type":"string","description":"Тема сообщения автоответчика на входящие письма.","example":"some subject"}},"required":["is_enabled"]},"auto-reply-is-enabled":{"title":"Если автоответчик включен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли автоответчик на входящие письма","example":true},"message":{"type":"string","description":"Сообщение автоответчика на входящие письма. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"some message"},"subject":{"type":"string","description":"Тема сообщения автоответчика на входящие письма. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"some subject"}}},"spam-filter-is-disabled":{"title":"Если спам-фильтр выключен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли спам-фильтр","example":true},"action":{"type":"string","description":"Что делать с письмами, которые попадают в спам. \\\n Параметры: \\\n `move_to_directory` - переместить в паку спам; \\\n `forward` - переслать письмо на другой адрес; \\\n `delete` - удалить письмо; \\\n `tag` - пометить письмо;","enum":["move_to_directory","forward","delete","tag"],"example":"forward"},"forward_to":{"type":"string","description":"Адрес для пересылки при выбранном действии `forward` из параметра `action`. Не может быть пустым, если `action` выбран `forward`","example":"test@timeweb.ru"},"white_list":{"type":"array","description":"Белый список адресов от которых письма не будут попадать в спам","items":{"type":"string","example":"test@timeweb.ru"}}},"required":["is_enabled"]},"spam-filter-is-enabled":{"title":"Если спам-фильтр включен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли спам-фильтр","example":true},"action":{"type":"string","description":"Что делать с письмами, которые попадают в спам. \\\n Параметры: \\\n `move_to_directory` - переместить в паку спам; \\\n `forward` - переслать письмо на другой адрес; \\\n `delete` - удалить письмо; \\\n `tag` - пометить письмо; \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","enum":["move_to_directory","forward","delete","tag"],"example":"forward"},"forward_to":{"type":"string","description":"Адрес для пересылки при выбранном действии `forward` из параметра `action`. Не может быть пустым, если `action` выбран `forward`. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"test@timeweb.ru"},"white_list":{"type":"array","description":"Белый список адресов от которых письма не будут попадать в спам. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","items":{"type":"string","example":"test@timeweb.ru"}}}},"forwarding-incoming-is-disabled":{"title":"Если пересылка входящих выключена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка входящик писем","example":true},"is_delete_messages":{"type":"boolean","description":"Удалять ли входящие письма","example":false},"incoming_list":{"type":"array","description":"Список адресов для пересылки. Не должен быть пустым при передачи параметра `is_enabled`: `true`","items":{"type":"string","example":"test@timeweb.ru"}}},"required":["is_enabled"]},"forwarding-incoming-is-enabled":{"title":"Если пересылка входящих включена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка входящик писем","example":true},"is_delete_messages":{"type":"boolean","description":"Удалять ли входящие письма. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":false},"incoming_list":{"type":"array","description":"Список адресов для пересылки. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","items":{"type":"string","example":"test@timeweb.ru"}}}},"forwarding-outgoing-is-disabled":{"title":"Если пересылка исходящих выключена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка исходящих писем","example":true},"outgoing_to":{"type":"string","description":"Адрес для пересылки исходящих писем","example":"test@timeweb.ru"}},"required":["is_enabled"]},"forwarding-outgoing-is-enabled":{"title":"Если пересылка исходящих включена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка исходящих писем. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":true},"outgoing_to":{"type":"string","description":"Адрес для пересылки исходящих писем. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"test@timeweb.ru"}}},"update-mailbox":{"description":"Изменение почтового ящика","type":"object","properties":{"auto_reply":{"description":"Автоответчик на входящие письма","type":"object","oneOf":[{"$ref":"#/components/schemas/auto-reply-is-disabled"},{"$ref":"#/components/schemas/auto-reply-is-enabled"}]},"spam_filter":{"description":"Спам-фильтр","type":"object","oneOf":[{"$ref":"#/components/schemas/spam-filter-is-disabled"},{"$ref":"#/components/schemas/spam-filter-is-enabled"}]},"forwarding_incoming":{"type":"object","description":"Пересылка входящик писем.","oneOf":[{"$ref":"#/components/schemas/forwarding-incoming-is-disabled"},{"$ref":"#/components/schemas/forwarding-incoming-is-enabled"}]},"forwarding_outgoing":{"type":"object","description":"Пересылка исходящих писем","oneOf":[{"$ref":"#/components/schemas/forwarding-outgoing-is-disabled"},{"$ref":"#/components/schemas/forwarding-outgoing-is-enabled"}]},"comment":{"type":"string","description":"Комментарий к почтовому ящику","example":"some comment"},"password":{"type":"string","description":"Пароль почтового ящика","example":"ps3-1asZa"}}},"domain-payment-period":{"description":"Период оплаты (для доменов в зонах .ru и .рф только 1-3 года).","type":"string","enum":["P1Y","P2Y","P3Y","P4Y","P5Y","P6Y","P7Y","P8Y","P9Y","P10Y"],"example":"P1Y"},"subdomain":{"type":"object","properties":{"fqdn":{"description":"Полное имя поддомена.","type":"string","example":"sub.somedomain.ru"},"id":{"description":"ID поддомена.","type":"number","example":123},"linked_ip":{"description":"Привязанный к поддомену IP-адрес.","type":"string","nullable":true,"example":null}},"required":["fqdn","id","linked_ip"]},"domain":{"description":"Домен","type":"object","properties":{"allowed_buy_periods":{"description":"Допустимые периоды продления домена.","type":"array","items":{"type":"object","properties":{"period":{"$ref":"#/components/schemas/domain-payment-period"},"price":{"description":"Стоимость домена за указанный период.","type":"number","example":179}},"required":["period","price"]}},"days_left":{"description":"Количество дней, оставшихся до конца срока регистрации домена.","type":"number","example":100},"domain_status":{"description":"Статус домена.","type":"string","enum":["awaiting_payment","expired","final_expired","free","no_paid","ns_based","paid","soon_expire","today_expired"],"example":"paid"},"expiration":{"description":"Дата окончания срока регистрации домена, для доменов без срока окончания регистрации будет приходить 0000-00-00.","type":"string","example":"0000-00-00"},"fqdn":{"description":"Полное имя домена.","type":"string","example":"somedomain.ru"},"id":{"description":"ID домена.","type":"number","example":123},"avatar_link":{"type":"string","nullable":true,"description":"Ссылка на аватар домена.","example":"https://urltoimage.com/avatars/image.png"},"is_autoprolong_enabled":{"description":"Это логическое значение, которое показывает, включено ли автопродление домена.","type":"boolean","nullable":true,"example":true},"is_premium":{"description":"Это логическое значение, которое показывает, является ли домен премиальным.","type":"boolean","example":true},"is_prolong_allowed":{"description":"Это логическое значение, которое показывает, можно ли сейчас продлить домен.","type":"boolean","example":true},"is_technical":{"description":"Это логическое значение, которое показывает, является ли домен техническим.","type":"boolean","example":true},"is_whois_privacy_enabled":{"description":"Это логическое значение, которое показывает, включено ли скрытие данных администратора домена для whois. Если приходит null, значит для данной зоны эта услуга не доступна.","type":"boolean","nullable":true,"example":true},"linked_ip":{"description":"Привязанный к домену IP-адрес.","type":"string","nullable":true,"example":"192.168.1.1"},"paid_till":{"description":"До какого числа оплачен домен.","type":"string","nullable":true,"example":"2023-01-27"},"person_id":{"description":"ID администратора, на которого зарегистрирован домен.","type":"number","nullable":true,"example":123},"premium_prolong_cost":{"description":"Стоимость премиального домена.","type":"number","nullable":true,"example":null},"provider":{"description":"ID регистратора домена.","type":"string","nullable":true,"example":"TimewebVirtreg"},"request_status":{"description":"Статус заявки на продление/регистрацию/трансфер домена.","type":"string","enum":["prolongation_fail","prolongation_request","registration_fail","registration_request","transfer_fail","transfer_request","awaiting_person"],"nullable":true,"example":"registration_request"},"subdomains":{"description":"Список поддоменов.","type":"array","items":{"$ref":"#/components/schemas/subdomain"}},"tld_id":{"description":"ID доменной зоны.","type":"number","nullable":true,"example":2365}},"required":["allowed_buy_periods","is_prolong_allowed","is_autoprolong_enabled","domain_status","expiration","fqdn","id","avatar_link","is_premium","is_technical","days_left","linked_ip","paid_till","person_id","premium_prolong_cost","provider","request_status","subdomains","tld_id","is_whois_privacy_enabled"]},"update-domain":{"type":"object","properties":{"is_autoprolong_enabled":{"description":"Это логическое значение, которое показывает, включено ли автопродление домена.","type":"boolean","example":true},"linked_ip":{"description":"Привязанный к домену IP-адрес.","type":"string","nullable":true,"example":"192.168.1.1"}}},"create-dns-v2":{"oneOf":[{"title":"A запись","type":"object","properties":{"type":{"type":"string","enum":["A"],"description":"Тип DNS-записи."},"value":{"type":"string","description":"IPv4 адрес.","example":"192.168.1.0"},"ttl":{"type":"number","description":"Время жизни DNS-записи в секундах.","example":600},"app_id":{"type":"number","description":"Идентификатор приложения в App Platform, к которому будет привязан домен или поддомен.","example":1}},"required":["type","value"]},{"title":"AAAA запись","type":"object","properties":{"type":{"type":"string","enum":["AAAA"],"description":"Тип DNS-записи."},"value":{"type":"string","description":"IPv6 адрес.","example":"2001:db8::1"},"ttl":{"type":"number","description":"Время жизни DNS-записи в секундах.","example":600}},"required":["type","value"]},{"title":"TXT запись","type":"object","properties":{"type":{"type":"string","enum":["TXT"],"description":"Тип DNS-записи."},"value":{"type":"string","description":"Текстовое значение записи.","example":"value"},"ttl":{"type":"number","description":"Время жизни DNS-записи в секундах.","example":600}},"required":["type","value"]},{"title":"CNAME запись","type":"object","properties":{"type":{"type":"string","enum":["CNAME"],"description":"Тип DNS-записи."},"value":{"type":"string","description":"Каноническое имя (целевой домен).","example":"somedomain.ru"},"ttl":{"type":"number","description":"Время жизни DNS-записи в секундах.","example":600}},"required":["type","value"]},{"title":"MX запись","type":"object","properties":{"type":{"type":"string","enum":["MX"],"description":"Тип DNS-записи."},"value":{"type":"string","description":"Имя почтового сервера.","example":"somedomain.ru"},"priority":{"type":"number","description":"Приоритет почтового сервера (чем меньше значение, тем выше приоритет).","example":10},"ttl":{"type":"number","description":"Время жизни DNS-записи в секундах.","example":600}},"required":["type","value","priority"]},{"title":"SRV запись","type":"object","properties":{"type":{"type":"string","enum":["SRV"],"description":"Тип DNS-записи."},"service":{"type":"string","description":"Имя сервиса (должно начинаться с подчеркивания).","example":"_sip"},"protocol":{"type":"string","description":"Протокол (должен начинаться с подчеркивания).","example":"_TCP"},"priority":{"type":"number","description":"Приоритет целевого хоста.","example":10},"port":{"type":"number","description":"TCP или UDP порт, на котором работает сервис.","example":993},"host":{"type":"string","description":"Каноническое имя хоста, предоставляющего сервис.","example":"somedomain.ru"},"ttl":{"type":"number","description":"Время жизни DNS-записи в секундах.","example":600}},"required":["type","service","protocol","priority","port","host"]}]},"dns-record-v2":{"description":"DNS-запись.","type":"object","properties":{"type":{"description":"Тип DNS-записи.","type":"string","enum":["TXT","SRV","CNAME","AAAA","MX","A"],"example":"A"},"id":{"description":"ID DNS-записи.","type":"number","nullable":true,"example":123},"fqdn":{"description":"Полное имя основного домена.","type":"string","example":"somedomain.ru"},"data":{"description":"Данные DNS-записи. Состав полей зависит от типа записи.","type":"object","properties":{"priority":{"description":"Приоритет DNS-записи (для MX и SRV записей).","type":"number","example":10},"subdomain":{"description":"Имя поддомена (только поддомен без основного домена, например `sub` для `sub.example.com`). Для записей на основном домене это поле отсутствует в ответе.","type":"string","nullable":true,"example":"sub"},"value":{"description":"Значение DNS-записи (для A, AAAA, TXT, CNAME, MX записей).","type":"string","example":"192.168.1.0"},"host":{"description":"Каноническое имя хоста, предоставляющего сервис (для SRV записей).","type":"string","example":"somedomain.ru"},"port":{"description":"TCP или UDP порт, на котором работает сервис (для SRV записей).","type":"number","example":993},"service":{"description":"Имя сервиса (для SRV записей).","type":"string","example":"_sip"},"protocol":{"description":"Протокол (для SRV записей).","type":"string","example":"_TCP"}}},"ttl":{"description":"Время жизни DNS-записи.","type":"number","example":600}},"required":["type","data"]},"dns-record":{"description":"DNS-запись.","type":"object","properties":{"type":{"description":"Тип DNS-записи.","type":"string","enum":["TXT","SRV","CNAME","AAAA","MX","A"],"example":"A"},"id":{"description":"ID DNS-записи.","type":"number","nullable":true,"example":123},"data":{"description":"Данные DNS-записи.","type":"object","properties":{"priority":{"description":"Приоритет DNS-записи.","type":"number","example":0},"subdomain":{"description":"Поддомен.","type":"string","nullable":true,"example":"sub.somedomain.ru"},"value":{"description":"Значение DNS-записи.","type":"string","example":"98.76.54.32"}},"required":["value"]},"ttl":{"description":"Время жизни DNS-записи.","type":"number","example":600}},"required":["type","data"]},"create-dns":{"type":"object","properties":{"priority":{"description":"Приоритет DNS-записи.","type":"number","example":0},"subdomain":{"description":"Полное имя поддомена.","type":"string","example":"sub.somedomain.ru"},"type":{"description":"Тип DNS-записи.","type":"string","enum":["TXT","SRV","CNAME","AAAA","MX","A"],"example":"A"},"value":{"description":"Значение DNS-записи.","type":"string","example":"192.168.111.123"},"ttl":{"description":"Время жизни DNS-записи.","type":"number","example":600}},"required":["value","type"]},"domain-name-server":{"description":"Name-сервер","type":"object","properties":{"is_delegation_allowed":{"description":"Это логическое значение, которое показывает включена ли услуга разрешено ли делегирование домена.","type":"boolean","example":true},"items":{"description":"Список name-серверов","type":"array","items":{"type":"object","properties":{"host":{"description":"Хост name-сервера.","type":"string","example":"ns1.timeweb.ru"},"ips":{"description":"Список IP-адресов name-сервера","type":"array","items":{"type":"string","example":"98.76.54.32"}}},"required":["host","ips"]}},"task_status":{"description":"Статус добавления name-сервера.","type":"string","enum":["done","active","failed"],"example":"done"}},"required":["is_delegation_allowed","task_status","items"]},"update-domain-name-servers":{"type":"object","properties":{"name_servers":{"description":"Список новых name-серверов для домена","type":"array","items":{"type":"object","properties":{"host":{"description":"Хост name-сервера.","type":"string","example":"ns1.timeweb.ru"},"ips":{"description":"Список IP-адресов name-сервера","type":"array","items":{"type":"string","example":"98.76.54.32"}}},"required":["host"]}}},"required":["name_servers"]},"domain-prime-type":{"title":"Тип прайм домена","description":"Тип прайм домена.","type":"string","enum":["extra","premium","optimal","maximal"],"example":"maximal"},"domain-request":{"description":"Заявка на продление/регистрацию/трансфер домена.","type":"object","properties":{"account_id":{"description":"ID пользователя","type":"string","example":"cp78562"},"auth_code":{"description":"Код авторизации для переноса домена.","type":"string","nullable":true,"example":"code"},"date":{"description":"Дата создания заявки.","type":"string","format":"date-time","example":"2023-01-31T12:51:00.710Z"},"domain_bundle_id":{"description":"Идентификационный номер бандла, в который входит данная заявка (null - если заявка не входит ни в один бандл).","type":"string","nullable":true,"example":null},"error_code_transfer":{"description":"Код ошибки трансфера домена.","type":"string","nullable":true,"example":null},"fqdn":{"description":"Полное имя домена.","type":"string","example":"somedomain.com"},"group_id":{"description":"ID группы доменных зон.","type":"number","example":123},"id":{"description":"ID заявки.","type":"number","example":123},"is_antispam_enabled":{"description":"Это логическое значение, которое показывает включена ли услуга \"Антиспам\" для домена","type":"boolean","example":false},"is_autoprolong_enabled":{"description":"Это логическое значение, которое показывает, включено ли автопродление домена.","type":"boolean","example":true},"is_whois_privacy_enabled":{"description":"Это логическое значение, которое показывает, включено ли скрытие данных администратора домена для whois. Опция недоступна для доменов в зонах .ru и .рф.","type":"boolean","example":true},"message":{"description":"Информационное сообщение о заявке.","type":"string","nullable":true,"example":"message"},"money_source":{"description":"Источник (способ) оплаты заявки.","type":"string","enum":["use","bonus","invoice"],"nullable":true,"example":"use"},"period":{"$ref":"#/components/schemas/domain-payment-period"},"person_id":{"description":"Идентификационный номер персоны для заявки на регистрацию.","type":"number","example":123},"prime":{"allOf":[{"$ref":"#/components/schemas/domain-prime-type"}],"nullable":true,"example":null},"soon_expire":{"description":"Количество дней до конца регистрации домена, за которые мы уведомим о необходимости продления.","type":"number","example":30},"sort_order":{"description":"Это значение используется для сортировки доменных зон в панели управления.","type":"number","example":123},"type":{"description":"Тип заявки.","type":"string","enum":["request","prolong","transfer"],"example":"request"}},"required":["is_antispam_enabled","auth_code","is_autoprolong_enabled","account_id","date","domain_bundle_id","error_code_transfer","fqdn","group_id","id","message","money_source","period","person_id","prime","soon_expire","sort_order","type","is_whois_privacy_enabled"]},"domain-register":{"title":"Заявка на регистрацию домена","description":"Заявка на регистрацию домена","type":"object","properties":{"action":{"description":"Тип создаваемой заявки.","enum":["register"],"type":"string","example":"register"},"fqdn":{"description":"Полное имя домена.","type":"string","example":"somedomain.ru"},"is_autoprolong_enabled":{"description":"Это логическое значение, которое показывает, включено ли автопродление домена.","type":"boolean","example":true},"is_whois_privacy_enabled":{"description":"Это логическое значение, которое показывает, включено ли скрытие данных администратора домена для whois. Опция недоступна для доменов в зонах .ru и .рф.","type":"boolean","example":true},"period":{"$ref":"#/components/schemas/domain-payment-period"},"person_id":{"description":"ID администратора, на которого регистрируется домен.","type":"number","example":123}},"required":["action","fqdn","person_id"]},"domain-prolong":{"title":"Заявка на продление домена","description":"Заявка на продление домена","type":"object","properties":{"action":{"description":"Тип создаваемой заявки.","enum":["prolong"],"type":"string","example":"prolong"},"fqdn":{"description":"Полное имя домена.","type":"string","example":"somedomain.ru"},"is_antispam_enabled":{"description":"Это логическое значение, которое показывает включена ли услуга \"Антиспам\" для домена","type":"boolean","example":false},"is_autoprolong_enabled":{"description":"Это логическое значение, которое показывает, включено ли автопродление домена.","type":"boolean","example":true},"is_whois_privacy_enabled":{"description":"Это логическое значение, которое показывает, включено ли скрытие данных администратора домена для whois. Опция недоступна для доменов в зонах .ru и .рф.","type":"boolean","example":true},"period":{"$ref":"#/components/schemas/domain-payment-period"},"person_id":{"description":"ID администратора, на которого зарегистрирован домен.","type":"number","example":123},"prime":{"$ref":"#/components/schemas/domain-prime-type"}},"required":["action","fqdn"]},"domain-transfer":{"title":"Заявка на перенос домена","description":"Заявка на перенос домена","type":"object","properties":{"action":{"description":"Тип создаваемой заявки.","enum":["transfer"],"type":"string","example":"transfer"},"auth_code":{"description":"Код авторизации для переноса домена.","type":"string","example":"code"},"fqdn":{"description":"Полное имя домена.","type":"string","example":"somedomain.ru"}},"required":["action","fqdn","auth_code"]},"use":{"title":"Оплата заявки на продление/регистрацию домена с баланса аккаунта","description":"Оплата заявки на продление/регистрацию домена с баланса аккаунта","type":"object","properties":{"money_source":{"description":"Тип создаваемой заявки.","enum":["use"],"type":"string","example":"use"},"person_id":{"description":"ID администратора, на которого зарегистрирован домен.","type":"number","example":123}},"required":["money_source"]},"invoice":{"title":"Оплата заявки на продление/регистрацию домена при помощи платежной системы","description":"Оплата заявки на продление/регистрацию домена при помощи платежной системы","type":"object","properties":{"money_source":{"description":"Тип создаваемой заявки.","enum":["invoice"],"type":"string","example":"invoice"},"person_id":{"description":"ID администратора, на которого зарегистрирован домен.","type":"number","example":123},"payment_type":{"description":"Тип платежной системы.","type":"string","enum":["receipt","card","mobile-card","wm","webmoney","yandex","ya","invoice","sofort","qiwi_wallet","wechat"],"example":123},"payer_id":{"description":"Идентификационный номер плательщика","type":"number","example":123}},"required":["money_source","payment_type","payer_id"]},"free":{"title":"Обновление заявки на перенос домена","description":"Обновление заявки на перенос домена","type":"object","properties":{"money_source":{"description":"Тип создаваемой заявки.","enum":["free"],"type":"string","example":"free"},"person_id":{"description":"ID администратора, на которого зарегистрирован домен.","type":"number","example":123},"auth_code":{"description":"Код авторизации для переноса домена.","type":"string","example":"code"}},"required":["money_source","auth_code"]},"bonus":{"title":"Оплата заявки на продление/регистрацию домена бонусом","description":"Оплата заявки на продление/регистрацию домена бонусом","type":"object","properties":{"money_source":{"description":"Тип создаваемой заявки.","enum":["bonus"],"type":"string","example":"bonus"},"person_id":{"description":"ID администратора, на которого зарегистрирован домен.","type":"number","example":123},"bonus_id":{"description":"ID бонуса.","type":"number","example":123}},"required":["money_source","bonus_id"]},"top-level-domain":{"description":"Доменная зона.","type":"object","properties":{"allowed_buy_periods":{"description":"Список доступных периодов для регистрации/продления доменов со стоимостью.","type":"array","items":{"type":"object","properties":{"period":{"description":"Период регистрации/продления домена.","type":"string","example":"P1Y"},"price":{"description":"Цена регистрации/продления домена.","type":"number","example":123}},"required":["period","price"]}},"early_renew_period":{"description":"Количество дней до истечение срока регистрации, когда можно продлять домен.","type":"number","nullable":true,"example":60},"grace_period":{"description":"Количество дней, которые действует льготный период когда вы ещё можете продлить домен, после окончания его регистрации","type":"number","example":30},"id":{"description":"ID доменной зоны.","type":"number","example":123},"is_published":{"description":"Это логическое значение, которое показывает, опубликована ли доменная зона.","type":"boolean","example":true},"is_registered":{"description":"Это логическое значение, которое показывает, зарегистрирована ли доменная зона.","type":"boolean","example":true},"is_whois_privacy_default_enabled":{"description":"Это логическое значение, которое показывает, включено ли по умолчанию скрытие данных администратора для доменной зоны.","type":"boolean","example":true},"is_whois_privacy_enabled":{"description":"Это логическое значение, которое показывает, доступно ли управление скрытием данных администратора для доменной зоны.","type":"boolean","example":true},"name":{"description":"Имя доменной зоны.","type":"string","example":"ru"},"price":{"description":"Цена регистрации домена","type":"number","example":100},"prolong_price":{"description":"Цена продления домена.","type":"number","example":100},"registrar":{"description":"Регистратор доменной зоны.","type":"string","enum":["NIC","PDR","R01","timeweb","TimewebVirtreg","Webnames","unknown"],"example":"TimewebVirtreg"},"transfer":{"description":"Цена услуги трансфера домена.","type":"number","example":0},"whois_privacy_price":{"description":"Цена услуги скрытия данных администратора для доменной зоны.","type":"number","example":300}},"required":["early_renew_period","grace_period","id","name","price","prolong_price","is_published","is_registered","registrar","transfer","is_whois_privacy_enabled","is_whois_privacy_default_enabled","whois_privacy_price","allowed_buy_periods"]},"person":{"type":"object","properties":{"id":{"description":"Уникальный идентификатор администратора домена.","type":"integer","example":123},"type":{"description":"Тип администратора: `person` — физическое лицо, `org` — организация, `ip` — индивидуальный предприниматель.","type":"string","enum":["person","org","ip"],"example":"person"},"name":{"description":"Имя администратора (ФИО или название организации).","type":"string","example":"Иванов Иван Иванович"},"name_eng":{"description":"Имя администратора в латинской транслитерации.","type":"string","example":"Ivanov Ivan"},"email":{"description":"Адрес электронной почты администратора.","type":"string","example":"ivanov@example.com"},"phone":{"description":"Контактный телефон администратора.","type":"string","example":"+79000000000"},"postcode":{"description":"Почтовый индекс.","type":"string","example":"190000"},"mailing_address":{"description":"Почтовый адрес.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"country_code":{"description":"Код страны администратора.","type":"string","nullable":true,"example":"RU"},"is_resident":{"description":"Это логическое значение, которое показывает, является ли администратор резидентом РФ.","type":"boolean","example":true},"is_blank":{"description":"Это логическое значение, которое показывает, заполнены ли данные администратора не полностью.","type":"boolean","example":false},"is_closed":{"description":"Это логическое значение, которое показывает, закрыт ли администратор.","type":"boolean","example":false},"birthdate":{"description":"Дата рождения. Только для типов `person` и `ip`.","type":"string","example":"1990-01-01"},"passport_date":{"description":"Дата выдачи паспорта. Только для типов `person` и `ip`.","type":"string","example":"2010-01-01"},"passport_number":{"description":"Номер паспорта. Только для типов `person` и `ip`.","type":"string","example":"123456"},"passport_place":{"description":"Кем выдан паспорт. Только для типов `person` и `ip`.","type":"string","example":"ОУФМС России"},"passport_series":{"description":"Серия паспорта. Только для типов `person` и `ip`.","type":"string","example":"1234"},"inn":{"description":"ИНН. Только для типов `org` и `ip`.","type":"string","example":"7700000000"},"kpp":{"description":"КПП организации. Только для типа `org`.","type":"string","example":"770000000"},"legal_address":{"description":"Юридический адрес организации. Только для типа `org`.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"contact_name":{"description":"Контактное лицо организации. Только для типа `org`.","type":"string","example":"Иванов Иван Иванович"}},"required":["id","type","name","name_eng","email","phone","postcode","mailing_address","country_code","is_resident","is_blank","is_closed"]},"person-2":{"title":"Физическое лицо","description":"Администратор домена — физическое лицо","type":"object","properties":{"type":{"description":"Тип администратора.","enum":["person"],"type":"string","example":"person"},"name":{"description":"ФИО администратора.","type":"string","example":"Иванов Иван Иванович"},"is_resident":{"description":"Это логическое значение, которое показывает, является ли администратор резидентом РФ.","type":"boolean","example":true},"birthdate":{"description":"Дата рождения.","type":"string","example":"1990-01-01"},"passport_date":{"description":"Дата выдачи паспорта.","type":"string","example":"2010-01-01"},"passport_number":{"description":"Номер паспорта.","type":"string","example":"123456"},"passport_place":{"description":"Кем выдан паспорт.","type":"string","example":"ОУФМС России"},"passport_series":{"description":"Серия паспорта.","type":"string","example":"1234"},"postcode":{"description":"Почтовый индекс.","type":"string","example":"190000"},"mailing_address":{"description":"Почтовый адрес.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"phone":{"description":"Контактный телефон.","type":"string","example":"+79000000000"},"email":{"description":"Адрес электронной почты.","type":"string","example":"ivanov@example.com"},"country_code":{"description":"Код страны. Только для нерезидентов РФ (`is_resident: false`); для резидентов поле передавать не нужно.","type":"string","nullable":true,"example":"KZ"}},"required":["type","name","is_resident","birthdate","passport_date","passport_number","passport_place","passport_series","postcode","mailing_address","phone","email"]},"org":{"title":"Организация","description":"Администратор домена — организация","type":"object","properties":{"type":{"description":"Тип администратора.","enum":["org"],"type":"string","example":"org"},"name":{"description":"Название организации.","type":"string","example":"ООО «Пример»"},"is_resident":{"description":"Это логическое значение, которое показывает, является ли администратор резидентом РФ.","type":"boolean","example":true},"contact_name":{"description":"Контактное лицо организации.","type":"string","example":"Иванов Иван Иванович"},"inn":{"description":"ИНН организации.","type":"string","example":"7700000000"},"kpp":{"description":"КПП организации.","type":"string","example":"770000000"},"legal_address":{"description":"Юридический адрес организации.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"postcode":{"description":"Почтовый индекс.","type":"string","example":"190000"},"mailing_address":{"description":"Почтовый адрес.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"phone":{"description":"Контактный телефон.","type":"string","example":"+79000000000"},"email":{"description":"Адрес электронной почты.","type":"string","example":"org@example.com"},"country_code":{"description":"Код страны. Только для нерезидентов РФ (`is_resident: false`); для резидентов поле передавать не нужно.","type":"string","nullable":true,"example":"KZ"}},"required":["type","name","is_resident","contact_name","inn","legal_address","postcode","mailing_address","phone","email"]},"ip":{"title":"Индивидуальный предприниматель","description":"Администратор домена — индивидуальный предприниматель","type":"object","properties":{"type":{"description":"Тип администратора.","enum":["ip"],"type":"string","example":"ip"},"name":{"description":"ФИО индивидуального предпринимателя.","type":"string","example":"ИП Иванов Иван Иванович"},"is_resident":{"description":"Это логическое значение, которое показывает, является ли администратор резидентом РФ.","type":"boolean","example":true},"birthdate":{"description":"Дата рождения.","type":"string","example":"1990-01-01"},"passport_date":{"description":"Дата выдачи паспорта.","type":"string","example":"2010-01-01"},"passport_number":{"description":"Номер паспорта.","type":"string","example":"123456"},"passport_place":{"description":"Кем выдан паспорт.","type":"string","example":"ОУФМС России"},"passport_series":{"description":"Серия паспорта.","type":"string","example":"1234"},"inn":{"description":"ИНН индивидуального предпринимателя.","type":"string","example":"770000000000"},"postcode":{"description":"Почтовый индекс.","type":"string","example":"190000"},"mailing_address":{"description":"Почтовый адрес.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"phone":{"description":"Контактный телефон.","type":"string","example":"+79000000000"},"email":{"description":"Адрес электронной почты.","type":"string","example":"ip@example.com"},"country_code":{"description":"Код страны. Только для нерезидентов РФ (`is_resident: false`); для резидентов поле передавать не нужно.","type":"string","nullable":true,"example":"KZ"}},"required":["type","name","is_resident","birthdate","passport_date","passport_number","passport_place","passport_series","inn","postcode","mailing_address","phone","email"]},"update-person":{"type":"object","properties":{"address":{"description":"Почтовый адрес администратора.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"email":{"description":"Адрес электронной почты администратора.","type":"string","example":"ivanov@example.com"},"phone":{"description":"Контактный телефон администратора.","type":"string","example":"+79000000000"},"postcode":{"description":"Почтовый индекс.","type":"string","example":"190000"}},"required":["address","email","phone","postcode"]},"vpc":{"properties":{"id":{"type":"string","description":"ID сети.","example":"network-1234567890"},"name":{"type":"string","description":"Имя сети.","example":"Общая сеть"},"subnet_v4":{"type":"string","description":"Маска подсети.","example":"192.168.0.0/24"},"location":{"type":"string","description":"Локация сети.","enum":["ru-1","ru-2","pl-1","nl-1"],"example":"ru-1"},"created_at":{"type":"string","description":"Дата создания сети.","format":"date-time","example":"2023-02-06T17:33:13Z"},"description":{"type":"string","description":"Описание.","example":"Сеть для примера"},"availability_zone":{"$ref":"#/components/schemas/availability-zone"},"public_ip":{"type":"string","nullable":true,"description":"Публичный IP-адрес сети.","example":null},"type":{"type":"string","enum":["bgp","ovn"],"description":"Тип сети.","example":"ovn"},"busy_address":{"type":"array","description":"Занятые адреса в сети","items":{"type":"string"},"example":[]}},"required":["id","name","subnet_v4","location","created_at","availability_zone","description","public_ip","type","busy_address"]},"create-vpc":{"properties":{"name":{"type":"string","description":"Имя сети.","example":"Общая сеть"},"subnet_v4":{"type":"string","description":"Маска подсети.","example":"192.168.0.0/24"},"location":{"type":"string","description":"Локация сети.","enum":["ru-1","ru-2","pl-1","nl-1"],"example":"ru-1"},"description":{"type":"string","description":"Описание.","example":"Сеть для примера"},"availability_zone":{"$ref":"#/components/schemas/availability-zone"}},"required":["location","name","subnet_v4"]},"update-vpc":{"properties":{"name":{"type":"string","description":"Имя сети.","example":"Общая сеть"},"description":{"type":"string","description":"Описание.","example":"Сеть для примера"}}},"vpc-service":{"properties":{"id":{"type":"number","description":"ID сервисв.","example":"560"},"name":{"type":"string","description":"Имя сервиса.","example":"Intelligent Raven"},"public_ip":{"type":"string","description":"Публичный IP-адрес сервиса","example":"192.168.0.0"},"local_ip":{"type":"string","description":"Приватный IP-адрес сервиса","example":"192.168.0.0"},"type":{"type":"string","description":"Тип сервиса.","enum":["server","balancer","dbaas"],"example":"server"}},"required":["id","name","subnet_v4","location","created_at"]},"vpc-port":{"properties":{"id":{"type":"string","description":"ID порта.","example":"d05673e4-1c74-46g4-b98f-aa3d42a99079"},"nat_mode":{"type":"string","description":"Тип преобразования сетевых адресов.","enum":["dnat_and_snat","snat","no_nat"],"example":"dnat_and_snat"},"mac":{"type":"string","description":"MAC адрес.","example":"51:43:35:c3:aa:fa"},"ipv4":{"type":"string","description":"Внутренний адрес.","example":"172.16.16.2"},"service":{"type":"object","description":"Сервис, к которому привязан порт.","properties":{"id":{"type":"integer","description":"ID сервиса.","example":1},"type":{"type":"string","description":"Тип сервиса.","enum":["server","balancer","dbaas"],"example":"server"},"name":{"type":"string","description":"Название сервиса.","example":"Example"}},"required":["id","type","name"]}},"required":["id","nat_mode","mac","ipv4","service"]},"ssh-key":{"properties":{"id":{"type":"number","description":"ID SSH-ключа.","example":2},"name":{"type":"string","description":"Название SSH-ключа.","example":"ssh key"},"body":{"type":"string","description":"Тело SSH-ключа.","example":"ssh-dss AAAAB3NzaC1kc3MAAACBALixbc+uF2kuv83LiB3gg200vHJ7hH0QCC77fqlu+5raX6Y1PJZZORwzvbvU6k8gfrmjMRwQFDNncu3aXUiM9TleOBxFsQ2Hg5hDblSr2bnnyVP0jjPzsYye+0Ebaa+IjEqZz8y0qu8zejCpHqhLP/PlRDS9vtTsadrVvNwFFCyhAAAAFQD7m0AZOd/lHraIgBjXJvfN+qGiAQAAAIAdXSV0n47akGC/g0ejkNzHDSdRFf2fR0FsOos/7f5j+QfstijVBMwzA4Ti+dNJv3BQqQv3Bk5X3o5yUTUL+cM6fa4KSyIhGi14RL0kqjJrNjrVAhwjPH8K9aHDouqQEz56UL72+iGhMxwBHBMWq7cZ2k31mmFgEoYgwNcYuNmtlAAAAIBxIebJMItpq3ez5Hg5GyhpnSU7h0kshh+D5UAAlPmJo8OUQH6avQGf6gpxs3CnQ/im/aCKcb/bYm4V5Y9a7Zq+LrZGQZ79GLWsu/oK0HfQiP+oWwzCGmsdIGblsTRzrKU0FFo7zGmyTsBU48OeD76nKsc5EJ9F9wQC3S2KK38Ynw== test@MBP-test.office.timeweb.ru"},"created_at":{"type":"string","description":"Значение времени, указанное в комбинированном формате даты и времени ISO8601, которое представляет, когда был создан SSH-ключ.","format":"date-time","example":"2023-02-06T17:33:13Z"},"used_by":{"type":"array","description":"Список серверов, которые используют SSH-ключ.","items":{"type":"object","properties":{"id":{"description":"ID сервер.а","type":"number","example":3},"name":{"description":"Название сервера.","type":"string","example":"test"}},"required":["id","name"]}},"is_default":{"type":"boolean","description":"Это логическое значение, которое показывает, будет ли выбираться SSH-ключ по умолчанию при создании сервера."}},"required":["is_enabled","id","name","body","created_at","used_by"]},"floating-ip":{"properties":{"id":{"type":"string","description":"ID IP.","example":"4df0e781-cafb-4419-9636-ce5fc93591af"},"ip":{"type":"string","description":"IP-адрес","example":"82.97.244.202","nullable":true},"is_ddos_guard":{"type":"boolean","description":"Это логическое значение, которое показывает, включена ли защита от DDoS.","example":"true"},"availability_zone":{"$ref":"#/components/schemas/availability-zone"},"resource_type":{"type":"string","description":"Тип ресурса.","enum":["server","balancer","database","network"],"nullable":true,"example":"server"},"resource_id":{"description":"Id ресурса.","example":"24569","nullable":true,"oneOf":[{"type":"number"},{"type":"string"}]},"comment":{"type":"string","description":"Комментарий","example":"Комментарий","nullable":true},"ptr":{"type":"string","description":"Запись имени узла.","example":"ptr","nullable":true}},"required":["id","ip","is_ddos_guard","availability_zone","resource_type","resource_id","comment","ptr"]},"create-floating-ip":{"properties":{"is_ddos_guard":{"type":"boolean","description":"Это логическое значение, которое показывает, включена ли защита от DDoS.","example":"true"},"availability_zone":{"$ref":"#/components/schemas/availability-zone"}},"required":["is_ddos_guard","availability_zone"]},"update-floating-ip":{"properties":{"comment":{"type":"string","description":"Комментарий","example":"Комментарий"},"ptr":{"type":"string","description":"Запись имени узла.","example":"ptr"}}},"bind-floating-ip":{"properties":{"resource_type":{"type":"string","description":"Тип ресурса.","enum":["server","balancer","database","network"],"example":"server"},"resource_id":{"description":"Id ресурса.","example":"24569","oneOf":[{"type":"number"},{"type":"string"}]}},"required":["resource_type","resource_id"]},"location":{"type":"string","description":"Локация.","enum":["ru-1","ru-2","ru-3","pl-1","kz-1","nl-1"],"example":"ru-1"},"location-dto":{"description":"Локация","type":"object","properties":{"location":{"$ref":"#/components/schemas/location"},"location_code":{"type":"string","description":"Код локации в формате `ISO 3166`","example":"RU"},"availability_zones":{"type":"array","description":"Список зон, доступных в данной локации","items":{"type":"string"},"example":["spb-1"]}},"required":["location","location_code","availability_zones"]},"providers":{"type":"string","description":"Тип провайдера.","enum":["github","gitlab","bitbucket","git"],"example":"github"},"frameworks":{"type":"string","description":"Фреймворк приложения.","oneOf":[{"enum":["django","express","phoenix","Spring","laravel","beego","fastapi","ASP.NET Core","hapi","celery","flask","gin","docker","fastify","nest","symfony","yii"],"description":"Доступные фреймворки для backend приложений"},{"enum":["angular","ember","next.js","nuxt","preact","react","svelte","vue","another"],"description":"Доступные фреймворки для frontend приложений"}],"example":"django"},"repository":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"ID репозитория.","example":"eb4e1796-78ce-4232-a824-3c3f4dfaf98f"},"name":{"type":"string","description":"Имя репозитория.","example":"app-example-express"},"full_name":{"type":"string","description":"Полное имя репозитория.","example":"example-repo/app-example-express"},"url":{"type":"string","description":"Ссылка на репозиторий.","example":"https://github.com/example-repo/app-example-express"},"is_private":{"type":"boolean","description":"Является ли репозиторий приватным.","example":false},"is_allowed_webhook":{"type":"boolean","description":"Доступно ли создание вебхука для функции автодеплойя.","example":true}},"required":["id","name","full_name","url","is_private","is_allowed_webhook"]},"app":{"description":"Экземпляр приложения.","type":"object","properties":{"id":{"type":"number","description":"ID для каждого экземпляра приложения. Автоматически генерируется при создании.","example":1},"type":{"type":"string","description":"Тип приложения.","enum":["backend","frontend"],"example":"backend"},"name":{"type":"string","description":"Удобочитаемое имя, установленное для приложения.","example":"app_example"},"status":{"type":"string","description":"Статус приложения.","enum":["active","paused","no_paid","deploy","failure","startup_error","new","reboot"],"example":"active"},"provider":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"ID провайдера.","example":"826e9a9d-40cd-49b1-b547-0c439834498b"},"type":{"$ref":"#/components/schemas/providers"}},"required":["id","type"]},"ip":{"type":"string","format":"ipv4","description":"IPv4-адрес приложения.","example":"165.23.54.161."},"domains":{"type":"array","items":{"type":"object","properties":{"fqdn":{"type":"string","description":"Домен","example":"app-example.twc1.net"}}}},"framework":{"$ref":"#/components/schemas/frameworks"},"location":{"type":"string","description":"Локация сервера.","enum":["ru-1","pl-1","nl-1"],"example":"ru-1"},"repository":{"$ref":"#/components/schemas/repository"},"env_version":{"type":"string","nullable":true,"description":"Версия окружения.","example":"18"},"envs":{"type":"object","description":"Переменные окружения приложения. Объект с ключами и значениями типа string.","example":{"NODE_ENV":"production"}},"branch_name":{"type":"string","description":"Название ветки репозитория из которой собрано приложение.","example":"master"},"is_auto_deploy":{"type":"boolean","description":"Включен ли автоматический деплой.","example":"true"},"commit_sha":{"type":"string","description":"Хэш коммита из которого собрано приложеие.","example":"7d3a6dcca79d2c29e3fe7456ca1598e70d484d7c"},"comment":{"type":"string","description":"Комментарий к приложению.","example":"example comment"},"preset_id":{"type":"number","description":"ID тарифа.","example":42},"index_dir":{"type":"string","nullable":true,"description":"Путь к директории с индексным файлом. Определен для приложений `type: frontend`. Для приложений `type: backend` всегда null.","example":"/dist"},"build_cmd":{"type":"string","description":"Команда сборки приложения.","example":"npm run build"},"avatar_link":{"type":"string","nullable":true,"description":"Ссылка на аватар приложения.","example":"https://urltoimage.com/avatars/image.png"},"run_cmd":{"type":"string","nullable":true,"description":"Команда для запуска приложения. Определена для приложений `type: backend`. Для приложений `type: frontend` всегда null.","example":"npm start"},"configuration":{"type":"object","nullable":true,"description":"Объект с конфигурацией сервера. Определен для приложений `type: backend`.Для приложений `type: frontend` всегда null.","properties":{"cpu":{"type":"number","description":"Количество ядер процессора.","example":1},"ram":{"type":"number","description":"Объем оперативной памяти (в МБ).","example":1024},"network_bandwidth":{"type":"number","description":"Скорость сетевого канала (в Мбит/с).","example":1000},"cpu_frequency":{"type":"string","description":"Частота процессора (в ГГц).","example":"3.3"},"disk_type":{"type":"string","description":"Тип диска.","enum":["ssd","nvme","hdd"],"example":"nvme"}}},"disk_status":{"type":"object","nullable":true,"description":"Объект с конфигурацией диска. Определен для приложений `type: backend`.Для приложений `type: frontend` всегда null.","properties":{"used":{"type":"number","description":"Использованное пространство диска.","example":4509},"size":{"type":"number","description":"Размер диска.","example":15360},"disk_id":{"type":"number","description":"ID диска.","example":19769639}}},"is_qemu_agent":{"type":"boolean","description":"Включен ли агент QEMU.","example":true},"language":{"type":"string","description":"Язык программирования приложения.","example":"node"},"start_time":{"type":"string","format":"date-time","description":"Время запуска приложения.","example":"2024-07-24T10:38:44.000Z"}},"required":["id","name","status","ip","type","framework","location","repository","envs","domains","branch_name","is_auto_deploy","commit_sha","build_cmd","comment","preset_id","language","provider","server_id","disk_status","avatar_link","configuration","run_cmd","index_dir","env_version","is_qemu_agent","start_time"]},"create-app":{"properties":{"provider_id":{"type":"string","format":"uuid","description":"ID провайдера.","example":"b392b624-ee80-496e-8b61-47276acac2da"},"type":{"type":"string","description":"Тип приложения.","enum":["frontend","backend"],"example":"backend"},"repository_id":{"type":"string","format":"uuid","description":"ID репозитория.","example":"eb4e1796-78ce-4232-a824-3c3f4dfaf98f"},"build_cmd":{"type":"string","description":"Команда сборки приложения.","example":"npm run build"},"envs":{"type":"object","description":"Переменные окружения приложения. Объект с ключами и значениями типа string.","example":{"NODE_ENV":"production"}},"branch_name":{"type":"string","description":"Название ветки репозитория из которой необходимо собрать приложение.","example":"master"},"is_auto_deploy":{"type":"boolean","description":"Автоматический деплой.","example":true},"commit_sha":{"type":"string","description":"Хэш коммита из которого необходимо собрать приложение.","example":"7d3a6dcca79d2c29e3fe7456ca1598e70d484d7c"},"name":{"type":"string","description":"Имя приложения.","example":"app_example"},"comment":{"type":"string","description":"Комментарий к приложению.","example":"example comment"},"preset_id":{"type":"number","description":"ID тарифа.","example":42},"env_version":{"type":"string","description":"Версия окружения.","example":"18"},"framework":{"$ref":"#/components/schemas/frameworks"},"index_dir":{"type":"string","description":"Путь к директории с индексным файлом. Обязателен для приложений `type: frontend`. Не используется для приложений `type: backend`. Значение всегда должно начинаться с `/`.","example":"/dist"},"run_cmd":{"type":"string","description":"Команда для запуска приложения. Обязательна для приложений `type: backend`. Не используется для приложений `type: frontend`.","example":"npm start"},"system_dependencies":{"type":"array","description":"Системные зависимости.","items":{"example":"php-mysql","type":"string"}},"project_id":{"type":"number","description":"ID проекта.","example":"1"}},"required":["provider_id","repository_id","type","branch_name","build_cmd","is_auto_deploy","commit_sha","name","comment","preset_id","framework"]},"update-settings":{"properties":{"is_auto_deploy":{"type":"boolean","description":"Автоматический деплой.","example":"true"},"build_cmd":{"type":"string","description":"Команда сборки приложения.","example":"npm run build"},"envs":{"type":"object","description":"Переменные окружения приложения. Объект с ключами и значениями типа string.","example":{"NODE_ENV":"production"}},"branch_name":{"type":"string","description":"Название ветки репозитория из которой необходимо собрать приложение.","example":"master"},"commit_sha":{"type":"string","description":"Хэш коммита.","example":"7d3a6dcca79d2c29e3fe7456ca1598e70d484d7c"},"env_version":{"type":"string","description":"Версия окружения.","example":"18"},"index_dir":{"type":"string","description":"Путь к директории с индексным файлом. Используется для приложений `type: frontend`. Не используется для приложений `type: backend`. Значение всегда должно начинаться с `/`.","example":"/dist"},"run_cmd":{"type":"string","description":"Команда для запуска приложения. Используется для приложений `type: backend`. Не используется для приложений `type: frontend`.","example":"npm start"},"framework":{"$ref":"#/components/schemas/frameworks"},"name":{"type":"string","description":"Имя приложения.","example":"app_example"},"comment":{"type":"string","description":"Комментарий к приложению.","example":"example comment"},"preset_id":{"type":"number","description":"ID тарифа.","example":42}}},"provider":{"properties":{"provider_id":{"type":"string","format":"uuid","description":"ID провайдера.","example":"ec23f4b1-3b7b-4b7b-8b7b-3b7b4b7b8b7b"},"login":{"type":"string","description":"Логин пользователя.","example":"timeweb-cloud"},"provider_type":{"$ref":"#/components/schemas/providers"}},"required":["provider_id","login","provider_type"]},"add-github":{"title":"Добавление аккаунта GitHub","description":"Добавление аккаунта GitHub","type":"object","properties":{"provider_type":{"type":"string","description":"Тип провайдера.","enum":["github"],"example":"github"},"provider_token":{"type":"string","description":"Токен доступа.
Для GitHub необходимо использовать 'Fine-grained personal access token'. Инструкции по созданию можно найти в документации GitHub.
Выберите репозитории, к которым хотите предоставить доступ, и установите следующие разрешения: `Webhooks: read and write`, `Contents: read-only`."}},"required":["provider_type","provider_token"]},"add-gitlab":{"title":"Добавление аккаунта GitLab","description":"Добавление аккаунта GitLab","type":"object","properties":{"provider_type":{"type":"string","description":"Тип провайдера.","enum":["gitlab"],"example":"gitlab"},"provider_token":{"type":"string","description":"Токен доступа.
Для GitLab необходимо использовать персональный токен доступа. Инструкции по созданию можно найти в документации GitLab.
Установите следующие разрешения: `api`"}},"required":["provider_type","provider_token"]},"add-bitbucket":{"title":"Добавление аккаунта Bitbucket","description":"Добавление аккаунта Bitbucket","type":"object","properties":{"provider_type":{"type":"string","description":"Тип провайдера.","enum":["bitbucket"],"example":"bitbucket"},"provider_token":{"type":"string","description":"Токен доступа.
Для Bitbucket необходимо использовать 'App password'. Инструкции по созданию можно найти в документации Bitbucket.
Установите следующие разрешения: `Account: Read`, `Projects: Read`, `Repositories: Read`, `Webhooks: Read and write`"},"login":{"type":"string","description":"Логин пользователя Bitbucket.","example":"timeweb-cloud"}},"required":["provider_type","provider_token","login"]},"add-git":{"title":"Добавление репозитория любого провайдера по url","type":"object","properties":{"provider_type":{"type":"string","description":"Тип провайдера.","enum":["git"],"example":"git"},"url":{"type":"string","description":"Внешний url адрес репозитория.","example":"https://github.com/timeweb-cloud/app-example-flask.git"},"login":{"type":"string","description":"Логин провайдера. Используется при добавлении приватных репозиториев","example":"timeweb-cloud"},"password":{"type":"string","description":"Пароль или токен провайдера. Обязателен при добавлении приватных репозиториев. Подробнее в нашей документации.","example":"password"}},"required":["provider_type","url"]},"branch":{"properties":{"name":{"type":"string","description":"Имя ветки.","example":"master"}},"required":["name"]},"commit":{"properties":{"sha":{"type":"string","description":"Хэш коммита.","example":"inid8d9843hfu934f43iofnfi34f4ffed"},"created_at":{"type":"string","format":"date-time","description":"Значение времени, указанное в комбинированном формате даты и времени ISO8601, которое представляет, когда был создан коммит.","example":"2022-10-25T15:15:45.000Z"},"message":{"type":"string","description":"Сообщение коммита.","example":"initial commit"}},"required":["sha","created_at","message"]},"deploy-status":{"type":"string","description":"Статусы деплоя.","enum":["created","started","preparing_environment","cloning_code","installing_dependencies","building_code","checking_ssl_certs","cleaning_up","running_container","stopping","stopped","failure","success","access_error"],"example":"success"},"deploy":{"type":"object","properties":{"app_id":{"type":"string","description":"ID приложения.","example":"1"},"commit_sha":{"type":"string","description":"Хэш коммита.","example":"7d3a6dcca79d2c29e3fe7456ca1598e70d484d7c"},"id":{"type":"string","format":"uuid","description":"ID.","example":"123e4567-e89b-12d3-a456-426614174000"},"started_at":{"type":"string","format":"date-time","description":"Время запуска деплоя.","example":"2024-07-24T10:38:44.000Z"},"ended_at":{"type":"string","nullable":true,"format":"date-time","description":"Время окончания деплоя. Определено для завершенных деплоев","example":"2024-07-24T12:38:44.000Z"},"status":{"$ref":"#/components/schemas/deploy-status"},"commit_msg":{"type":"string","description":"Сообщение коммита.","example":"Initial commit"}},"required":["app_id","commit","commit_sha","id","started_at","ended_at","status","commit_msg"]},"apps-presets":{"type":"object","properties":{"backend_presets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID пресета.","example":568},"description":{"type":"string","description":"Описание пресета.","example":"Backend apps"},"description_short":{"type":"string","description":"Краткое описание пресета.","example":"Backend apps"},"price":{"type":"integer","description":"Цена пресета.","example":199},"cpu":{"type":"integer","description":"Количество CPU.","example":1},"ram":{"type":"integer","description":"Объем RAM в МБ.","example":1024},"disk":{"type":"integer","description":"Объем диска в МБ.","example":10240},"location":{"type":"string","description":"Локация.","example":"ru-1"},"cpu_frequency":{"type":"string","description":"Частота CPU.","example":"2.4"}},"required":["id","description_short","price","cpu","ram","disk","location"]}},"frontend_presets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID пресета.","example":584},"description":{"type":"string","description":"Описание пресета.","example":"frontend app"},"description_short":{"type":"string","description":"Краткое описание пресета.","example":"frontend app"},"price":{"type":"integer","description":"Цена пресета.","example":99},"location":{"type":"string","description":"Локация.","example":"ru-1"},"requests":{"type":"integer","description":"Количество запросов.","example":200},"disk":{"type":"integer","description":"Объем диска в МБ.","example":1024}},"required":["id","description_short","price","location","requests","disk"]}}},"required":["backend","frontend"]},"deploy-settings":{"type":"array","items":{"type":"object","properties":{"framework":{"type":"string","description":"Название фреймворка.","example":"angular"},"build_cmd":{"type":"string","description":"Команда для сборки проекта.","example":"npm run build"},"index_dir":{"type":"string","description":"Директория с индексными файлами.","example":"/dist//browser"},"run_cmd":{"type":"string","description":"Команда для запуска проекта.","example":""}},"required":["framework","build_cmd","index_dir","run_cmd"]}},"available-frameworks":{"properties":{"frontend_frameworks":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string","description":"Язык программирования для приложений `type: frontend`.","example":"javascript"},"versions":{"type":"array","items":{"type":"string"},"description":"Поддерживаемые версии языка.","example":["20","18","16"]},"frameworks":{"type":"array","items":{"type":"string"},"description":"Поддерживаемые фреймворки.","example":["angular","react","vue"]}},"required":["language","versions","frameworks"]}},"backend_frameworks":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string","description":"Язык программирования для приложения `type: backend`.","example":"node"},"versions":{"type":"array","items":{"type":"string"},"description":"Поддерживаемые версии языка.","example":["20","18","16"]},"frameworks":{"type":"array","items":{"type":"string"},"description":"Поддерживаемые фреймворки.","example":["express","nest"]}},"required":["language","versions","frameworks"]}}},"required":["frontend","backend"]},"network-drive":{"properties":{"id":{"type":"string","description":"ID сетевого диска.","example":"4df0e781-cafb-4419-9636-ce5fc93591af"},"name":{"type":"string","description":"Название сетевого диска.","example":"Cute Quail"},"comment":{"type":"string","description":"Комментарий","example":"Комментарий","nullable":true},"size":{"type":"number","description":"Размер диска в Гб","example":"10"},"service_list":{"type":"array","description":"Список сервисов к которым подключен диск.","items":{"properties":{"resource_id":{"type":"number","description":"ID сервиса.","example":1},"resource_type":{"type":"string","description":"Тип ресурса.","enum":["server"],"example":"server"}},"required":["resource_id","resource_type"]}},"location":{"type":"string","description":"Локация сетевого диска.","enum":["ru-1"],"example":"ru-1"},"status":{"type":"string","description":"Статус сетевого диска.","enum":["new","created","failed"],"example":"new"},"availability_zone":{"$ref":"#/components/schemas/availability-zone"},"type":{"type":"string","description":"Тип сетевого диска.","enum":["nvme","hdd"],"example":"nvme"},"preset_id":{"description":"ID тарифа.","type":"integer","example":5}},"required":["id","name","comment","size","service_list","location","status","availability_zone","type","preset_id"]},"create-network-drive":{"properties":{"name":{"type":"string","description":"Название сетевого диска.","example":"Cute Quail"},"comment":{"type":"string","description":"Комментарий","example":"Комментарий","nullable":true},"size":{"type":"number","description":"Размер диска в Гб","example":"10"},"preset_id":{"description":"ID сетевого диска.","type":"integer","example":5}},"required":["name","size","preset_id"]},"update-network-drive":{"properties":{"name":{"type":"string","description":"Название сетевого диска.","example":"Cute Quail"},"comment":{"type":"string","description":"Комментарий","example":"Комментарий","nullable":true},"size":{"type":"number","description":"Размер диска в Гб","example":"10"}}},"mount-network-drive":{"properties":{"resource_type":{"type":"string","description":"Тип ресурса.","enum":["server"],"example":"server"},"resource_id":{"description":"Id ресурса.","example":"24569","type":"number"}},"required":["resource_type","resource_id"]},"network-drive-available-resource":{"properties":{"resource_id":{"type":"number","description":"ID сервиса.","example":1},"resource_type":{"type":"string","description":"Тип ресурса.","enum":["server"],"example":"server"},"ip":{"type":"string","nullable":true,"format":"ipv4","description":"IP-адрес сервиса.","example":"1.1.1.1"},"availability_zone":{"$ref":"#/components/schemas/availability-zone"}},"required":["resource_id","resource_type","availability_zone"]},"network-drive-preset":{"properties":{"id":{"type":"number","description":"ID тарифа.","example":1},"cost_per_gb":{"type":"number","description":"Стоимость тарифа сетевого диска.","example":100},"min":{"type":"number","description":"Минимальный размер диска (в Гб).","example":10},"max":{"type":"number","description":"Максимальный размер диска (в Гб).","example":1000},"step":{"type":"number","description":"Размер шага диска","example":1000},"type":{"type":"string","description":"Тип сетевого диска.","enum":["nvme","hdd"],"example":"nvme"},"read":{"type":"object","properties":{"min":{"type":"number","description":"Чтение IOPS","example":7000},"max":{"type":"number","description":"Чтение IOPS","example":15000}}},"write":{"type":"object","properties":{"min":{"type":"number","description":"Запись IOPS","example":7000},"max":{"type":"number","description":"Запись IOPS","example":15000}}}},"required":["id","cost_per_gb","min","max","step","type","read","write"]},"agent-model-settings":{"description":"Настройки модели агента","type":"object","properties":{"temperature":{"type":"number","description":"Контролирует случайность вывода модели.","example":0.7},"top_p":{"type":"number","description":"Контролирует разнообразие вывода модели.","example":0.9},"max_tokens":{"type":"number","description":"Максимальное количество токенов в выводе.","example":1000},"frequency_penalty":{"type":"number","description":"Положительные значения штрафуют новые токены на основе их существующей частоты.","example":0},"presence_penalty":{"type":"number","description":"Положительные значения штрафуют новые токены на основе того, встречались ли они в тексте ранее.","example":0}}},"agent":{"description":"AI Agent","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор агента","example":1},"name":{"type":"string","description":"Название агента","example":"Мой AI помощник"},"description":{"type":"string","description":"Описание агента","example":"Помощник для ответов на вопросы"},"model_id":{"type":"number","description":"ID модели","example":1},"provider_id":{"type":"number","description":"ID провайдера","example":1},"settings":{"type":"object","description":"Настройки агента","properties":{"model":{"$ref":"#/components/schemas/agent-model-settings"},"system_prompt":{"type":"string","description":"Системный промпт"},"refine_query":{"type":"boolean","description":"Уточнять ли запрос перед обработкой"},"widget":{"type":"object","description":"Настройки виджета","properties":{"whitelist_domains":{"type":"array","items":{"type":"string"},"description":"Массив разрешенных доменов для виджета","example":["example.com","subdomain.example.com"]},"name":{"type":"string","description":"Отображаемое имя агента в виджете","example":"Помощник поддержки"},"signature":{"type":"string","description":"Подпись/подзаголовок, отображаемый под именем агента в виджете","example":"AI Ассистент"},"welcome_message":{"type":"string","description":"Приветственное сообщение, показываемое при открытии виджета","example":"Здравствуйте! Чем могу помочь?"},"primary_color":{"type":"string","description":"Основной цвет виджета (hex-код цвета в формате #RRGGBB)","example":"#7177F8"},"font":{"type":"string","description":"Семейство шрифтов для виджета","example":"Inter, Arial, sans-serif"},"icon_url":{"type":"string","description":"URL иконки виджета","example":"https://s3.twcstorage.ru/tw-cloud-static/cloud-ai/agent-widget/agent_icons/1.svg"},"chat_position":{"type":"string","enum":["bottom_right","bottom_left","top_right","top_left"],"description":"Позиция виджета чата на странице","example":"bottom_right"}},"required":["whitelist_domains","name","welcome_message","primary_color","font","chat_position"]}},"required":["model","system_prompt","refine_query"]},"status":{"type":"string","enum":["active","blocked","deleted","suspended"],"description":"Статус агента","example":"active"},"access_type":{"type":"string","enum":["public","private"],"description":"Тип доступа к агенту","example":"private"},"total_tokens":{"type":"number","description":"Всего токенов выделено агенту","example":100000},"used_tokens":{"type":"number","description":"Использовано токенов","example":5000},"remaining_tokens":{"type":"number","description":"Осталось токенов","example":95000},"token_package_id":{"type":"number","description":"ID пакета токенов","example":1},"subscription_renewal_date":{"type":"string","format":"date-time","description":"Дата обновления подписки","example":"2025-01-01T00:00:00.000Z"},"knowledge_bases_ids":{"type":"array","items":{"type":"number"},"description":"ID баз знаний, связанных с агентом","example":[1,2,3]},"access_id":{"type":"number","description":"ID доступа","example":1},"created_at":{"type":"string","format":"date-time","description":"Дата создания агента","example":"2024-10-16T10:00:00.000Z"}},"required":["id","name","description","model_id","provider_id","settings","status","access_type","total_tokens","used_tokens","remaining_tokens","token_package_id","subscription_renewal_date","knowledge_bases_ids","access_id","created_at"]},"create-agent":{"description":"Данные для создания AI агента","type":"object","properties":{"name":{"type":"string","description":"Название агента","example":"Мой AI помощник"},"description":{"type":"string","description":"Описание агента","example":"Помощник для ответов на вопросы"},"access_type":{"type":"string","enum":["public","private"],"description":"Тип доступа к агенту","example":"private"},"model_id":{"type":"number","description":"ID модели","example":1},"token_package_id":{"type":"number","description":"ID пакета токенов","example":1},"settings":{"type":"object","description":"Настройки агента","properties":{"model":{"$ref":"#/components/schemas/agent-model-settings"},"system_prompt":{"type":"string","description":"Системный промпт"},"refine_query":{"type":"boolean","description":"Уточнять ли запрос перед обработкой"},"widget":{"type":"object","description":"Настройки виджета","properties":{"whitelist_domains":{"type":"array","items":{"type":"string"},"description":"Массив разрешенных доменов для виджета","example":["example.com","subdomain.example.com"]},"name":{"type":"string","description":"Отображаемое имя агента в виджете","example":"Помощник поддержки"},"signature":{"type":"string","description":"Подпись/подзаголовок, отображаемый под именем агента в виджете","example":"AI Ассистент"},"welcome_message":{"type":"string","description":"Приветственное сообщение, показываемое при открытии виджета","example":"Здравствуйте! Чем могу помочь?"},"primary_color":{"type":"string","description":"Основной цвет виджета (hex-код цвета в формате #RRGGBB)","example":"#7177F8"},"font":{"type":"string","description":"Семейство шрифтов для виджета","example":"Inter, Arial, sans-serif"},"icon_url":{"type":"string","description":"URL иконки виджета","example":"https://s3.twcstorage.ru/tw-cloud-static/cloud-ai/agent-widget/agent_icons/1.svg"},"chat_position":{"type":"string","enum":["bottom_right","bottom_left","top_right","top_left"],"description":"Позиция виджета чата на странице","example":"bottom_right"}},"required":["whitelist_domains","name","welcome_message","primary_color","font","chat_position"]}},"required":["model","system_prompt","refine_query"]},"project_id":{"type":"number","description":"ID проекта","example":1}},"required":["name","access_type","model_id","token_package_id","settings"]},"create-agent-v2":{"description":"Данные для создания AI агента через API v2","type":"object","properties":{"name":{"type":"string","description":"Название агента","example":"Мой AI помощник"},"description":{"type":"string","description":"Описание агента","example":"Помощник для ответов на вопросы"},"access_type":{"type":"string","enum":["public","private"],"description":"Тип доступа к агенту","example":"private"},"model_id":{"type":"number","description":"ID основной модели","example":1},"token_limit":{"type":"number","minimum":0,"description":"Дневной лимит токенов для агента (0 — без лимита)","example":100000},"settings":{"type":"object","description":"Настройки агента","properties":{"model":{"$ref":"#/components/schemas/agent-model-settings"},"system_prompt":{"type":"string","description":"Системный промпт"},"refine_query":{"type":"boolean","description":"Уточнять ли запрос перед обработкой"},"widget":{"type":"object","description":"Настройки виджета","properties":{"whitelist_domains":{"type":"array","items":{"type":"string"},"description":"Массив разрешенных доменов для виджета","example":["example.com","subdomain.example.com"]},"name":{"type":"string","description":"Отображаемое имя агента в виджете","example":"Помощник поддержки"},"signature":{"type":"string","description":"Подпись/подзаголовок, отображаемый под именем агента в виджете","example":"AI Ассистент"},"welcome_message":{"type":"string","description":"Приветственное сообщение, показываемое при открытии виджета","example":"Здравствуйте! Чем могу помочь?"},"primary_color":{"type":"string","description":"Основной цвет виджета (hex-код цвета в формате #RRGGBB)","example":"#7177F8"},"font":{"type":"string","description":"Семейство шрифтов для виджета","example":"Inter, Arial, sans-serif"},"icon_url":{"type":"string","description":"URL иконки виджета","example":"https://s3.twcstorage.ru/tw-cloud-static/cloud-ai/agent-widget/agent_icons/1.svg"},"chat_position":{"type":"string","enum":["bottom_right","bottom_left","top_right","top_left"],"description":"Позиция виджета чата на странице","example":"bottom_right"}},"required":["whitelist_domains","name","welcome_message","primary_color","font","chat_position"]}},"required":["model","system_prompt","refine_query"]},"project_id":{"type":"number","description":"ID проекта","example":1},"additional_model_ids":{"type":"array","items":{"type":"number"},"description":"Список ID дополнительных моделей агента","example":[2,3]},"is_web_search_enabled":{"type":"boolean","description":"Признак использования веб-поиска агентом","example":false}},"required":["name","access_type","model_id","settings"]},"update-agent":{"description":"Данные для обновления AI агента","type":"object","properties":{"name":{"type":"string","description":"Название агента","example":"Мой AI помощник"},"description":{"type":"string","description":"Описание агента","example":"Помощник для ответов на вопросы"},"access_type":{"type":"string","enum":["public","private"],"description":"Тип доступа к агенту","example":"private"},"status":{"type":"string","enum":["active","suspended"],"description":"Статус агента","example":"active"},"token_package_id":{"type":"number","description":"ID пакета токенов","example":1},"settings":{"type":"object","description":"Настройки агента","properties":{"model":{"$ref":"#/components/schemas/agent-model-settings"},"system_prompt":{"type":"string","description":"Системный промпт"},"refine_query":{"type":"boolean","description":"Уточнять ли запрос перед обработкой"},"widget":{"type":"object","description":"Настройки виджета","properties":{"whitelist_domains":{"type":"array","items":{"type":"string"},"description":"Массив разрешенных доменов для виджета","example":["example.com","subdomain.example.com"]},"name":{"type":"string","description":"Отображаемое имя агента в виджете","example":"Помощник поддержки"},"signature":{"type":"string","description":"Подпись/подзаголовок, отображаемый под именем агента в виджете","example":"AI Ассистент"},"welcome_message":{"type":"string","description":"Приветственное сообщение, показываемое при открытии виджета","example":"Здравствуйте! Чем могу помочь?"},"primary_color":{"type":"string","description":"Основной цвет виджета (hex-код цвета в формате #RRGGBB)","example":"#7177F8"},"font":{"type":"string","description":"Семейство шрифтов для виджета","example":"Inter, Arial, sans-serif"},"icon_url":{"type":"string","description":"URL иконки виджета","example":"https://s3.twcstorage.ru/tw-cloud-static/cloud-ai/agent-widget/agent_icons/1.svg"},"chat_position":{"type":"string","enum":["bottom_right","bottom_left","top_right","top_left"],"description":"Позиция виджета чата на странице","example":"bottom_right"}},"required":["whitelist_domains","name","welcome_message","primary_color","font","chat_position"]}}},"project_id":{"type":"number","description":"ID проекта","example":1}}},"token-statistic":{"description":"Точка статистики использования токенов","type":"object","properties":{"time":{"type":"string","format":"date-time","description":"Время точки статистики","example":"2025-07-24T11:08:00.000Z"},"ingoing_tokens":{"type":"number","description":"Количество входящих токенов (промпты)","example":150},"outgoing_tokens":{"type":"number","description":"Количество исходящих токенов (ответы)","example":250}},"required":["time","ingoing_tokens","outgoing_tokens"]},"add-token-package":{"description":"Данные для добавления дополнительного пакета токенов","type":"object","properties":{"count":{"type":"number","description":"Количество пакетов для добавления (от 1 до 100)","minimum":1,"maximum":100,"example":1}}},"knowledgebase-v2":{"description":"База знаний (версия API v2)","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор базы знаний","example":1},"name":{"type":"string","description":"Название базы знаний","example":"Моя база знаний"},"description":{"type":"string","nullable":true,"description":"Описание базы знаний","example":"База знаний с документацией"},"dbaas_id":{"type":"number","description":"ID базы данных opensearch","example":123},"status":{"type":"string","enum":["active","blocked","creating","deleted"],"description":"Статус базы знаний","example":"active"},"last_sync":{"type":"string","format":"date-time","nullable":true,"description":"Дата последней синхронизации","example":"2024-10-16T10:00:00.000Z"},"total_tokens":{"type":"number","description":"Всего токенов выделено","example":100000},"used_tokens":{"type":"number","description":"Использовано токенов","example":5000},"remaining_tokens":{"type":"number","description":"Осталось токенов","example":95000},"token_package_id":{"type":"number","description":"ID пакета токенов","example":1},"subscription_renewal_date":{"type":"string","format":"date-time","description":"Дата обновления подписки","example":"2025-01-01T00:00:00.000Z"},"documents_count":{"type":"number","description":"Общее количество документов в базе знаний","example":15},"agents_ids":{"type":"array","items":{"type":"number"},"description":"ID агентов, связанных с базой знаний","example":[1,2,3]},"created_at":{"type":"string","format":"date-time","description":"Дата создания базы знаний","example":"2024-10-16T10:00:00.000Z"}},"required":["id","name","dbaas_id","status","total_tokens","used_tokens","remaining_tokens","token_package_id","subscription_renewal_date","documents_count","agents_ids","created_at"]},"document-status-info":{"description":"Детальная информация о текущем состоянии документа в базе знаний","type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["new","indexing","indexed","error"],"description":"Тип статуса документа","example":"indexed"},"timestamp":{"type":"string","format":"date-time","description":"Время записи информации (ISO string)","example":"2024-01-01T12:00:00.000Z"},"error_code":{"type":"string","enum":["INSUFFICIENT_TOKENS","CRITICAL_BALANCE","NEGATIVE_BALANCE","INDEXING_ERROR"],"description":"Код ошибки (только для type: 'error')","example":"INSUFFICIENT_TOKENS"},"details":{"type":"object","description":"Дополнительные детали, зависящие от типа статуса","oneOf":[{"description":"Детали для статуса 'indexing'","type":"object","properties":{"started_at":{"type":"string","format":"date-time","description":"Время начала индексации","example":"2024-01-01T12:00:00.000Z"},"current_stage":{"type":"string","description":"Текущий этап индексации","example":"parsing"},"progress":{"type":"number","description":"Прогресс в процентах (0-100)","example":45,"minimum":0,"maximum":100}}},{"description":"Детали для статуса 'indexed'","type":"object","properties":{"indexing_duration_ms":{"type":"number","description":"Время индексации в миллисекундах","example":5000},"tokens_used":{"type":"number","description":"Количество использованных токенов","example":1500},"tokens_estimated":{"type":"number","description":"Оценочное количество токенов","example":1450},"chunks_count":{"type":"number","description":"Количество созданных чанков","example":12}}},{"description":"Детали для ошибки 'INSUFFICIENT_TOKENS'","type":"object","properties":{"needed":{"type":"number","description":"Количество необходимых токенов","example":2000},"available":{"type":"number","description":"Количество доступных токенов","example":500},"estimated":{"type":"number","description":"Оценочное количество токенов без буфера","example":1800}}},{"description":"Детали для ошибки 'CRITICAL_BALANCE'","type":"object","properties":{"balance":{"type":"number","description":"Текущий баланс токенов","example":50},"min_required":{"type":"number","description":"Минимальный требуемый баланс","example":100}}},{"description":"Детали для ошибки 'NEGATIVE_BALANCE'","type":"object","properties":{"balance":{"type":"number","description":"Текущий баланс токенов (отрицательный)","example":-100}}}]}},"required":["type","timestamp"]},"document":{"description":"Документ в базе знаний","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор документа","example":1},"name":{"type":"string","description":"Название документа","example":"документация.pdf"},"size":{"type":"number","description":"Размер документа в байтах","example":1024000},"status":{"type":"string","enum":["new","indexed","indexing","error"],"description":"Статус индексации документа","example":"indexed"},"indexing_version":{"type":"string","nullable":true,"description":"Версия индексации","example":"v1.0"},"status_info":{"$ref":"#/components/schemas/document-status-info"},"created_at":{"type":"string","format":"date-time","description":"Дата создания документа","example":"2024-10-16T10:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата обновления документа","example":"2024-10-16T10:00:00.000Z"}},"required":["id","name","size","status","created_at","updated_at"]},"knowledgebase":{"description":"База знаний","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор базы знаний","example":1},"name":{"type":"string","description":"Название базы знаний","example":"Моя база знаний"},"description":{"type":"string","nullable":true,"description":"Описание базы знаний","example":"База знаний с документацией"},"dbaas_id":{"type":"number","description":"ID базы данных opensearch","example":123},"status":{"type":"string","enum":["active","blocked","creating","deleted"],"description":"Статус базы знаний","example":"active"},"last_sync":{"type":"string","format":"date-time","nullable":true,"description":"Дата последней синхронизации","example":"2024-10-16T10:00:00.000Z"},"total_tokens":{"type":"number","description":"Всего токенов выделено","example":100000},"used_tokens":{"type":"number","description":"Использовано токенов","example":5000},"remaining_tokens":{"type":"number","description":"Осталось токенов","example":95000},"token_package_id":{"type":"number","description":"ID пакета токенов","example":1},"subscription_renewal_date":{"type":"string","format":"date-time","description":"Дата обновления подписки","example":"2025-01-01T00:00:00.000Z"},"documents":{"type":"array","description":"Документы в базе знаний","items":{"$ref":"#/components/schemas/document"}},"agents_ids":{"type":"array","items":{"type":"number"},"description":"ID агентов, связанных с базой знаний","example":[1,2,3]},"created_at":{"type":"string","format":"date-time","description":"Дата создания базы знаний","example":"2024-10-16T10:00:00.000Z"}},"required":["id","name","dbaas_id","status","total_tokens","used_tokens","remaining_tokens","token_package_id","subscription_renewal_date","documents","agents_ids","created_at"]},"create-knowledgebase":{"description":"Данные для создания базы знаний","type":"object","properties":{"name":{"type":"string","description":"Название базы знаний","example":"Моя база знаний"},"description":{"type":"string","description":"Описание базы знаний","example":"База знаний с документацией"},"dbaas_preset_id":{"type":"number","description":"ID пресета базы данных","example":1},"network_id":{"type":"string","description":"ID сети","example":"net_12345"},"token_package_id":{"type":"number","description":"ID пакета токенов","example":1},"project_id":{"type":"number","description":"ID проекта","example":1}},"required":["name","dbaas_preset_id","network_id","token_package_id"]},"update-knowledgebase":{"description":"Данные для обновления базы знаний","type":"object","properties":{"name":{"type":"string","description":"Название базы знаний","example":"Моя база знаний"},"description":{"type":"string","description":"Описание базы знаний","example":"База знаний с документацией"}}},"model-v3":{"description":"Модель AI (v3). Идентификация и управляющие поля находятся на верхнем уровне, все сравнимые характеристики (цены, лимиты, возможности) — в словаре `parameter_values`","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор модели","example":66},"provider_id":{"type":"number","description":"ID провайдера, который предоставляет модель","example":1},"name":{"type":"string","description":"Название модели","example":"gpt"},"public_name":{"type":"string","description":"Публичное имя модели","example":"GPT 5.1"},"model_name":{"type":"string","description":"Идентификатор модели, который передаётся в поле `model` тела запроса","example":"openai/gpt-5.1"},"type":{"type":"string","enum":["llm","hosted-llm","embedding","image","audio","moderation"],"description":"Тип модели (llm — языковая модель, hosted-llm — self-hosted языковая модель, embedding — модель для эмбеддингов, image — генерация изображений, audio — работа с аудио, moderation — модерация контента)","example":"llm"},"version":{"type":"string","description":"Версия модели","example":"5.1"},"is_deprecated":{"type":"boolean","description":"Признак, что модель устарела","example":false},"is_stopped":{"type":"boolean","description":"Признак, что поддержка модели остановлена","example":false},"deprecation_date":{"type":"string","format":"date-time","nullable":true,"description":"Дата отключения модели у провайдера. `null`, если отключение не запланировано","example":null},"created_at":{"type":"string","format":"date-time","description":"Дата и время добавления модели","example":"2025-11-17T10:35:46.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего обновления модели","example":"2026-07-17T09:37:23.000Z"},"params_info":{"type":"object","nullable":true,"description":"Информация о доступных параметрах модели с их ограничениями. Ключ — название параметра, значение — его тип, ограничения и значение по умолчанию","example":{"temperature":{"type":"number","min":0,"max":2,"default":1,"description":"Контролирует случайность вывода модели"},"max_tokens":{"type":"number","min":1,"max":128000,"default":4096,"description":"Максимальное количество токенов в выводе"},"reasoning_effort":{"type":"enum","enum":["none","low","medium","high"],"default":"none","description":"Уровень усилий рассуждения"}}},"parameter_values":{"type":"object","additionalProperties":true,"description":"Характеристики модели. Ключ — код характеристики, значение — число, строка, булево значение или массив строк.\n\nОсновные коды:\n- `cost_in` — цена за 1 входной токен в рублях\n- `cost_out` — цена за 1 выходной токен в рублях\n- `context_window` — размер контекстного окна в токенах\n- `max_output_tokens` — максимальное количество токенов в ответе\n- `is_reasoning` — поддержка режима рассуждений\n- `supports_function_calling` — поддержка function calling\n- `supported_input_modalities` — поддерживаемые входные модальности (например, `text`, `image`)\n- `supported_output_modalities` — поддерживаемые выходные модальности\n- `avg_speed` — средняя скорость генерации в токенах в секунду\n- `aa_intelligence_index`, `aa_coding_index`, `aa_agentic_index` — индексы качества Artificial Analysis\n- `release_date` — дата релиза модели","example":{"cost_in":0.000162,"cost_out":0.00135,"context_window":272000,"max_output_tokens":128000,"is_reasoning":true,"supports_function_calling":true,"supported_input_modalities":["text","image"],"supported_output_modalities":["text"],"avg_speed":124.8,"aa_intelligence_index":48,"aa_coding_index":45,"aa_agentic_index":51,"release_date":"2025-11-13"}}},"required":["id","provider_id","name","public_name","model_name","type","version","is_deprecated","is_stopped","created_at","updated_at","parameter_values"]},"model":{"description":"Модель AI","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор модели","example":1},"provider_id":{"type":"number","description":"ID провайдера, который предоставляет модель","example":1},"name":{"type":"string","description":"Название модели","example":"gpt-4o"},"public_name":{"type":"string","description":"Публичное имя модели","example":"GPT 4o"},"type":{"type":"string","enum":["llm","embedding"],"description":"Тип модели (llm - языковая модель, embedding - модель для эмбеддингов)","example":"llm"},"is_deprecated":{"type":"boolean","description":"Признак, что модель устарела","example":false},"is_stopped":{"type":"boolean","description":"Признак, что поддержка модели остановлена в системе","example":false},"deprecation_date":{"type":"string","format":"date-time","nullable":true,"description":"Дата депрекейта модели у провайдера","example":"2026-12-31T00:00:00.000Z"},"is_reasoning":{"type":"boolean","description":"Признак поддержки режима рассуждения","example":false},"version":{"type":"string","description":"Версия модели","example":"2024-08-06"},"params_info":{"type":"object","nullable":true,"description":"Информация о доступных параметрах модели с их ограничениями","properties":{"temperature":{"type":"object","description":"Параметр температуры","properties":{"type":{"type":"string","example":"number"},"min":{"type":"number","example":0},"max":{"type":"number","example":2},"default":{"type":"number","example":1},"description":{"type":"string","example":"Контролирует случайность вывода модели"}}},"max_tokens":{"type":"object","description":"Максимальное количество токенов","properties":{"type":{"type":"string","example":"number"},"min":{"type":"number","example":1},"max":{"type":"number","example":128000},"default":{"type":"number","example":4096},"description":{"type":"string","example":"Максимальное количество токенов в выводе"}}},"reasoning_effort":{"type":"object","description":"Уровень усилий рассуждения","properties":{"type":{"type":"string","example":"enum"},"enum":{"type":"array","items":{"type":"string"},"example":["none","low","medium","high"]},"default":{"type":"string","example":"none"},"description":{"type":"string","example":"Уровень усилий рассуждения"}}}},"example":{"temperature":{"type":"number","min":0,"max":2,"default":1,"description":"Контролирует случайность вывода модели"},"max_tokens":{"type":"number","min":1,"max":128000,"default":4096,"description":"Максимальное количество токенов в выводе"}}}},"required":["id","provider_id","name","type","version","public_name","is_deprecated","is_stopped","is_reasoning"]},"token-package":{"description":"Пакет токенов","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор пакета","example":1},"model_id":{"type":"number","description":"ID модели, к которой применяется пакет токенов","example":1},"name":{"type":"string","description":"Название пакета токенов","example":"Базовый пакет"},"package_type":{"type":"string","enum":["base","additional","promo"],"description":"Тип пакета (base - базовый, additional - дополнительный, promo - промо)","example":"base"},"type":{"type":"string","enum":["agent","knowledgebase"],"description":"Тип сущности, к которой относится пакет (agent - агент, knowledgebase - база знаний)","example":"agent"},"token_amount":{"type":"number","description":"Количество токенов в пакете","example":100000},"price":{"type":"number","description":"Цена пакета в целых единицах","example":500},"duration_days":{"type":"number","nullable":true,"description":"Продолжительность пакета в днях (null для дополнительных пакетов)","example":30},"is_available":{"type":"boolean","description":"Флаг, указывающий доступность пакета","example":true}},"required":["id","model_id","name","package_type","type","token_amount","price","is_available"]},"traffic-usage":{"description":"Потребление ресурса с начала текущего расчетного месяца. Счетчики обнуляются в начале каждого расчетного периода.","type":"object","properties":{"requests":{"type":"number","description":"Количество запросов к ресурсу с начала расчетного месяца.","example":154302},"outgoing_traffic":{"type":"number","description":"Исходящий трафик ресурса с начала расчетного месяца, в байтах.","example":10737418240},"cache_ratio":{"type":"number","description":"Доля запросов, отданных из кэша, в процентах.","example":92.5}},"required":["requests","outgoing_traffic","cache_ratio"]},"http-resource":{"description":"CDN-ресурс","type":"object","properties":{"id":{"type":"integer","description":"ID CDN-ресурса. Генерируется автоматически при создании.","example":1234},"name":{"type":"string","maxLength":255,"description":"Название CDN-ресурса.","example":"Статика интернет-магазина"},"description":{"type":"string","maxLength":255,"description":"Описание CDN-ресурса.","example":"Раздача картинок и css"},"source":{"type":"string","description":"Источник контента: имя S3-бакета, если ресурс создан поверх хранилища, либо хост origin-сервера.","example":"5bd2b0c9-mybucket"},"traffic_usage":{"$ref":"#/components/schemas/traffic-usage"},"status":{"type":"string","description":"Статус CDN-ресурса.\n- `created` — ресурс создан и раздает контент;\n- `processing` — конфигурация применяется на стороне CDN;\n- `stopped` — раздача приостановлена;\n- `failed` — настройка ресурса завершилась с ошибкой;\n- `no_paid` — ресурс не оплачен;\n- `blocked` — ресурс заблокирован;\n- `traffic_limit_exceeded` — раздача остановлена автоматически из-за достижения лимита трафика `traffic_limit_bytes`.","enum":["created","processing","stopped","failed","no_paid","blocked","traffic_limit_exceeded"],"example":"created"},"cdn_domain":{"type":"string","description":"Технический домен, выданный ресурсу. Доступен сразу после создания и всегда остается в списке доменов ресурса.","example":"3f9c1b7a.cdn.twcstorage.ru"},"preset_id":{"type":"integer","description":"ID тарифа CDN. Список доступных тарифов можно получить в `/api/v1/cdn/presets`.","example":4001},"project_id":{"type":"integer","description":"ID проекта, к которому привязан ресурс.","example":987},"avatar_link":{"type":"string","description":"Ссылка на аватар ресурса.","example":"https://timeweb.cloud/avatars/cdn/3f9c1b7a.png","nullable":true},"storage_id":{"type":"integer","description":"ID S3-хранилища, которое используется в качестве источника контента. `null`, если источником является origin-сервер.","example":4210,"nullable":true},"traffic_limit_bytes":{"type":"integer","description":"Лимит исходящего трафика на расчетный месяц, в байтах. При достижении лимита раздача останавливается, а ресурс переходит в статус `traffic_limit_exceeded`. `null` — лимит не задан.","example":107374182400,"nullable":true}},"required":["id","name","source","traffic_usage","status","cdn_domain","preset_id"]},"origin-server":{"description":"Origin-сервер, с которого CDN забирает контент","type":"object","properties":{"host":{"type":"string","description":"Домен или IPv4-адрес origin-сервера.","example":"origin.example.com"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Порт origin-сервера.","example":443}},"required":["host","port"]},"create-http-resource":{"description":"Параметры создания CDN-ресурса. Источник контента задается ровно одним из полей: `storage_id` или `server`.","type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Название CDN-ресурса.","example":"Статика интернет-магазина"},"preset_id":{"type":"integer","description":"ID тарифа CDN. Список доступных тарифов можно получить в `/api/v1/cdn/presets`.","example":4001},"description":{"type":"string","maxLength":255,"description":"Описание CDN-ресурса.","example":"Раздача картинок и css"},"storage_id":{"type":"integer","description":"ID S3-хранилища, которое будет источником контента. Нельзя передавать вместе с `server`.","example":4210},"server":{"allOf":[{"$ref":"#/components/schemas/origin-server"},{"description":"Origin-сервер, который будет источником контента. Нельзя передавать вместе с `storage_id`."}]},"use_https":{"type":"boolean","description":"Обращаться к источнику контента по HTTPS.","example":true},"delivery_domain":{"type":"string","description":"Собственный домен, с которого будет раздаваться контент. Домен добавляется к техническому домену ресурса, для его работы нужно направить CNAME-запись на `cdn_domain`.","example":"cdn.example.com"},"project_id":{"type":"integer","description":"ID проекта, в который нужно поместить ресурс. Если не указан, ресурс попадет в проект по умолчанию.","example":987},"traffic_limit_bytes":{"type":"integer","minimum":0,"description":"Лимит исходящего трафика на расчетный месяц, в байтах. При достижении лимита раздача останавливается автоматически.","example":107374182400,"nullable":true}},"required":["name","preset_id"]},"config-delivery":{"description":"Настройки раздачи контента","type":"object","properties":{"http3":{"type":"boolean","description":"Раздавать контент по HTTP/3 (QUIC).","example":true},"gzip":{"type":"boolean","description":"Сжимать ответы алгоритмом gzip.","example":true},"large_files":{"type":"boolean","description":"Режим раздачи больших файлов.","example":false},"slice_size":{"type":"integer","minimum":1,"maximum":1024,"description":"Размер слайса в мегабайтах — файл забирается с источника и кэшируется частями такого размера. `null` — не использовать слайсинг.","example":10,"nullable":true},"image_optimization":{"type":"boolean","description":"Оптимизировать изображения на лету.","example":false},"packaging":{"type":"object","description":"Упаковка видео в потоковые форматы. `null` — отключить упаковку.","properties":{"mp4":{"type":"object","description":"Упаковка MP4-файлов. `null` — отключить упаковку MP4.","properties":{"output_protocols":{"type":"array","description":"Протоколы, в которые упаковывается исходный MP4.","items":{"type":"string","enum":["HLS","MPEG-DASH"]},"example":["HLS"]}},"required":["output_protocols"],"nullable":true}},"nullable":true}}},"config-cache":{"description":"Настройки кэширования","type":"object","properties":{"cdn":{"type":"object","description":"Кэш на узлах CDN. `null` — отключить кэширование на узлах CDN.","properties":{"ttl":{"type":"object","description":"Время жизни кэша по классам HTTP-статуса ответа источника, в секундах.","properties":{"2xx":{"type":"integer","minimum":0,"description":"Время жизни кэша для ответов со статусом 2xx, в секундах.","example":3600}}}},"required":["ttl"],"nullable":true},"browser":{"type":"object","description":"Кэш в браузере пользователя. `null` — отключить браузерное кэширование.","properties":{"ttl":{"type":"integer","minimum":0,"description":"Время жизни кэша в браузере, в секундах.","example":600}},"required":["ttl"],"nullable":true},"always_online":{"type":"object","description":"Отдавать устаревший контент из кэша, если источник недоступен. `null` — отключить.","properties":{"stale_conditions":{"type":"array","description":"Условия, при которых из кэша отдается устаревший контент.","items":{"type":"string","enum":["error","timeout","invalid_header","updating","http_403","http_404","http_429","http_500","http_502","http_503","http_504"]},"example":["error","timeout"]}},"required":["stale_conditions"],"nullable":true},"query_args":{"type":"object","description":"Правила учета query-параметров в ключе кэша. `null` — не учитывать query-параметры.","properties":{"mode":{"type":"string","description":"Режим учета query-параметров.\n- `all` — учитывать все параметры;\n- `whitelist` — учитывать только параметры из `list`;\n- `blacklist` — учитывать все параметры, кроме перечисленных в `list`.","enum":["all","whitelist","blacklist"],"example":"whitelist"},"list":{"type":"array","description":"Список query-параметров для режимов `whitelist` и `blacklist`.","items":{"type":"string"},"example":["version","lang"]}},"required":["mode"],"nullable":true}}},"config-origin":{"description":"Настройки источника контента","type":"object","properties":{"servers":{"type":"array","maxItems":1,"description":"Origin-серверы, с которых CDN забирает контент. Передача этого поля переключает ресурс с S3-хранилища на origin-сервер.","items":{"$ref":"#/components/schemas/origin-server"},"nullable":true},"use_https":{"type":"boolean","description":"Обращаться к источнику контента по HTTPS.","example":true},"aws":{"type":"object","description":"Ключи для доступа к источнику, совместимому с Amazon S3 API. `null` — не использовать авторизацию AWS.","properties":{"access_key":{"type":"string","description":"Access key.","example":"6VQ2SN0OKXFYZ0IHLEXAMPLE"},"secret_key":{"type":"string","description":"Secret key.","example":"3vhtLpVjEyGxNQOOxJPCLb2Fexample"}},"required":["access_key","secret_key"],"nullable":true}}},"config-security":{"description":"Настройки безопасности","type":"object","properties":{"redirect":{"type":"boolean","description":"Перенаправлять запросы с HTTP на HTTPS.","example":true},"certificate_id":{"type":"integer","description":"ID SSL-сертификата, который используется для доменов ресурса. `null` — отвязать сертификат.","example":5678,"nullable":true},"secure_token":{"type":"object","description":"Защита ссылок подписанным токеном. `null` — отключить защиту ссылок.","properties":{"secret_key":{"type":"string","description":"Секретный ключ, которым подписывается ссылка.","example":"s3cr3tKey0"},"restrict_by_ip":{"type":"boolean","description":"Привязывать подписанную ссылку к IP-адресу пользователя.","example":false}},"required":["secret_key","restrict_by_ip"],"nullable":true}}},"config-http-headers":{"description":"Настройки HTTP-заголовков","type":"object","properties":{"request":{"type":"object","description":"Статические заголовки, которые CDN добавляет к запросам на источник контента. Имена заголовков могут содержать символы `A-Za-z0-9-_.*()=/;`, значения — печатные ASCII-символы. `null` — удалить все заголовки.","additionalProperties":{"type":"string"},"example":{"X-Custom-Header":"value"},"nullable":true},"cors":{"type":"object","description":"Настройки CORS. `null` — отключить CORS.","properties":{"domains":{"type":"array","description":"Домены, которым разрешены кросс-доменные запросы. Укажите `*`, чтобы разрешить все домены.","items":{"type":"string"},"example":["https://example.com"]},"always":{"type":"boolean","description":"Отдавать CORS-заголовки во всех ответах, а не только при наличии заголовка `Origin` в запросе.","example":false}},"required":["domains","always"],"nullable":true}}},"config-access":{"description":"Настройки доступа к ресурсу. Секция доступна только для чтения — изменить ее через API нельзя.","type":"object","properties":{"allowed_methods":{"type":"array","readOnly":true,"description":"Дополнительные HTTP-методы, разрешенные при обращении к ресурсу. `null` — используется набор методов по умолчанию.","items":{"type":"string","enum":["POST","PUT","PATCH","DELETE","MKCOL","COPY","MOVE","PROPFIND","PROPPATCH","LOCK","UNLOCK"]},"example":["POST","PUT"],"nullable":true}}},"config-domains":{"description":"Домены, с которых раздается контент ресурса","type":"object","properties":{"aliases":{"type":"array","maxItems":2,"description":"Список доменов ресурса. Первым в списке всегда идет технический домен `cdn_domain`, вторым может быть ваш собственный домен. Чтобы собственный домен заработал, направьте на `cdn_domain` CNAME-запись. `null` — оставить только технический домен.","items":{"type":"string"},"example":["3f9c1b7a.cdn.twcstorage.ru","cdn.example.com"],"nullable":true}}},"config-robots":{"description":"Настройки robots.txt для доменов ресурса","type":"object","properties":{"type":{"type":"string","description":"Режим отдачи `robots.txt`.\n- `deny` — CDN отдает `robots.txt`, запрещающий индексацию;\n- `cached` — `robots.txt` берется с источника контента;\n- `custom` — CDN отдает содержимое из поля `content`.","enum":["deny","cached","custom"],"example":"deny"},"content":{"type":"string","description":"Содержимое `robots.txt`. Обязательно и учитывается только при `type` = `custom`.","example":"User-agent: *\nDisallow: /private"}},"required":["type"]},"http-resource-config":{"description":"Конфигурация CDN-ресурса. Все секции необязательны: при изменении конфигурации переданные поля накладываются на текущие значения, а непереданные остаются без изменений.","type":"object","properties":{"delivery":{"$ref":"#/components/schemas/config-delivery"},"cache":{"$ref":"#/components/schemas/config-cache"},"origin":{"$ref":"#/components/schemas/config-origin"},"security":{"$ref":"#/components/schemas/config-security"},"http_headers":{"$ref":"#/components/schemas/config-http-headers"},"access":{"$ref":"#/components/schemas/config-access"},"domains":{"$ref":"#/components/schemas/config-domains"},"robots":{"$ref":"#/components/schemas/config-robots"}}},"update-http-resource":{"description":"Параметры изменения CDN-ресурса. Передавайте только те поля, которые нужно изменить.","type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Название CDN-ресурса.","example":"Статика интернет-магазина"},"description":{"type":"string","maxLength":255,"description":"Описание CDN-ресурса.","example":"Раздача картинок и css"},"preset_id":{"type":"integer","description":"ID тарифа CDN. Список доступных тарифов можно получить в `/api/v1/cdn/presets`.","example":4001},"storage_id":{"type":"integer","description":"ID S3-хранилища, которое будет источником контента. Нельзя передавать вместе с `config.origin.servers`.","example":4210},"traffic_limit_bytes":{"type":"integer","minimum":0,"description":"Лимит исходящего трафика на расчетный месяц, в байтах. `null` — снять лимит. Если ресурс был остановлен по лимиту, при снятии или увеличении лимита раздача возобновится.","example":107374182400,"nullable":true},"config":{"$ref":"#/components/schemas/http-resource-config"}}},"clear-cache":{"description":"Параметры очистки кэша","type":"object","properties":{"purge_type":{"type":"string","description":"Тип очистки.\n- `full` — очистить весь кэш ресурса;\n- `partial` — очистить кэш только по путям из `paths`.","enum":["full","partial"],"example":"partial"},"paths":{"type":"array","description":"Список путей к файлам, кэш которых нужно очистить. Обязателен при `purge_type` = `partial`.","items":{"type":"string"},"example":["/img/logo.png","/css/main.css"]}},"required":["purge_type"]},"preload-cache":{"description":"Параметры предварительной загрузки кэша","type":"object","properties":{"paths":{"type":"array","description":"Список путей к файлам, которые нужно заранее загрузить в кэш узлов CDN.","items":{"type":"string"},"example":["/img/logo.png","/css/main.css"]}},"required":["paths"]},"statistics":{"description":"Статистика CDN-ресурса за период, с разбивкой по часам","type":"object","properties":{"traffic":{"type":"array","description":"Исходящий трафик по часовым интервалам.","items":{"type":"object","properties":{"logged_at":{"type":"string","format":"date-time","description":"Начало часового интервала в UTC.","example":"2026-04-16T13:00:00Z"},"outgoing_bytes":{"type":"number","description":"Исходящий трафик за интервал, в байтах.","example":12345678}},"required":["logged_at","outgoing_bytes"]}},"requests":{"type":"array","description":"Количество запросов по часовым интервалам с разбивкой по классам HTTP-статуса ответа.","items":{"type":"object","properties":{"logged_at":{"type":"string","format":"date-time","description":"Начало часового интервала в UTC.","example":"2026-04-16T13:00:00Z"},"status_2xx":{"type":"number","description":"Количество ответов со статусом 2xx.","example":1024},"status_3xx":{"type":"number","description":"Количество ответов со статусом 3xx.","example":12},"status_4xx":{"type":"number","description":"Количество ответов со статусом 4xx.","example":3},"status_5xx":{"type":"number","description":"Количество ответов со статусом 5xx.","example":0}},"required":["logged_at","status_2xx","status_3xx","status_4xx","status_5xx"]}}},"required":["traffic","requests"]},"preset":{"description":"Тариф CDN","type":"object","properties":{"id":{"type":"integer","description":"ID тарифа. Указывается в поле `preset_id` при создании и изменении ресурса.","example":4001},"service_name":{"type":"string","description":"Название тарифа.","example":"CDN"},"description":{"type":"string","description":"Описание тарифа.","example":"CDN с оплатой за трафик и запросы"},"description_short":{"type":"string","description":"Краткое описание тарифа.","example":"CDN"},"cost":{"type":"number","description":"Абонентская плата за тариф в рублях.","example":0},"traffic_rate_cost":{"type":"number","description":"Стоимость единицы исходящего трафика по тарифу аккаунта, в рублях.","example":1.5},"request_rate_cost":{"type":"number","description":"Стоимость единицы запросов по тарифу аккаунта, в рублях.","example":0.3}},"required":["id","service_name","description","description_short","cost","traffic_rate_cost","request_rate_cost"]},"origin-node":{"description":"Подсеть узлов CDN, которые обращаются к источнику контента","type":"object","properties":{"ipv4_subnet":{"type":"string","description":"IPv4-адрес или подсеть узлов. `null`, если у записи нет IPv4-подсети.","example":"1.2.3.4/32","nullable":true},"ipv6_subnet":{"type":"string","description":"IPv6-адрес или подсеть узлов. `null`, если у записи нет IPv6-подсети.","example":"240e:958:31:204::/112","nullable":true}},"required":["ipv4_subnet","ipv6_subnet"]},"user-node":{"description":"Узел CDN, который раздает контент ресурса пользователям","type":"object","properties":{"ipv4_address":{"type":"string","description":"IPv4-адрес раздающего узла.","example":"1.2.3.4"}},"required":["ipv4_address"]},"certificate":{"description":"SSL-сертификат CDN","type":"object","properties":{"id":{"type":"integer","description":"ID сертификата. Указывается в поле `config.security.certificate_id` при привязке сертификата к ресурсу.","example":5678},"type":{"type":"string","description":"Тип сертификата.\n- `lets_encrypt` — сертификат, выпущенный через Let's Encrypt;\n- `uploaded` — сертификат, загруженный вами.","enum":["lets_encrypt","uploaded"],"example":"lets_encrypt"},"cn":{"type":"string","description":"Основное доменное имя сертификата.","example":"cdn.example.com"},"domains":{"type":"array","description":"Все доменные имена сертификата, включая указанные в SAN.","items":{"type":"string"},"example":["cdn.example.com","static.example.com"]},"issued_at":{"type":"string","format":"date-time","description":"Дата выпуска сертификата.","example":"2026-01-15T10:20:30Z"},"expires_at":{"type":"string","format":"date-time","description":"Дата окончания действия сертификата.","example":"2026-04-15T10:20:30Z"}},"required":["id","type","cn","domains","issued_at","expires_at"]},"add-certificate":{"description":"Параметры загрузки собственного сертификата","type":"object","properties":{"private_key":{"type":"string","description":"Приватный ключ сертификата в формате PEM.","example":"-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQ...\n-----END PRIVATE KEY-----"},"certificate":{"type":"string","description":"Сертификат вместе с цепочкой в формате PEM.","example":"-----BEGIN CERTIFICATE-----\nMIIFazCCA1OgAwIBAgIRAI...\n-----END CERTIFICATE-----"},"comment":{"type":"string","description":"Комментарий к сертификату.","default":"SSL Certificate","example":"Сертификат для cdn.example.com"}},"required":["private_key","certificate"]},"issue-certificate":{"description":"Параметры выпуска сертификата Let's Encrypt","type":"object","properties":{"resource_id":{"type":"integer","description":"ID CDN-ресурса, для доменов которого нужно выпустить сертификат.","example":1234}},"required":["resource_id"]},"certificate-task":{"description":"Задача на выпуск сертификата Let's Encrypt","type":"object","properties":{"id":{"type":"integer","description":"ID задачи на выпуск сертификата.","example":42},"status":{"type":"string","description":"Статус выпуска сертификата.\n- `in_progress` — сертификат выпускается;\n- `success` — сертификат выпущен и привязан к ресурсу;\n- `failed` — выпустить сертификат не удалось.","enum":["in_progress","success","failed"],"example":"in_progress"},"domains":{"type":"array","description":"Доменные имена, для которых выпускается сертификат.","items":{"type":"string"},"example":["cdn.example.com"]},"resource_id":{"type":"integer","description":"ID CDN-ресурса, для которого выпускается сертификат.","example":1234}},"required":["id","status","domains","resource_id"]}},"parameters":{"limit":{"description":"Обозначает количество записей, которое необходимо вернуть.","in":"query","name":"limit","required":false,"schema":{"type":"integer","default":100}},"offset":{"description":"Указывает на смещение относительно начала списка.","in":"query","name":"offset","required":false,"schema":{"type":"integer","default":0}},"balancer-id":{"description":"ID балансировщика","in":"path","name":"balancer_id","required":true,"schema":{"type":"integer"}},"hash":{"description":"Хеш, который совместно с кодом авторизации надо отправить для удаления, если включено подтверждение удаления сервисов через Телеграм.","in":"query","name":"hash","required":false,"schema":{"type":"string","example":"15095f25-aac3-4d60-a788-96cb5136f186"}},"code":{"description":"Код подтверждения, который придет к вам в Телеграм, после запроса удаления, если включено подтверждение удаления сервисов.\n\nПри помощи API токена сервисы можно удалять без подтверждения, если параметр токена `is_able_to_delete` установлен в значение `true`","in":"query","name":"code","required":false,"schema":{"type":"string","example":"0000"}},"rule-id":{"description":"ID правила для балансировщика","in":"path","name":"rule_id","required":true,"schema":{"type":"integer"}},"database-cluster-id":{"description":"ID кластера базы данных","in":"path","name":"db_cluster_id","required":true,"schema":{"type":"integer"}},"admin-id":{"description":"ID пользователя базы данных","in":"path","name":"admin_id","required":true,"schema":{"type":"integer"}},"instance-id":{"description":"ID инстанса базы данных","in":"path","name":"instance_id","required":true,"schema":{"type":"integer"}},"dbs-id":{"description":"ID базы данных","in":"path","name":"db_id","required":true,"schema":{"type":"integer"}},"backup-id":{"description":"ID резервной копии","in":"path","name":"backup_id","required":true,"schema":{"type":"integer"}},"s3-backup-id":{"description":"ID резервной копии в формате UUID","in":"path","name":"backup_id","required":true,"schema":{"type":"string","format":"uuid"}},"preset-id":{"description":"ID тарифа","in":"path","name":"preset_id","required":true,"schema":{"type":"integer"}},"dedicated-id":{"in":"path","name":"dedicated_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID выделенного сервера."},"preset-id-2":{"in":"path","name":"preset_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID тарифа выделенного сервера."},"server-id":{"in":"path","name":"server_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID облачного сервера."},"disk-id":{"in":"path","name":"disk_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID диска сервера."},"server-backup-id":{"in":"path","name":"backup_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID бэкапа сервера."},"vds-id":{"in":"path","name":"vds_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID облачного сервера (VDS)."},"project-id":{"in":"path","name":"project_id","required":true,"schema":{"type":"integer","minimum":1,"example":99},"description":"ID проекта."},"bucket-id":{"in":"path","name":"bucket_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID хранилища."},"user-id":{"in":"path","name":"user_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID пользователя хранилища."},"search":{"description":"Поиск почтового ящика по названию","in":"query","name":"search","required":false,"schema":{"type":"string"}},"domain":{"description":"Полное имя домена","in":"path","name":"domain","required":true,"schema":{"type":"string","example":"somedomain.ru"}},"mailbox":{"description":"Название почтового ящика","in":"path","name":"mailbox","required":true,"schema":{"type":"string","example":"mailbox"}},"idn-name":{"description":"Интернационализированное доменное имя.","in":"query","name":"idn_name","required":false,"schema":{"type":"string","example":"xn--e1afmkfd.xn--p1ai"}},"linked-ip":{"description":"Привязанный к домену IP-адрес.","in":"query","name":"linked_ip","required":false,"schema":{"type":"string","example":"192.168.1.1"}},"order":{"description":"Порядок доменов.","in":"query","name":"order","required":false,"schema":{"type":"string","enum":["asc","dsc"],"example":"asc"}},"sort":{"description":"Сортировка доменов.","in":"query","name":"sort","required":false,"schema":{"enum":["idn_name"],"type":"string","example":"idn_name"}},"domain-fqdn":{"description":"Полное имя домена.","in":"path","name":"fqdn","required":true,"schema":{"type":"string","example":"somedomain.ru"}},"domain-subdomain-fqdn-create-dns":{"description":"Полное имя домена или поддомена. Для создания записи на основном домене передайте имя домена (например, `somedomain.ru`). Для создания записи на поддомене передайте полное доменное имя включая поддомен (например, `sub.somedomain.ru`).\n\nПоддомен должен быть создан заранее методом добавления поддомена (`POST /api/v1/domains/{fqdn}/subdomains/{subdomain}`).","in":"path","name":"fqdn","required":true,"schema":{"type":"string","example":"somedomain.ru"}},"record-id":{"description":"ID DNS-записи домена или поддомена.","in":"path","name":"record_id","required":true,"schema":{"type":"integer","example":123}},"domain-subdomain-fqdn":{"description":"Полное имя домена или поддомена.","in":"path","name":"fqdn","required":true,"schema":{"type":"string","example":"somedomain.ru"}},"subdomain":{"description":"Имя поддомена без имени домена. Например, для поддомена `sub.somedomain.ru` нужно передать `sub`.","in":"path","name":"subdomain","required":true,"schema":{"type":"string","example":"sub"}},"person-id":{"description":"ID администратора, на которого зарегистрирован домен.","in":"query","name":"person_id","required":false,"schema":{"type":"integer","example":123}},"request-id":{"description":"ID заявки на регистрацию/продление/трансфер домена.","in":"path","name":"request_id","required":true,"schema":{"type":"integer","example":123}},"is-published":{"description":"Это логическое значение, которое показывает, опубликована ли доменная зона.","in":"query","name":"is_published","required":false,"schema":{"type":"boolean","example":true}},"is-registered":{"description":"Это логическое значение, которое показывает, зарегистрирована ли доменная зона.","in":"query","name":"is_registered","required":false,"schema":{"type":"boolean","example":true}},"tld-id":{"description":"ID доменной зоны.","in":"path","name":"tld_id","required":true,"schema":{"type":"integer","example":123}},"is-closed":{"description":"Фильтр по закрытым администраторам: `true` — вернуть только закрытых, `false` — только активных.","in":"query","name":"is_closed","required":false,"schema":{"type":"boolean","example":false}},"person-id-2":{"description":"ID администратора домена.","in":"path","name":"person_id","required":true,"schema":{"type":"integer","example":123}},"vpc-id":{"in":"path","name":"vpc_id","required":true,"schema":{"type":"string","description":"ID сети","example":"network-1234567890"},"description":"ID сети"},"ssh-key-id":{"in":"path","name":"ssh_key_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID SSH-ключа."},"floating-ip-id":{"in":"path","name":"floating_ip_id","required":true,"schema":{"type":"string","description":"ID плавающего IP","example":"87fa289f-1513-4c4d-8d49-5707f411f14b"},"description":"ID плавающего IP"},"network-drive-id":{"in":"path","name":"network-drive-id","required":true,"schema":{"type":"string","description":"ID сетевого диска","example":"87fa289f-1513-4c4d-8d49-5707f411f14b"},"description":"ID сетевого диска"},"id":{"in":"path","name":"id","required":true,"schema":{"type":"integer","minimum":1,"example":1},"description":"ID агента"},"knowledgebase-id":{"in":"path","name":"id","required":true,"schema":{"type":"integer","minimum":1,"example":1},"description":"ID базы знаний"},"agent-id":{"in":"path","name":"agent_id","required":true,"schema":{"type":"integer","minimum":1,"example":1},"description":"ID агента"},"document-id":{"in":"path","name":"document_id","required":true,"schema":{"type":"integer","minimum":1,"example":1},"description":"ID документа"},"resource-id":{"in":"path","name":"resource_id","required":true,"schema":{"type":"integer","description":"ID CDN-ресурса","example":1234},"description":"ID CDN-ресурса"},"task-id":{"in":"path","name":"task_id","required":true,"schema":{"type":"integer","description":"ID задачи на выпуск сертификата","example":42},"description":"ID задачи на выпуск сертификата"},"certificate-id":{"in":"path","name":"certificate_id","required":true,"schema":{"type":"integer","description":"ID сертификата","example":5678},"description":"ID сертификата"}}}}
\ No newline at end of file
+{"openapi":"3.0.0","info":{"contact":{"email":"info@timeweb.cloud"},"title":"Документация публичного API","x-title-i18n":{"eng":"Timeweb Cloud API"},"version":"1.0.0","description":"# Введение\nAPI Timeweb Cloud позволяет вам управлять ресурсами в облаке программным способом с использованием обычных HTTP-запросов.\n\nМножество функций, которые доступны в панели управления Timeweb Cloud, также доступны через API, что позволяет вам автоматизировать ваши собственные сценарии.\n\nВ этой документации сперва будет описан общий дизайн и принципы работы API, а после этого конкретные конечные точки. Также будут приведены примеры запросов к ним.\n\n\n## Запросы\nЗапросы должны выполняться по протоколу `HTTPS`, чтобы гарантировать шифрование транзакций. Поддерживаются следующие методы запроса:\n|Метод|Применение|\n|--- |--- |\n|GET|Извлекает данные о коллекциях и отдельных ресурсах.|\n|POST|Для коллекций создает новый ресурс этого типа. Также используется для выполнения действий с конкретным ресурсом.|\n|PUT|Обновляет существующий ресурс.|\n|PATCH|Некоторые ресурсы поддерживают частичное обновление, то есть обновление только части атрибутов ресурса, в этом случае вместо метода PUT будет использован PATCH.|\n|DELETE|Удаляет ресурс.|\n\nМетоды `POST`, `PUT` и `PATCH` могут включать объект в тело запроса с типом содержимого `application/json`.\n\n### Параметры в запросах\nНекоторые коллекции поддерживают пагинацию, поиск или сортировку в запросах. В параметрах запроса требуется передать:\n- `limit` — обозначает количество записей, которое необходимо вернуть\n - `offset` — указывает на смещение, относительно начала списка\n - `search` — позволяет указать набор символов для поиска\n - `sort` — можно задать правило сортировки коллекции\n\n## Ответы\nЗапросы вернут один из следующих кодов состояния ответа HTTP:\n\n|Статус|Описание|\n|--- |--- |\n|200 OK|Действие с ресурсом было выполнено успешно.|\n|201 Created|Ресурс был успешно создан. При этом ресурс может быть как уже готовым к использованию, так и находиться в процессе запуска.|\n|204 No Content|Действие с ресурсом было выполнено успешно, и ответ не содержит дополнительной информации в теле.|\n|400 Bad Request|Был отправлен неверный запрос, например, в нем отсутствуют обязательные параметры и т. д. Тело ответа будет содержать дополнительную информацию об ошибке.|\n|401 Unauthorized|Ошибка аутентификации.|\n|403 Forbidden|Аутентификация прошла успешно, но недостаточно прав для выполнения действия.|\n|404 Not Found|Запрашиваемый ресурс не найден.|\n|409 Conflict|Запрос конфликтует с текущим состоянием.|\n|423 Locked|Ресурс из запроса заблокирован от применения к нему указанного метода.|\n|429 Too Many Requests|Был достигнут лимит по количеству запросов в единицу времени.|\n|500 Internal Server Error|При выполнении запроса произошла какая-то внутренняя ошибка. Чтобы решить эту проблему, лучше всего создать тикет в панели управления.|\n\n### Структура успешного ответа\nВсе конечные точки будут возвращать данные в формате `JSON`. Ответы на `GET`-запросы будут иметь на верхнем уровне следующую структуру атрибутов: \n|Название поля|Тип|Описание|\n|--- |--- |--- |\n|[entity_name]|object, object[], string[], number[], boolean|Динамическое поле, которое будет меняться в зависимости от запрашиваемого ресурса и будет содержать все атрибуты, необходимые для описания этого ресурса. Например, при запросе списка баз данных будет возвращаться поле `dbs`, а при запросе конкретного облачного сервера `server`. Для некоторых конечных точек в ответе может возвращаться сразу несколько ресурсов.|\n|meta|object|Опционально. Объект, который содержит вспомогательную информацию о ресурсе. Чаще всего будет встречаться при запросе коллекций и содержать поле `total`, которое будет указывать на количество элементов в коллекции.|\n|response_id|string|Опционально. В большинстве случаев в ответе будет содержаться ID ответа в формате UUIDv4, который однозначно указывает на ваш запрос внутри нашей системы. Если вам потребуется задать вопрос нашей поддержке, приложите к вопросу этот ID— так мы сможем найти ответ на него намного быстрее. Также вы можете использовать этот ID, чтобы убедиться, что это новый ответ на запрос и результат не был получен из кэша.|\n\nПример запроса на получение списка SSH-ключей:\n```\n HTTP/2.0 200 OK\n {\n \"ssh_keys\":[\n {\n \"body\":\"ssh-rsa AAAAB3NzaC1sdfghjkOAsBwWhs= example@device.local\",\n \"created_at\":\"2021-09-15T19:52:27Z\",\n \"expired_at\":null,\n \"id\":5297,\n \"is_default\":false,\n \"name\":\"example@device.local\",\n \"used_at\":null,\n \"used_by\":[]\n }\n ],\n \"meta\":{\n \"total\":1\n },\n \"response_id\":\"94608d15-8672-4eed-8ab6-28bd6fa3cdf7\"\n }\n```\n\n### Структура ответа с ошибкой\n|Название поля|Тип|Описание|\n|--- |--- |--- |\n|status_code|number|Короткий числовой идентификатор ошибки.|\n|error_code|string|Короткий текстовый идентификатор ошибки, который уточняет числовой идентификатор и удобен для программной обработки. Самый простой пример — это код `not_found` для ошибки 404.|\n|message|string, string[]|Опционально. В большинстве случаев в ответе будет содержаться человекочитаемое подробное описание ошибки или ошибок, которые помогут понять, что нужно исправить.|\n|response_id|string|Опционально. В большинстве случае в ответе будет содержаться ID ответа в формате UUIDv4, который однозначно указывает на ваш запрос внутри нашей системы. Если вам потребуется задать вопрос нашей поддержке, приложите к вопросу этот ID — так мы сможем найти ответ на него намного быстрее.|\n\nПример:\n```\n HTTP/2.0 403 Forbidden\n {\n \"status_code\": 403,\n \"error_code\": \"forbidden\",\n \"message\": \"You do not have access for the attempted action\",\n \"response_id\": \"94608d15-8672-4eed-8ab6-28bd6fa3cdf7\"\n }\n```\n\n## Статусы ресурсов\nВажно учесть, что при создании большинства ресурсов внутри платформы вам будет сразу возвращен ответ от сервера со статусом `200 OK` или `201 Created` и ID созданного ресурса в теле ответа, но при этом этот ресурс может быть ещё в *состоянии запуска*.\n\nДля того чтобы понять, в каком состоянии сейчас находится ваш ресурс, мы добавили поле `status` в ответ на получение информации о ресурсе.\n\nСписок статусов будет отличаться в зависимости от типа ресурса. Увидеть поддерживаемый список статусов вы сможете в описании каждого конкретного ресурса.\n\n \n\n## Ограничение скорости запросов (Rate Limiting)\nЧтобы обеспечить стабильность для всех пользователей, Timeweb Cloud защищает API от всплесков входящего трафика, анализируя количество запросов c каждого аккаунта к каждой конечной точке.\n\nЕсли ваше приложение отправляет более 20 запросов в секунду на одну конечную точку, то для этого запроса API может вернуть код состояния HTTP `429 Too Many Requests`.\n\n\n## Аутентификация\nДоступ к API осуществляется с помощью JWT-токена. Токенами можно управлять внутри панели управления Timeweb Cloud в разделе *API и Terraform*.\n\nТокен необходимо передавать в заголовке каждого запроса в формате:\n```\n Authorization: Bearer $TIMEWEB_CLOUD_TOKEN\n```\n\n## Формат примеров API\nПримеры в этой документации описаны с помощью `curl`, HTTP-клиента командной строки. На компьютерах `Linux` и `macOS` обычно по умолчанию установлен `curl`, и он доступен для загрузки на всех популярных платформах, включая `Windows`.\n\nКаждый пример разделен на несколько строк символом `\\`, который совместим с `bash`. Типичный пример выглядит так:\n```\n curl -X PATCH \n -H \"Content-Type: application/json\" \n -H \"Authorization: Bearer $TIMEWEB_CLOUD_TOKEN\" \n -d '{\"name\":\"Cute Corvus\",\"comment\":\"Development Server\"}' \n \"https://api.timeweb.cloud/api/v1/dedicated/1051\"\n```\n- Параметр `-X` задает метод запроса. Для согласованности метод будет указан во всех примерах, даже если он явно не требуется для методов `GET`.\n- Строки `-H` задают требуемые HTTP-заголовки.\n- Примеры, для которых требуется объект JSON в теле запроса, передают требуемые данные через параметр `-d`.\n\nЧтобы использовать приведенные примеры, не подставляя каждый раз в них свой токен, вы можете добавить токен один раз в переменные окружения в вашей консоли. Например, на `Linux` это можно сделать с помощью команды:\n\n```\nTIMEWEB_CLOUD_TOKEN=\"token\"\n```\n\nПосле этого токен будет автоматически подставляться в ваши запросы.\n\nОбратите внимание, что все значения в этой документации являются примерами. Не полагайтесь на IDы операционных систем, тарифов и т.д., используемые в примерах. Используйте соответствующую конечную точку для получения значений перед созданием ресурсов.\n\n\n## Версионирование\nAPI построено согласно принципам [семантического версионирования](https://semver.org/lang/ru). Это значит, что мы гарантируем обратную совместимость всех изменений в пределах одной мажорной версии.\n\nМажорная версия каждой конечной точки обозначается в пути запроса, например, запрос `/api/v1/servers` указывает, что этот метод имеет версию 1."},"servers":[{"url":"https://api.timeweb.cloud"}],"tags":[{"name":"Аккаунт","x-name-i18n":{"eng":"Account"},"description":"Группа методов, которая позволяет получить информацию о вашем текущем аккаунте. Обратите внимание, что API предоставляет только базовый функционал для получения общей информации об аккаунте. Подробнее о работе с вашим аккаунтом через панель управления – в нашей базе знаний."},{"name":"Оплата","x-name-i18n":{"eng":"Payments"},"description":"Группа методов для управления платежной информацией и финансами вашего аккаунта."},{"name":"Базы данных","x-name-i18n":{"eng":"Databases"},"description":"Облачная база данных, или База данных как сервис (DBaaS) — облачное решение для хранения структурированных данных и управления ими. DBaaS обеспечивает полностью автоматизированную, гибкую и масштабируемую платформу для работы с базами данных. Подробнее об облачных базах данных – в нашей базе знаний."},{"name":"Базы знаний","x-name-i18n":{"eng":"Knowledge Bases"},"description":"Базы знаний — это хранилища документов и информации, которые могут быть использованы AI агентами для предоставления более точных и контекстно-зависимых ответов."},{"name":"Балансировщики","x-name-i18n":{"eng":"Balancers"},"description":"Балансировщик позволяет распределять входящий трафик между несколькими серверами для повышения доступности и отказоустойчивости вашего сервиса. Подробнее о балансировщике нагрузки – в нашей базе знаний."},{"name":"Выделенные серверы","x-name-i18n":{"eng":"Dedicated servers"},"description":"Выделенные серверы используют, когда необходимо разместить сложную нагруженную систему, для которой недостаточно мощностей виртуального хостинга или облачного сервера. Это может быть крупный сайт, интернет-магазин, любой ресурсоемкий проект. Подробнее о выделенных серверах – в нашей базе знаний."},{"name":"Домены","x-name-i18n":{"eng":"Domains"},"description":"В Timeweb Cloud доступна регистрация и продление доменов более чем в 350 зонах. В зависимости от выбранной зоны, домен может быть зарегистрирован через регистратора Таймвэб.Домены или через одного из наших партнеров. Подробнее о доменах – в нашей базе знаний."},{"name":"Локации","x-name-i18n":{"eng":"Locations"},"description":"Локация - это конкретное физическое местоположение дата-центра."},{"name":"Облачные серверы","x-name-i18n":{"eng":"Servers"},"description":"Облачные серверы — это способ размещения данных, при котором вы получаете полный доступ (root-доступ) к виртуальному серверу и его настройкам. Вы можете гибко масштабировать параметры (процессор, память, диск) сервера, постепенно добавляя необходимые мощности, когда растет нагрузка, и снижать их, когда нагрузка уменьшается. Соответствующим образом будет увеличиваться или уменьшаться стоимость сервера. Подробнее об облачных серверах – в нашей базе знаний."},{"name":"Образы","x-name-i18n":{"eng":"Images"},"description":"Образы — это полная копия вашего облачного сервера в формате `Qcow2`, со всеми настройками операционной системы, программного обеспечения и всем содержимым сервера. Подробнее об образах – в нашей базе знаний."},{"name":"Почта","x-name-i18n":{"eng":"Mail"},"description":"В Timeweb Cloud доступна инфраструктура готовых почтовых серверов. Вы можете создавать и настраивать неограниченное число ящиков на своих доменах.
Подробнее о сервисе почты – в нашей базе знаний."},{"name":"Плавающие IP","x-name-i18n":{"eng":"Floating IPs"},"description":"Плавающий IP - это статический внешний IP-адрес, который вы можете переносить между сервисами внутри одной зоны доступности: облачными серверами, базами данных и балансировщиками нагрузки."},{"name":"Проекты","x-name-i18n":{"eng":"Projects"},"description":"Проекты позволяют организовать ваши ресурсы в группы, соответствующие вашему стилю работы. Вы можете группировать ресурсы (например, облачные и выделенные серверы, балансировщики нагрузки, базы данных и т.д.) таким образом, чтобы они соответствовали приложениям, которые вы размещаете в облаке."},{"name":"Реестр контейнеров","x-name-i18n":{"eng":"Container Registry"},"description":"Реестр контейнеров (Container Registry) — это хранилище для Docker-образов. Он позволяет загружать, хранить и распространять образы, которые используются при запуске контейнеров в Kubernetes и других окружениях."},{"name":"Роутеры","x-name-i18n":{"eng":"Routers"},"description":"Виртуальный роутер — это сетевой сервис, выступающий в качестве центрального узла для управления трафиком облачных ресурсов."},{"name":"AI Агенты","x-name-i18n":{"eng":"AI Agents"},"description":"AI Агенты — это интеллектуальные помощники на основе больших языковых моделей (LLM), которые могут отвечать на вопросы пользователей, использовать базы знаний и выполнять различные задачи."},{"name":"Apps","x-name-i18n":{"eng":"Apps"},"description":"Apps - Облачные приложения позволяют автоматически выполнять процесс сборки и развертывания при каждом обновлении кода в Github, Gitlab или Bitbucket. Подробнее об Apps – в нашей базе знаний."},{"name":"CDN","x-name-i18n":{"eng":"CDN"},"description":"CDN (Content Delivery Network) — сеть серверов, распределенных по разным регионам, которая кэширует контент вашего сайта и отдает его пользователям с ближайшего к ним узла. Это ускоряет загрузку и снижает нагрузку на источник контента — S3-хранилище или ваш собственный сервер. Подробнее о CDN – в нашей базе знаний."},{"name":"Firewall","x-name-i18n":{"eng":"Firewall"},"description":"Firewall позволяет фильтровать трафик по заранее установленным правилам. Вы можете создать несколько групп правил и подключить их на один или несколько облачных серверов."},{"name":"Kubernetes","x-name-i18n":{"eng":"Kubernetes"},"description":"Kubernetes — программное обеспечение с открытым исходным кодом, предназначенное для автоматизированного управления контейнерными приложениями. Kubernetes обеспечит автоматическое развертывание, масштабирование, распределение нагрузки, мониторинг сервисов, обработку ошибок и многое другое. Подробнее о Kubernetes – в нашей базе знаний."},{"name":"S3-хранилище","x-name-i18n":{"eng":"S3"},"description":"S3-хранилище — это универсальное объектное хранилище, совместимое с Amazon S3 API, в котором можно размещать любые типы статических данных. Подробнее о хранилище S3 – в нашей базе знаний.Обратите внимание, что данное API предоставляется независимо и совместно с Amazon S3 API. Описание принципов работы и список поддерживаемых методов Amazon S3 API вы можете найти в базе знаний."},{"name":"SSH-ключи","x-name-i18n":{"eng":"SSH"},"description":"Для безопасного подключения к облачным серверам вы можете использовать SSH-ключи. Их удобно сохранять в панели управления в разделе SSH-ключи, чтобы использовать при создании новых серверов."},{"name":"VPC","x-name-i18n":{"eng":"VPC"},"description":"VPC (Virtual Private Cloud) - это виртуальная частная сеть в облаке, которая позволяет изолировать ресурсы в облачной среде. Она предоставляет контроль над сетевой конфигурацией, такими как IP-адреса, маршрутизация и безопасность, и обеспечивает логическое разделение ресурсов для повышения безопасности и управляемости."},{"name":"Сетевые диски","x-name-i18n":{"eng":"Network drives"},"description":"Сетевые диски — это масштабируемые блочные хранилища, подключаемые к серверу по сети. Вы можете использовать их как дополнительные диски для облачных серверов."}],"security":[{"Bearer":[]}],"paths":{"/api/v1/account/finances":{"get":{"summary":"Получение платежной информации","description":"Чтобы получить платежную информацию, отправьте GET-запрос на `/api/v1/account/finances`.","operationId":"getFinances","x-codeSamples":[{"lang":"cURL","label":"cURL","source":"curl -X GET \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TIMEWEB_CLOUD_TOKEN\" \\\n \"https://api.timeweb.cloud/api/v1/account/finances\""},{"lang":"JavaScript","source":"fetch('https://api.timeweb.cloud/api/v1/account/finances', {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${TIMEWEB_CLOUD_TOKEN}`\n }\n});\n"},{"lang":"Node","source":"const axios = require('axios');\n\nconst response = await axios.get('https://api.timeweb.cloud/api/v1/account/finances', {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + process.env['TIMEWEB_CLOUD_TOKEN']\n }\n});\n"},{"lang":"Python","source":"import os\nimport requests\n\nheaders = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + os.getenv('TIMEWEB_CLOUD_TOKEN', ''),\n}\n\nresponse = requests.get('https://api.timeweb.cloud/api/v1/account/finances', headers=headers)\n"},{"lang":"PHP","source":"метод изменения пользователя ","operationId":"createDatabaseInstance","parameters":[{"$ref":"#/components/parameters/database-cluster-id"}],"x-codeSamples":[{"lang":"cURL","label":"cURL","source":"curl -X POST \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TIMEWEB_CLOUD_TOKEN\" \\\n -d '{\n \"name\": \"default_name\",\n \"description\": \"description\"\n}' \"https://api.timeweb.cloud/api/v1/databases/1/instances\""},{"lang":"JavaScript","source":"fetch('https://api.timeweb.cloud/api/v1/databases/1/instances', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${TIMEWEB_CLOUD_TOKEN}`\n },\n // body: '{\\n \"name\": \"default_name\",\\n \"description\": \"description\"\\n}',\n body: JSON.stringify({\n 'name': 'default_name',\n 'description': 'description'\n })\n});\n"},{"lang":"Node","source":"const axios = require('axios');\n\nconst response = await axios.post(\n 'https://api.timeweb.cloud/api/v1/databases/1/instances',\n // '{\\n \"name\": \"default_name\",\\n \"description\": \"description\"\\n}',\n {\n 'name': 'default_name',\n 'description': 'description'\n },\n {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + process.env['TIMEWEB_CLOUD_TOKEN']\n }\n }\n);\n"},{"lang":"Python","source":"import os\nimport requests\n\nheaders = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + os.getenv('TIMEWEB_CLOUD_TOKEN', ''),\n}\n\njson_data = {\n 'name': 'default_name',\n 'description': 'description',\n}\n\nresponse = requests.post('https://api.timeweb.cloud/api/v1/databases/1/instances', headers=headers, json=json_data)\n\n# Note: json_data will not be serialized by requests\n# exactly as it was in the original request.\n#data = '{\\n \"name\": \"default_name\",\\n \"description\": \"description\"\\n}'\n#response = requests.post('https://api.timeweb.cloud/api/v1/databases/1/instances', headers=headers, data=data)\n"},{"lang":"PHP","source":"создании или изменении пользователя базы данных.","operationId":"getDatabasePrivileges","parameters":[{"$ref":"#/components/parameters/database-cluster-id"}],"x-codeSamples":[{"lang":"cURL","label":"cURL","source":"curl -X GET \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TIMEWEB_CLOUD_TOKEN\" \\\n \"https://api.timeweb.cloud/api/v1/databases/1/privileges\""},{"lang":"JavaScript","source":"fetch('https://api.timeweb.cloud/api/v1/databases/1/privileges', {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${TIMEWEB_CLOUD_TOKEN}`\n }\n});\n"},{"lang":"Node","source":"const axios = require('axios');\n\nconst response = await axios.get('https://api.timeweb.cloud/api/v1/databases/1/privileges', {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + process.env['TIMEWEB_CLOUD_TOKEN']\n }\n});\n"},{"lang":"Python","source":"import os\nimport requests\n\nheaders = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + os.getenv('TIMEWEB_CLOUD_TOKEN', ''),\n}\n\nresponse = requests.get('https://api.timeweb.cloud/api/v1/databases/1/privileges', headers=headers)\n"},{"lang":"PHP","source":"Спасибо за письмо
\",\n \"autoreply_subject\": \"Автоответчик\"\n },\n \"outgoing_settings\": {\n \"is_enabled\": true,\n \"outgoing_email\": \"outgoing@example.com\"\n }\n }' \\\n \"https://api.timeweb.cloud/api/v2/mail/domains/{domain}/mailboxes/{mailbox}\""},{"lang":"JavaScript","source":"fetch('http://0>Спасибо за письмо
\",\\n \"autoreply_subject\": \"Автоответчик\"\\n },\\n \"outgoing_settings\": {\\n \"is_enabled\": true,\\n \"outgoing_email\": \"outgoing@example.com\"\\n }\\n }', {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${TIMEWEB_CLOUD_TOKEN}`\n },\n body: '{\\n \"comment\": \"Рабочая почта\",\\n \"password\": \"NewPass123!\",\\n \"owner_full_name\": \"Иванов Иван Иванович\",\\n \"spam_protection_settings\": {\\n \"is_enabled\": true,\\n \"filter_action\": \"directory\",\\n \"white_list\": [\"trusted@example.com\"]\\n },\\n \"forward_settings\": {\\n \"is_enabled\": true,\\n \"forward_list\": [\"forward@example.com\"],\\n \"is_leave_messages\": false\\n },\\n \"autoreply_settings\": {\\n \"is_enabled\": true,\\n \"autoreply_message\": \"\",\\n \"autoreply_subject\": \"Автоответчик\"\\n },\\n \"outgoing_settings\": {\\n \"is_enabled\": true,\\n \"outgoing_email\": \"outgoing@example.com\"\\n }\\n }',\n '{\\n \"comment\": \"Рабочая почта\",\\n \"password\": \"NewPass123!\",\\n \"owner_full_name\": \"Иванов Иван Иванович\",\\n \"spam_protection_settings\": {\\n \"is_enabled\": true,\\n \"filter_action\": \"directory\",\\n \"white_list\": [\"trusted@example.com\"]\\n },\\n \"forward_settings\": {\\n \"is_enabled\": true,\\n \"forward_list\": [\"forward@example.com\"],\\n \"is_leave_messages\": false\\n },\\n \"autoreply_settings\": {\\n \"is_enabled\": true,\\n \"autoreply_message\": \"\",\\n \"autoreply_subject\": \"Автоответчик\"\\n },\\n \"outgoing_settings\": {\\n \"is_enabled\": true,\\n \"outgoing_email\": \"outgoing@example.com\"\\n }\\n }',\n headers=headers,\n data=data,\n)\nresponse = requests.patch(\n 'https://api.timeweb.cloud/api/v2/mail/domains/{domain}/mailboxes/{mailbox}',\n headers=headers,\n data=data,\n)\n"},{"lang":"PHP","source":"Спасибо за письмо
\\\",\\n \\\"autoreply_subject\\\": \\\"Автоответчик\\\"\\n },\\n \\\"outgoing_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"outgoing_email\\\": \\\"outgoing@example.com\\\"\\n }\\n }\");\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n 'Content-Type: application/json',\n 'Authorization: Bearer ' . getenv('TIMEWEB_CLOUD_TOKEN') ?? '',\n]);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, \"{\\n \\\"comment\\\": \\\"Рабочая почта\\\",\\n \\\"password\\\": \\\"NewPass123!\\\",\\n \\\"owner_full_name\\\": \\\"Иванов Иван Иванович\\\",\\n \\\"spam_protection_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"filter_action\\\": \\\"directory\\\",\\n \\\"white_list\\\": [\\\"trusted@example.com\\\"]\\n },\\n \\\"forward_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"forward_list\\\": [\\\"forward@example.com\\\"],\\n \\\"is_leave_messages\\\": false\\n },\\n \\\"autoreply_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"autoreply_message\\\": \\\"\\\",\\n \\\"autoreply_subject\\\": \\\"Автоответчик\\\"\\n },\\n \\\"outgoing_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"outgoing_email\\\": \\\"outgoing@example.com\\\"\\n }\\n }\", data)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Authorization\", \"Bearer \" + os.Getenv(\"TIMEWEB_CLOUD_TOKEN\"))\n\tresp, err := client.Do(req)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer resp.Body.Close()\n\tbodyText, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%s\\n\", bodyText)\n}\n"},{"lang":"Java","source":"import java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStreamWriter;\nimport java.lang.System;\nimport java.net.HttpURLConnection;\nimport java.net.URL;\nimport java.util.Scanner;\n\nclass Main {\n\n\tpublic static void main(String[] args) throws IOException {\n\t\tURL url = new URL(\"http://0>Спасибо за письмо
\\\",\\n \\\"autoreply_subject\\\": \\\"Автоответчик\\\"\\n },\\n \\\"outgoing_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"outgoing_email\\\": \\\"outgoing@example.com\\\"\\n }\\n }\");\n\t\tHttpURLConnection httpConn = (HttpURLConnection) url.openConnection();\n\t\thttpConn.setRequestMethod(\"PATCH\");\n\n\t\thttpConn.setRequestProperty(\"Content-Type\", \"application/json\");\n\t\thttpConn.setRequestProperty(\"Authorization\", \"Bearer \" + System.getenv(\"TIMEWEB_CLOUD_TOKEN\"));\n\n\t\thttpConn.setDoOutput(true);\n\t\tOutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());\n\t\twriter.write(\"{\\n \\\"comment\\\": \\\"Рабочая почта\\\",\\n \\\"password\\\": \\\"NewPass123!\\\",\\n \\\"owner_full_name\\\": \\\"Иванов Иван Иванович\\\",\\n \\\"spam_protection_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"filter_action\\\": \\\"directory\\\",\\n \\\"white_list\\\": [\\\"trusted@example.com\\\"]\\n },\\n \\\"forward_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"forward_list\\\": [\\\"forward@example.com\\\"],\\n \\\"is_leave_messages\\\": false\\n },\\n \\\"autoreply_settings\\\": {\\n \\\"is_enabled\\\": true,\\n \\\"autoreply_message\\\": \\\"'], 'document1.pdf'));\nform.append('files', File(['
'], 'document2.txt'));\n\nfetch('https://api.timeweb.cloud/api/v1/cloud-ai/knowledge-bases/1/upload', {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${TIMEWEB_CLOUD_TOKEN}`\n },\n body: form\n});\n"},{"lang":"Node","source":"const axios = require('axios');\nconst FormData = require('form-data');\nconst fs = require('fs');\n\nconst form = new FormData();\nform.append('files', fs.readFileSync('document1.pdf'), 'document1.pdf');\nform.append('files', fs.readFileSync('document2.txt'), 'document2.txt');\n\nconst response = await axios.post(\n 'https://api.timeweb.cloud/api/v1/cloud-ai/knowledge-bases/1/upload',\n form,\n {\n headers: {\n ...form.getHeaders(),\n 'Authorization': 'Bearer ' + process.env['TIMEWEB_CLOUD_TOKEN']\n }\n }\n);\n"},{"lang":"Python","source":"import os\nimport requests\n\nheaders = {\n 'Authorization': 'Bearer ' + os.getenv('TIMEWEB_CLOUD_TOKEN', ''),\n}\n\nfiles = [\n ('files', open('document1.pdf', 'rb')),\n ('files', open('document2.txt', 'rb')),\n]\n\nresponse = requests.post('https://api.timeweb.cloud/api/v1/cloud-ai/knowledge-bases/1/upload', headers=headers, files=files)\n"},{"lang":"PHP","source":" new CURLFile('document1.pdf'),\n 'files' => new CURLFile('document2.txt'),\n]);\n\n$response = curl_exec($ch);\n\ncurl_close($ch);\n"},{"lang":"Go","source":"package main\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"mime/multipart\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n)\n\nfunc main() {\n\tform := new(bytes.Buffer)\n\twriter := multipart.NewWriter(form)\n\tfw, err := writer.CreateFormFile(\"document1.pdf\", filepath.Base(\"document1.pdf\"))\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfd, err := os.Open(\"document1.pdf\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer fd.Close()\n\t_, err = io.Copy(fw, fd)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tfw, err = writer.CreateFormFile(\"document2.txt\", filepath.Base(\"document2.txt\"))\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfd, err = os.Open(\"document2.txt\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer fd.Close()\n\t_, err = io.Copy(fw, fd)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\twriter.Close()\n\n\tclient := &http.Client{}\n\treq, err := http.NewRequest(\"POST\", \"https://api.timeweb.cloud/api/v1/cloud-ai/knowledge-bases/1/upload\", form)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \" + os.Getenv(\"TIMEWEB_CLOUD_TOKEN\"))\n\treq.Header.Set(\"Content-Type\", writer.FormDataContentType())\n\tresp, err := client.Do(req)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer resp.Body.Close()\n\tbodyText, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%s\\n\", bodyText)\n}\n"},{"lang":"Java","source":"import java.io.IOException;\nimport java.io.InputStream;\nimport java.lang.System;\nimport java.net.HttpURLConnection;\nimport java.net.URL;\nimport java.util.Scanner;\n\nclass Main {\n\n\tpublic static void main(String[] args) throws IOException {\n\t\tURL url = new URL(\"https://api.timeweb.cloud/api/v1/cloud-ai/knowledge-bases/1/upload\");\n\t\tHttpURLConnection httpConn = (HttpURLConnection) url.openConnection();\n\t\thttpConn.setRequestMethod(\"POST\");\n\n\t\thttpConn.setRequestProperty(\"Authorization\", \"Bearer \" + System.getenv(\"TIMEWEB_CLOUD_TOKEN\"));\n\n\t\tInputStream responseStream = httpConn.getResponseCode() / 100 == 2\n\t\t\t\t? httpConn.getInputStream()\n\t\t\t\t: httpConn.getErrorStream();\n\t\tScanner s = new Scanner(responseStream).useDelimiter(\"\\\\A\");\n\t\tString response = s.hasNext() ? s.next() : \"\";\n\t\tSystem.out.println(response);\n\t}\n}\n"}],"responses":{"200":{"description":"Объект JSON c ключом `uploaded_files`","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"uploaded_files":{"type":"array","items":{"type":"string"},"description":"Список загруженных файлов"}},"required":["uploaded_files"]},{"type":"object","properties":{"response_id":{"$ref":"#/components/schemas/response_id"}},"required":["response_id"]}]}}}},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"404":{"$ref":"#/components/responses/404"},"429":{"$ref":"#/components/responses/429"},"500":{"$ref":"#/components/responses/500"}},"tags":["Базы знаний"],"x-tags-i18n":{"eng":["Knowledge Bases"]}}},"/api/v2/cloud-ai/knowledge-bases/{id}/documents":{"get":{"summary":"Получение списка документов базы знаний","description":"Чтобы получить список документов базы знаний, отправьте GET-запрос на `/api/v2/cloud-ai/knowledge-bases/{id}/documents`.\n\nТело ответа будет представлять собой объект JSON с ключами `knowledgebase_documents` и `meta`.","operationId":"getKnowledgebaseDocumentsV2","parameters":[{"$ref":"#/components/parameters/knowledgebase-id"},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","default":10,"minimum":1,"maximum":100,"example":20},"description":"Количество документов на странице (по умолчанию: 10, максимум: 100)"},{"in":"query","name":"offset","required":false,"schema":{"type":"integer","default":0,"minimum":0,"example":0},"description":"Количество документов для пропуска (по умолчанию: 0)"},{"in":"query","name":"sort_by","required":false,"schema":{"type":"string","enum":["name","size","status","indexing_timestamp"],"default":"indexing_timestamp","example":"indexing_timestamp"},"description":"Поле для сортировки (по умолчанию: indexing_timestamp - время последней индексации документа)"},{"in":"query","name":"sort_order","required":false,"schema":{"type":"string","enum":["ASC","DESC"],"default":"DESC","example":"DESC"},"description":"Порядок сортировки (по умолчанию: DESC)"}],"x-codeSamples":[{"lang":"cURL","label":"cURL","source":"curl -X GET \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $TIMEWEB_CLOUD_TOKEN\" \\\n \"https://api.timeweb.cloud/api/v2/cloud-ai/knowledge-bases/1/documents?limit=20&offset=0&sort_by=indexing_timestamp&sort_order=DESC\""},{"lang":"JavaScript","source":"fetch('https://api.timeweb.cloud/api/v2/cloud-ai/knowledge-bases/1/documents?limit=20&offset=0&sort_by=indexing_timestamp&sort_order=DESC', {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${TIMEWEB_CLOUD_TOKEN}`\n }\n});\n"},{"lang":"Node","source":"const axios = require('axios');\n\nconst response = await axios.get('https://api.timeweb.cloud/api/v2/cloud-ai/knowledge-bases/1/documents', {\n params: {\n 'limit': '20',\n 'offset': '0',\n 'sort_by': 'indexing_timestamp',\n 'sort_order': 'DESC'\n },\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + process.env['TIMEWEB_CLOUD_TOKEN']\n }\n});\n"},{"lang":"Python","source":"import os\nimport requests\n\nheaders = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + os.getenv('TIMEWEB_CLOUD_TOKEN', ''),\n}\n\nparams = {\n 'limit': '20',\n 'offset': '0',\n 'sort_by': 'indexing_timestamp',\n 'sort_order': 'DESC',\n}\n\nresponse = requests.get('https://api.timeweb.cloud/api/v2/cloud-ai/knowledge-bases/1/documents', params=params, headers=headers)\n"},{"lang":"PHP","source":"Спасибо за письмо
"},"autoreply_status":{"type":"boolean","description":"Включен ли автоответчик на входящие письма","example":true},"autoreply_subject":{"type":"string","description":"Тема сообщения автоответчика на входящие письма","example":"Автоответчик"},"comment":{"type":"string","description":"Комментарий к почтовому ящику","example":"Рабочая почта"},"filter_action":{"type":"string","description":"Что делать с письмами, которые попадают в спам","enum":["directory","forward","delete","tag"],"example":"directory"},"filter_status":{"type":"boolean","description":"Включен ли спам-фильтр","example":true},"forward_list":{"type":"array","description":"Список адресов для пересылки входящих писем","items":{"type":"string","example":"forward@example.com"}},"forward_status":{"type":"boolean","description":"Включена ли пересылка входящих писем","example":true},"outgoing_control":{"type":"boolean","description":"Включена ли пересылка исходящих писем","example":true},"outgoing_email":{"type":"string","description":"Адрес для пересылки исходящих писем","example":"outgoing@example.com"},"password":{"type":"string","description":"Пароль почтового ящика (всегда возвращается пустой строкой)","example":""},"spambox":{"type":"string","description":"Адрес для пересылки спама при выбранном действии forward","example":"spam@example.com"},"white_list":{"type":"array","description":"Белый список адресов от которых письма не будут попадать в спам","items":{"type":"string","example":"trusted@example.com"}},"webmail":{"type":"boolean","description":"Доступен ли Webmail","example":true},"dovecot":{"type":"boolean","description":"Есть ли доступ через dovecot","example":true},"fqdn":{"type":"string","description":"Домен почты","example":"example.com"},"leave_messages":{"type":"boolean","description":"Оставлять ли сообщения на сервере при пересылке","example":false},"mailbox":{"type":"string","description":"Название почтового ящика","example":"info"},"owner_full_name":{"type":"string","description":"ФИО владельца почтового ящика","example":"Иванов Иван Иванович"}},"required":["idn_name","autoreply_message","autoreply_status","autoreply_subject","comment","filter_action","filter_status","forward_list","forward_status","outgoing_control","outgoing_email","password","spambox","white_list","webmail","dovecot","fqdn","leave_messages","mailbox","owner_full_name"]},"mailboxes-batch-v2":{"description":"Результат массового создания почтовых ящиков (API v2)","type":"object","properties":{"mailboxes":{"type":"array","description":"Массив успешно созданных почтовых ящиков","items":{"$ref":"#/components/schemas/mailbox-v2"}},"errors":{"type":"array","description":"Массив ошибок при создании почтовых ящиков","items":{"type":"object"}}},"required":["mailboxes","errors"]},"spam-protection-is-enabled":{"title":"Если защита от спама включена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли спам-фильтр","example":true},"filter_action":{"type":"string","enum":["directory","label"],"description":"Что делать с письмами, которые попадают в спам. \\\n Параметры: \\\n `directory` - переместить в папку спам; \\\n `label` - пометить письмо; \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"directory"},"white_list":{"type":"array","items":{"type":"string"},"description":"Белый список адресов от которых письма не будут попадать в спам. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":["trusted@example.com"]}},"required":["is_enabled"]},"spam-protection-is-disabled":{"title":"Если защита от спама выключена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли спам-фильтр","example":false}},"required":["is_enabled"]},"forward-is-enabled":{"title":"Если пересылка включена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка входящих писем","example":true},"forward_list":{"type":"array","items":{"type":"string"},"description":"Список адресов для пересылки. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":["forward@example.com"]},"is_leave_messages":{"type":"boolean","description":"Оставлять ли копии входящих писем в почтовом ящике (не удалять). \\\n При `is_leave_messages`: `true`— копии входящих писем не сохраняются и будут удаляться. \\\n При `is_leave_messages`: `false` — копии входящих писем сохраняются. \\\n\\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":false}},"required":["is_enabled","forward_list"]},"forward-is-disabled":{"title":"Если пересылка выключена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка входящих писем","example":false}},"required":["is_enabled"]},"autoreply-is-enabled":{"title":"Если автоответчик включен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли автоответчик на входящие письма","example":true},"autoreply_message":{"type":"string","description":"Сообщение автоответчика на входящие письма. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"Спасибо за ваше письмо. Я отсутствую и отвечу позже.
"},"autoreply_subject":{"type":"string","description":"Тема сообщения автоответчика на входящие письма. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"Автоматический ответ"}},"required":["is_enabled"]},"autoreply-is-disabled":{"title":"Если автоответчик выключен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли автоответчик на входящие письма","example":false}},"required":["is_enabled"]},"outgoing-is-enabled":{"title":"Если контроль исходящей почты включен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка исходящих писем","example":true},"outgoing_email":{"type":"string","description":"Адрес для пересылки исходящих писем. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"outgoing@example.com"}},"required":["is_enabled","outgoing_email"]},"outgoing-is-disabled":{"title":"Если контроль исходящей почты выключен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка исходящих писем","example":false}},"required":["is_enabled"]},"update-mailbox-v2":{"description":"Обновление почтового ящика","type":"object","properties":{"password":{"type":"string","minLength":8,"maxLength":30,"description":"Пароль почтового ящика","example":"SecurePass123!"},"comment":{"type":"string","description":"Комментарий к почтовому ящику","example":"Рабочая почта"},"owner_full_name":{"type":"string","description":"ФИО владельца почтового ящика","example":"Иванов Иван Иванович"},"spam_protection_settings":{"description":"Спам-фильтр","type":"object","oneOf":[{"$ref":"#/components/schemas/spam-protection-is-enabled"},{"$ref":"#/components/schemas/spam-protection-is-disabled"}]},"forward_settings":{"description":"Пересылка входящих писем","type":"object","oneOf":[{"$ref":"#/components/schemas/forward-is-enabled"},{"$ref":"#/components/schemas/forward-is-disabled"}]},"autoreply_settings":{"description":"Автоответчик на входящие письма","type":"object","oneOf":[{"$ref":"#/components/schemas/autoreply-is-enabled"},{"$ref":"#/components/schemas/autoreply-is-disabled"}]},"outgoing_settings":{"description":"Пересылка исходящих писем","type":"object","oneOf":[{"$ref":"#/components/schemas/outgoing-is-enabled"},{"$ref":"#/components/schemas/outgoing-is-disabled"}]}}},"mailbox-response":{"type":"object","properties":{"idn_name":{"type":"string","description":"IDN имя домена","example":"example.ru"},"autoreply_message":{"type":"string","description":"Сообщение автоответчика","example":""},"autoreply_status":{"type":"boolean","description":"Статус автоответчика","example":true},"autoreply_subject":{"type":"string","description":"Тема автоответчика","example":"Автоматический ответ"},"comment":{"type":"string","description":"Комментарий","example":"Рабочая почта"},"filter_action":{"type":"string","enum":["directory","label"],"description":"Действие фильтра спама","example":"directory"},"filter_status":{"type":"boolean","description":"Статус фильтра спама","example":true},"forward_list":{"type":"array","items":{"type":"string"},"description":"Список адресов для пересылки","example":["forward@example.com"]},"forward_status":{"type":"boolean","description":"Статус пересылки","example":true},"outgoing_control":{"type":"boolean","description":"Контроль исходящей почты","example":true},"outgoing_email":{"type":"string","description":"Email для исходящих писем","example":"outgoing@example.com"},"password":{"type":"string","description":"Пароль (пустая строка в ответе)","example":""},"white_list":{"type":"array","items":{"type":"string"},"description":"Белый список адресов","example":["trusted@example.com"]},"webmail":{"type":"boolean","description":"Доступ к веб-почте","example":true},"dovecot":{"type":"boolean","description":"Использование Dovecot","example":true},"fqdn":{"type":"string","description":"Полное доменное имя","example":"example.ru"},"leave_messages":{"type":"boolean","description":"Оставлять копии писем при пересылке","example":false},"mailbox":{"type":"string","description":"Имя почтового ящика","example":"user"},"owner_full_name":{"type":"string","description":"ФИО владельца","example":"Иванов Иван Иванович"}}},"mailbox":{"description":"Почтовый ящик","type":"object","properties":{"auto_reply":{"description":"Автоответчик на входящие письма","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли автоответчик на входящие письма","example":true},"message":{"type":"string","description":"Сообщение автоответчика на входящие письма","example":"some message"},"subject":{"type":"string","description":"Тема сообщения автоответчика на входящие письма","example":"some subject"}},"required":["is_enabled","message","subject"]},"spam_filter":{"description":"Спам-фильтр","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли спам-фильтр","example":true},"action":{"type":"string","description":"Что делать с письмами, которые попадают в спам. \\\n Параметры: \\\n `move_to_directory` - переместить в паку спам; \\\n `forward` - переслать письмо на другой адрес; \\\n `delete` - удалить письмо; \\\n `tag` - пометить письмо;","enum":["move_to_directory","forward","delete","tag"],"example":"forward"},"forward_to":{"type":"string","description":"Адрес для пересылки при выбранном действии `forward` из параметра `action`","example":"test@timeweb.ru"},"white_list":{"type":"array","description":"Белый список адресов от которых письма не будут попадать в спам","items":{"type":"string","example":"test@timeweb.ru"}}},"required":["is_enabled","action","forward_to","white_list"]},"forwarding_incoming":{"type":"object","description":"Пересылка входящик писем","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка входящик писем","example":true},"is_delete_messages":{"type":"boolean","description":"Удалять ли входящие письма","example":false},"incoming_list":{"type":"array","description":"Список адресов для пересылки","items":{"type":"string","example":"test@timeweb.ru"}}},"required":["is_enabled","is_delete_messages","incoming_list"]},"forwarding_outgoing":{"type":"object","description":"Пересылка исходящих писем","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка исходящих писем","example":true},"outgoing_to":{"type":"string","description":"Адрес для пересылки исходящих писем","example":"test@timeweb.ru"}},"required":["is_enabled","outgoing_to"]},"comment":{"type":"string","description":"Комментарий к почтовому ящику","example":"some comment"},"fqdn":{"type":"string","description":"Домен почты","example":"timeweb.ru"},"mailbox":{"type":"string","description":"Название почтового ящика","example":"mailbox"},"password":{"type":"string","description":"Пароль почтового ящика","example":"ps3-1asZa"},"usage_space":{"type":"number","description":"Использованное место на почтовом ящике (в Мб)","example":512},"is_webmail":{"type":"boolean","description":"Доступен ли Webmail","example":false},"idn_name":{"type":"string","description":"IDN домен почтового ящика","example":"timeweb.ru"},"is_dovecot":{"type":"boolean","description":"Есть ли доступ через dovecot","example":false}},"required":["auto_reply","spam_filter","forwarding_incoming","forwarding_outgoing","comment","fqdn","mailbox","password","usage_space","is_webmail","idn_name","is_dovecot"]},"domain-info":{"description":"Почтовая информация о домене","type":"object","properties":{"email":{"description":"Адрес для сбора почты с ошибочных ящиков","type":"string","example":1024},"used":{"description":"Использованное место на почте (в Мб).","type":"number","example":512}},"required":["email","used"]},"auto-reply-is-disabled":{"title":"Если автоответчик выключен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли автоответчик на входящие письма","example":true},"message":{"type":"string","description":"Сообщение автоответчика на входящие письма","example":"some message"},"subject":{"type":"string","description":"Тема сообщения автоответчика на входящие письма.","example":"some subject"}},"required":["is_enabled"]},"auto-reply-is-enabled":{"title":"Если автоответчик включен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли автоответчик на входящие письма","example":true},"message":{"type":"string","description":"Сообщение автоответчика на входящие письма. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"some message"},"subject":{"type":"string","description":"Тема сообщения автоответчика на входящие письма. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"some subject"}}},"spam-filter-is-disabled":{"title":"Если спам-фильтр выключен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли спам-фильтр","example":true},"action":{"type":"string","description":"Что делать с письмами, которые попадают в спам. \\\n Параметры: \\\n `move_to_directory` - переместить в паку спам; \\\n `forward` - переслать письмо на другой адрес; \\\n `delete` - удалить письмо; \\\n `tag` - пометить письмо;","enum":["move_to_directory","forward","delete","tag"],"example":"forward"},"forward_to":{"type":"string","description":"Адрес для пересылки при выбранном действии `forward` из параметра `action`. Не может быть пустым, если `action` выбран `forward`","example":"test@timeweb.ru"},"white_list":{"type":"array","description":"Белый список адресов от которых письма не будут попадать в спам","items":{"type":"string","example":"test@timeweb.ru"}}},"required":["is_enabled"]},"spam-filter-is-enabled":{"title":"Если спам-фильтр включен","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включен ли спам-фильтр","example":true},"action":{"type":"string","description":"Что делать с письмами, которые попадают в спам. \\\n Параметры: \\\n `move_to_directory` - переместить в паку спам; \\\n `forward` - переслать письмо на другой адрес; \\\n `delete` - удалить письмо; \\\n `tag` - пометить письмо; \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","enum":["move_to_directory","forward","delete","tag"],"example":"forward"},"forward_to":{"type":"string","description":"Адрес для пересылки при выбранном действии `forward` из параметра `action`. Не может быть пустым, если `action` выбран `forward`. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"test@timeweb.ru"},"white_list":{"type":"array","description":"Белый список адресов от которых письма не будут попадать в спам. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","items":{"type":"string","example":"test@timeweb.ru"}}}},"forwarding-incoming-is-disabled":{"title":"Если пересылка входящих выключена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка входящик писем","example":true},"is_delete_messages":{"type":"boolean","description":"Удалять ли входящие письма","example":false},"incoming_list":{"type":"array","description":"Список адресов для пересылки. Не должен быть пустым при передачи параметра `is_enabled`: `true`","items":{"type":"string","example":"test@timeweb.ru"}}},"required":["is_enabled"]},"forwarding-incoming-is-enabled":{"title":"Если пересылка входящих включена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка входящик писем","example":true},"is_delete_messages":{"type":"boolean","description":"Удалять ли входящие письма. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":false},"incoming_list":{"type":"array","description":"Список адресов для пересылки. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","items":{"type":"string","example":"test@timeweb.ru"}}}},"forwarding-outgoing-is-disabled":{"title":"Если пересылка исходящих выключена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка исходящих писем","example":true},"outgoing_to":{"type":"string","description":"Адрес для пересылки исходящих писем","example":"test@timeweb.ru"}},"required":["is_enabled"]},"forwarding-outgoing-is-enabled":{"title":"Если пересылка исходящих включена","type":"object","properties":{"is_enabled":{"type":"boolean","description":"Включена ли пересылка исходящих писем. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":true},"outgoing_to":{"type":"string","description":"Адрес для пересылки исходящих писем. \\\n Если передан параметр `is_enabled`: `false`, то значение передавать нельзя","example":"test@timeweb.ru"}}},"update-mailbox":{"description":"Изменение почтового ящика","type":"object","properties":{"auto_reply":{"description":"Автоответчик на входящие письма","type":"object","oneOf":[{"$ref":"#/components/schemas/auto-reply-is-disabled"},{"$ref":"#/components/schemas/auto-reply-is-enabled"}]},"spam_filter":{"description":"Спам-фильтр","type":"object","oneOf":[{"$ref":"#/components/schemas/spam-filter-is-disabled"},{"$ref":"#/components/schemas/spam-filter-is-enabled"}]},"forwarding_incoming":{"type":"object","description":"Пересылка входящик писем.","oneOf":[{"$ref":"#/components/schemas/forwarding-incoming-is-disabled"},{"$ref":"#/components/schemas/forwarding-incoming-is-enabled"}]},"forwarding_outgoing":{"type":"object","description":"Пересылка исходящих писем","oneOf":[{"$ref":"#/components/schemas/forwarding-outgoing-is-disabled"},{"$ref":"#/components/schemas/forwarding-outgoing-is-enabled"}]},"comment":{"type":"string","description":"Комментарий к почтовому ящику","example":"some comment"},"password":{"type":"string","description":"Пароль почтового ящика","example":"ps3-1asZa"}}},"domain-payment-period":{"description":"Период оплаты (для доменов в зонах .ru и .рф только 1-3 года).","type":"string","enum":["P1Y","P2Y","P3Y","P4Y","P5Y","P6Y","P7Y","P8Y","P9Y","P10Y"],"example":"P1Y"},"subdomain":{"type":"object","properties":{"fqdn":{"description":"Полное имя поддомена.","type":"string","example":"sub.somedomain.ru"},"id":{"description":"ID поддомена.","type":"number","example":123},"linked_ip":{"description":"Привязанный к поддомену IP-адрес.","type":"string","nullable":true,"example":null}},"required":["fqdn","id","linked_ip"]},"domain":{"description":"Домен","type":"object","properties":{"allowed_buy_periods":{"description":"Допустимые периоды продления домена.","type":"array","items":{"type":"object","properties":{"period":{"$ref":"#/components/schemas/domain-payment-period"},"price":{"description":"Стоимость домена за указанный период.","type":"number","example":179}},"required":["period","price"]}},"days_left":{"description":"Количество дней, оставшихся до конца срока регистрации домена.","type":"number","example":100},"domain_status":{"description":"Статус домена.","type":"string","enum":["awaiting_payment","expired","final_expired","free","no_paid","ns_based","paid","soon_expire","today_expired"],"example":"paid"},"expiration":{"description":"Дата окончания срока регистрации домена, для доменов без срока окончания регистрации будет приходить 0000-00-00.","type":"string","example":"0000-00-00"},"fqdn":{"description":"Полное имя домена.","type":"string","example":"somedomain.ru"},"id":{"description":"ID домена.","type":"number","example":123},"avatar_link":{"type":"string","nullable":true,"description":"Ссылка на аватар домена.","example":"https://urltoimage.com/avatars/image.png"},"is_autoprolong_enabled":{"description":"Это логическое значение, которое показывает, включено ли автопродление домена.","type":"boolean","nullable":true,"example":true},"is_premium":{"description":"Это логическое значение, которое показывает, является ли домен премиальным.","type":"boolean","example":true},"is_prolong_allowed":{"description":"Это логическое значение, которое показывает, можно ли сейчас продлить домен.","type":"boolean","example":true},"is_technical":{"description":"Это логическое значение, которое показывает, является ли домен техническим.","type":"boolean","example":true},"is_whois_privacy_enabled":{"description":"Это логическое значение, которое показывает, включено ли скрытие данных администратора домена для whois. Если приходит null, значит для данной зоны эта услуга не доступна.","type":"boolean","nullable":true,"example":true},"linked_ip":{"description":"Привязанный к домену IP-адрес.","type":"string","nullable":true,"example":"192.168.1.1"},"paid_till":{"description":"До какого числа оплачен домен.","type":"string","nullable":true,"example":"2023-01-27"},"person_id":{"description":"ID администратора, на которого зарегистрирован домен.","type":"number","nullable":true,"example":123},"premium_prolong_cost":{"description":"Стоимость премиального домена.","type":"number","nullable":true,"example":null},"provider":{"description":"ID регистратора домена.","type":"string","nullable":true,"example":"TimewebVirtreg"},"request_status":{"description":"Статус заявки на продление/регистрацию/трансфер домена.","type":"string","enum":["prolongation_fail","prolongation_request","registration_fail","registration_request","transfer_fail","transfer_request","awaiting_person"],"nullable":true,"example":"registration_request"},"subdomains":{"description":"Список поддоменов.","type":"array","items":{"$ref":"#/components/schemas/subdomain"}},"tld_id":{"description":"ID доменной зоны.","type":"number","nullable":true,"example":2365}},"required":["allowed_buy_periods","is_prolong_allowed","is_autoprolong_enabled","domain_status","expiration","fqdn","id","avatar_link","is_premium","is_technical","days_left","linked_ip","paid_till","person_id","premium_prolong_cost","provider","request_status","subdomains","tld_id","is_whois_privacy_enabled"]},"update-domain":{"type":"object","properties":{"is_autoprolong_enabled":{"description":"Это логическое значение, которое показывает, включено ли автопродление домена.","type":"boolean","example":true},"linked_ip":{"description":"Привязанный к домену IP-адрес.","type":"string","nullable":true,"example":"192.168.1.1"}}},"create-dns-v2":{"oneOf":[{"title":"A запись","type":"object","properties":{"type":{"type":"string","enum":["A"],"description":"Тип DNS-записи."},"value":{"type":"string","description":"IPv4 адрес.","example":"192.168.1.0"},"ttl":{"type":"number","description":"Время жизни DNS-записи в секундах.","example":600},"app_id":{"type":"number","description":"Идентификатор приложения в App Platform, к которому будет привязан домен или поддомен.","example":1}},"required":["type","value"]},{"title":"AAAA запись","type":"object","properties":{"type":{"type":"string","enum":["AAAA"],"description":"Тип DNS-записи."},"value":{"type":"string","description":"IPv6 адрес.","example":"2001:db8::1"},"ttl":{"type":"number","description":"Время жизни DNS-записи в секундах.","example":600}},"required":["type","value"]},{"title":"TXT запись","type":"object","properties":{"type":{"type":"string","enum":["TXT"],"description":"Тип DNS-записи."},"value":{"type":"string","description":"Текстовое значение записи.","example":"value"},"ttl":{"type":"number","description":"Время жизни DNS-записи в секундах.","example":600}},"required":["type","value"]},{"title":"CNAME запись","type":"object","properties":{"type":{"type":"string","enum":["CNAME"],"description":"Тип DNS-записи."},"value":{"type":"string","description":"Каноническое имя (целевой домен).","example":"somedomain.ru"},"ttl":{"type":"number","description":"Время жизни DNS-записи в секундах.","example":600}},"required":["type","value"]},{"title":"MX запись","type":"object","properties":{"type":{"type":"string","enum":["MX"],"description":"Тип DNS-записи."},"value":{"type":"string","description":"Имя почтового сервера.","example":"somedomain.ru"},"priority":{"type":"number","description":"Приоритет почтового сервера (чем меньше значение, тем выше приоритет).","example":10},"ttl":{"type":"number","description":"Время жизни DNS-записи в секундах.","example":600}},"required":["type","value","priority"]},{"title":"SRV запись","type":"object","properties":{"type":{"type":"string","enum":["SRV"],"description":"Тип DNS-записи."},"service":{"type":"string","description":"Имя сервиса (должно начинаться с подчеркивания).","example":"_sip"},"protocol":{"type":"string","description":"Протокол (должен начинаться с подчеркивания).","example":"_TCP"},"priority":{"type":"number","description":"Приоритет целевого хоста.","example":10},"port":{"type":"number","description":"TCP или UDP порт, на котором работает сервис.","example":993},"host":{"type":"string","description":"Каноническое имя хоста, предоставляющего сервис.","example":"somedomain.ru"},"ttl":{"type":"number","description":"Время жизни DNS-записи в секундах.","example":600}},"required":["type","service","protocol","priority","port","host"]}]},"dns-record-v2":{"description":"DNS-запись.","type":"object","properties":{"type":{"description":"Тип DNS-записи.","type":"string","enum":["TXT","SRV","CNAME","AAAA","MX","A"],"example":"A"},"id":{"description":"ID DNS-записи.","type":"number","nullable":true,"example":123},"fqdn":{"description":"Полное имя основного домена.","type":"string","example":"somedomain.ru"},"data":{"description":"Данные DNS-записи. Состав полей зависит от типа записи.","type":"object","properties":{"priority":{"description":"Приоритет DNS-записи (для MX и SRV записей).","type":"number","example":10},"subdomain":{"description":"Имя поддомена (только поддомен без основного домена, например `sub` для `sub.example.com`). Для записей на основном домене это поле отсутствует в ответе.","type":"string","nullable":true,"example":"sub"},"value":{"description":"Значение DNS-записи (для A, AAAA, TXT, CNAME, MX записей).","type":"string","example":"192.168.1.0"},"host":{"description":"Каноническое имя хоста, предоставляющего сервис (для SRV записей).","type":"string","example":"somedomain.ru"},"port":{"description":"TCP или UDP порт, на котором работает сервис (для SRV записей).","type":"number","example":993},"service":{"description":"Имя сервиса (для SRV записей).","type":"string","example":"_sip"},"protocol":{"description":"Протокол (для SRV записей).","type":"string","example":"_TCP"}}},"ttl":{"description":"Время жизни DNS-записи.","type":"number","example":600}},"required":["type","data"]},"dns-record":{"description":"DNS-запись.","type":"object","properties":{"type":{"description":"Тип DNS-записи.","type":"string","enum":["TXT","SRV","CNAME","AAAA","MX","A"],"example":"A"},"id":{"description":"ID DNS-записи.","type":"number","nullable":true,"example":123},"data":{"description":"Данные DNS-записи.","type":"object","properties":{"priority":{"description":"Приоритет DNS-записи.","type":"number","example":0},"subdomain":{"description":"Поддомен.","type":"string","nullable":true,"example":"sub.somedomain.ru"},"value":{"description":"Значение DNS-записи.","type":"string","example":"98.76.54.32"}},"required":["value"]},"ttl":{"description":"Время жизни DNS-записи.","type":"number","example":600}},"required":["type","data"]},"create-dns":{"type":"object","properties":{"priority":{"description":"Приоритет DNS-записи.","type":"number","example":0},"subdomain":{"description":"Полное имя поддомена.","type":"string","example":"sub.somedomain.ru"},"type":{"description":"Тип DNS-записи.","type":"string","enum":["TXT","SRV","CNAME","AAAA","MX","A"],"example":"A"},"value":{"description":"Значение DNS-записи.","type":"string","example":"192.168.111.123"},"ttl":{"description":"Время жизни DNS-записи.","type":"number","example":600}},"required":["value","type"]},"domain-name-server":{"description":"Name-сервер","type":"object","properties":{"is_delegation_allowed":{"description":"Это логическое значение, которое показывает включена ли услуга разрешено ли делегирование домена.","type":"boolean","example":true},"items":{"description":"Список name-серверов","type":"array","items":{"type":"object","properties":{"host":{"description":"Хост name-сервера.","type":"string","example":"ns1.timeweb.ru"},"ips":{"description":"Список IP-адресов name-сервера","type":"array","items":{"type":"string","example":"98.76.54.32"}}},"required":["host","ips"]}},"task_status":{"description":"Статус добавления name-сервера.","type":"string","enum":["done","active","failed"],"example":"done"}},"required":["is_delegation_allowed","task_status","items"]},"update-domain-name-servers":{"type":"object","properties":{"name_servers":{"description":"Список новых name-серверов для домена","type":"array","items":{"type":"object","properties":{"host":{"description":"Хост name-сервера.","type":"string","example":"ns1.timeweb.ru"},"ips":{"description":"Список IP-адресов name-сервера","type":"array","items":{"type":"string","example":"98.76.54.32"}}},"required":["host"]}}},"required":["name_servers"]},"domain-prime-type":{"title":"Тип прайм домена","description":"Тип прайм домена.","type":"string","enum":["extra","premium","optimal","maximal"],"example":"maximal"},"domain-request":{"description":"Заявка на продление/регистрацию/трансфер домена.","type":"object","properties":{"account_id":{"description":"ID пользователя","type":"string","example":"cp78562"},"auth_code":{"description":"Код авторизации для переноса домена.","type":"string","nullable":true,"example":"code"},"date":{"description":"Дата создания заявки.","type":"string","format":"date-time","example":"2023-01-31T12:51:00.710Z"},"domain_bundle_id":{"description":"Идентификационный номер бандла, в который входит данная заявка (null - если заявка не входит ни в один бандл).","type":"string","nullable":true,"example":null},"error_code_transfer":{"description":"Код ошибки трансфера домена.","type":"string","nullable":true,"example":null},"fqdn":{"description":"Полное имя домена.","type":"string","example":"somedomain.com"},"group_id":{"description":"ID группы доменных зон.","type":"number","example":123},"id":{"description":"ID заявки.","type":"number","example":123},"is_antispam_enabled":{"description":"Это логическое значение, которое показывает включена ли услуга \"Антиспам\" для домена","type":"boolean","example":false},"is_autoprolong_enabled":{"description":"Это логическое значение, которое показывает, включено ли автопродление домена.","type":"boolean","example":true},"is_whois_privacy_enabled":{"description":"Это логическое значение, которое показывает, включено ли скрытие данных администратора домена для whois. Опция недоступна для доменов в зонах .ru и .рф.","type":"boolean","example":true},"message":{"description":"Информационное сообщение о заявке.","type":"string","nullable":true,"example":"message"},"money_source":{"description":"Источник (способ) оплаты заявки.","type":"string","enum":["use","bonus","invoice"],"nullable":true,"example":"use"},"period":{"$ref":"#/components/schemas/domain-payment-period"},"person_id":{"description":"Идентификационный номер персоны для заявки на регистрацию.","type":"number","example":123},"prime":{"allOf":[{"$ref":"#/components/schemas/domain-prime-type"}],"nullable":true,"example":null},"soon_expire":{"description":"Количество дней до конца регистрации домена, за которые мы уведомим о необходимости продления.","type":"number","example":30},"sort_order":{"description":"Это значение используется для сортировки доменных зон в панели управления.","type":"number","example":123},"type":{"description":"Тип заявки.","type":"string","enum":["request","prolong","transfer"],"example":"request"}},"required":["is_antispam_enabled","auth_code","is_autoprolong_enabled","account_id","date","domain_bundle_id","error_code_transfer","fqdn","group_id","id","message","money_source","period","person_id","prime","soon_expire","sort_order","type","is_whois_privacy_enabled"]},"domain-register":{"title":"Заявка на регистрацию домена","description":"Заявка на регистрацию домена","type":"object","properties":{"action":{"description":"Тип создаваемой заявки.","enum":["register"],"type":"string","example":"register"},"fqdn":{"description":"Полное имя домена.","type":"string","example":"somedomain.ru"},"is_autoprolong_enabled":{"description":"Это логическое значение, которое показывает, включено ли автопродление домена.","type":"boolean","example":true},"is_whois_privacy_enabled":{"description":"Это логическое значение, которое показывает, включено ли скрытие данных администратора домена для whois. Опция недоступна для доменов в зонах .ru и .рф.","type":"boolean","example":true},"period":{"$ref":"#/components/schemas/domain-payment-period"},"person_id":{"description":"ID администратора, на которого регистрируется домен.","type":"number","example":123}},"required":["action","fqdn","person_id"]},"domain-prolong":{"title":"Заявка на продление домена","description":"Заявка на продление домена","type":"object","properties":{"action":{"description":"Тип создаваемой заявки.","enum":["prolong"],"type":"string","example":"prolong"},"fqdn":{"description":"Полное имя домена.","type":"string","example":"somedomain.ru"},"is_antispam_enabled":{"description":"Это логическое значение, которое показывает включена ли услуга \"Антиспам\" для домена","type":"boolean","example":false},"is_autoprolong_enabled":{"description":"Это логическое значение, которое показывает, включено ли автопродление домена.","type":"boolean","example":true},"is_whois_privacy_enabled":{"description":"Это логическое значение, которое показывает, включено ли скрытие данных администратора домена для whois. Опция недоступна для доменов в зонах .ru и .рф.","type":"boolean","example":true},"period":{"$ref":"#/components/schemas/domain-payment-period"},"person_id":{"description":"ID администратора, на которого зарегистрирован домен.","type":"number","example":123},"prime":{"$ref":"#/components/schemas/domain-prime-type"}},"required":["action","fqdn"]},"domain-transfer":{"title":"Заявка на перенос домена","description":"Заявка на перенос домена","type":"object","properties":{"action":{"description":"Тип создаваемой заявки.","enum":["transfer"],"type":"string","example":"transfer"},"auth_code":{"description":"Код авторизации для переноса домена.","type":"string","example":"code"},"fqdn":{"description":"Полное имя домена.","type":"string","example":"somedomain.ru"}},"required":["action","fqdn","auth_code"]},"use":{"title":"Оплата заявки на продление/регистрацию домена с баланса аккаунта","description":"Оплата заявки на продление/регистрацию домена с баланса аккаунта","type":"object","properties":{"money_source":{"description":"Тип создаваемой заявки.","enum":["use"],"type":"string","example":"use"},"person_id":{"description":"ID администратора, на которого зарегистрирован домен.","type":"number","example":123}},"required":["money_source"]},"invoice":{"title":"Оплата заявки на продление/регистрацию домена при помощи платежной системы","description":"Оплата заявки на продление/регистрацию домена при помощи платежной системы","type":"object","properties":{"money_source":{"description":"Тип создаваемой заявки.","enum":["invoice"],"type":"string","example":"invoice"},"person_id":{"description":"ID администратора, на которого зарегистрирован домен.","type":"number","example":123},"payment_type":{"description":"Тип платежной системы.","type":"string","enum":["receipt","card","mobile-card","wm","webmoney","yandex","ya","invoice","sofort","qiwi_wallet","wechat"],"example":123},"payer_id":{"description":"Идентификационный номер плательщика","type":"number","example":123}},"required":["money_source","payment_type","payer_id"]},"free":{"title":"Обновление заявки на перенос домена","description":"Обновление заявки на перенос домена","type":"object","properties":{"money_source":{"description":"Тип создаваемой заявки.","enum":["free"],"type":"string","example":"free"},"person_id":{"description":"ID администратора, на которого зарегистрирован домен.","type":"number","example":123},"auth_code":{"description":"Код авторизации для переноса домена.","type":"string","example":"code"}},"required":["money_source","auth_code"]},"bonus":{"title":"Оплата заявки на продление/регистрацию домена бонусом","description":"Оплата заявки на продление/регистрацию домена бонусом","type":"object","properties":{"money_source":{"description":"Тип создаваемой заявки.","enum":["bonus"],"type":"string","example":"bonus"},"person_id":{"description":"ID администратора, на которого зарегистрирован домен.","type":"number","example":123},"bonus_id":{"description":"ID бонуса.","type":"number","example":123}},"required":["money_source","bonus_id"]},"top-level-domain":{"description":"Доменная зона.","type":"object","properties":{"allowed_buy_periods":{"description":"Список доступных периодов для регистрации/продления доменов со стоимостью.","type":"array","items":{"type":"object","properties":{"period":{"description":"Период регистрации/продления домена.","type":"string","example":"P1Y"},"price":{"description":"Цена регистрации/продления домена.","type":"number","example":123}},"required":["period","price"]}},"early_renew_period":{"description":"Количество дней до истечение срока регистрации, когда можно продлять домен.","type":"number","nullable":true,"example":60},"grace_period":{"description":"Количество дней, которые действует льготный период когда вы ещё можете продлить домен, после окончания его регистрации","type":"number","example":30},"id":{"description":"ID доменной зоны.","type":"number","example":123},"is_published":{"description":"Это логическое значение, которое показывает, опубликована ли доменная зона.","type":"boolean","example":true},"is_registered":{"description":"Это логическое значение, которое показывает, зарегистрирована ли доменная зона.","type":"boolean","example":true},"is_whois_privacy_default_enabled":{"description":"Это логическое значение, которое показывает, включено ли по умолчанию скрытие данных администратора для доменной зоны.","type":"boolean","example":true},"is_whois_privacy_enabled":{"description":"Это логическое значение, которое показывает, доступно ли управление скрытием данных администратора для доменной зоны.","type":"boolean","example":true},"name":{"description":"Имя доменной зоны.","type":"string","example":"ru"},"price":{"description":"Цена регистрации домена","type":"number","example":100},"prolong_price":{"description":"Цена продления домена.","type":"number","example":100},"registrar":{"description":"Регистратор доменной зоны.","type":"string","enum":["NIC","PDR","R01","timeweb","TimewebVirtreg","Webnames","unknown"],"example":"TimewebVirtreg"},"transfer":{"description":"Цена услуги трансфера домена.","type":"number","example":0},"whois_privacy_price":{"description":"Цена услуги скрытия данных администратора для доменной зоны.","type":"number","example":300}},"required":["early_renew_period","grace_period","id","name","price","prolong_price","is_published","is_registered","registrar","transfer","is_whois_privacy_enabled","is_whois_privacy_default_enabled","whois_privacy_price","allowed_buy_periods"]},"person":{"type":"object","properties":{"id":{"description":"Уникальный идентификатор администратора домена.","type":"integer","example":123},"type":{"description":"Тип администратора: `person` — физическое лицо, `org` — организация, `ip` — индивидуальный предприниматель.","type":"string","enum":["person","org","ip"],"example":"person"},"name":{"description":"Имя администратора (ФИО или название организации).","type":"string","example":"Иванов Иван Иванович"},"name_eng":{"description":"Имя администратора в латинской транслитерации.","type":"string","example":"Ivanov Ivan"},"email":{"description":"Адрес электронной почты администратора.","type":"string","example":"ivanov@example.com"},"phone":{"description":"Контактный телефон администратора.","type":"string","example":"+79000000000"},"postcode":{"description":"Почтовый индекс.","type":"string","example":"190000"},"mailing_address":{"description":"Почтовый адрес.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"country_code":{"description":"Код страны администратора.","type":"string","nullable":true,"example":"RU"},"is_resident":{"description":"Это логическое значение, которое показывает, является ли администратор резидентом РФ.","type":"boolean","example":true},"is_blank":{"description":"Это логическое значение, которое показывает, заполнены ли данные администратора не полностью.","type":"boolean","example":false},"is_closed":{"description":"Это логическое значение, которое показывает, закрыт ли администратор.","type":"boolean","example":false},"birthdate":{"description":"Дата рождения. Только для типов `person` и `ip`.","type":"string","example":"1990-01-01"},"passport_date":{"description":"Дата выдачи паспорта. Только для типов `person` и `ip`.","type":"string","example":"2010-01-01"},"passport_number":{"description":"Номер паспорта. Только для типов `person` и `ip`.","type":"string","example":"123456"},"passport_place":{"description":"Кем выдан паспорт. Только для типов `person` и `ip`.","type":"string","example":"ОУФМС России"},"passport_series":{"description":"Серия паспорта. Только для типов `person` и `ip`.","type":"string","example":"1234"},"inn":{"description":"ИНН. Только для типов `org` и `ip`.","type":"string","example":"7700000000"},"kpp":{"description":"КПП организации. Только для типа `org`.","type":"string","example":"770000000"},"legal_address":{"description":"Юридический адрес организации. Только для типа `org`.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"contact_name":{"description":"Контактное лицо организации. Только для типа `org`.","type":"string","example":"Иванов Иван Иванович"}},"required":["id","type","name","name_eng","email","phone","postcode","mailing_address","country_code","is_resident","is_blank","is_closed"]},"person-2":{"title":"Физическое лицо","description":"Администратор домена — физическое лицо","type":"object","properties":{"type":{"description":"Тип администратора.","enum":["person"],"type":"string","example":"person"},"name":{"description":"ФИО администратора.","type":"string","example":"Иванов Иван Иванович"},"is_resident":{"description":"Это логическое значение, которое показывает, является ли администратор резидентом РФ.","type":"boolean","example":true},"birthdate":{"description":"Дата рождения.","type":"string","example":"1990-01-01"},"passport_date":{"description":"Дата выдачи паспорта.","type":"string","example":"2010-01-01"},"passport_number":{"description":"Номер паспорта.","type":"string","example":"123456"},"passport_place":{"description":"Кем выдан паспорт.","type":"string","example":"ОУФМС России"},"passport_series":{"description":"Серия паспорта.","type":"string","example":"1234"},"postcode":{"description":"Почтовый индекс.","type":"string","example":"190000"},"mailing_address":{"description":"Почтовый адрес.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"phone":{"description":"Контактный телефон.","type":"string","example":"+79000000000"},"email":{"description":"Адрес электронной почты.","type":"string","example":"ivanov@example.com"},"country_code":{"description":"Код страны. Только для нерезидентов РФ (`is_resident: false`); для резидентов поле передавать не нужно.","type":"string","nullable":true,"example":"KZ"}},"required":["type","name","is_resident","birthdate","passport_date","passport_number","passport_place","passport_series","postcode","mailing_address","phone","email"]},"org":{"title":"Организация","description":"Администратор домена — организация","type":"object","properties":{"type":{"description":"Тип администратора.","enum":["org"],"type":"string","example":"org"},"name":{"description":"Название организации.","type":"string","example":"ООО «Пример»"},"is_resident":{"description":"Это логическое значение, которое показывает, является ли администратор резидентом РФ.","type":"boolean","example":true},"contact_name":{"description":"Контактное лицо организации.","type":"string","example":"Иванов Иван Иванович"},"inn":{"description":"ИНН организации.","type":"string","example":"7700000000"},"kpp":{"description":"КПП организации.","type":"string","example":"770000000"},"legal_address":{"description":"Юридический адрес организации.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"postcode":{"description":"Почтовый индекс.","type":"string","example":"190000"},"mailing_address":{"description":"Почтовый адрес.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"phone":{"description":"Контактный телефон.","type":"string","example":"+79000000000"},"email":{"description":"Адрес электронной почты.","type":"string","example":"org@example.com"},"country_code":{"description":"Код страны. Только для нерезидентов РФ (`is_resident: false`); для резидентов поле передавать не нужно.","type":"string","nullable":true,"example":"KZ"}},"required":["type","name","is_resident","contact_name","inn","legal_address","postcode","mailing_address","phone","email"]},"ip":{"title":"Индивидуальный предприниматель","description":"Администратор домена — индивидуальный предприниматель","type":"object","properties":{"type":{"description":"Тип администратора.","enum":["ip"],"type":"string","example":"ip"},"name":{"description":"ФИО индивидуального предпринимателя.","type":"string","example":"ИП Иванов Иван Иванович"},"is_resident":{"description":"Это логическое значение, которое показывает, является ли администратор резидентом РФ.","type":"boolean","example":true},"birthdate":{"description":"Дата рождения.","type":"string","example":"1990-01-01"},"passport_date":{"description":"Дата выдачи паспорта.","type":"string","example":"2010-01-01"},"passport_number":{"description":"Номер паспорта.","type":"string","example":"123456"},"passport_place":{"description":"Кем выдан паспорт.","type":"string","example":"ОУФМС России"},"passport_series":{"description":"Серия паспорта.","type":"string","example":"1234"},"inn":{"description":"ИНН индивидуального предпринимателя.","type":"string","example":"770000000000"},"postcode":{"description":"Почтовый индекс.","type":"string","example":"190000"},"mailing_address":{"description":"Почтовый адрес.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"phone":{"description":"Контактный телефон.","type":"string","example":"+79000000000"},"email":{"description":"Адрес электронной почты.","type":"string","example":"ip@example.com"},"country_code":{"description":"Код страны. Только для нерезидентов РФ (`is_resident: false`); для резидентов поле передавать не нужно.","type":"string","nullable":true,"example":"KZ"}},"required":["type","name","is_resident","birthdate","passport_date","passport_number","passport_place","passport_series","inn","postcode","mailing_address","phone","email"]},"update-person":{"type":"object","properties":{"address":{"description":"Почтовый адрес администратора.","type":"string","example":"г. Санкт-Петербург, ул. Примерная, д. 1"},"email":{"description":"Адрес электронной почты администратора.","type":"string","example":"ivanov@example.com"},"phone":{"description":"Контактный телефон администратора.","type":"string","example":"+79000000000"},"postcode":{"description":"Почтовый индекс.","type":"string","example":"190000"}},"required":["address","email","phone","postcode"]},"vpc":{"properties":{"id":{"type":"string","description":"ID сети.","example":"network-1234567890"},"name":{"type":"string","description":"Имя сети.","example":"Общая сеть"},"subnet_v4":{"type":"string","description":"Маска подсети.","example":"192.168.0.0/24"},"location":{"type":"string","description":"Локация сети.","enum":["ru-1","ru-2","pl-1","nl-1"],"example":"ru-1"},"created_at":{"type":"string","description":"Дата создания сети.","format":"date-time","example":"2023-02-06T17:33:13Z"},"description":{"type":"string","description":"Описание.","example":"Сеть для примера"},"availability_zone":{"$ref":"#/components/schemas/availability-zone"},"public_ip":{"type":"string","nullable":true,"description":"Публичный IP-адрес сети.","example":null},"type":{"type":"string","enum":["bgp","ovn"],"description":"Тип сети.","example":"ovn"},"busy_address":{"type":"array","description":"Занятые адреса в сети","items":{"type":"string"},"example":[]}},"required":["id","name","subnet_v4","location","created_at","availability_zone","description","public_ip","type","busy_address"]},"create-vpc":{"properties":{"name":{"type":"string","description":"Имя сети.","example":"Общая сеть"},"subnet_v4":{"type":"string","description":"Маска подсети.","example":"192.168.0.0/24"},"location":{"type":"string","description":"Локация сети.","enum":["ru-1","ru-2","pl-1","nl-1"],"example":"ru-1"},"description":{"type":"string","description":"Описание.","example":"Сеть для примера"},"availability_zone":{"$ref":"#/components/schemas/availability-zone"}},"required":["location","name","subnet_v4"]},"update-vpc":{"properties":{"name":{"type":"string","description":"Имя сети.","example":"Общая сеть"},"description":{"type":"string","description":"Описание.","example":"Сеть для примера"}}},"vpc-service":{"properties":{"id":{"type":"number","description":"ID сервисв.","example":"560"},"name":{"type":"string","description":"Имя сервиса.","example":"Intelligent Raven"},"public_ip":{"type":"string","description":"Публичный IP-адрес сервиса","example":"192.168.0.0"},"local_ip":{"type":"string","description":"Приватный IP-адрес сервиса","example":"192.168.0.0"},"type":{"type":"string","description":"Тип сервиса.","enum":["server","balancer","dbaas"],"example":"server"}},"required":["id","name","subnet_v4","location","created_at"]},"vpc-port":{"properties":{"id":{"type":"string","description":"ID порта.","example":"d05673e4-1c74-46g4-b98f-aa3d42a99079"},"nat_mode":{"type":"string","description":"Тип преобразования сетевых адресов.","enum":["dnat_and_snat","snat","no_nat"],"example":"dnat_and_snat"},"mac":{"type":"string","description":"MAC адрес.","example":"51:43:35:c3:aa:fa"},"ipv4":{"type":"string","description":"Внутренний адрес.","example":"172.16.16.2"},"service":{"type":"object","description":"Сервис, к которому привязан порт.","properties":{"id":{"type":"integer","description":"ID сервиса.","example":1},"type":{"type":"string","description":"Тип сервиса.","enum":["server","balancer","dbaas"],"example":"server"},"name":{"type":"string","description":"Название сервиса.","example":"Example"}},"required":["id","type","name"]}},"required":["id","nat_mode","mac","ipv4","service"]},"ssh-key":{"properties":{"id":{"type":"number","description":"ID SSH-ключа.","example":2},"name":{"type":"string","description":"Название SSH-ключа.","example":"ssh key"},"body":{"type":"string","description":"Тело SSH-ключа.","example":"ssh-dss AAAAB3NzaC1kc3MAAACBALixbc+uF2kuv83LiB3gg200vHJ7hH0QCC77fqlu+5raX6Y1PJZZORwzvbvU6k8gfrmjMRwQFDNncu3aXUiM9TleOBxFsQ2Hg5hDblSr2bnnyVP0jjPzsYye+0Ebaa+IjEqZz8y0qu8zejCpHqhLP/PlRDS9vtTsadrVvNwFFCyhAAAAFQD7m0AZOd/lHraIgBjXJvfN+qGiAQAAAIAdXSV0n47akGC/g0ejkNzHDSdRFf2fR0FsOos/7f5j+QfstijVBMwzA4Ti+dNJv3BQqQv3Bk5X3o5yUTUL+cM6fa4KSyIhGi14RL0kqjJrNjrVAhwjPH8K9aHDouqQEz56UL72+iGhMxwBHBMWq7cZ2k31mmFgEoYgwNcYuNmtlAAAAIBxIebJMItpq3ez5Hg5GyhpnSU7h0kshh+D5UAAlPmJo8OUQH6avQGf6gpxs3CnQ/im/aCKcb/bYm4V5Y9a7Zq+LrZGQZ79GLWsu/oK0HfQiP+oWwzCGmsdIGblsTRzrKU0FFo7zGmyTsBU48OeD76nKsc5EJ9F9wQC3S2KK38Ynw== test@MBP-test.office.timeweb.ru"},"created_at":{"type":"string","description":"Значение времени, указанное в комбинированном формате даты и времени ISO8601, которое представляет, когда был создан SSH-ключ.","format":"date-time","example":"2023-02-06T17:33:13Z"},"used_by":{"type":"array","description":"Список серверов, которые используют SSH-ключ.","items":{"type":"object","properties":{"id":{"description":"ID сервер.а","type":"number","example":3},"name":{"description":"Название сервера.","type":"string","example":"test"}},"required":["id","name"]}},"is_default":{"type":"boolean","description":"Это логическое значение, которое показывает, будет ли выбираться SSH-ключ по умолчанию при создании сервера."}},"required":["is_enabled","id","name","body","created_at","used_by"]},"floating-ip":{"properties":{"id":{"type":"string","description":"ID IP.","example":"4df0e781-cafb-4419-9636-ce5fc93591af"},"ip":{"type":"string","description":"IP-адрес","example":"82.97.244.202","nullable":true},"is_ddos_guard":{"type":"boolean","description":"Это логическое значение, которое показывает, включена ли защита от DDoS.","example":"true"},"availability_zone":{"$ref":"#/components/schemas/availability-zone"},"resource_type":{"type":"string","description":"Тип ресурса.","enum":["server","balancer","database","network"],"nullable":true,"example":"server"},"resource_id":{"description":"Id ресурса.","example":"24569","nullable":true,"oneOf":[{"type":"number"},{"type":"string"}]},"comment":{"type":"string","description":"Комментарий","example":"Комментарий","nullable":true},"ptr":{"type":"string","description":"Запись имени узла.","example":"ptr","nullable":true}},"required":["id","ip","is_ddos_guard","availability_zone","resource_type","resource_id","comment","ptr"]},"create-floating-ip":{"properties":{"is_ddos_guard":{"type":"boolean","description":"Это логическое значение, которое показывает, включена ли защита от DDoS.","example":"true"},"availability_zone":{"$ref":"#/components/schemas/availability-zone"}},"required":["is_ddos_guard","availability_zone"]},"update-floating-ip":{"properties":{"comment":{"type":"string","description":"Комментарий","example":"Комментарий"},"ptr":{"type":"string","description":"Запись имени узла.","example":"ptr"}}},"bind-floating-ip":{"properties":{"resource_type":{"type":"string","description":"Тип ресурса.","enum":["server","balancer","database","network"],"example":"server"},"resource_id":{"description":"Id ресурса.","example":"24569","oneOf":[{"type":"number"},{"type":"string"}]}},"required":["resource_type","resource_id"]},"location":{"type":"string","description":"Локация.","enum":["ru-1","ru-2","ru-3","ru-4","ru-5","pl-1","kz-1","nl-1","de-1","us-4"],"example":"ru-1"},"location-dto":{"description":"Локация","type":"object","properties":{"location":{"$ref":"#/components/schemas/location"},"location_code":{"type":"string","description":"Код локации в формате `ISO 3166`","example":"RU"},"availability_zones":{"type":"array","description":"Список зон, доступных в данной локации","items":{"type":"string"},"example":["spb-1"]}},"required":["location","location_code","availability_zones"]},"providers":{"type":"string","description":"Тип провайдера.","enum":["github","gitlab","bitbucket","git"],"example":"github"},"frameworks":{"type":"string","description":"Фреймворк приложения.","oneOf":[{"enum":["django","express","phoenix","Spring","laravel","beego","fastapi","ASP.NET Core","hapi","celery","flask","gin","docker","fastify","nest","symfony","yii"],"description":"Доступные фреймворки для backend приложений"},{"enum":["angular","ember","next.js","nuxt","preact","react","svelte","vue","another"],"description":"Доступные фреймворки для frontend приложений"}],"example":"django"},"repository":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"ID репозитория.","example":"eb4e1796-78ce-4232-a824-3c3f4dfaf98f"},"name":{"type":"string","description":"Имя репозитория.","example":"app-example-express"},"full_name":{"type":"string","description":"Полное имя репозитория.","example":"example-repo/app-example-express"},"url":{"type":"string","description":"Ссылка на репозиторий.","example":"https://github.com/example-repo/app-example-express"},"is_private":{"type":"boolean","description":"Является ли репозиторий приватным.","example":false},"is_allowed_webhook":{"type":"boolean","description":"Доступно ли создание вебхука для функции автодеплойя.","example":true}},"required":["id","name","full_name","url","is_private","is_allowed_webhook"]},"app":{"description":"Экземпляр приложения.","type":"object","properties":{"id":{"type":"number","description":"ID для каждого экземпляра приложения. Автоматически генерируется при создании.","example":1},"type":{"type":"string","description":"Тип приложения.","enum":["backend","frontend"],"example":"backend"},"name":{"type":"string","description":"Удобочитаемое имя, установленное для приложения.","example":"app_example"},"status":{"type":"string","description":"Статус приложения.","enum":["active","paused","no_paid","deploy","failure","startup_error","new","reboot"],"example":"active"},"provider":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"ID провайдера.","example":"826e9a9d-40cd-49b1-b547-0c439834498b"},"type":{"$ref":"#/components/schemas/providers"}},"required":["id","type"]},"ip":{"type":"string","format":"ipv4","description":"IPv4-адрес приложения.","example":"165.23.54.161."},"domains":{"type":"array","items":{"type":"object","properties":{"fqdn":{"type":"string","description":"Домен","example":"app-example.twc1.net"}}}},"framework":{"$ref":"#/components/schemas/frameworks"},"location":{"type":"string","description":"Локация сервера.","enum":["ru-1","pl-1","nl-1"],"example":"ru-1"},"repository":{"$ref":"#/components/schemas/repository"},"env_version":{"type":"string","nullable":true,"description":"Версия окружения.","example":"18"},"envs":{"type":"object","description":"Переменные окружения приложения. Объект с ключами и значениями типа string.","example":{"NODE_ENV":"production"}},"branch_name":{"type":"string","description":"Название ветки репозитория из которой собрано приложение.","example":"master"},"is_auto_deploy":{"type":"boolean","description":"Включен ли автоматический деплой.","example":"true"},"commit_sha":{"type":"string","description":"Хэш коммита из которого собрано приложеие.","example":"7d3a6dcca79d2c29e3fe7456ca1598e70d484d7c"},"comment":{"type":"string","description":"Комментарий к приложению.","example":"example comment"},"preset_id":{"type":"number","description":"ID тарифа.","example":42},"index_dir":{"type":"string","nullable":true,"description":"Путь к директории с индексным файлом. Определен для приложений `type: frontend`. Для приложений `type: backend` всегда null.","example":"/dist"},"build_cmd":{"type":"string","description":"Команда сборки приложения.","example":"npm run build"},"avatar_link":{"type":"string","nullable":true,"description":"Ссылка на аватар приложения.","example":"https://urltoimage.com/avatars/image.png"},"run_cmd":{"type":"string","nullable":true,"description":"Команда для запуска приложения. Определена для приложений `type: backend`. Для приложений `type: frontend` всегда null.","example":"npm start"},"configuration":{"type":"object","nullable":true,"description":"Объект с конфигурацией сервера. Определен для приложений `type: backend`.Для приложений `type: frontend` всегда null.","properties":{"cpu":{"type":"number","description":"Количество ядер процессора.","example":1},"ram":{"type":"number","description":"Объем оперативной памяти (в МБ).","example":1024},"network_bandwidth":{"type":"number","description":"Скорость сетевого канала (в Мбит/с).","example":1000},"cpu_frequency":{"type":"string","description":"Частота процессора (в ГГц).","example":"3.3"},"disk_type":{"type":"string","description":"Тип диска.","enum":["ssd","nvme","hdd"],"example":"nvme"}}},"disk_status":{"type":"object","nullable":true,"description":"Объект с конфигурацией диска. Определен для приложений `type: backend`.Для приложений `type: frontend` всегда null.","properties":{"used":{"type":"number","description":"Использованное пространство диска.","example":4509},"size":{"type":"number","description":"Размер диска.","example":15360},"disk_id":{"type":"number","description":"ID диска.","example":19769639}}},"is_qemu_agent":{"type":"boolean","description":"Включен ли агент QEMU.","example":true},"language":{"type":"string","description":"Язык программирования приложения.","example":"node"},"start_time":{"type":"string","format":"date-time","description":"Время запуска приложения.","example":"2024-07-24T10:38:44.000Z"}},"required":["id","name","status","ip","type","framework","location","repository","envs","domains","branch_name","is_auto_deploy","commit_sha","build_cmd","comment","preset_id","language","provider","server_id","disk_status","avatar_link","configuration","run_cmd","index_dir","env_version","is_qemu_agent","start_time"]},"create-app":{"properties":{"provider_id":{"type":"string","format":"uuid","description":"ID провайдера.","example":"b392b624-ee80-496e-8b61-47276acac2da"},"type":{"type":"string","description":"Тип приложения.","enum":["frontend","backend"],"example":"backend"},"repository_id":{"type":"string","format":"uuid","description":"ID репозитория.","example":"eb4e1796-78ce-4232-a824-3c3f4dfaf98f"},"build_cmd":{"type":"string","description":"Команда сборки приложения.","example":"npm run build"},"envs":{"type":"object","description":"Переменные окружения приложения. Объект с ключами и значениями типа string.","example":{"NODE_ENV":"production"}},"branch_name":{"type":"string","description":"Название ветки репозитория из которой необходимо собрать приложение.","example":"master"},"is_auto_deploy":{"type":"boolean","description":"Автоматический деплой.","example":true},"commit_sha":{"type":"string","description":"Хэш коммита из которого необходимо собрать приложение.","example":"7d3a6dcca79d2c29e3fe7456ca1598e70d484d7c"},"name":{"type":"string","description":"Имя приложения.","example":"app_example"},"comment":{"type":"string","description":"Комментарий к приложению.","example":"example comment"},"preset_id":{"type":"number","description":"ID тарифа.","example":42},"env_version":{"type":"string","description":"Версия окружения.","example":"18"},"framework":{"$ref":"#/components/schemas/frameworks"},"index_dir":{"type":"string","description":"Путь к директории с индексным файлом. Обязателен для приложений `type: frontend`. Не используется для приложений `type: backend`. Значение всегда должно начинаться с `/`.","example":"/dist"},"run_cmd":{"type":"string","description":"Команда для запуска приложения. Обязательна для приложений `type: backend`. Не используется для приложений `type: frontend`.","example":"npm start"},"system_dependencies":{"type":"array","description":"Системные зависимости.","items":{"example":"php-mysql","type":"string"}},"project_id":{"type":"number","description":"ID проекта.","example":"1"}},"required":["provider_id","repository_id","type","branch_name","build_cmd","is_auto_deploy","commit_sha","name","comment","preset_id","framework"]},"update-settings":{"properties":{"is_auto_deploy":{"type":"boolean","description":"Автоматический деплой.","example":"true"},"build_cmd":{"type":"string","description":"Команда сборки приложения.","example":"npm run build"},"envs":{"type":"object","description":"Переменные окружения приложения. Объект с ключами и значениями типа string.","example":{"NODE_ENV":"production"}},"branch_name":{"type":"string","description":"Название ветки репозитория из которой необходимо собрать приложение.","example":"master"},"commit_sha":{"type":"string","description":"Хэш коммита.","example":"7d3a6dcca79d2c29e3fe7456ca1598e70d484d7c"},"env_version":{"type":"string","description":"Версия окружения.","example":"18"},"index_dir":{"type":"string","description":"Путь к директории с индексным файлом. Используется для приложений `type: frontend`. Не используется для приложений `type: backend`. Значение всегда должно начинаться с `/`.","example":"/dist"},"run_cmd":{"type":"string","description":"Команда для запуска приложения. Используется для приложений `type: backend`. Не используется для приложений `type: frontend`.","example":"npm start"},"framework":{"$ref":"#/components/schemas/frameworks"},"name":{"type":"string","description":"Имя приложения.","example":"app_example"},"comment":{"type":"string","description":"Комментарий к приложению.","example":"example comment"},"preset_id":{"type":"number","description":"ID тарифа.","example":42}}},"provider":{"properties":{"provider_id":{"type":"string","format":"uuid","description":"ID провайдера.","example":"ec23f4b1-3b7b-4b7b-8b7b-3b7b4b7b8b7b"},"login":{"type":"string","description":"Логин пользователя.","example":"timeweb-cloud"},"provider_type":{"$ref":"#/components/schemas/providers"}},"required":["provider_id","login","provider_type"]},"add-github":{"title":"Добавление аккаунта GitHub","description":"Добавление аккаунта GitHub","type":"object","properties":{"provider_type":{"type":"string","description":"Тип провайдера.","enum":["github"],"example":"github"},"provider_token":{"type":"string","description":"Токен доступа.
Для GitHub необходимо использовать 'Fine-grained personal access token'. Инструкции по созданию можно найти в документации GitHub.
Выберите репозитории, к которым хотите предоставить доступ, и установите следующие разрешения: `Webhooks: read and write`, `Contents: read-only`."}},"required":["provider_type","provider_token"]},"add-gitlab":{"title":"Добавление аккаунта GitLab","description":"Добавление аккаунта GitLab","type":"object","properties":{"provider_type":{"type":"string","description":"Тип провайдера.","enum":["gitlab"],"example":"gitlab"},"provider_token":{"type":"string","description":"Токен доступа.
Для GitLab необходимо использовать персональный токен доступа. Инструкции по созданию можно найти в документации GitLab.
Установите следующие разрешения: `api`"}},"required":["provider_type","provider_token"]},"add-bitbucket":{"title":"Добавление аккаунта Bitbucket","description":"Добавление аккаунта Bitbucket","type":"object","properties":{"provider_type":{"type":"string","description":"Тип провайдера.","enum":["bitbucket"],"example":"bitbucket"},"provider_token":{"type":"string","description":"Токен доступа.
Для Bitbucket необходимо использовать 'App password'. Инструкции по созданию можно найти в документации Bitbucket.
Установите следующие разрешения: `Account: Read`, `Projects: Read`, `Repositories: Read`, `Webhooks: Read and write`"},"login":{"type":"string","description":"Логин пользователя Bitbucket.","example":"timeweb-cloud"}},"required":["provider_type","provider_token","login"]},"add-git":{"title":"Добавление репозитория любого провайдера по url","type":"object","properties":{"provider_type":{"type":"string","description":"Тип провайдера.","enum":["git"],"example":"git"},"url":{"type":"string","description":"Внешний url адрес репозитория.","example":"https://github.com/timeweb-cloud/app-example-flask.git"},"login":{"type":"string","description":"Логин провайдера. Используется при добавлении приватных репозиториев","example":"timeweb-cloud"},"password":{"type":"string","description":"Пароль или токен провайдера. Обязателен при добавлении приватных репозиториев. Подробнее в нашей документации.","example":"password"}},"required":["provider_type","url"]},"branch":{"properties":{"name":{"type":"string","description":"Имя ветки.","example":"master"}},"required":["name"]},"commit":{"properties":{"sha":{"type":"string","description":"Хэш коммита.","example":"inid8d9843hfu934f43iofnfi34f4ffed"},"created_at":{"type":"string","format":"date-time","description":"Значение времени, указанное в комбинированном формате даты и времени ISO8601, которое представляет, когда был создан коммит.","example":"2022-10-25T15:15:45.000Z"},"message":{"type":"string","description":"Сообщение коммита.","example":"initial commit"}},"required":["sha","created_at","message"]},"deploy-status":{"type":"string","description":"Статусы деплоя.","enum":["created","started","preparing_environment","cloning_code","installing_dependencies","building_code","checking_ssl_certs","cleaning_up","running_container","stopping","stopped","failure","success","access_error"],"example":"success"},"deploy":{"type":"object","properties":{"app_id":{"type":"string","description":"ID приложения.","example":"1"},"commit_sha":{"type":"string","description":"Хэш коммита.","example":"7d3a6dcca79d2c29e3fe7456ca1598e70d484d7c"},"id":{"type":"string","format":"uuid","description":"ID.","example":"123e4567-e89b-12d3-a456-426614174000"},"started_at":{"type":"string","format":"date-time","description":"Время запуска деплоя.","example":"2024-07-24T10:38:44.000Z"},"ended_at":{"type":"string","nullable":true,"format":"date-time","description":"Время окончания деплоя. Определено для завершенных деплоев","example":"2024-07-24T12:38:44.000Z"},"status":{"$ref":"#/components/schemas/deploy-status"},"commit_msg":{"type":"string","description":"Сообщение коммита.","example":"Initial commit"}},"required":["app_id","commit","commit_sha","id","started_at","ended_at","status","commit_msg"]},"apps-presets":{"type":"object","properties":{"backend_presets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID пресета.","example":568},"description":{"type":"string","description":"Описание пресета.","example":"Backend apps"},"description_short":{"type":"string","description":"Краткое описание пресета.","example":"Backend apps"},"price":{"type":"integer","description":"Цена пресета.","example":199},"cpu":{"type":"integer","description":"Количество CPU.","example":1},"ram":{"type":"integer","description":"Объем RAM в МБ.","example":1024},"disk":{"type":"integer","description":"Объем диска в МБ.","example":10240},"location":{"type":"string","description":"Локация.","example":"ru-1"},"cpu_frequency":{"type":"string","description":"Частота CPU.","example":"2.4"}},"required":["id","description_short","price","cpu","ram","disk","location"]}},"frontend_presets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID пресета.","example":584},"description":{"type":"string","description":"Описание пресета.","example":"frontend app"},"description_short":{"type":"string","description":"Краткое описание пресета.","example":"frontend app"},"price":{"type":"integer","description":"Цена пресета.","example":99},"location":{"type":"string","description":"Локация.","example":"ru-1"},"requests":{"type":"integer","description":"Количество запросов.","example":200},"disk":{"type":"integer","description":"Объем диска в МБ.","example":1024}},"required":["id","description_short","price","location","requests","disk"]}}},"required":["backend","frontend"]},"deploy-settings":{"type":"array","items":{"type":"object","properties":{"framework":{"type":"string","description":"Название фреймворка.","example":"angular"},"build_cmd":{"type":"string","description":"Команда для сборки проекта.","example":"npm run build"},"index_dir":{"type":"string","description":"Директория с индексными файлами.","example":"/dist//browser"},"run_cmd":{"type":"string","description":"Команда для запуска проекта.","example":""}},"required":["framework","build_cmd","index_dir","run_cmd"]}},"available-frameworks":{"properties":{"frontend_frameworks":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string","description":"Язык программирования для приложений `type: frontend`.","example":"javascript"},"versions":{"type":"array","items":{"type":"string"},"description":"Поддерживаемые версии языка.","example":["20","18","16"]},"frameworks":{"type":"array","items":{"type":"string"},"description":"Поддерживаемые фреймворки.","example":["angular","react","vue"]}},"required":["language","versions","frameworks"]}},"backend_frameworks":{"type":"array","items":{"type":"object","properties":{"language":{"type":"string","description":"Язык программирования для приложения `type: backend`.","example":"node"},"versions":{"type":"array","items":{"type":"string"},"description":"Поддерживаемые версии языка.","example":["20","18","16"]},"frameworks":{"type":"array","items":{"type":"string"},"description":"Поддерживаемые фреймворки.","example":["express","nest"]}},"required":["language","versions","frameworks"]}}},"required":["frontend","backend"]},"network-drive":{"properties":{"id":{"type":"string","description":"ID сетевого диска.","example":"4df0e781-cafb-4419-9636-ce5fc93591af"},"name":{"type":"string","description":"Название сетевого диска.","example":"Cute Quail"},"comment":{"type":"string","description":"Комментарий","example":"Комментарий","nullable":true},"size":{"type":"number","description":"Размер диска в Гб","example":"10"},"service_list":{"type":"array","description":"Список сервисов к которым подключен диск.","items":{"properties":{"resource_id":{"type":"number","description":"ID сервиса.","example":1},"resource_type":{"type":"string","description":"Тип ресурса.","enum":["server"],"example":"server"}},"required":["resource_id","resource_type"]}},"location":{"type":"string","description":"Локация сетевого диска.","enum":["ru-1"],"example":"ru-1"},"status":{"type":"string","description":"Статус сетевого диска.","enum":["new","created","failed"],"example":"new"},"availability_zone":{"$ref":"#/components/schemas/availability-zone"},"type":{"type":"string","description":"Тип сетевого диска.","enum":["nvme","hdd"],"example":"nvme"},"preset_id":{"description":"ID тарифа.","type":"integer","example":5}},"required":["id","name","comment","size","service_list","location","status","availability_zone","type","preset_id"]},"create-network-drive":{"properties":{"name":{"type":"string","description":"Название сетевого диска.","example":"Cute Quail"},"comment":{"type":"string","description":"Комментарий","example":"Комментарий","nullable":true},"size":{"type":"number","description":"Размер диска в Гб","example":"10"},"preset_id":{"description":"ID сетевого диска.","type":"integer","example":5}},"required":["name","size","preset_id"]},"update-network-drive":{"properties":{"name":{"type":"string","description":"Название сетевого диска.","example":"Cute Quail"},"comment":{"type":"string","description":"Комментарий","example":"Комментарий","nullable":true},"size":{"type":"number","description":"Размер диска в Гб","example":"10"}}},"mount-network-drive":{"properties":{"resource_type":{"type":"string","description":"Тип ресурса.","enum":["server"],"example":"server"},"resource_id":{"description":"Id ресурса.","example":"24569","type":"number"}},"required":["resource_type","resource_id"]},"network-drive-available-resource":{"properties":{"resource_id":{"type":"number","description":"ID сервиса.","example":1},"resource_type":{"type":"string","description":"Тип ресурса.","enum":["server"],"example":"server"},"ip":{"type":"string","nullable":true,"format":"ipv4","description":"IP-адрес сервиса.","example":"1.1.1.1"},"availability_zone":{"$ref":"#/components/schemas/availability-zone"}},"required":["resource_id","resource_type","availability_zone"]},"network-drive-preset":{"properties":{"id":{"type":"number","description":"ID тарифа.","example":1},"cost_per_gb":{"type":"number","description":"Стоимость тарифа сетевого диска.","example":100},"min":{"type":"number","description":"Минимальный размер диска (в Гб).","example":10},"max":{"type":"number","description":"Максимальный размер диска (в Гб).","example":1000},"step":{"type":"number","description":"Размер шага диска","example":1000},"type":{"type":"string","description":"Тип сетевого диска.","enum":["nvme","hdd"],"example":"nvme"},"read":{"type":"object","properties":{"min":{"type":"number","description":"Чтение IOPS","example":7000},"max":{"type":"number","description":"Чтение IOPS","example":15000}}},"write":{"type":"object","properties":{"min":{"type":"number","description":"Запись IOPS","example":7000},"max":{"type":"number","description":"Запись IOPS","example":15000}}}},"required":["id","cost_per_gb","min","max","step","type","read","write"]},"agent-model-settings":{"description":"Настройки модели агента","type":"object","properties":{"temperature":{"type":"number","description":"Контролирует случайность вывода модели.","example":0.7},"top_p":{"type":"number","description":"Контролирует разнообразие вывода модели.","example":0.9},"max_tokens":{"type":"number","description":"Максимальное количество токенов в выводе.","example":1000},"frequency_penalty":{"type":"number","description":"Положительные значения штрафуют новые токены на основе их существующей частоты.","example":0},"presence_penalty":{"type":"number","description":"Положительные значения штрафуют новые токены на основе того, встречались ли они в тексте ранее.","example":0}}},"agent":{"description":"AI Agent","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор агента","example":1},"name":{"type":"string","description":"Название агента","example":"Мой AI помощник"},"description":{"type":"string","description":"Описание агента","example":"Помощник для ответов на вопросы"},"model_id":{"type":"number","description":"ID модели","example":1},"provider_id":{"type":"number","description":"ID провайдера","example":1},"settings":{"type":"object","description":"Настройки агента","properties":{"model":{"$ref":"#/components/schemas/agent-model-settings"},"system_prompt":{"type":"string","description":"Системный промпт"},"refine_query":{"type":"boolean","description":"Уточнять ли запрос перед обработкой"},"widget":{"type":"object","description":"Настройки виджета","properties":{"whitelist_domains":{"type":"array","items":{"type":"string"},"description":"Массив разрешенных доменов для виджета","example":["example.com","subdomain.example.com"]},"name":{"type":"string","description":"Отображаемое имя агента в виджете","example":"Помощник поддержки"},"signature":{"type":"string","description":"Подпись/подзаголовок, отображаемый под именем агента в виджете","example":"AI Ассистент"},"welcome_message":{"type":"string","description":"Приветственное сообщение, показываемое при открытии виджета","example":"Здравствуйте! Чем могу помочь?"},"primary_color":{"type":"string","description":"Основной цвет виджета (hex-код цвета в формате #RRGGBB)","example":"#7177F8"},"font":{"type":"string","description":"Семейство шрифтов для виджета","example":"Inter, Arial, sans-serif"},"icon_url":{"type":"string","description":"URL иконки виджета","example":"https://s3.twcstorage.ru/tw-cloud-static/cloud-ai/agent-widget/agent_icons/1.svg"},"chat_position":{"type":"string","enum":["bottom_right","bottom_left","top_right","top_left"],"description":"Позиция виджета чата на странице","example":"bottom_right"}},"required":["whitelist_domains","name","welcome_message","primary_color","font","chat_position"]}},"required":["model","system_prompt","refine_query"]},"status":{"type":"string","enum":["active","blocked","deleted","suspended"],"description":"Статус агента","example":"active"},"access_type":{"type":"string","enum":["public","private"],"description":"Тип доступа к агенту","example":"private"},"total_tokens":{"type":"number","description":"Всего токенов выделено агенту","example":100000},"used_tokens":{"type":"number","description":"Использовано токенов","example":5000},"remaining_tokens":{"type":"number","description":"Осталось токенов","example":95000},"token_package_id":{"type":"number","description":"ID пакета токенов","example":1},"subscription_renewal_date":{"type":"string","format":"date-time","description":"Дата обновления подписки","example":"2025-01-01T00:00:00.000Z"},"knowledge_bases_ids":{"type":"array","items":{"type":"number"},"description":"ID баз знаний, связанных с агентом","example":[1,2,3]},"access_id":{"type":"number","description":"ID доступа","example":1},"created_at":{"type":"string","format":"date-time","description":"Дата создания агента","example":"2024-10-16T10:00:00.000Z"}},"required":["id","name","description","model_id","provider_id","settings","status","access_type","total_tokens","used_tokens","remaining_tokens","token_package_id","subscription_renewal_date","knowledge_bases_ids","access_id","created_at"]},"create-agent":{"description":"Данные для создания AI агента","type":"object","properties":{"name":{"type":"string","description":"Название агента","example":"Мой AI помощник"},"description":{"type":"string","description":"Описание агента","example":"Помощник для ответов на вопросы"},"access_type":{"type":"string","enum":["public","private"],"description":"Тип доступа к агенту","example":"private"},"model_id":{"type":"number","description":"ID модели","example":1},"token_package_id":{"type":"number","description":"ID пакета токенов","example":1},"settings":{"type":"object","description":"Настройки агента","properties":{"model":{"$ref":"#/components/schemas/agent-model-settings"},"system_prompt":{"type":"string","description":"Системный промпт"},"refine_query":{"type":"boolean","description":"Уточнять ли запрос перед обработкой"},"widget":{"type":"object","description":"Настройки виджета","properties":{"whitelist_domains":{"type":"array","items":{"type":"string"},"description":"Массив разрешенных доменов для виджета","example":["example.com","subdomain.example.com"]},"name":{"type":"string","description":"Отображаемое имя агента в виджете","example":"Помощник поддержки"},"signature":{"type":"string","description":"Подпись/подзаголовок, отображаемый под именем агента в виджете","example":"AI Ассистент"},"welcome_message":{"type":"string","description":"Приветственное сообщение, показываемое при открытии виджета","example":"Здравствуйте! Чем могу помочь?"},"primary_color":{"type":"string","description":"Основной цвет виджета (hex-код цвета в формате #RRGGBB)","example":"#7177F8"},"font":{"type":"string","description":"Семейство шрифтов для виджета","example":"Inter, Arial, sans-serif"},"icon_url":{"type":"string","description":"URL иконки виджета","example":"https://s3.twcstorage.ru/tw-cloud-static/cloud-ai/agent-widget/agent_icons/1.svg"},"chat_position":{"type":"string","enum":["bottom_right","bottom_left","top_right","top_left"],"description":"Позиция виджета чата на странице","example":"bottom_right"}},"required":["whitelist_domains","name","welcome_message","primary_color","font","chat_position"]}},"required":["model","system_prompt","refine_query"]},"project_id":{"type":"number","description":"ID проекта","example":1}},"required":["name","access_type","model_id","token_package_id","settings"]},"create-agent-v2":{"description":"Данные для создания AI агента через API v2","type":"object","properties":{"name":{"type":"string","description":"Название агента","example":"Мой AI помощник"},"description":{"type":"string","description":"Описание агента","example":"Помощник для ответов на вопросы"},"access_type":{"type":"string","enum":["public","private"],"description":"Тип доступа к агенту","example":"private"},"model_id":{"type":"number","description":"ID основной модели","example":1},"token_limit":{"type":"number","minimum":0,"description":"Дневной лимит токенов для агента (0 — без лимита)","example":100000},"settings":{"type":"object","description":"Настройки агента","properties":{"model":{"$ref":"#/components/schemas/agent-model-settings"},"system_prompt":{"type":"string","description":"Системный промпт"},"refine_query":{"type":"boolean","description":"Уточнять ли запрос перед обработкой"},"widget":{"type":"object","description":"Настройки виджета","properties":{"whitelist_domains":{"type":"array","items":{"type":"string"},"description":"Массив разрешенных доменов для виджета","example":["example.com","subdomain.example.com"]},"name":{"type":"string","description":"Отображаемое имя агента в виджете","example":"Помощник поддержки"},"signature":{"type":"string","description":"Подпись/подзаголовок, отображаемый под именем агента в виджете","example":"AI Ассистент"},"welcome_message":{"type":"string","description":"Приветственное сообщение, показываемое при открытии виджета","example":"Здравствуйте! Чем могу помочь?"},"primary_color":{"type":"string","description":"Основной цвет виджета (hex-код цвета в формате #RRGGBB)","example":"#7177F8"},"font":{"type":"string","description":"Семейство шрифтов для виджета","example":"Inter, Arial, sans-serif"},"icon_url":{"type":"string","description":"URL иконки виджета","example":"https://s3.twcstorage.ru/tw-cloud-static/cloud-ai/agent-widget/agent_icons/1.svg"},"chat_position":{"type":"string","enum":["bottom_right","bottom_left","top_right","top_left"],"description":"Позиция виджета чата на странице","example":"bottom_right"}},"required":["whitelist_domains","name","welcome_message","primary_color","font","chat_position"]}},"required":["model","system_prompt","refine_query"]},"project_id":{"type":"number","description":"ID проекта","example":1},"additional_model_ids":{"type":"array","items":{"type":"number"},"description":"Список ID дополнительных моделей агента","example":[2,3]},"is_web_search_enabled":{"type":"boolean","description":"Признак использования веб-поиска агентом","example":false}},"required":["name","access_type","model_id","settings"]},"update-agent":{"description":"Данные для обновления AI агента","type":"object","properties":{"name":{"type":"string","description":"Название агента","example":"Мой AI помощник"},"description":{"type":"string","description":"Описание агента","example":"Помощник для ответов на вопросы"},"access_type":{"type":"string","enum":["public","private"],"description":"Тип доступа к агенту","example":"private"},"status":{"type":"string","enum":["active","suspended"],"description":"Статус агента","example":"active"},"token_package_id":{"type":"number","description":"ID пакета токенов","example":1},"settings":{"type":"object","description":"Настройки агента","properties":{"model":{"$ref":"#/components/schemas/agent-model-settings"},"system_prompt":{"type":"string","description":"Системный промпт"},"refine_query":{"type":"boolean","description":"Уточнять ли запрос перед обработкой"},"widget":{"type":"object","description":"Настройки виджета","properties":{"whitelist_domains":{"type":"array","items":{"type":"string"},"description":"Массив разрешенных доменов для виджета","example":["example.com","subdomain.example.com"]},"name":{"type":"string","description":"Отображаемое имя агента в виджете","example":"Помощник поддержки"},"signature":{"type":"string","description":"Подпись/подзаголовок, отображаемый под именем агента в виджете","example":"AI Ассистент"},"welcome_message":{"type":"string","description":"Приветственное сообщение, показываемое при открытии виджета","example":"Здравствуйте! Чем могу помочь?"},"primary_color":{"type":"string","description":"Основной цвет виджета (hex-код цвета в формате #RRGGBB)","example":"#7177F8"},"font":{"type":"string","description":"Семейство шрифтов для виджета","example":"Inter, Arial, sans-serif"},"icon_url":{"type":"string","description":"URL иконки виджета","example":"https://s3.twcstorage.ru/tw-cloud-static/cloud-ai/agent-widget/agent_icons/1.svg"},"chat_position":{"type":"string","enum":["bottom_right","bottom_left","top_right","top_left"],"description":"Позиция виджета чата на странице","example":"bottom_right"}},"required":["whitelist_domains","name","welcome_message","primary_color","font","chat_position"]}}},"project_id":{"type":"number","description":"ID проекта","example":1}}},"token-statistic":{"description":"Точка статистики использования токенов","type":"object","properties":{"time":{"type":"string","format":"date-time","description":"Время точки статистики","example":"2025-07-24T11:08:00.000Z"},"ingoing_tokens":{"type":"number","description":"Количество входящих токенов (промпты)","example":150},"outgoing_tokens":{"type":"number","description":"Количество исходящих токенов (ответы)","example":250}},"required":["time","ingoing_tokens","outgoing_tokens"]},"add-token-package":{"description":"Данные для добавления дополнительного пакета токенов","type":"object","properties":{"count":{"type":"number","description":"Количество пакетов для добавления (от 1 до 100)","minimum":1,"maximum":100,"example":1}}},"knowledgebase-v2":{"description":"База знаний (версия API v2)","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор базы знаний","example":1},"name":{"type":"string","description":"Название базы знаний","example":"Моя база знаний"},"description":{"type":"string","nullable":true,"description":"Описание базы знаний","example":"База знаний с документацией"},"dbaas_id":{"type":"number","description":"ID базы данных opensearch","example":123},"status":{"type":"string","enum":["active","blocked","creating","deleted"],"description":"Статус базы знаний","example":"active"},"last_sync":{"type":"string","format":"date-time","nullable":true,"description":"Дата последней синхронизации","example":"2024-10-16T10:00:00.000Z"},"total_tokens":{"type":"number","description":"Всего токенов выделено","example":100000},"used_tokens":{"type":"number","description":"Использовано токенов","example":5000},"remaining_tokens":{"type":"number","description":"Осталось токенов","example":95000},"token_package_id":{"type":"number","description":"ID пакета токенов","example":1},"subscription_renewal_date":{"type":"string","format":"date-time","description":"Дата обновления подписки","example":"2025-01-01T00:00:00.000Z"},"documents_count":{"type":"number","description":"Общее количество документов в базе знаний","example":15},"agents_ids":{"type":"array","items":{"type":"number"},"description":"ID агентов, связанных с базой знаний","example":[1,2,3]},"created_at":{"type":"string","format":"date-time","description":"Дата создания базы знаний","example":"2024-10-16T10:00:00.000Z"}},"required":["id","name","dbaas_id","status","total_tokens","used_tokens","remaining_tokens","token_package_id","subscription_renewal_date","documents_count","agents_ids","created_at"]},"document-status-info":{"description":"Детальная информация о текущем состоянии документа в базе знаний","type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["new","indexing","indexed","error"],"description":"Тип статуса документа","example":"indexed"},"timestamp":{"type":"string","format":"date-time","description":"Время записи информации (ISO string)","example":"2024-01-01T12:00:00.000Z"},"error_code":{"type":"string","enum":["INSUFFICIENT_TOKENS","CRITICAL_BALANCE","NEGATIVE_BALANCE","INDEXING_ERROR"],"description":"Код ошибки (только для type: 'error')","example":"INSUFFICIENT_TOKENS"},"details":{"type":"object","description":"Дополнительные детали, зависящие от типа статуса","oneOf":[{"description":"Детали для статуса 'indexing'","type":"object","properties":{"started_at":{"type":"string","format":"date-time","description":"Время начала индексации","example":"2024-01-01T12:00:00.000Z"},"current_stage":{"type":"string","description":"Текущий этап индексации","example":"parsing"},"progress":{"type":"number","description":"Прогресс в процентах (0-100)","example":45,"minimum":0,"maximum":100}}},{"description":"Детали для статуса 'indexed'","type":"object","properties":{"indexing_duration_ms":{"type":"number","description":"Время индексации в миллисекундах","example":5000},"tokens_used":{"type":"number","description":"Количество использованных токенов","example":1500},"tokens_estimated":{"type":"number","description":"Оценочное количество токенов","example":1450},"chunks_count":{"type":"number","description":"Количество созданных чанков","example":12}}},{"description":"Детали для ошибки 'INSUFFICIENT_TOKENS'","type":"object","properties":{"needed":{"type":"number","description":"Количество необходимых токенов","example":2000},"available":{"type":"number","description":"Количество доступных токенов","example":500},"estimated":{"type":"number","description":"Оценочное количество токенов без буфера","example":1800}}},{"description":"Детали для ошибки 'CRITICAL_BALANCE'","type":"object","properties":{"balance":{"type":"number","description":"Текущий баланс токенов","example":50},"min_required":{"type":"number","description":"Минимальный требуемый баланс","example":100}}},{"description":"Детали для ошибки 'NEGATIVE_BALANCE'","type":"object","properties":{"balance":{"type":"number","description":"Текущий баланс токенов (отрицательный)","example":-100}}}]}},"required":["type","timestamp"]},"document":{"description":"Документ в базе знаний","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор документа","example":1},"name":{"type":"string","description":"Название документа","example":"документация.pdf"},"size":{"type":"number","description":"Размер документа в байтах","example":1024000},"status":{"type":"string","enum":["new","indexed","indexing","error"],"description":"Статус индексации документа","example":"indexed"},"indexing_version":{"type":"string","nullable":true,"description":"Версия индексации","example":"v1.0"},"status_info":{"$ref":"#/components/schemas/document-status-info"},"created_at":{"type":"string","format":"date-time","description":"Дата создания документа","example":"2024-10-16T10:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата обновления документа","example":"2024-10-16T10:00:00.000Z"}},"required":["id","name","size","status","created_at","updated_at"]},"knowledgebase":{"description":"База знаний","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор базы знаний","example":1},"name":{"type":"string","description":"Название базы знаний","example":"Моя база знаний"},"description":{"type":"string","nullable":true,"description":"Описание базы знаний","example":"База знаний с документацией"},"dbaas_id":{"type":"number","description":"ID базы данных opensearch","example":123},"status":{"type":"string","enum":["active","blocked","creating","deleted"],"description":"Статус базы знаний","example":"active"},"last_sync":{"type":"string","format":"date-time","nullable":true,"description":"Дата последней синхронизации","example":"2024-10-16T10:00:00.000Z"},"total_tokens":{"type":"number","description":"Всего токенов выделено","example":100000},"used_tokens":{"type":"number","description":"Использовано токенов","example":5000},"remaining_tokens":{"type":"number","description":"Осталось токенов","example":95000},"token_package_id":{"type":"number","description":"ID пакета токенов","example":1},"subscription_renewal_date":{"type":"string","format":"date-time","description":"Дата обновления подписки","example":"2025-01-01T00:00:00.000Z"},"documents":{"type":"array","description":"Документы в базе знаний","items":{"$ref":"#/components/schemas/document"}},"agents_ids":{"type":"array","items":{"type":"number"},"description":"ID агентов, связанных с базой знаний","example":[1,2,3]},"created_at":{"type":"string","format":"date-time","description":"Дата создания базы знаний","example":"2024-10-16T10:00:00.000Z"}},"required":["id","name","dbaas_id","status","total_tokens","used_tokens","remaining_tokens","token_package_id","subscription_renewal_date","documents","agents_ids","created_at"]},"create-knowledgebase":{"description":"Данные для создания базы знаний","type":"object","properties":{"name":{"type":"string","description":"Название базы знаний","example":"Моя база знаний"},"description":{"type":"string","description":"Описание базы знаний","example":"База знаний с документацией"},"dbaas_preset_id":{"type":"number","description":"ID пресета базы данных","example":1},"network_id":{"type":"string","description":"ID сети","example":"net_12345"},"token_package_id":{"type":"number","description":"ID пакета токенов","example":1},"project_id":{"type":"number","description":"ID проекта","example":1}},"required":["name","dbaas_preset_id","network_id","token_package_id"]},"update-knowledgebase":{"description":"Данные для обновления базы знаний","type":"object","properties":{"name":{"type":"string","description":"Название базы знаний","example":"Моя база знаний"},"description":{"type":"string","description":"Описание базы знаний","example":"База знаний с документацией"}}},"model-v3":{"description":"Модель AI (v3). Идентификация и управляющие поля находятся на верхнем уровне, все сравнимые характеристики (цены, лимиты, возможности) — в словаре `parameter_values`","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор модели","example":66},"provider_id":{"type":"number","description":"ID провайдера, который предоставляет модель","example":1},"name":{"type":"string","description":"Название модели","example":"gpt"},"public_name":{"type":"string","description":"Публичное имя модели","example":"GPT 5.1"},"model_name":{"type":"string","description":"Идентификатор модели, который передаётся в поле `model` тела запроса","example":"openai/gpt-5.1"},"type":{"type":"string","enum":["llm","hosted-llm","embedding","image","audio","moderation"],"description":"Тип модели (llm — языковая модель, hosted-llm — self-hosted языковая модель, embedding — модель для эмбеддингов, image — генерация изображений, audio — работа с аудио, moderation — модерация контента)","example":"llm"},"version":{"type":"string","description":"Версия модели","example":"5.1"},"is_deprecated":{"type":"boolean","description":"Признак, что модель устарела","example":false},"is_stopped":{"type":"boolean","description":"Признак, что поддержка модели остановлена","example":false},"deprecation_date":{"type":"string","format":"date-time","nullable":true,"description":"Дата отключения модели у провайдера. `null`, если отключение не запланировано","example":null},"created_at":{"type":"string","format":"date-time","description":"Дата и время добавления модели","example":"2025-11-17T10:35:46.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего обновления модели","example":"2026-07-17T09:37:23.000Z"},"params_info":{"type":"object","nullable":true,"description":"Информация о доступных параметрах модели с их ограничениями. Ключ — название параметра, значение — его тип, ограничения и значение по умолчанию","example":{"temperature":{"type":"number","min":0,"max":2,"default":1,"description":"Контролирует случайность вывода модели"},"max_tokens":{"type":"number","min":1,"max":128000,"default":4096,"description":"Максимальное количество токенов в выводе"},"reasoning_effort":{"type":"enum","enum":["none","low","medium","high"],"default":"none","description":"Уровень усилий рассуждения"}}},"parameter_values":{"type":"object","additionalProperties":true,"description":"Характеристики модели. Ключ — код характеристики, значение — число, строка, булево значение или массив строк.\n\nОсновные коды:\n- `cost_in` — цена за 1 входной токен в рублях\n- `cost_out` — цена за 1 выходной токен в рублях\n- `context_window` — размер контекстного окна в токенах\n- `max_output_tokens` — максимальное количество токенов в ответе\n- `is_reasoning` — поддержка режима рассуждений\n- `supports_function_calling` — поддержка function calling\n- `supported_input_modalities` — поддерживаемые входные модальности (например, `text`, `image`)\n- `supported_output_modalities` — поддерживаемые выходные модальности\n- `avg_speed` — средняя скорость генерации в токенах в секунду\n- `aa_intelligence_index`, `aa_coding_index`, `aa_agentic_index` — индексы качества Artificial Analysis\n- `release_date` — дата релиза модели","example":{"cost_in":0.000162,"cost_out":0.00135,"context_window":272000,"max_output_tokens":128000,"is_reasoning":true,"supports_function_calling":true,"supported_input_modalities":["text","image"],"supported_output_modalities":["text"],"avg_speed":124.8,"aa_intelligence_index":48,"aa_coding_index":45,"aa_agentic_index":51,"release_date":"2025-11-13"}}},"required":["id","provider_id","name","public_name","model_name","type","version","is_deprecated","is_stopped","created_at","updated_at","parameter_values"]},"model":{"description":"Модель AI","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор модели","example":1},"provider_id":{"type":"number","description":"ID провайдера, который предоставляет модель","example":1},"name":{"type":"string","description":"Название модели","example":"gpt-4o"},"public_name":{"type":"string","description":"Публичное имя модели","example":"GPT 4o"},"type":{"type":"string","enum":["llm","embedding"],"description":"Тип модели (llm - языковая модель, embedding - модель для эмбеддингов)","example":"llm"},"is_deprecated":{"type":"boolean","description":"Признак, что модель устарела","example":false},"is_stopped":{"type":"boolean","description":"Признак, что поддержка модели остановлена в системе","example":false},"deprecation_date":{"type":"string","format":"date-time","nullable":true,"description":"Дата депрекейта модели у провайдера","example":"2026-12-31T00:00:00.000Z"},"is_reasoning":{"type":"boolean","description":"Признак поддержки режима рассуждения","example":false},"version":{"type":"string","description":"Версия модели","example":"2024-08-06"},"params_info":{"type":"object","nullable":true,"description":"Информация о доступных параметрах модели с их ограничениями","properties":{"temperature":{"type":"object","description":"Параметр температуры","properties":{"type":{"type":"string","example":"number"},"min":{"type":"number","example":0},"max":{"type":"number","example":2},"default":{"type":"number","example":1},"description":{"type":"string","example":"Контролирует случайность вывода модели"}}},"max_tokens":{"type":"object","description":"Максимальное количество токенов","properties":{"type":{"type":"string","example":"number"},"min":{"type":"number","example":1},"max":{"type":"number","example":128000},"default":{"type":"number","example":4096},"description":{"type":"string","example":"Максимальное количество токенов в выводе"}}},"reasoning_effort":{"type":"object","description":"Уровень усилий рассуждения","properties":{"type":{"type":"string","example":"enum"},"enum":{"type":"array","items":{"type":"string"},"example":["none","low","medium","high"]},"default":{"type":"string","example":"none"},"description":{"type":"string","example":"Уровень усилий рассуждения"}}}},"example":{"temperature":{"type":"number","min":0,"max":2,"default":1,"description":"Контролирует случайность вывода модели"},"max_tokens":{"type":"number","min":1,"max":128000,"default":4096,"description":"Максимальное количество токенов в выводе"}}}},"required":["id","provider_id","name","type","version","public_name","is_deprecated","is_stopped","is_reasoning"]},"token-package":{"description":"Пакет токенов","type":"object","properties":{"id":{"type":"number","description":"Уникальный идентификатор пакета","example":1},"model_id":{"type":"number","description":"ID модели, к которой применяется пакет токенов","example":1},"name":{"type":"string","description":"Название пакета токенов","example":"Базовый пакет"},"package_type":{"type":"string","enum":["base","additional","promo"],"description":"Тип пакета (base - базовый, additional - дополнительный, promo - промо)","example":"base"},"type":{"type":"string","enum":["agent","knowledgebase"],"description":"Тип сущности, к которой относится пакет (agent - агент, knowledgebase - база знаний)","example":"agent"},"token_amount":{"type":"number","description":"Количество токенов в пакете","example":100000},"price":{"type":"number","description":"Цена пакета в целых единицах","example":500},"duration_days":{"type":"number","nullable":true,"description":"Продолжительность пакета в днях (null для дополнительных пакетов)","example":30},"is_available":{"type":"boolean","description":"Флаг, указывающий доступность пакета","example":true}},"required":["id","model_id","name","package_type","type","token_amount","price","is_available"]},"traffic-usage":{"description":"Потребление ресурса с начала текущего расчетного месяца. Счетчики обнуляются в начале каждого расчетного периода.","type":"object","properties":{"requests":{"type":"number","description":"Количество запросов к ресурсу с начала расчетного месяца.","example":154302},"outgoing_traffic":{"type":"number","description":"Исходящий трафик ресурса с начала расчетного месяца, в байтах.","example":10737418240},"cache_ratio":{"type":"number","description":"Доля запросов, отданных из кэша, в процентах.","example":92.5}},"required":["requests","outgoing_traffic","cache_ratio"]},"http-resource":{"description":"CDN-ресурс","type":"object","properties":{"id":{"type":"integer","description":"ID CDN-ресурса. Генерируется автоматически при создании.","example":1234},"name":{"type":"string","maxLength":255,"description":"Название CDN-ресурса.","example":"Статика интернет-магазина"},"description":{"type":"string","maxLength":255,"description":"Описание CDN-ресурса.","example":"Раздача картинок и css"},"source":{"type":"string","description":"Источник контента: имя S3-бакета, если ресурс создан поверх хранилища, либо хост origin-сервера.","example":"5bd2b0c9-mybucket"},"traffic_usage":{"$ref":"#/components/schemas/traffic-usage"},"status":{"type":"string","description":"Статус CDN-ресурса.\n- `created` — ресурс создан и раздает контент;\n- `processing` — конфигурация применяется на стороне CDN;\n- `stopped` — раздача приостановлена;\n- `failed` — настройка ресурса завершилась с ошибкой;\n- `no_paid` — ресурс не оплачен;\n- `blocked` — ресурс заблокирован;\n- `traffic_limit_exceeded` — раздача остановлена автоматически из-за достижения лимита трафика `traffic_limit_bytes`.","enum":["created","processing","stopped","failed","no_paid","blocked","traffic_limit_exceeded"],"example":"created"},"cdn_domain":{"type":"string","description":"Технический домен, выданный ресурсу. Доступен сразу после создания и всегда остается в списке доменов ресурса.","example":"3f9c1b7a.cdn.twcstorage.ru"},"preset_id":{"type":"integer","description":"ID тарифа CDN. Список доступных тарифов можно получить в `/api/v1/cdn/presets`.","example":4001},"project_id":{"type":"integer","description":"ID проекта, к которому привязан ресурс.","example":987},"avatar_link":{"type":"string","description":"Ссылка на аватар ресурса.","example":"https://timeweb.cloud/avatars/cdn/3f9c1b7a.png","nullable":true},"storage_id":{"type":"integer","description":"ID S3-хранилища, которое используется в качестве источника контента. `null`, если источником является origin-сервер.","example":4210,"nullable":true},"traffic_limit_bytes":{"type":"integer","description":"Лимит исходящего трафика на расчетный месяц, в байтах. При достижении лимита раздача останавливается, а ресурс переходит в статус `traffic_limit_exceeded`. `null` — лимит не задан.","example":107374182400,"nullable":true}},"required":["id","name","source","traffic_usage","status","cdn_domain","preset_id"]},"origin-server":{"description":"Origin-сервер, с которого CDN забирает контент","type":"object","properties":{"host":{"type":"string","description":"Домен или IPv4-адрес origin-сервера.","example":"origin.example.com"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Порт origin-сервера.","example":443}},"required":["host","port"]},"create-http-resource":{"description":"Параметры создания CDN-ресурса. Источник контента задается ровно одним из полей: `storage_id` или `server`.","type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Название CDN-ресурса.","example":"Статика интернет-магазина"},"preset_id":{"type":"integer","description":"ID тарифа CDN. Список доступных тарифов можно получить в `/api/v1/cdn/presets`.","example":4001},"description":{"type":"string","maxLength":255,"description":"Описание CDN-ресурса.","example":"Раздача картинок и css"},"storage_id":{"type":"integer","description":"ID S3-хранилища, которое будет источником контента. Нельзя передавать вместе с `server`.","example":4210},"server":{"allOf":[{"$ref":"#/components/schemas/origin-server"},{"description":"Origin-сервер, который будет источником контента. Нельзя передавать вместе с `storage_id`."}]},"use_https":{"type":"boolean","description":"Обращаться к источнику контента по HTTPS.","example":true},"delivery_domain":{"type":"string","description":"Собственный домен, с которого будет раздаваться контент. Домен добавляется к техническому домену ресурса, для его работы нужно направить CNAME-запись на `cdn_domain`.","example":"cdn.example.com"},"project_id":{"type":"integer","description":"ID проекта, в который нужно поместить ресурс. Если не указан, ресурс попадет в проект по умолчанию.","example":987},"traffic_limit_bytes":{"type":"integer","minimum":0,"description":"Лимит исходящего трафика на расчетный месяц, в байтах. При достижении лимита раздача останавливается автоматически.","example":107374182400,"nullable":true}},"required":["name","preset_id"]},"config-delivery":{"description":"Настройки раздачи контента","type":"object","properties":{"http3":{"type":"boolean","description":"Раздавать контент по HTTP/3 (QUIC).","example":true},"gzip":{"type":"boolean","description":"Сжимать ответы алгоритмом gzip.","example":true},"large_files":{"type":"boolean","description":"Режим раздачи больших файлов.","example":false},"slice_size":{"type":"integer","minimum":1,"maximum":1024,"description":"Размер слайса в мегабайтах — файл забирается с источника и кэшируется частями такого размера. `null` — не использовать слайсинг.","example":10,"nullable":true},"image_optimization":{"type":"boolean","description":"Оптимизировать изображения на лету.","example":false},"packaging":{"type":"object","description":"Упаковка видео в потоковые форматы. `null` — отключить упаковку.","properties":{"mp4":{"type":"object","description":"Упаковка MP4-файлов. `null` — отключить упаковку MP4.","properties":{"output_protocols":{"type":"array","description":"Протоколы, в которые упаковывается исходный MP4.","items":{"type":"string","enum":["HLS","MPEG-DASH"]},"example":["HLS"]}},"required":["output_protocols"],"nullable":true}},"nullable":true}}},"config-cache":{"description":"Настройки кэширования","type":"object","properties":{"cdn":{"type":"object","description":"Кэш на узлах CDN. `null` — отключить кэширование на узлах CDN.","properties":{"ttl":{"type":"object","description":"Время жизни кэша по классам HTTP-статуса ответа источника, в секундах.","properties":{"2xx":{"type":"integer","minimum":0,"description":"Время жизни кэша для ответов со статусом 2xx, в секундах.","example":3600}}}},"required":["ttl"],"nullable":true},"browser":{"type":"object","description":"Кэш в браузере пользователя. `null` — отключить браузерное кэширование.","properties":{"ttl":{"type":"integer","minimum":0,"description":"Время жизни кэша в браузере, в секундах.","example":600}},"required":["ttl"],"nullable":true},"always_online":{"type":"object","description":"Отдавать устаревший контент из кэша, если источник недоступен. `null` — отключить.","properties":{"stale_conditions":{"type":"array","description":"Условия, при которых из кэша отдается устаревший контент.","items":{"type":"string","enum":["error","timeout","invalid_header","updating","http_403","http_404","http_429","http_500","http_502","http_503","http_504"]},"example":["error","timeout"]}},"required":["stale_conditions"],"nullable":true},"query_args":{"type":"object","description":"Правила учета query-параметров в ключе кэша. `null` — не учитывать query-параметры.","properties":{"mode":{"type":"string","description":"Режим учета query-параметров.\n- `all` — учитывать все параметры;\n- `whitelist` — учитывать только параметры из `list`;\n- `blacklist` — учитывать все параметры, кроме перечисленных в `list`.","enum":["all","whitelist","blacklist"],"example":"whitelist"},"list":{"type":"array","description":"Список query-параметров для режимов `whitelist` и `blacklist`.","items":{"type":"string"},"example":["version","lang"]}},"required":["mode"],"nullable":true}}},"config-origin":{"description":"Настройки источника контента","type":"object","properties":{"servers":{"type":"array","maxItems":1,"description":"Origin-серверы, с которых CDN забирает контент. Передача этого поля переключает ресурс с S3-хранилища на origin-сервер.","items":{"$ref":"#/components/schemas/origin-server"},"nullable":true},"use_https":{"type":"boolean","description":"Обращаться к источнику контента по HTTPS.","example":true},"aws":{"type":"object","description":"Ключи для доступа к источнику, совместимому с Amazon S3 API. `null` — не использовать авторизацию AWS.","properties":{"access_key":{"type":"string","description":"Access key.","example":"6VQ2SN0OKXFYZ0IHLEXAMPLE"},"secret_key":{"type":"string","description":"Secret key.","example":"3vhtLpVjEyGxNQOOxJPCLb2Fexample"}},"required":["access_key","secret_key"],"nullable":true}}},"config-security":{"description":"Настройки безопасности","type":"object","properties":{"redirect":{"type":"boolean","description":"Перенаправлять запросы с HTTP на HTTPS.","example":true},"certificate_id":{"type":"integer","description":"ID SSL-сертификата, который используется для доменов ресурса. `null` — отвязать сертификат.","example":5678,"nullable":true},"secure_token":{"type":"object","description":"Защита ссылок подписанным токеном. `null` — отключить защиту ссылок.","properties":{"secret_key":{"type":"string","description":"Секретный ключ, которым подписывается ссылка.","example":"s3cr3tKey0"},"restrict_by_ip":{"type":"boolean","description":"Привязывать подписанную ссылку к IP-адресу пользователя.","example":false}},"required":["secret_key","restrict_by_ip"],"nullable":true}}},"config-http-headers":{"description":"Настройки HTTP-заголовков","type":"object","properties":{"request":{"type":"object","description":"Статические заголовки, которые CDN добавляет к запросам на источник контента. Имена заголовков могут содержать символы `A-Za-z0-9-_.*()=/;`, значения — печатные ASCII-символы. `null` — удалить все заголовки.","additionalProperties":{"type":"string"},"example":{"X-Custom-Header":"value"},"nullable":true},"cors":{"type":"object","description":"Настройки CORS. `null` — отключить CORS.","properties":{"domains":{"type":"array","description":"Домены, которым разрешены кросс-доменные запросы. Укажите `*`, чтобы разрешить все домены.","items":{"type":"string"},"example":["https://example.com"]},"always":{"type":"boolean","description":"Отдавать CORS-заголовки во всех ответах, а не только при наличии заголовка `Origin` в запросе.","example":false}},"required":["domains","always"],"nullable":true}}},"config-access":{"description":"Настройки доступа к ресурсу. Секция доступна только для чтения — изменить ее через API нельзя.","type":"object","properties":{"allowed_methods":{"type":"array","readOnly":true,"description":"Дополнительные HTTP-методы, разрешенные при обращении к ресурсу. `null` — используется набор методов по умолчанию.","items":{"type":"string","enum":["POST","PUT","PATCH","DELETE","MKCOL","COPY","MOVE","PROPFIND","PROPPATCH","LOCK","UNLOCK"]},"example":["POST","PUT"],"nullable":true}}},"config-domains":{"description":"Домены, с которых раздается контент ресурса","type":"object","properties":{"aliases":{"type":"array","maxItems":2,"description":"Список доменов ресурса. Первым в списке всегда идет технический домен `cdn_domain`, вторым может быть ваш собственный домен. Чтобы собственный домен заработал, направьте на `cdn_domain` CNAME-запись. `null` — оставить только технический домен.","items":{"type":"string"},"example":["3f9c1b7a.cdn.twcstorage.ru","cdn.example.com"],"nullable":true}}},"config-robots":{"description":"Настройки robots.txt для доменов ресурса","type":"object","properties":{"type":{"type":"string","description":"Режим отдачи `robots.txt`.\n- `deny` — CDN отдает `robots.txt`, запрещающий индексацию;\n- `cached` — `robots.txt` берется с источника контента;\n- `custom` — CDN отдает содержимое из поля `content`.","enum":["deny","cached","custom"],"example":"deny"},"content":{"type":"string","description":"Содержимое `robots.txt`. Обязательно и учитывается только при `type` = `custom`.","example":"User-agent: *\nDisallow: /private"}},"required":["type"]},"http-resource-config":{"description":"Конфигурация CDN-ресурса. Все секции необязательны: при изменении конфигурации переданные поля накладываются на текущие значения, а непереданные остаются без изменений.","type":"object","properties":{"delivery":{"$ref":"#/components/schemas/config-delivery"},"cache":{"$ref":"#/components/schemas/config-cache"},"origin":{"$ref":"#/components/schemas/config-origin"},"security":{"$ref":"#/components/schemas/config-security"},"http_headers":{"$ref":"#/components/schemas/config-http-headers"},"access":{"$ref":"#/components/schemas/config-access"},"domains":{"$ref":"#/components/schemas/config-domains"},"robots":{"$ref":"#/components/schemas/config-robots"}}},"update-http-resource":{"description":"Параметры изменения CDN-ресурса. Передавайте только те поля, которые нужно изменить.","type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Название CDN-ресурса.","example":"Статика интернет-магазина"},"description":{"type":"string","maxLength":255,"description":"Описание CDN-ресурса.","example":"Раздача картинок и css"},"preset_id":{"type":"integer","description":"ID тарифа CDN. Список доступных тарифов можно получить в `/api/v1/cdn/presets`.","example":4001},"storage_id":{"type":"integer","description":"ID S3-хранилища, которое будет источником контента. Нельзя передавать вместе с `config.origin.servers`.","example":4210},"traffic_limit_bytes":{"type":"integer","minimum":0,"description":"Лимит исходящего трафика на расчетный месяц, в байтах. `null` — снять лимит. Если ресурс был остановлен по лимиту, при снятии или увеличении лимита раздача возобновится.","example":107374182400,"nullable":true},"config":{"$ref":"#/components/schemas/http-resource-config"}}},"clear-cache":{"description":"Параметры очистки кэша","type":"object","properties":{"purge_type":{"type":"string","description":"Тип очистки.\n- `full` — очистить весь кэш ресурса;\n- `partial` — очистить кэш только по путям из `paths`.","enum":["full","partial"],"example":"partial"},"paths":{"type":"array","description":"Список путей к файлам, кэш которых нужно очистить. Обязателен при `purge_type` = `partial`.","items":{"type":"string"},"example":["/img/logo.png","/css/main.css"]}},"required":["purge_type"]},"preload-cache":{"description":"Параметры предварительной загрузки кэша","type":"object","properties":{"paths":{"type":"array","description":"Список путей к файлам, которые нужно заранее загрузить в кэш узлов CDN.","items":{"type":"string"},"example":["/img/logo.png","/css/main.css"]}},"required":["paths"]},"statistics":{"description":"Статистика CDN-ресурса за период, с разбивкой по часам","type":"object","properties":{"traffic":{"type":"array","description":"Исходящий трафик по часовым интервалам.","items":{"type":"object","properties":{"logged_at":{"type":"string","format":"date-time","description":"Начало часового интервала в UTC.","example":"2026-04-16T13:00:00Z"},"outgoing_bytes":{"type":"number","description":"Исходящий трафик за интервал, в байтах.","example":12345678}},"required":["logged_at","outgoing_bytes"]}},"requests":{"type":"array","description":"Количество запросов по часовым интервалам с разбивкой по классам HTTP-статуса ответа.","items":{"type":"object","properties":{"logged_at":{"type":"string","format":"date-time","description":"Начало часового интервала в UTC.","example":"2026-04-16T13:00:00Z"},"status_2xx":{"type":"number","description":"Количество ответов со статусом 2xx.","example":1024},"status_3xx":{"type":"number","description":"Количество ответов со статусом 3xx.","example":12},"status_4xx":{"type":"number","description":"Количество ответов со статусом 4xx.","example":3},"status_5xx":{"type":"number","description":"Количество ответов со статусом 5xx.","example":0}},"required":["logged_at","status_2xx","status_3xx","status_4xx","status_5xx"]}}},"required":["traffic","requests"]},"preset":{"description":"Тариф CDN","type":"object","properties":{"id":{"type":"integer","description":"ID тарифа. Указывается в поле `preset_id` при создании и изменении ресурса.","example":4001},"service_name":{"type":"string","description":"Название тарифа.","example":"CDN"},"description":{"type":"string","description":"Описание тарифа.","example":"CDN с оплатой за трафик и запросы"},"description_short":{"type":"string","description":"Краткое описание тарифа.","example":"CDN"},"cost":{"type":"number","description":"Абонентская плата за тариф в рублях.","example":0},"traffic_rate_cost":{"type":"number","description":"Стоимость единицы исходящего трафика по тарифу аккаунта, в рублях.","example":1.5},"request_rate_cost":{"type":"number","description":"Стоимость единицы запросов по тарифу аккаунта, в рублях.","example":0.3}},"required":["id","service_name","description","description_short","cost","traffic_rate_cost","request_rate_cost"]},"origin-node":{"description":"Подсеть узлов CDN, которые обращаются к источнику контента","type":"object","properties":{"ipv4_subnet":{"type":"string","description":"IPv4-адрес или подсеть узлов. `null`, если у записи нет IPv4-подсети.","example":"1.2.3.4/32","nullable":true},"ipv6_subnet":{"type":"string","description":"IPv6-адрес или подсеть узлов. `null`, если у записи нет IPv6-подсети.","example":"240e:958:31:204::/112","nullable":true}},"required":["ipv4_subnet","ipv6_subnet"]},"user-node":{"description":"Узел CDN, который раздает контент ресурса пользователям","type":"object","properties":{"ipv4_address":{"type":"string","description":"IPv4-адрес раздающего узла.","example":"1.2.3.4"}},"required":["ipv4_address"]},"certificate":{"description":"SSL-сертификат CDN","type":"object","properties":{"id":{"type":"integer","description":"ID сертификата. Указывается в поле `config.security.certificate_id` при привязке сертификата к ресурсу.","example":5678},"type":{"type":"string","description":"Тип сертификата.\n- `lets_encrypt` — сертификат, выпущенный через Let's Encrypt;\n- `uploaded` — сертификат, загруженный вами.","enum":["lets_encrypt","uploaded"],"example":"lets_encrypt"},"cn":{"type":"string","description":"Основное доменное имя сертификата.","example":"cdn.example.com"},"domains":{"type":"array","description":"Все доменные имена сертификата, включая указанные в SAN.","items":{"type":"string"},"example":["cdn.example.com","static.example.com"]},"issued_at":{"type":"string","format":"date-time","description":"Дата выпуска сертификата.","example":"2026-01-15T10:20:30Z"},"expires_at":{"type":"string","format":"date-time","description":"Дата окончания действия сертификата.","example":"2026-04-15T10:20:30Z"}},"required":["id","type","cn","domains","issued_at","expires_at"]},"add-certificate":{"description":"Параметры загрузки собственного сертификата","type":"object","properties":{"private_key":{"type":"string","description":"Приватный ключ сертификата в формате PEM.","example":"-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQ...\n-----END PRIVATE KEY-----"},"certificate":{"type":"string","description":"Сертификат вместе с цепочкой в формате PEM.","example":"-----BEGIN CERTIFICATE-----\nMIIFazCCA1OgAwIBAgIRAI...\n-----END CERTIFICATE-----"},"comment":{"type":"string","description":"Комментарий к сертификату.","default":"SSL Certificate","example":"Сертификат для cdn.example.com"}},"required":["private_key","certificate"]},"issue-certificate":{"description":"Параметры выпуска сертификата Let's Encrypt","type":"object","properties":{"resource_id":{"type":"integer","description":"ID CDN-ресурса, для доменов которого нужно выпустить сертификат.","example":1234}},"required":["resource_id"]},"certificate-task":{"description":"Задача на выпуск сертификата Let's Encrypt","type":"object","properties":{"id":{"type":"integer","description":"ID задачи на выпуск сертификата.","example":42},"status":{"type":"string","description":"Статус выпуска сертификата.\n- `in_progress` — сертификат выпускается;\n- `success` — сертификат выпущен и привязан к ресурсу;\n- `failed` — выпустить сертификат не удалось.","enum":["in_progress","success","failed"],"example":"in_progress"},"domains":{"type":"array","description":"Доменные имена, для которых выпускается сертификат.","items":{"type":"string"},"example":["cdn.example.com"]},"resource_id":{"type":"integer","description":"ID CDN-ресурса, для которого выпускается сертификат.","example":1234}},"required":["id","status","domains","resource_id"]}},"parameters":{"limit":{"description":"Обозначает количество записей, которое необходимо вернуть.","in":"query","name":"limit","required":false,"schema":{"type":"integer","default":100}},"offset":{"description":"Указывает на смещение относительно начала списка.","in":"query","name":"offset","required":false,"schema":{"type":"integer","default":0}},"balancer-id":{"description":"ID балансировщика","in":"path","name":"balancer_id","required":true,"schema":{"type":"integer"}},"hash":{"description":"Хеш, который совместно с кодом авторизации надо отправить для удаления, если включено подтверждение удаления сервисов через Телеграм.","in":"query","name":"hash","required":false,"schema":{"type":"string","example":"15095f25-aac3-4d60-a788-96cb5136f186"}},"code":{"description":"Код подтверждения, который придет к вам в Телеграм, после запроса удаления, если включено подтверждение удаления сервисов.\n\nПри помощи API токена сервисы можно удалять без подтверждения, если параметр токена `is_able_to_delete` установлен в значение `true`","in":"query","name":"code","required":false,"schema":{"type":"string","example":"0000"}},"rule-id":{"description":"ID правила для балансировщика","in":"path","name":"rule_id","required":true,"schema":{"type":"integer"}},"database-cluster-id":{"description":"ID кластера базы данных","in":"path","name":"db_cluster_id","required":true,"schema":{"type":"integer"}},"admin-id":{"description":"ID пользователя базы данных","in":"path","name":"admin_id","required":true,"schema":{"type":"integer"}},"instance-id":{"description":"ID инстанса базы данных","in":"path","name":"instance_id","required":true,"schema":{"type":"integer"}},"dbs-id":{"description":"ID базы данных","in":"path","name":"db_id","required":true,"schema":{"type":"integer"}},"backup-id":{"description":"ID резервной копии","in":"path","name":"backup_id","required":true,"schema":{"type":"integer"}},"s3-backup-id":{"description":"ID резервной копии в формате UUID","in":"path","name":"backup_id","required":true,"schema":{"type":"string","format":"uuid"}},"preset-id":{"description":"ID тарифа","in":"path","name":"preset_id","required":true,"schema":{"type":"integer"}},"dedicated-id":{"in":"path","name":"dedicated_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID выделенного сервера."},"preset-id-2":{"in":"path","name":"preset_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID тарифа выделенного сервера."},"server-id":{"in":"path","name":"server_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID облачного сервера."},"disk-id":{"in":"path","name":"disk_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID диска сервера."},"server-backup-id":{"in":"path","name":"backup_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID бэкапа сервера."},"vds-id":{"in":"path","name":"vds_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID облачного сервера (VDS)."},"project-id":{"in":"path","name":"project_id","required":true,"schema":{"type":"integer","minimum":1,"example":99},"description":"ID проекта."},"bucket-id":{"in":"path","name":"bucket_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID хранилища."},"user-id":{"in":"path","name":"user_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID пользователя хранилища."},"search":{"description":"Поиск почтового ящика по названию","in":"query","name":"search","required":false,"schema":{"type":"string"}},"domain":{"description":"Полное имя домена","in":"path","name":"domain","required":true,"schema":{"type":"string","example":"somedomain.ru"}},"mailbox":{"description":"Название почтового ящика","in":"path","name":"mailbox","required":true,"schema":{"type":"string","example":"mailbox"}},"idn-name":{"description":"Интернационализированное доменное имя.","in":"query","name":"idn_name","required":false,"schema":{"type":"string","example":"xn--e1afmkfd.xn--p1ai"}},"linked-ip":{"description":"Привязанный к домену IP-адрес.","in":"query","name":"linked_ip","required":false,"schema":{"type":"string","example":"192.168.1.1"}},"order":{"description":"Порядок доменов.","in":"query","name":"order","required":false,"schema":{"type":"string","enum":["asc","dsc"],"example":"asc"}},"sort":{"description":"Сортировка доменов.","in":"query","name":"sort","required":false,"schema":{"enum":["idn_name"],"type":"string","example":"idn_name"}},"domain-fqdn":{"description":"Полное имя домена.","in":"path","name":"fqdn","required":true,"schema":{"type":"string","example":"somedomain.ru"}},"domain-subdomain-fqdn-create-dns":{"description":"Полное имя домена или поддомена. Для создания записи на основном домене передайте имя домена (например, `somedomain.ru`). Для создания записи на поддомене передайте полное доменное имя включая поддомен (например, `sub.somedomain.ru`).\n\nПоддомен должен быть создан заранее методом добавления поддомена (`POST /api/v1/domains/{fqdn}/subdomains/{subdomain}`).","in":"path","name":"fqdn","required":true,"schema":{"type":"string","example":"somedomain.ru"}},"record-id":{"description":"ID DNS-записи домена или поддомена.","in":"path","name":"record_id","required":true,"schema":{"type":"integer","example":123}},"domain-subdomain-fqdn":{"description":"Полное имя домена или поддомена.","in":"path","name":"fqdn","required":true,"schema":{"type":"string","example":"somedomain.ru"}},"subdomain":{"description":"Имя поддомена без имени домена. Например, для поддомена `sub.somedomain.ru` нужно передать `sub`.","in":"path","name":"subdomain","required":true,"schema":{"type":"string","example":"sub"}},"person-id":{"description":"ID администратора, на которого зарегистрирован домен.","in":"query","name":"person_id","required":false,"schema":{"type":"integer","example":123}},"request-id":{"description":"ID заявки на регистрацию/продление/трансфер домена.","in":"path","name":"request_id","required":true,"schema":{"type":"integer","example":123}},"is-published":{"description":"Это логическое значение, которое показывает, опубликована ли доменная зона.","in":"query","name":"is_published","required":false,"schema":{"type":"boolean","example":true}},"is-registered":{"description":"Это логическое значение, которое показывает, зарегистрирована ли доменная зона.","in":"query","name":"is_registered","required":false,"schema":{"type":"boolean","example":true}},"tld-id":{"description":"ID доменной зоны.","in":"path","name":"tld_id","required":true,"schema":{"type":"integer","example":123}},"is-closed":{"description":"Фильтр по закрытым администраторам: `true` — вернуть только закрытых, `false` — только активных.","in":"query","name":"is_closed","required":false,"schema":{"type":"boolean","example":false}},"person-id-2":{"description":"ID администратора домена.","in":"path","name":"person_id","required":true,"schema":{"type":"integer","example":123}},"vpc-id":{"in":"path","name":"vpc_id","required":true,"schema":{"type":"string","description":"ID сети","example":"network-1234567890"},"description":"ID сети"},"ssh-key-id":{"in":"path","name":"ssh_key_id","required":true,"schema":{"type":"integer","minimum":1,"example":1051},"description":"ID SSH-ключа."},"floating-ip-id":{"in":"path","name":"floating_ip_id","required":true,"schema":{"type":"string","description":"ID плавающего IP","example":"87fa289f-1513-4c4d-8d49-5707f411f14b"},"description":"ID плавающего IP"},"network-drive-id":{"in":"path","name":"network-drive-id","required":true,"schema":{"type":"string","description":"ID сетевого диска","example":"87fa289f-1513-4c4d-8d49-5707f411f14b"},"description":"ID сетевого диска"},"id":{"in":"path","name":"id","required":true,"schema":{"type":"integer","minimum":1,"example":1},"description":"ID агента"},"knowledgebase-id":{"in":"path","name":"id","required":true,"schema":{"type":"integer","minimum":1,"example":1},"description":"ID базы знаний"},"agent-id":{"in":"path","name":"agent_id","required":true,"schema":{"type":"integer","minimum":1,"example":1},"description":"ID агента"},"document-id":{"in":"path","name":"document_id","required":true,"schema":{"type":"integer","minimum":1,"example":1},"description":"ID документа"},"resource-id":{"in":"path","name":"resource_id","required":true,"schema":{"type":"integer","description":"ID CDN-ресурса","example":1234},"description":"ID CDN-ресурса"},"task-id":{"in":"path","name":"task_id","required":true,"schema":{"type":"integer","description":"ID задачи на выпуск сертификата","example":42},"description":"ID задачи на выпуск сертификата"},"certificate-id":{"in":"path","name":"certificate_id","required":true,"schema":{"type":"integer","description":"ID сертификата","example":5678},"description":"ID сертификата"}}}}
\ No newline at end of file
diff --git a/src/models/get_database_default_parameters_200_response_all_of_config_params.rs b/src/models/get_database_default_parameters_200_response_all_of_config_params.rs
index 27fdf2f..00deeda 100644
--- a/src/models/get_database_default_parameters_200_response_all_of_config_params.rs
+++ b/src/models/get_database_default_parameters_200_response_all_of_config_params.rs
@@ -13,987 +13,18 @@ use serde::{Deserialize, Serialize};
use crate::models;
/// GetDatabaseDefaultParameters200ResponseAllOfConfigParams : Рекомендуемые
+/// значения параметров базы данных (mysql | postgres | valkey). Рекомендуемые
/// значения параметров базы данных (mysql | postgres | valkey).
-#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
-pub struct GetDatabaseDefaultParameters200ResponseAllOfConfigParams {
- /// Размер буфера, используемого при соединениях таблиц без индексов
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "join_buffer_size", skip_serializing_if = "Option::is_none")]
- pub join_buffer_size: Option,
- /// Максимальное количество одновременных подключений к серверу (`mysql5` |
- /// `mysql` | `mysql8_4` | `postgres` | `postgres14` | `postgres15` |
- /// `postgres16` | `postgres17` | `postgres18`).
- #[serde(rename = "max_connections", skip_serializing_if = "Option::is_none")]
- pub max_connections: Option,
- /// Размер буфера сортировки для операций ORDER BY и GROUP BY (`mysql5` |
- /// `mysql` | `mysql8_4`).
- #[serde(rename = "sort_buffer_size", skip_serializing_if = "Option::is_none")]
- pub sort_buffer_size: Option,
- /// Количество потоков, которые сервер сохраняет для повторного
- /// использования (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "thread_cache_size", skip_serializing_if = "Option::is_none")]
- pub thread_cache_size: Option,
- /// Размер буферного пула InnoDB для хранения данных и индексов в памяти
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(
- rename = "innodb_buffer_pool_size",
- skip_serializing_if = "Option::is_none"
- )]
- pub innodb_buffer_pool_size: Option,
- /// Интервал между значениями столбцов с атрибутом `AUTO_INCREMENT`
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(
- rename = "auto_increment_increment",
- skip_serializing_if = "Option::is_none"
- )]
- pub auto_increment_increment: Option,
- /// Начальное значение для столбцов с атрибутом `AUTO_INCREMENT` (`mysql5` |
- /// `mysql` | `mysql8_4`).
- #[serde(
- rename = "auto_increment_offset",
- skip_serializing_if = "Option::is_none"
- )]
- pub auto_increment_offset: Option,
- /// Количество операций ввода-вывода в секунду `IOPS`, используемых InnoDB
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "innodb_io_capacity", skip_serializing_if = "Option::is_none")]
- pub innodb_io_capacity: Option,
- /// Количество потоков, используемых для фоновой очистки undo-записей InnoDB
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(
- rename = "innodb_purge_threads",
- skip_serializing_if = "Option::is_none"
- )]
- pub innodb_purge_threads: Option,
- /// Количество потоков ввода-вывода для операций чтения InnoDB (`mysql5` |
- /// `mysql` | `mysql8_4`).
- #[serde(
- rename = "innodb_read_io_threads",
- skip_serializing_if = "Option::is_none"
- )]
- pub innodb_read_io_threads: Option,
- /// Ограничение количества одновременно выполняющихся потоков InnoDB
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(
- rename = "innodb_thread_concurrency",
- skip_serializing_if = "Option::is_none"
- )]
- pub innodb_thread_concurrency: Option,
- /// Количество потоков ввода-вывода для операций записи InnoDB (`mysql5` |
- /// `mysql` | `mysql8_4`).
- #[serde(
- rename = "innodb_write_io_threads",
- skip_serializing_if = "Option::is_none"
- )]
- pub innodb_write_io_threads: Option,
- /// Размер файла журнала транзакций InnoDB redo log (`mysql5` | `mysql` |
- /// `mysql8_4`).
- #[serde(
- rename = "innodb_log_file_size",
- skip_serializing_if = "Option::is_none"
- )]
- pub innodb_log_file_size: Option,
- /// Максимальный размер пакета данных, который может передаваться между
- /// клиентом и сервером (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "max_allowed_packet", skip_serializing_if = "Option::is_none")]
- pub max_allowed_packet: Option,
- /// Максимальный размер таблиц типа MEMORY (`mysql5` | `mysql` |
- /// `mysql8_4`).
- #[serde(
- rename = "max_heap_table_size",
- skip_serializing_if = "Option::is_none"
- )]
- pub max_heap_table_size: Option,
- /// Режим работы SQL сервера, определяющий поведение обработки запросов
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "sql_mode", skip_serializing_if = "Option::is_none")]
- pub sql_mode: Option,
- /// Тип кэша запросов (`mysql5`).
- #[serde(rename = "query_cache_type", skip_serializing_if = "Option::is_none")]
- pub query_cache_type: Option,
- /// Объем памяти, выделяемый для кэширования результатов запросов
- /// (`mysql5`).
- #[serde(rename = "query_cache_size", skip_serializing_if = "Option::is_none")]
- pub query_cache_size: Option,
- /// Максимальный размер результата запроса, который может быть закэширован
- /// (`mysql5`).
- #[serde(rename = "query_cache_limit", skip_serializing_if = "Option::is_none")]
- pub query_cache_limit: Option,
- /// Режим записи журнала InnoDB при фиксации транзакций (`mysql5` | `mysql`
- /// | `mysql8_4`).
- #[serde(
- rename = "innodb_flush_log_at_trx_commit",
- skip_serializing_if = "Option::is_none"
- )]
- pub innodb_flush_log_at_trx_commit: Option,
- /// Уровень изоляции транзакций по умолчанию (`mysql5` | `mysql` |
- /// `mysql8_4`).
- #[serde(
- rename = "transaction_isolation",
- skip_serializing_if = "Option::is_none"
- )]
- pub transaction_isolation: Option,
- /// Время выполнения запроса, после которого он считается долгим и может
- /// попасть в slow query log (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "long_query_time", skip_serializing_if = "Option::is_none")]
- pub long_query_time: Option,
- /// Максимальный размер временных таблиц в памяти (`mysql5` | `mysql` |
- /// `mysql8_4`).
- #[serde(rename = "tmp_table_size", skip_serializing_if = "Option::is_none")]
- pub tmp_table_size: Option,
- /// Количество открытых таблиц, которые сервер может хранить в кэше
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "table_open_cache", skip_serializing_if = "Option::is_none")]
- pub table_open_cache: Option,
- /// Количество экземпляров кэша открытых таблиц для снижения конкуренции
- /// между потоками (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(
- rename = "table_open_cache_instances",
- skip_serializing_if = "Option::is_none"
- )]
- pub table_open_cache_instances: Option,
- /// Метод выполнения операций записи и синхронизации файлов InnoDB (`mysql5`
- /// | `mysql` | `mysql8_4`).
- #[serde(
- rename = "innodb_flush_method",
- skip_serializing_if = "Option::is_none"
- )]
- pub innodb_flush_method: Option,
- /// Включение строгой проверки операций InnoDB (`mysql5` | `mysql` |
- /// `mysql8_4`).
- #[serde(rename = "innodb_strict_mode", skip_serializing_if = "Option::is_none")]
- pub innodb_strict_mode: Option,
- /// Включение журнала медленных запросов (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "slow_query_log", skip_serializing_if = "Option::is_none")]
- pub slow_query_log: Option,
- /// Размер кэша бинарного журнала для транзакций (`mysql5` | `mysql` |
- /// `mysql8_4`).
- #[serde(rename = "binlog_cache_size", skip_serializing_if = "Option::is_none")]
- pub binlog_cache_size: Option,
- /// Задержка синхронизации групповой фиксации бинарного журнала в
- /// микросекундах (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(
- rename = "binlog_group_commit_sync_delay",
- skip_serializing_if = "Option::is_none"
- )]
- pub binlog_group_commit_sync_delay: Option,
- /// Количество информации, записываемой в бинарный журнал при row-based
- /// репликации (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "binlog_row_image", skip_serializing_if = "Option::is_none")]
- pub binlog_row_image: Option,
- /// Включение записи SQL-запросов в бинарный журнал при row-based репликации
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(
- rename = "binlog_rows_query_log_events",
- skip_serializing_if = "Option::is_none"
- )]
- pub binlog_rows_query_log_events: Option,
- /// Кодировка по умолчанию для сервера MySQL (`mysql5` | `mysql` |
- /// `mysql8_4`).
- #[serde(
- rename = "character_set_server",
- skip_serializing_if = "Option::is_none"
- )]
- pub character_set_server: Option,
- /// Определяет автоматическое поведение TIMESTAMP без явных значений по
- /// умолчанию (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(
- rename = "explicit_defaults_for_timestamp",
- skip_serializing_if = "Option::is_none"
- )]
- pub explicit_defaults_for_timestamp: Option,
- /// Максимальная длина результата функции GROUP_CONCAT (`mysql5` | `mysql` |
- /// `mysql8_4`).
- #[serde(
- rename = "group_concat_max_len",
- skip_serializing_if = "Option::is_none"
- )]
- pub group_concat_max_len: Option,
- /// Включение или отключение адаптивного хэш-индекса InnoDB для ускорения
- /// поиска по индексам (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(
- rename = "innodb_adaptive_hash_index",
- skip_serializing_if = "Option::is_none"
- )]
- pub innodb_adaptive_hash_index: Option,
- /// Время ожидания блокировки InnoDB перед завершением транзакции с ошибкой
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(
- rename = "innodb_lock_wait_timeout",
- skip_serializing_if = "Option::is_none"
- )]
- pub innodb_lock_wait_timeout: Option,
- /// Включение распределения памяти InnoDB между NUMA-узлами (`mysql5` |
- /// `mysql` | `mysql8_4`).
- #[serde(
- rename = "innodb_numa_interleave",
- skip_serializing_if = "Option::is_none"
- )]
- pub innodb_numa_interleave: Option,
- /// Время ожидания данных от клиента при чтении сетевого соединения
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "net_read_timeout", skip_serializing_if = "Option::is_none")]
- pub net_read_timeout: Option,
- /// Время ожидания записи данных клиенту через сетевое соединение (`mysql5`
- /// | `mysql` | `mysql8_4`).
- #[serde(rename = "net_write_timeout", skip_serializing_if = "Option::is_none")]
- pub net_write_timeout: Option,
- /// Максимальное время выполнения регулярных выражений (`mysql` |
- /// `mysql8_4`).
- #[serde(rename = "regexp_time_limit", skip_serializing_if = "Option::is_none")]
- pub regexp_time_limit: Option,
- /// Количество операций записи бинарного журнала перед принудительной
- /// синхронизацией на диск (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "sync_binlog", skip_serializing_if = "Option::is_none")]
- pub sync_binlog: Option,
- /// Количество определений таблиц, хранящихся в кэше (`mysql5` | `mysql` |
- /// `mysql8_4`).
- #[serde(
- rename = "table_definition_cache",
- skip_serializing_if = "Option::is_none"
- )]
- pub table_definition_cache: Option,
- /// Разрешение создания хранимых функций без проверки бинарной регистрации
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(
- rename = "log_bin_trust_function_creators",
- skip_serializing_if = "Option::is_none"
- )]
- pub log_bin_trust_function_creators: Option,
- /// Отключение DNS-разрешения имен клиентов при подключении к серверу
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "skip_name_resolve", skip_serializing_if = "Option::is_none")]
- pub skip_name_resolve: Option,
- /// Общий размер redo log InnoDB для хранения журнала восстановления
- /// (`mysql8_4`).
- #[serde(
- rename = "innodb_redo_log_capacity",
- skip_serializing_if = "Option::is_none"
- )]
- pub innodb_redo_log_capacity: Option,
- /// Время ожидания неактивного клиентского соединения перед закрытием
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(rename = "wait_timeout", skip_serializing_if = "Option::is_none")]
- pub wait_timeout: Option,
- /// Время ожидания неактивного интерактивного соединения перед закрытием
- /// (`mysql5` | `mysql` | `mysql8_4`).
- #[serde(
- rename = "interactive_timeout",
- skip_serializing_if = "Option::is_none"
- )]
- pub interactive_timeout: Option,
- /// Часовой пояс сервера MySQL по умолчанию (`mysql5` | `mysql` |
- /// `mysql8_4`).
- #[serde(rename = "default-time-zone", skip_serializing_if = "Option::is_none")]
- pub default_time_zone: Option,
- /// Режим строгой проверки операций в Percona XtraDB Cluster (`mysql5` |
- /// `mysql` | `mysql8_4`).
- #[serde(rename = "pxc_strict_mode", skip_serializing_if = "Option::is_none")]
- pub pxc_strict_mode: Option,
- /// Доля изменения строк таблицы перед запуском автоматического анализа
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(
- rename = "autovacuum_analyze_scale_factor",
- skip_serializing_if = "Option::is_none"
- )]
- pub autovacuum_analyze_scale_factor: Option,
- /// Максимальное количество процессов autovacuum, которые могут работать
- /// одновременно (`postgres` | `postgres14` | `postgres15` | `postgres16` |
- /// `postgres17` | `postgres18`).
- #[serde(
- rename = "autovacuum_max_workers",
- skip_serializing_if = "Option::is_none"
- )]
- pub autovacuum_max_workers: Option,
- /// Интервал между запусками процессов autovacuum (`postgres` | `postgres14`
- /// | `postgres15` | `postgres16` | `postgres17` | `postgres18`).
- #[serde(rename = "autovacuum_naptime", skip_serializing_if = "Option::is_none")]
- pub autovacuum_naptime: Option,
- /// Доля вставленных строк перед запуском vacuum для таблиц с большим
- /// количеством вставок (`postgres` | `postgres14` | `postgres15` |
- /// `postgres16` | `postgres17` | `postgres18`).
- #[serde(
- rename = "autovacuum_vacuum_insert_scale_factor",
- skip_serializing_if = "Option::is_none"
- )]
- pub autovacuum_vacuum_insert_scale_factor: Option,
- /// Доля измененных или удаленных строк перед запуском autovacuum
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(
- rename = "autovacuum_vacuum_scale_factor",
- skip_serializing_if = "Option::is_none"
- )]
- pub autovacuum_vacuum_scale_factor: Option,
- /// Объем памяти, используемый одним процессом autovacuum (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(
- rename = "autovacuum_work_mem",
- skip_serializing_if = "Option::is_none"
- )]
- pub autovacuum_work_mem: Option,
- /// Интервал между циклами фонового процесса записи страниц (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "bgwriter_delay", skip_serializing_if = "Option::is_none")]
- pub bgwriter_delay: Option,
- /// Максимальное количество страниц, записываемых background writer за один
- /// цикл (`postgres` | `postgres14` | `postgres15` | `postgres16` |
- /// `postgres17` | `postgres18`).
- #[serde(
- rename = "bgwriter_lru_maxpages",
- skip_serializing_if = "Option::is_none"
- )]
- pub bgwriter_lru_maxpages: Option,
- /// Время ожидания блокировки перед проверкой взаимной блокировки
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(rename = "deadlock_timeout", skip_serializing_if = "Option::is_none")]
- pub deadlock_timeout: Option,
- /// Максимальный размер списка ожидающих вставок индекса GIN (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(
- rename = "gin_pending_list_limit",
- skip_serializing_if = "Option::is_none"
- )]
- pub gin_pending_list_limit: Option,
- /// Время ожидания неактивной транзакционной сессии перед завершением
- /// соединения (`postgres` | `postgres14` | `postgres15` | `postgres16` |
- /// `postgres17` | `postgres18`).
- #[serde(
- rename = "idle_in_transaction_session_timeout",
- skip_serializing_if = "Option::is_none"
- )]
- pub idle_in_transaction_session_timeout: Option,
- /// Максимальное количество таблиц в JOIN, которые планировщик может
- /// переупорядочить (`postgres` | `postgres14` | `postgres15` | `postgres16`
- /// | `postgres17` | `postgres18`).
- #[serde(
- rename = "join_collapse_limit",
- skip_serializing_if = "Option::is_none"
- )]
- pub join_collapse_limit: Option,
- /// Максимальное время ожидания блокировки перед отменой запроса (`postgres`
- /// | `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "lock_timeout", skip_serializing_if = "Option::is_none")]
- pub lock_timeout: Option,
- /// Максимальное количество подготовленных транзакций, которые могут
- /// существовать одновременно (`postgres` | `postgres14` | `postgres15` |
- /// `postgres16` | `postgres17` | `postgres18`).
- #[serde(
- rename = "max_prepared_transactions",
- skip_serializing_if = "Option::is_none"
- )]
- pub max_prepared_transactions: Option,
- /// Размер общей памяти, используемой PostgreSQL для буферного кэша
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(rename = "shared_buffers", skip_serializing_if = "Option::is_none")]
- pub shared_buffers: Option,
- /// Минимальное время выполнения запроса, после которого он записывается в
- /// журнал (`postgres` | `postgres14` | `postgres15` | `postgres16` |
- /// `postgres17` | `postgres18`).
- #[serde(
- rename = "log_min_duration_statement",
- skip_serializing_if = "Option::is_none"
- )]
- pub log_min_duration_statement: Option,
- /// Размер памяти, используемой для буферизации WAL-записей (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "wal_buffers", skip_serializing_if = "Option::is_none")]
- pub wal_buffers: Option,
- /// Максимальный объем памяти для временных таблиц каждой сессии (`postgres`
- /// | `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "temp_buffers", skip_serializing_if = "Option::is_none")]
- pub temp_buffers: Option,
- /// Объем памяти, используемый одной операцией сортировки или хеширования
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(rename = "work_mem", skip_serializing_if = "Option::is_none")]
- pub work_mem: Option,
- /// Уровень изоляции транзакций по умолчанию (`postgres` | `postgres14` |
- /// `postgres15` | `postgres16` | `postgres17` | `postgres18`).
- #[serde(
- rename = "default_transaction_isolation",
- skip_serializing_if = "Option::is_none"
- )]
- pub default_transaction_isolation: Option,
- /// Оценка объема дискового кэша, доступного планировщику запросов
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(
- rename = "effective_cache_size",
- skip_serializing_if = "Option::is_none"
- )]
- pub effective_cache_size: Option,
- /// Максимальный размер WAL перед запуском контрольной точки (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "max_wal_size", skip_serializing_if = "Option::is_none")]
- pub max_wal_size: Option,
- /// Минимальный размер WAL, который сохраняется между контрольными точками
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(rename = "min_wal_size", skip_serializing_if = "Option::is_none")]
- pub min_wal_size: Option,
- /// Уровень детализации записи WAL для восстановления и репликации
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(rename = "wal_level", skip_serializing_if = "Option::is_none")]
- pub wal_level: Option,
- /// Максимальное количество слотов репликации, которые могут быть созданы
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(
- rename = "max_replication_slots",
- skip_serializing_if = "Option::is_none"
- )]
- pub max_replication_slots: Option,
- /// Максимальное количество процессов отправки WAL для репликации
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(rename = "max_wal_senders", skip_serializing_if = "Option::is_none")]
- pub max_wal_senders: Option,
- /// Максимальное количество фоновых процессов PostgreSQL (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(
- rename = "max_worker_processes",
- skip_serializing_if = "Option::is_none"
- )]
- pub max_worker_processes: Option,
- /// Максимальное количество процессов логической репликации (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(
- rename = "max_logical_replication_workers",
- skip_serializing_if = "Option::is_none"
- )]
- pub max_logical_replication_workers: Option,
- /// Максимальное количество параллельных процессов для операций обслуживания
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(
- rename = "max_parallel_maintenance_workers",
- skip_serializing_if = "Option::is_none"
- )]
- pub max_parallel_maintenance_workers: Option,
- /// Максимальное количество параллельных рабочих процессов для запросов
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(
- rename = "max_parallel_workers",
- skip_serializing_if = "Option::is_none"
- )]
- pub max_parallel_workers: Option,
- /// Максимальное количество параллельных рабочих процессов на один
- /// Gather-узел (`postgres` | `postgres14` | `postgres15` | `postgres16` |
- /// `postgres17` | `postgres18`).
- #[serde(
- rename = "max_parallel_workers_per_gather",
- skip_serializing_if = "Option::is_none"
- )]
- pub max_parallel_workers_per_gather: Option,
- /// Разрешение использования NULL в массивах PostgreSQL (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "array_nulls", skip_serializing_if = "Option::is_none")]
- pub array_nulls: Option,
- /// Количество страниц, после записи которых выполняется принудительная
- /// очистка данных на диск серверным процессом (`postgres` | `postgres14` |
- /// `postgres15` | `postgres16` | `postgres17` | `postgres18`).
- #[serde(
- rename = "backend_flush_after",
- skip_serializing_if = "Option::is_none"
- )]
- pub backend_flush_after: Option,
- /// Управление использованием обратного слеша в строковых литералах
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(rename = "backslash_quote", skip_serializing_if = "Option::is_none")]
- pub backslash_quote: Option,
- /// Количество страниц, после которого background writer выполняет очистку
- /// данных на диск (`postgres` | `postgres14` | `postgres15` | `postgres16`
- /// | `postgres17` | `postgres18`).
- #[serde(
- rename = "bgwriter_flush_after",
- skip_serializing_if = "Option::is_none"
- )]
- pub bgwriter_flush_after: Option,
- /// Множитель количества страниц, которые background writer пытается
- /// очистить (`postgres` | `postgres14` | `postgres15` | `postgres16` |
- /// `postgres17` | `postgres18`).
- #[serde(
- rename = "bgwriter_lru_multiplier",
- skip_serializing_if = "Option::is_none"
- )]
- pub bgwriter_lru_multiplier: Option,
- /// Определяет режим транзакций только для чтения по умолчанию (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(
- rename = "default_transaction_read_only",
- skip_serializing_if = "Option::is_none"
- )]
- pub default_transaction_read_only: Option,
- /// Разрешение использования Hash Aggregate планировщиком запросов
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(rename = "enable_hashagg", skip_serializing_if = "Option::is_none")]
- pub enable_hashagg: Option,
- /// Разрешение использования Hash Join планировщиком запросов (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "enable_hashjoin", skip_serializing_if = "Option::is_none")]
- pub enable_hashjoin: Option,
- /// Разрешение использования инкрементальной сортировки планировщиком
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(
- rename = "enable_incremental_sort",
- skip_serializing_if = "Option::is_none"
- )]
- pub enable_incremental_sort: Option,
- /// Разрешение использования обычного индексного сканирования (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "enable_indexscan", skip_serializing_if = "Option::is_none")]
- pub enable_indexscan: Option,
- /// Разрешение использования index-only scan (`postgres` | `postgres14` |
- /// `postgres15` | `postgres16` | `postgres17` | `postgres18`).
- #[serde(
- rename = "enable_indexonlyscan",
- skip_serializing_if = "Option::is_none"
- )]
- pub enable_indexonlyscan: Option,
- /// Разрешение использования материализации промежуточных результатов
- /// запросов (`postgres` | `postgres14` | `postgres15` | `postgres16` |
- /// `postgres17` | `postgres18`).
- #[serde(rename = "enable_material", skip_serializing_if = "Option::is_none")]
- pub enable_material: Option,
- /// Разрешение использования Memoize узлов планировщиком запросов
- /// (`postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "enable_memoize", skip_serializing_if = "Option::is_none")]
- pub enable_memoize: Option,
- /// Разрешение использования Merge Join планировщиком запросов (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "enable_mergejoin", skip_serializing_if = "Option::is_none")]
- pub enable_mergejoin: Option,
- /// Разрешение использования параллельного Append для запросов (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(
- rename = "enable_parallel_append",
- skip_serializing_if = "Option::is_none"
- )]
- pub enable_parallel_append: Option,
- /// Разрешение использования параллельных Hash операций (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(
- rename = "enable_parallel_hash",
- skip_serializing_if = "Option::is_none"
- )]
- pub enable_parallel_hash: Option,
- /// Разрешение удаления ненужных разделов таблицы при планировании запроса
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(
- rename = "enable_partition_pruning",
- skip_serializing_if = "Option::is_none"
- )]
- pub enable_partition_pruning: Option,
- /// Разрешение выполнения соединений между секционированными таблицами с
- /// учетом секций (`postgres` | `postgres14` | `postgres15` | `postgres16` |
- /// `postgres17` | `postgres18`).
- #[serde(
- rename = "enable_partitionwise_join",
- skip_serializing_if = "Option::is_none"
- )]
- pub enable_partitionwise_join: Option,
- /// Разрешение выполнения агрегатных операций отдельно для секций таблиц
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(
- rename = "enable_partitionwise_aggregate",
- skip_serializing_if = "Option::is_none"
- )]
- pub enable_partitionwise_aggregate: Option,
- /// Разрешение использования последовательного сканирования таблиц
- /// планировщиком запросов (`postgres` | `postgres14` | `postgres15` |
- /// `postgres16` | `postgres17` | `postgres18`).
- #[serde(rename = "enable_seqscan", skip_serializing_if = "Option::is_none")]
- pub enable_seqscan: Option,
- /// Разрешение использования операций сортировки планировщиком запросов
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(rename = "enable_sort", skip_serializing_if = "Option::is_none")]
- pub enable_sort: Option,
- /// Разрешение использования TID Scan для поиска строк по физическим
- /// идентификаторам (`postgres` | `postgres14` | `postgres15` | `postgres16`
- /// | `postgres17` | `postgres18`).
- #[serde(rename = "enable_tidscan", skip_serializing_if = "Option::is_none")]
- pub enable_tidscan: Option,
- /// Завершение сессии при возникновении ошибки SQL (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "exit_on_error", skip_serializing_if = "Option::is_none")]
- pub exit_on_error: Option,
- /// Максимальное количество элементов FROM, которые планировщик может
- /// объединять при оптимизации запросов (`postgres` | `postgres14` |
- /// `postgres15` | `postgres16` | `postgres17` | `postgres18`).
- #[serde(
- rename = "from_collapse_limit",
- skip_serializing_if = "Option::is_none"
- )]
- pub from_collapse_limit: Option,
- /// Включение JIT-компиляции для ускорения выполнения запросов (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "jit", skip_serializing_if = "Option::is_none")]
- pub jit: Option,
- /// Режим использования кэша планов подготовленных запросов (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "plan_cache_mode", skip_serializing_if = "Option::is_none")]
- pub plan_cache_mode: Option,
- /// Всегда заключать идентификаторы в кавычки при генерации SQL (`postgres`
- /// | `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(
- rename = "quote_all_identifiers",
- skip_serializing_if = "Option::is_none"
- )]
- pub quote_all_identifiers: Option,
- /// Использование стандартного поведения строковых литералов SQL (`postgres`
- /// | `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(
- rename = "standard_conforming_strings",
- skip_serializing_if = "Option::is_none"
- )]
- pub standard_conforming_strings: Option,
- /// Максимальное время выполнения SQL-запроса перед автоматической отменой
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(rename = "statement_timeout", skip_serializing_if = "Option::is_none")]
- pub statement_timeout: Option,
- /// Часовой пояс сервера PostgreSQL по умолчанию (`postgres` | `postgres14`
- /// | `postgres15` | `postgres16` | `postgres17` | `postgres18`).
- #[serde(rename = "timezone", skip_serializing_if = "Option::is_none")]
- pub timezone: Option,
- /// Преобразование выражений вида `NULL = NULL` в проверку IS NULL
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(
- rename = "transform_null_equals",
- skip_serializing_if = "Option::is_none"
- )]
- pub transform_null_equals: Option,
- /// Количество объектов, которые может блокировать одна транзакция
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(
- rename = "max_locks_per_transaction",
- skip_serializing_if = "Option::is_none"
- )]
- pub max_locks_per_transaction: Option,
- /// Лимит стоимости операций autovacuum перед приостановкой работы
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(
- rename = "autovacuum_vacuum_cost_limit",
- skip_serializing_if = "Option::is_none"
- )]
- pub autovacuum_vacuum_cost_limit: Option,
- /// Максимальный интервал времени между автоматическими контрольными точками
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(rename = "checkpoint_timeout", skip_serializing_if = "Option::is_none")]
- pub checkpoint_timeout: Option,
- /// Доля интервала checkpoint, за которую PostgreSQL распределяет запись
- /// данных (`postgres` | `postgres14` | `postgres15` | `postgres16` |
- /// `postgres17` | `postgres18`).
- #[serde(
- rename = "checkpoint_completion_target",
- skip_serializing_if = "Option::is_none"
- )]
- pub checkpoint_completion_target: Option,
- /// Включение сжатия WAL-записей для уменьшения объема журнала (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "wal_compression", skip_serializing_if = "Option::is_none")]
- pub wal_compression: Option,
- /// Оценочная стоимость случайного чтения страницы для планировщика запросов
- /// (`postgres` | `postgres14` | `postgres15` | `postgres16` | `postgres17`
- /// | `postgres18`).
- #[serde(rename = "random_page_cost", skip_serializing_if = "Option::is_none")]
- pub random_page_cost: Option,
- /// Количество параллельных операций ввода-вывода, которые планировщик может
- /// учитывать (`postgres` | `postgres14` | `postgres15` | `postgres16` |
- /// `postgres17` | `postgres18`).
- #[serde(
- rename = "effective_io_concurrency",
- skip_serializing_if = "Option::is_none"
- )]
- pub effective_io_concurrency: Option,
- /// Включение записи в журнал информации об ожидании блокировок дольше
- /// deadlock_timeout (`postgres` | `postgres14` | `postgres15` |
- /// `postgres16` | `postgres17` | `postgres18`).
- #[serde(rename = "log_lock_waits", skip_serializing_if = "Option::is_none")]
- pub log_lock_waits: Option,
- /// Минимальный размер временных файлов, при котором они записываются в
- /// журнал (`postgres` | `postgres14` | `postgres15` | `postgres16` |
- /// `postgres17` | `postgres18`).
- #[serde(rename = "log_temp_files", skip_serializing_if = "Option::is_none")]
- pub log_temp_files: Option,
- /// Включение сбора статистики времени операций ввода-вывода (`postgres` |
- /// `postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(rename = "track_io_timing", skip_serializing_if = "Option::is_none")]
- pub track_io_timing: Option,
- /// Максимальный объем памяти для операций обслуживания, таких как VACUUM и
- /// CREATE INDEX (`postgres` | `postgres14` | `postgres15` | `postgres16` |
- /// `postgres17` | `postgres18`).
- #[serde(
- rename = "maintenance_work_mem",
- skip_serializing_if = "Option::is_none"
- )]
- pub maintenance_work_mem: Option,
- /// Время ожидания неактивной сессии перед автоматическим завершением
- /// соединения (`postgres14` | `postgres15` | `postgres16` | `postgres17` |
- /// `postgres18`).
- #[serde(
- rename = "idle_session_timeout",
- skip_serializing_if = "Option::is_none"
- )]
- pub idle_session_timeout: Option,
- /// Метод выполнения операций ввода-вывода PostgreSQL (`postgres18`).
- #[serde(rename = "io_method", skip_serializing_if = "Option::is_none")]
- pub io_method: Option,
- /// Количество фоновых процессов для выполнения операций ввода-вывода
- /// (`postgres18`).
- #[serde(rename = "io_workers", skip_serializing_if = "Option::is_none")]
- pub io_workers: Option,
- /// Ограничение буфера вывода для обычных клиентских подключений. Формат:
- /// `hard-limit soft-limit soft-seconds` (`valkey` | `valkey7` | `valkey8_1`
- /// | `valkey9_1`).
- #[serde(
- rename = "client-output-buffer-limit normal",
- skip_serializing_if = "Option::is_none"
- )]
- pub client_output_buffer_limit_normal: Option,
- /// Настройка уведомлений о событиях пространства ключей (`valkey` |
- /// `valkey7` | `valkey8_1` | `valkey9_1`).
- #[serde(
- rename = "notify-keyspace-events",
- skip_serializing_if = "Option::is_none"
- )]
- pub notify_keyspace_events: Option,
- /// Ограничение буфера вывода для клиентов pub/sub. Формат: `hard-limit
- /// soft-limit soft-seconds` (`valkey` | `valkey7` | `valkey8_1` |
- /// `valkey9_1`).
- #[serde(
- rename = "client-output-buffer-limit pubsub",
- skip_serializing_if = "Option::is_none"
- )]
- pub client_output_buffer_limit_pubsub: Option,
- /// Количество логических баз данных на сервере (`valkey` | `valkey7` |
- /// `valkey8_1` | `valkey9_1`).
- #[serde(rename = "databases", skip_serializing_if = "Option::is_none")]
- pub databases: Option,
- /// Время ожидания в секундах перед закрытием неактивного клиентского
- /// соединения. `0` — отключено (`valkey` | `valkey7` | `valkey8_1` |
- /// `valkey9_1`).
- #[serde(rename = "timeout", skip_serializing_if = "Option::is_none")]
- pub timeout: Option,
- /// Политика вытеснения ключей при достижении лимита памяти (`valkey` |
- /// `valkey7` | `valkey8_1` | `valkey9_1`).
- #[serde(rename = "maxmemory-policy", skip_serializing_if = "Option::is_none")]
- pub maxmemory_policy: Option,
- /// Минимальное время выполнения команды в микросекундах для записи в журнал
- /// медленных команд (`valkey` | `valkey7` | `valkey8_1` | `valkey9_1`).
- #[serde(
- rename = "slowlog-log-slower-than",
- skip_serializing_if = "Option::is_none"
- )]
- pub slowlog_log_slower_than: Option,
- /// Максимальное количество записей, хранящихся в журнале медленных команд
- /// (`valkey` | `valkey7` | `valkey8_1` | `valkey9_1`).
- #[serde(rename = "slowlog-max-len", skip_serializing_if = "Option::is_none")]
- pub slowlog_max_len: Option,
- /// Условие создания снимка RDB на диск. Формат: `seconds changes` —
- /// сохранение выполняется, если за указанное время было сделано не менее
- /// указанного количества изменений (`valkey` | `valkey7` | `valkey8_1` |
- /// `valkey9_1`).
- #[serde(rename = "save", skip_serializing_if = "Option::is_none")]
- pub save: Option,
- /// Включение режима AOF (Append Only File) для персистентного хранения
- /// данных (`valkey` | `valkey7` | `valkey8_1` | `valkey9_1`).
- #[serde(rename = "appendonly", skip_serializing_if = "Option::is_none")]
- pub appendonly: Option,
- /// Режим синхронизации AOF-файла с диском: `always` — при каждой записи,
- /// `everysec` — раз в секунду, `no` — управление передаётся ОС (`valkey` |
- /// `valkey7` | `valkey8_1` | `valkey9_1`).
- #[serde(rename = "appendfsync", skip_serializing_if = "Option::is_none")]
- pub appendfsync: Option,
- /// Интервал проверки активности TCP-соединения в секундах. `0` — отключено
- /// (`valkey` | `valkey7` | `valkey8_1` | `valkey9_1`).
- #[serde(rename = "tcp-keepalive", skip_serializing_if = "Option::is_none")]
- pub tcp_keepalive: Option
+#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum GetDatabaseDefaultParameters200ResponseAllOfConfigParams {
+ Mysql(Box),
+ Postgres(Box),
+ Valkey(Box)
}
-impl GetDatabaseDefaultParameters200ResponseAllOfConfigParams {
- /// Рекомендуемые значения параметров базы данных (mysql | postgres |
- /// valkey).
- pub fn new() -> GetDatabaseDefaultParameters200ResponseAllOfConfigParams {
- GetDatabaseDefaultParameters200ResponseAllOfConfigParams {
- join_buffer_size: None,
- max_connections: None,
- sort_buffer_size: None,
- thread_cache_size: None,
- innodb_buffer_pool_size: None,
- auto_increment_increment: None,
- auto_increment_offset: None,
- innodb_io_capacity: None,
- innodb_purge_threads: None,
- innodb_read_io_threads: None,
- innodb_thread_concurrency: None,
- innodb_write_io_threads: None,
- innodb_log_file_size: None,
- max_allowed_packet: None,
- max_heap_table_size: None,
- sql_mode: None,
- query_cache_type: None,
- query_cache_size: None,
- query_cache_limit: None,
- innodb_flush_log_at_trx_commit: None,
- transaction_isolation: None,
- long_query_time: None,
- tmp_table_size: None,
- table_open_cache: None,
- table_open_cache_instances: None,
- innodb_flush_method: None,
- innodb_strict_mode: None,
- slow_query_log: None,
- binlog_cache_size: None,
- binlog_group_commit_sync_delay: None,
- binlog_row_image: None,
- binlog_rows_query_log_events: None,
- character_set_server: None,
- explicit_defaults_for_timestamp: None,
- group_concat_max_len: None,
- innodb_adaptive_hash_index: None,
- innodb_lock_wait_timeout: None,
- innodb_numa_interleave: None,
- net_read_timeout: None,
- net_write_timeout: None,
- regexp_time_limit: None,
- sync_binlog: None,
- table_definition_cache: None,
- log_bin_trust_function_creators: None,
- skip_name_resolve: None,
- innodb_redo_log_capacity: None,
- wait_timeout: None,
- interactive_timeout: None,
- default_time_zone: None,
- pxc_strict_mode: None,
- autovacuum_analyze_scale_factor: None,
- autovacuum_max_workers: None,
- autovacuum_naptime: None,
- autovacuum_vacuum_insert_scale_factor: None,
- autovacuum_vacuum_scale_factor: None,
- autovacuum_work_mem: None,
- bgwriter_delay: None,
- bgwriter_lru_maxpages: None,
- deadlock_timeout: None,
- gin_pending_list_limit: None,
- idle_in_transaction_session_timeout: None,
- join_collapse_limit: None,
- lock_timeout: None,
- max_prepared_transactions: None,
- shared_buffers: None,
- log_min_duration_statement: None,
- wal_buffers: None,
- temp_buffers: None,
- work_mem: None,
- default_transaction_isolation: None,
- effective_cache_size: None,
- max_wal_size: None,
- min_wal_size: None,
- wal_level: None,
- max_replication_slots: None,
- max_wal_senders: None,
- max_worker_processes: None,
- max_logical_replication_workers: None,
- max_parallel_maintenance_workers: None,
- max_parallel_workers: None,
- max_parallel_workers_per_gather: None,
- array_nulls: None,
- backend_flush_after: None,
- backslash_quote: None,
- bgwriter_flush_after: None,
- bgwriter_lru_multiplier: None,
- default_transaction_read_only: None,
- enable_hashagg: None,
- enable_hashjoin: None,
- enable_incremental_sort: None,
- enable_indexscan: None,
- enable_indexonlyscan: None,
- enable_material: None,
- enable_memoize: None,
- enable_mergejoin: None,
- enable_parallel_append: None,
- enable_parallel_hash: None,
- enable_partition_pruning: None,
- enable_partitionwise_join: None,
- enable_partitionwise_aggregate: None,
- enable_seqscan: None,
- enable_sort: None,
- enable_tidscan: None,
- exit_on_error: None,
- from_collapse_limit: None,
- jit: None,
- plan_cache_mode: None,
- quote_all_identifiers: None,
- standard_conforming_strings: None,
- statement_timeout: None,
- timezone: None,
- transform_null_equals: None,
- max_locks_per_transaction: None,
- autovacuum_vacuum_cost_limit: None,
- checkpoint_timeout: None,
- checkpoint_completion_target: None,
- wal_compression: None,
- random_page_cost: None,
- effective_io_concurrency: None,
- log_lock_waits: None,
- log_temp_files: None,
- track_io_timing: None,
- maintenance_work_mem: None,
- idle_session_timeout: None,
- io_method: None,
- io_workers: None,
- client_output_buffer_limit_normal: None,
- notify_keyspace_events: None,
- client_output_buffer_limit_pubsub: None,
- databases: None,
- timeout: None,
- maxmemory_policy: None,
- slowlog_log_slower_than: None,
- slowlog_max_len: None,
- save: None,
- appendonly: None,
- appendfsync: None,
- tcp_keepalive: None
- }
+impl Default for GetDatabaseDefaultParameters200ResponseAllOfConfigParams {
+ fn default() -> Self {
+ Self::Mysql(Default::default())
}
}