API client for ServiceDesk Plus
Project description
REST API client for ServiceDesk Plus
1) Методы
1.1) get_request
- получение заявки по id
1.2) get_requests
- получение заявок по условиям
1.3) create_request
- создание заявки
1.4) update_request
- обновление заявки
1.5) cancel_request
- отмена заявки
1.6) attach_file_to_request
- прикрепление файлов к заявке
1.7) get_categories
- получение категорий
1.8) get_service_categories
- получение категорий услуг
1.9) get_subcategories
- получение подкатегорий
1.10) get_templates
- получение шаблонов для заявок
1.11) get_template
- получение шаблона по id
1.12) get_urgencies
- получение возможных значений срочности заявок
1.13) add_note
- добавление заметок к заявке
1.14) get_resolution
- получение решения заявки
Все методы могут вызывать исключения HelpdeskClientError
и httpx.HTTPError
2) Установка
pip
pip install servicedesk-client
pdm
pdm add servicedesk-client
3) Пример внедрения
3.1) Настройки
class HelpdeskSettings(BaseSettings):
model_config = SettingsConfigDict(str_strip_whitespace=True, env_prefix="helpdesk_")
authtoken: SecretStr
base_url: str
timeout: int
3.2) Http Client
HelpdeskHttpClient = NewType("HelpdeskHttpClient", httpx.AsyncClient)
@asynccontextmanager
async def get_helpdesk_http_client(
settings: HelpdeskSettings,
) -> AsyncIterator[HelpdeskHttpClient]:
async with httpx.AsyncClient(
headers={"authtoken": settings.authtoken.get_secret_value()},
base_url=settings.base_url,
timeout=settings.timeout,
) as client:
yield HelpdeskHttpClient(client)
3.3) DI (используется библиотека https://pypi.org/project/aioinject/)
from helpdesk_client.v3 import HelpdeskClient
@asynccontextmanager
async def _get_helpdesk_client(
http_client: HelpdeskHttpClient,
) -> AsyncIterator[HelpdeskClient]:
yield HelpdeskClient(http_client=http_client)
PROVIDERS: Providers = [
aioinject.Singleton(get_helpdesk_http_client, HelpdeskHttpClient),
aioinject.Singleton(_get_helpdesk_client),
]
3.4) Helpdesk Service
from helpdesk_client.v3 import HelpdeskClient
class HelpdeskService:
def __init__(self, helpdesk_client: HelpdeskClient) -> None:
self._helpdesk_client = helpdesk_client
...
4) Пример получения 5 последних заявок
import httpx
from helpdesk_client.enums import SortEnum
from helpdesk_client.exceptions import HelpdeskClientError
from helpdesk_client.v3 import HelpdeskClient
from helpdesk_client.v3.schemas import (
RequestFilterParams,
RequestListSchema,
RequestSearchFields,
)
from result import as_async_result
class HelpdeskService:
def __init__(self, helpdesk_client: HelpdeskClient) -> None:
self._helpdesk_client = helpdesk_client
@as_async_result(HelpdeskClientError, httpx.HTTPError)
async def get_requests(
self,
full_name: str,
requester_id: int | None,
) -> RequestListSchema:
search_fields = RequestSearchFields(requester_id=requester_id)
if requester_id is None:
search_fields = RequestSearchFields(requester_name=full_name)
return await self._helpdesk_client.get_requests(
filter_=RequestFilterParams(
limit=5,
offset=0,
sort_field="created_time",
sort_order=SortEnum.desc,
search_fields=search_fields,
),
)
Не удалось составить запрос для получения списка заявок по почте заявителя. Поэтому для запроса используются ФИО
или helpdesk_id
.
ФИО
в редких случаях могут повторяться у разных людей (возможны коллизии), но helpdesk_id
доступен не всегда, поэтому является опциональным. В примере helpdesk_id
используется в запросе только тогда, когда передается в метод.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
servicedesk_client-0.2.3.tar.gz
(10.2 kB
view details)
Built Distribution
File details
Details for the file servicedesk_client-0.2.3.tar.gz
.
File metadata
- Download URL: servicedesk_client-0.2.3.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.18.1 CPython/3.11.9 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16762823fbaa4ee0cc88b8fee8507cbebdbcd31cb531e08addfa6bde5ffa38d1 |
|
MD5 | a41ffc522cd262f6b73192b282930e8a |
|
BLAKE2b-256 | bd76cdef2ceff5bec3b2d7fad2ea012c9d4660e8d5e715db0096ad55ca0f1276 |
File details
Details for the file servicedesk_client-0.2.3-py3-none-any.whl
.
File metadata
- Download URL: servicedesk_client-0.2.3-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.18.1 CPython/3.11.9 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb3abbeeff3849750aed2271d2840587e9b718793d1cc6909c8e4c925dfedb3e |
|
MD5 | b4509f780744f05505a0f3c82402e630 |
|
BLAKE2b-256 | 2500a9d3af68314bb28fb8b922dca3c33a8355e207fa11c5c3c8fbb9a15bc47a |