Source code for ab.api.endpoints.web2lead

"""Web2Lead API endpoints (2 routes)."""

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from ab.api.models.web2lead import Web2LeadGetParams, Web2LeadRequest, Web2LeadResponse

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

_GET = Route(
    "GET", "/Web2Lead/get",
    params_model="Web2LeadGetParams", response_model="Web2LeadResponse", api_surface="abc",
)
_POST = Route(
    "POST", "/Web2Lead/post",
    request_model="Web2LeadRequest", response_model="Web2LeadResponse", api_surface="abc",
)


[docs] class Web2LeadEndpoint(BaseEndpoint): """Web-to-lead capture (ABC API)."""
[docs] def get(self, *, params: Web2LeadGetParams | dict) -> Web2LeadResponse: """GET /Web2Lead/get. Args: params: Lead query parameters (29 optional string fields). Accepts a :class:`Web2LeadGetParams` instance or a dict with snake_case or PascalCase keys. Params model: :class:`Web2LeadGetParams` Docs: https://ab-sdk.readthedocs.io/en/latest/api/web2lead/get.html Query params: Web2LeadGetParams Response model: Web2LeadResponse """ return self._request(_GET, params=params)
[docs] def post(self, *, data: Web2LeadRequest | dict) -> Web2LeadResponse: """POST /Web2Lead/post. Args: data: Web-to-lead submission payload. Accepts a :class:`Web2LeadRequest` instance or a dict. Request model: :class:`Web2LeadRequest` Docs: https://ab-sdk.readthedocs.io/en/latest/api/web2lead/post.html Request model: Web2LeadRequest Response model: Web2LeadResponse """ return self._request(_POST, json=data)