Skip to main content

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.4.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

servicedesk_client-0.2.4-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file servicedesk_client-0.2.4.tar.gz.

File metadata

  • Download URL: servicedesk_client-0.2.4.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.12.4 CPython/3.12.2

File hashes

Hashes for servicedesk_client-0.2.4.tar.gz
Algorithm Hash digest
SHA256 9af0b9a6552f86044f15fd8006166ae9ce062694f117115e99667f9cc2411098
MD5 c45eb1c63b3a77e3e005b802af55d5bc
BLAKE2b-256 563629cb630d08731bdf2ddbb8b543368d70ffd9f4dcd04b2a6087bee07ffda5

See more details on using hashes here.

File details

Details for the file servicedesk_client-0.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for servicedesk_client-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 93353baedf0f1209b6d635b7bed836bfcbcae259c6e65b843bad4187bd9a0e24
MD5 1b5f74491955c9b421c7c3e4b3cf5156
BLAKE2b-256 a2be27824f91ae87ab29f13bbae503765f19d47c142b2e6ed6fa25ad88695896

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page