Source code for ab.api.endpoints.partners

"""Partners API endpoints (3 routes)."""

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from ab.api.models.partners import Partner, PartnerSearchRequest

from ab.api.base import BaseEndpoint
from ab.api.route import Route

_LIST = Route("GET", "/partner", params_model="PartnerListParams", response_model="List[Partner]")
_GET = Route("GET", "/partner/{id}", response_model="Partner")
_SEARCH = Route("POST", "/partner/search", request_model="PartnerSearchRequest", response_model="List[Partner]")


[docs] class PartnersEndpoint(BaseEndpoint): """Partner operations (ACPortal API)."""
[docs] def list(self) -> list[Partner]: """GET /partner Docs: https://ab-sdk.readthedocs.io/en/latest/api/partners/list.html Query params: PartnerListParams Response model: List[Partner] """ return self._request(_LIST)
[docs] def get(self, partner_id: str) -> Partner: """GET /partner/{id} Docs: https://ab-sdk.readthedocs.io/en/latest/api/partners/get.html Response model: Partner """ return self._request(_GET.bind(id=partner_id))
[docs] def search(self, *, data: PartnerSearchRequest | dict) -> list[Partner]: """POST /partner/search. Args: data: Partner search payload. Accepts a :class:`PartnerSearchRequest` instance or a dict. Request model: :class:`PartnerSearchRequest` Docs: https://ab-sdk.readthedocs.io/en/latest/api/partners/search.html Request model: PartnerSearchRequest Response model: List[Partner] """ return self._request(_SEARCH, json=data)