"""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)