51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
"""Contact book resource client using TypedDict shapes (no Pydantic)."""
|
|
from __future__ import annotations
|
|
|
|
from typing import Optional, Tuple, List
|
|
|
|
from .types import (
|
|
APIError,
|
|
ContactBook,
|
|
ContactBookCreate,
|
|
ContactBookCreateResponse,
|
|
ContactBookDeleteResponse,
|
|
ContactBookUpdate,
|
|
ContactBookUpdateResponse,
|
|
)
|
|
|
|
|
|
class ContactBooks:
|
|
"""Client for `/contactBooks` endpoints."""
|
|
|
|
def __init__(self, usesend: "UseSend") -> None:
|
|
self.usesend = usesend
|
|
|
|
def list(self) -> Tuple[Optional[List[ContactBook]], Optional[APIError]]:
|
|
data, err = self.usesend.get("/contactBooks")
|
|
return (data, err) # type: ignore[return-value]
|
|
|
|
def create(
|
|
self, payload: ContactBookCreate
|
|
) -> Tuple[Optional[ContactBookCreateResponse], Optional[APIError]]:
|
|
data, err = self.usesend.post("/contactBooks", payload)
|
|
return (data, err) # type: ignore[return-value]
|
|
|
|
def get(self, contact_book_id: str) -> Tuple[Optional[ContactBook], Optional[APIError]]:
|
|
data, err = self.usesend.get(f"/contactBooks/{contact_book_id}")
|
|
return (data, err) # type: ignore[return-value]
|
|
|
|
def update(
|
|
self, contact_book_id: str, payload: ContactBookUpdate
|
|
) -> Tuple[Optional[ContactBookUpdateResponse], Optional[APIError]]:
|
|
data, err = self.usesend.patch(f"/contactBooks/{contact_book_id}", payload)
|
|
return (data, err) # type: ignore[return-value]
|
|
|
|
def delete(
|
|
self, contact_book_id: str
|
|
) -> Tuple[Optional[ContactBookDeleteResponse], Optional[APIError]]:
|
|
data, err = self.usesend.delete(f"/contactBooks/{contact_book_id}")
|
|
return (data, err) # type: ignore[return-value]
|
|
|
|
|
|
from .usesend import UseSend # noqa: E402 pylint: disable=wrong-import-position
|