from __future__ import annotations
import dataclasses
from dataclasses import dataclass, field
from typing import Any
[документация]
@dataclass(kw_only=True)
class Tag:
"""Тег сущности AmoCRM.
Attributes:
id: Идентификатор тега.
name: Название тега.
"""
id: int | None = None
name: str | None = None
[документация]
@classmethod
def from_dict(cls, data: dict[str, Any]) -> Tag:
"""Создать экземпляр из словаря API."""
return cls(id=data.get("id"), name=data.get("name"))
[документация]
def to_dict(self) -> dict[str, Any]:
"""Сериализовать в словарь, исключая поля со значением ``None``."""
return {k: v for k, v in dataclasses.asdict(self).items() if v is not None}
[документация]
@dataclass(kw_only=True)
class CustomFieldValue:
"""Значение кастомного поля AmoCRM.
Attributes:
field_id: Идентификатор кастомного поля.
values: Список значений поля (каждое — словарь с ключами ``value``
и опционально ``enum_id`` / ``enum_code``).
"""
field_id: int
values: list[dict[str, Any]] = field(default_factory=list)
[документация]
@classmethod
def from_dict(cls, data: dict[str, Any]) -> CustomFieldValue:
"""Создать экземпляр из словаря API."""
return cls(field_id=data["field_id"], values=data.get("values", []))
[документация]
def to_dict(self) -> dict[str, Any]:
"""Сериализовать в словарь для отправки в API."""
return {"field_id": self.field_id, "values": self.values}