# timeweb-cloud
API Timeweb Cloud позволяет вам управлять ресурсами в облаке программным способом с использованием обычных HTTP-запросов.
Множество функции, которые доступны в панели управления Timeweb Cloud, также доступны через API, что позволяет вам автоматизировать ваши собственные сценарии.
Эта библиотека позволяет вам легко использовать API Timeweb Cloud в вашем приложении на Python.
[Документация API](https://timeweb.cloud/api-docs)
[![OpenAPI etag: 6409ee1d-10cd8d](https://img.shields.io/badge/OpenAPI%20etag-6409ee1d--10cd8d-blue)](https://github.com/LulzLoL231/timeweb-cloud/wiki/) [Как определяется etag?](#etag)
[![PyPI version](https://badge.fury.io/py/timeweb-cloud.svg)](https://badge.fury.io/py/timeweb-cloud) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/timeweb-cloud)](https://pypi.org/project/timeweb-cloud/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/timeweb-cloud)](https://pypi.org/project/timeweb-cloud/) [![PyPI - License](https://img.shields.io/pypi/l/timeweb-cloud)](https://github.com/LulzLoL231/timeweb-cloud/blob/master/LICENSE)
## Установка
```bash
pip install timeweb-cloud
```
## Пример использования
Библиотека поддерживает синхронный и асинхронный варианты использования. В примерах ниже используется синхронный вариант, но вы можете использовать асинхронный вариант, заменив `tw = Timeweb(...)` на `tw = AsyncTimeweb(...)`
```python
from timeweb import Timeweb
tw = Timeweb('token')
account_status = tw.account.get_status() # schemas.account.AccountStatus
print(account_status)
```
## Что доступно?
- [x] Аккаунт `tw.account`
- [x] Базы данных `tw.dbs`
- [x] Балансировщики `tw.balancers`
- [x] Выделенные серверы `tw.servers.dedics`
- [x] Домены `tw.domains`
- [x] Облачные серверы `tw.servers.cloud`
- [x] Образы `tw.images`
- [x] Проекты `tw.projects`
- [x] Токены API `tw.tokens`
- [x] Kubernetes `tw.k8s`
- [x] S3-хранилище `tw.s3`
- [x] SSH-ключи `tw.ssh_keys`
- [x] Почта `tw.mail`
## Etag
Etag - это уникальный идентификатор, который используется для проверки изменений в API. Он будет использоваться чтобы определять текущею версию Swagger API, т.к. сейчас Swagger API Timeweb Cloud не имеет версионности и/или changelog'а. Получается он из запроса к спецификации OpenAPI по ссылке https://timeweb.cloud/api-docs-data/bundle.json. Сервер сам его возвращает и мы пока операемся на него. В будущем, когда/если Swagger API Timeweb Cloud будет иметь версионность и/или changelog, будем опираться на их версию Swagger API.
Raw data
{
"_id": null,
"home_page": "https://github.com/LulzLoL231/timeweb-cloud",
"name": "timeweb-cloud",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10,<4.0",
"maintainer_email": "",
"keywords": "timeweb,timeweb.cloud,api,wrapper",
"author": "Maxim Mosin",
"author_email": "max@mosin.pw",
"download_url": "https://files.pythonhosted.org/packages/d9/7c/641a12b55db1cef454aa3bc6eabf75351b37ae148676dfeb5487b0c5756a/timeweb_cloud-0.12.2.tar.gz",
"platform": null,
"description": "# timeweb-cloud\nAPI Timeweb Cloud \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0445 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.\n\n\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f Timeweb Cloud, \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0447\u0435\u0440\u0435\u0437 API, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438.\n\n\u042d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043b\u0435\u0433\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c API Timeweb Cloud \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 Python.\n\n[\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f API](https://timeweb.cloud/api-docs)\n\n[![OpenAPI etag: 6409ee1d-10cd8d](https://img.shields.io/badge/OpenAPI%20etag-6409ee1d--10cd8d-blue)](https://github.com/LulzLoL231/timeweb-cloud/wiki/) [\u041a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f etag?](#etag)\n\n[![PyPI version](https://badge.fury.io/py/timeweb-cloud.svg)](https://badge.fury.io/py/timeweb-cloud) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/timeweb-cloud)](https://pypi.org/project/timeweb-cloud/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/timeweb-cloud)](https://pypi.org/project/timeweb-cloud/) [![PyPI - License](https://img.shields.io/pypi/l/timeweb-cloud)](https://github.com/LulzLoL231/timeweb-cloud/blob/master/LICENSE)\n\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n\n```bash\npip install timeweb-cloud\n```\n\n## \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043d\u0438\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0437\u0430\u043c\u0435\u043d\u0438\u0432 `tw = Timeweb(...)` \u043d\u0430 `tw = AsyncTimeweb(...)`\n\n```python\nfrom timeweb import Timeweb\n\ntw = Timeweb('token')\naccount_status = tw.account.get_status() # schemas.account.AccountStatus\nprint(account_status)\n```\n\n## \u0427\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e?\n\n - [x] \u0410\u043a\u043a\u0430\u0443\u043d\u0442 `tw.account`\n - [x] \u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 `tw.dbs`\n - [x] \u0411\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0438 `tw.balancers`\n - [x] \u0412\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b `tw.servers.dedics`\n - [x] \u0414\u043e\u043c\u0435\u043d\u044b `tw.domains`\n - [x] \u041e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b `tw.servers.cloud`\n - [x] \u041e\u0431\u0440\u0430\u0437\u044b `tw.images`\n - [x] \u041f\u0440\u043e\u0435\u043a\u0442\u044b `tw.projects`\n - [x] \u0422\u043e\u043a\u0435\u043d\u044b API `tw.tokens`\n - [x] Kubernetes `tw.k8s`\n - [x] S3-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 `tw.s3`\n - [x] SSH-\u043a\u043b\u044e\u0447\u0438 `tw.ssh_keys`\n - [x] \u041f\u043e\u0447\u0442\u0430 `tw.mail`\n\n## Etag\nEtag - \u044d\u0442\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 API. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u044e \u0432\u0435\u0440\u0441\u0438\u044e Swagger API, \u0442.\u043a. \u0441\u0435\u0439\u0447\u0430\u0441 Swagger API Timeweb Cloud \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u0438/\u0438\u043b\u0438 changelog'\u0430. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u043d \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 OpenAPI \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 https://timeweb.cloud/api-docs-data/bundle.json. \u0421\u0435\u0440\u0432\u0435\u0440 \u0441\u0430\u043c \u0435\u0433\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438 \u043c\u044b \u043f\u043e\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e. \u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c, \u043a\u043e\u0433\u0434\u0430/\u0435\u0441\u043b\u0438 Swagger API Timeweb Cloud \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0438/\u0438\u043b\u0438 changelog, \u0431\u0443\u0434\u0435\u043c \u043e\u043f\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044e Swagger API.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Timeweb Cloud API wrapper",
"version": "0.12.2",
"split_keywords": [
"timeweb",
"timeweb.cloud",
"api",
"wrapper"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6f134f6643ff79468fa39c43f1ba8f6120164a50cb79b1fc77a4d753b394d405",
"md5": "a93f6ddf1ef51005acf373d63642be55",
"sha256": "949a6d69e916bbac04538b0dfa136f21102b00c7d08bf52f3d7db9a3614fcb80"
},
"downloads": -1,
"filename": "timeweb_cloud-0.12.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a93f6ddf1ef51005acf373d63642be55",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10,<4.0",
"size": 136725,
"upload_time": "2023-03-12T17:14:14",
"upload_time_iso_8601": "2023-03-12T17:14:14.481459Z",
"url": "https://files.pythonhosted.org/packages/6f/13/4f6643ff79468fa39c43f1ba8f6120164a50cb79b1fc77a4d753b394d405/timeweb_cloud-0.12.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d97c641a12b55db1cef454aa3bc6eabf75351b37ae148676dfeb5487b0c5756a",
"md5": "a214f206fa117fdcfdf841a64b4768f9",
"sha256": "ec2b06cf7491453b86909e9d996ee2ccda9493b78087ea6b28f71bd537335c36"
},
"downloads": -1,
"filename": "timeweb_cloud-0.12.2.tar.gz",
"has_sig": false,
"md5_digest": "a214f206fa117fdcfdf841a64b4768f9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10,<4.0",
"size": 84307,
"upload_time": "2023-03-12T17:14:16",
"upload_time_iso_8601": "2023-03-12T17:14:16.153001Z",
"url": "https://files.pythonhosted.org/packages/d9/7c/641a12b55db1cef454aa3bc6eabf75351b37ae148676dfeb5487b0c5756a/timeweb_cloud-0.12.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-12 17:14:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "LulzLoL231",
"github_project": "timeweb-cloud",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "timeweb-cloud"
}