Source code for zapi.infrastructure.api_clients.ticket_field_api_client

from __future__ import annotations
from typing import Iterable
from ..http.client import HttpClient
from ..http.pagination import yield_items
from ..mappers.ticket_field_mapper import to_domain, to_payload
from ...domain.models.ticket_field import TicketField

[docs] class TicketFieldApiClient: """HTTP adapter for Zendesk Ticket Fields with shared cursor pagination.""" def __init__(self, http: HttpClient) -> None: self._http = http
[docs] def list(self) -> Iterable[TicketField]: for obj in yield_items( get_json=self._http.get, first_path="/api/v2/ticket_fields.json", base_url=self._http.base_url, items_key="ticket_fields", ): yield to_domain(obj)
[docs] def get(self, field_id: int) -> TicketField: data = self._http.get(f"/api/v2/ticket_fields/{field_id}.json") return to_domain(data["ticket_field"])
[docs] def create(self, entity: TicketField) -> TicketField: payload = to_payload(entity) data = self._http.post("/api/v2/ticket_fields.json", payload) return to_domain(data["ticket_field"])
[docs] def update(self, field_id: int, entity: TicketField) -> TicketField: payload = to_payload(entity) data = self._http.put(f"/api/v2/ticket_fields/{field_id}.json", payload) return to_domain(data["ticket_field"])
[docs] def delete(self, field_id: int) -> None: self._http.delete(f"/api/v2/ticket_fields/{field_id}.json")