# <img src="./img/logo.svg"> SIGNAL API
![PyPI - Version](https://img.shields.io/pypi/v/sgnl-api) [![Telegram chat](https://img.shields.io/badge/Просто_о_BIM-join-blue?logo=telegram)](https://t.me/prostobim)
## Обертка над API Signal
Официальная документация [https://api.sgnl.pro/openapi/swagger/index.html](https://api.sgnl.pro/openapi/swagger/index.html)
## Установка
```bash
pip install -U sgnl-api
```
## Пример
```python
import asyncio
import os
from sgnl_api import DocsApi
from dotenv import load_dotenv
load_dotenv()
CLIENT_ID = os.getenv("CLIENT_ID")
SECRET_ID = os.getenv("SECRET_ID")
async def main():
docs = await DocsApi.create(
client_id=CLIENT_ID,
client_secret=SECRET_ID
)
projects = await docs.project.get_list()
for project in projects:
print(project)
if __name__ == "__main__":
asyncio.run(main())
```
## Методы
| Метод | Описание | Возвращает |
|-------------------------|-----------------------------------------------------------------|--------------------|
| `item.get_list` | Список файлов в директории | `list[dict]` |
| `item.count` | Количество файлов в директории | `int` |
| `item.create_file` | Создает новый файл с версией | `UUID` |
| `item.create_link` | Создает новую ссылку | `UUID` |
| `item.get_link` | Получает ссылку для загрузки файла | `dict` |
| `item.add_version` | Добавляет новую версию к существующему файлу | `None` |
| `folder.get_list` | Список дочерних папок | `list[dict]` |
| `folder.create` | Создает новую папку | `UUID` |
| `folder.rename` | Переименовывает папку | `None` |
| `project.root_folder` | Информация о корневой папке проекта | `dict` |
| `project.root_folder_id`| UUID корневой папки проекта | `UUID` |
| `project.get_list` | Список проектов | `list[dict]` |
| `project.info` | Информация о проекте | `dict` |
| `project.users` | Список пользователей проекта | `list[dict]` |
| `project.roles` | Список ролей проекта | `list[dict]` |
| `project.users_permissions` | Список прав пользователя в проекте | `list[str]` |
| `company.users_list` | Список пользователей компании | `list[dict]` |
| `company.roles_list` | Список ролей компании | `list[dict]` |
| `version.get_list` | Список версий файла | `list[dict]` |
| `version.count` | Количество версий файла | `int` |
| `version.create` | Создает новую версию объекта | `UUID` |
| `file.get_object_upload`| Получает тикет на загрузку объекта | `dict` |
| `file.commit_uploading` | Завершает загрузку объекта | `None` |
| `file.upload` | Загружает файл | `dict` или `None` |
Raw data
{
"_id": null,
"home_page": "https://github.com/gritsyuk/sgnl-api",
"name": "sgnl-api",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "sgnl api signal docs construction supervision operation inspections constarctionsite building management",
"author": "Igor Gritsyuk",
"author_email": "gritsyuk.igor@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/52/b4/78578cd3c609fbfa6358fb06443c890f8d32b910134c8f69d49c241e6eef/sgnl_api-0.0.3.tar.gz",
"platform": null,
"description": "# <img src=\"./img/logo.svg\"> SIGNAL API\r\n\r\n![PyPI - Version](https://img.shields.io/pypi/v/sgnl-api) [![Telegram chat](https://img.shields.io/badge/\u041f\u0440\u043e\u0441\u0442\u043e_\u043e_BIM-join-blue?logo=telegram)](https://t.me/prostobim)\r\n## \u041e\u0431\u0435\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 API Signal \r\n\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f [https://api.sgnl.pro/openapi/swagger/index.html](https://api.sgnl.pro/openapi/swagger/index.html)\r\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n```bash\r\npip install -U sgnl-api\r\n```\r\n\r\n## \u041f\u0440\u0438\u043c\u0435\u0440\r\n```python\r\nimport asyncio\r\nimport os\r\nfrom sgnl_api import DocsApi\r\nfrom dotenv import load_dotenv\r\n\r\nload_dotenv()\r\nCLIENT_ID = os.getenv(\"CLIENT_ID\")\r\nSECRET_ID = os.getenv(\"SECRET_ID\")\r\n\r\n\r\nasync def main():\r\n\r\n docs = await DocsApi.create(\r\n client_id=CLIENT_ID,\r\n client_secret=SECRET_ID\r\n )\r\n projects = await docs.project.get_list()\r\n for project in projects:\r\n print(project)\r\n\r\n\r\nif __name__ == \"__main__\":\r\n asyncio.run(main())\r\n```\r\n## \u041c\u0435\u0442\u043e\u0434\u044b\r\n| \u041c\u0435\u0442\u043e\u0434 | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 | \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 |\r\n|-------------------------|-----------------------------------------------------------------|--------------------|\r\n| `item.get_list` | \u0421\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 | `list[dict]` |\r\n| `item.count` | \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 | `int` |\r\n| `item.create_file` | \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 | `UUID` |\r\n| `item.create_link` | \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 | `UUID` |\r\n| `item.get_link` | \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 | `dict` |\r\n| `item.add_version` | \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 | `None` |\r\n| `folder.get_list` | \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u043f\u0430\u043f\u043e\u043a | `list[dict]` |\r\n| `folder.create` | \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 | `UUID` |\r\n| `folder.rename` | \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u043f\u043a\u0443 | `None` |\r\n| `project.root_folder` | \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 | `dict` |\r\n| `project.root_folder_id`| UUID \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 | `UUID` |\r\n| `project.get_list` | \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 | `list[dict]` |\r\n| `project.info` | \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0435 | `dict` |\r\n| `project.users` | \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 | `list[dict]` |\r\n| `project.roles` | \u0421\u043f\u0438\u0441\u043e\u043a \u0440\u043e\u043b\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 | `list[dict]` |\r\n| `project.users_permissions` | \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0430\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 | `list[str]` |\r\n| `company.users_list` | \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 | `list[dict]` |\r\n| `company.roles_list` | \u0421\u043f\u0438\u0441\u043e\u043a \u0440\u043e\u043b\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 | `list[dict]` |\r\n| `version.get_list` | \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0435\u0440\u0441\u0438\u0439 \u0444\u0430\u0439\u043b\u0430 | `list[dict]` |\r\n| `version.count` | \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0440\u0441\u0438\u0439 \u0444\u0430\u0439\u043b\u0430 | `int` |\r\n| `version.create` | \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 | `UUID` |\r\n| `file.get_object_upload`| \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0438\u043a\u0435\u0442 \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 | `dict` |\r\n| `file.commit_uploading` | \u0417\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 | `None` |\r\n| `file.upload` | \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0444\u0430\u0439\u043b | `dict` \u0438\u043b\u0438 `None` |\r\n\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Asynchronous python wrapper over API sgnl.pro",
"version": "0.0.3",
"project_urls": {
"Download": "https://github.com/gritsyuk/sgnl-api/archive/refs/heads/develop.zip",
"GitHub": "https://github.com/gritsyuk/sgnl-api",
"Homepage": "https://github.com/gritsyuk/sgnl-api"
},
"split_keywords": [
"sgnl",
"api",
"signal",
"docs",
"construction",
"supervision",
"operation",
"inspections",
"constarctionsite",
"building",
"management"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "1f4cc87712c440dcc54a27643319599e6cbdc88226e9b308791f246e14c05678",
"md5": "148021594139eb48b2b09deb84a9ddc0",
"sha256": "19cec54126366acb54fa7ff6cfd0520381adf0f969693ec8a83cb2baf9a32460"
},
"downloads": -1,
"filename": "sgnl_api-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "148021594139eb48b2b09deb84a9ddc0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 9008,
"upload_time": "2024-11-20T13:38:28",
"upload_time_iso_8601": "2024-11-20T13:38:28.539460Z",
"url": "https://files.pythonhosted.org/packages/1f/4c/c87712c440dcc54a27643319599e6cbdc88226e9b308791f246e14c05678/sgnl_api-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "52b478578cd3c609fbfa6358fb06443c890f8d32b910134c8f69d49c241e6eef",
"md5": "6b27d19c11f9c94e4f68f4353927a71a",
"sha256": "dd84716fce70985245873f963ce29f1be4ebaa797fb016237cf379892e725bb5"
},
"downloads": -1,
"filename": "sgnl_api-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "6b27d19c11f9c94e4f68f4353927a71a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 9509,
"upload_time": "2024-11-20T13:38:30",
"upload_time_iso_8601": "2024-11-20T13:38:30.369658Z",
"url": "https://files.pythonhosted.org/packages/52/b4/78578cd3c609fbfa6358fb06443c890f8d32b910134c8f69d49c241e6eef/sgnl_api-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-20 13:38:30",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "gritsyuk",
"github_project": "sgnl-api",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "sgnl-api"
}