Source code for ab.api.models.web2lead

"""Web2Lead models for the ABC API."""

from __future__ import annotations

from typing import Optional

from pydantic import Field

from ab.api.models.base import RequestModel, ResponseModel


[docs] class Web2LeadGetParams(RequestModel): """Query parameters for GET /Web2Lead/get — 29 params, all optional strings.""" access_key: Optional[str] = Field(None, alias="AccessKey", description="API access key") first_name: Optional[str] = Field(None, alias="FirstName", description="Lead first name") last_name: Optional[str] = Field(None, alias="LastName", description="Lead last name") address1: Optional[str] = Field(None, alias="Address1", description="Street address line 1") address2: Optional[str] = Field(None, alias="Address2", description="Street address line 2") city: Optional[str] = Field(None, alias="City", description="City") state_province: Optional[str] = Field(None, alias="StateProvince", description="State or province") zip_postal_code: Optional[str] = Field(None, alias="ZipPostalCode", description="ZIP or postal code") referrer_page: Optional[str] = Field(None, alias="ReferrerPage", description="Referring page URL") entry_url: Optional[str] = Field(None, alias="EntryUrl", description="Entry URL") submission_page: Optional[str] = Field(None, alias="SubmissionPage", description="Form submission page") how_heard: Optional[str] = Field(None, alias="HowHeard", description="How the lead heard about us") email: Optional[str] = Field(None, alias="Email", description="Lead email address") phone: Optional[str] = Field(None, alias="Phone", description="Lead phone number") ship_date: Optional[str] = Field(None, alias="ShipDate", description="Requested ship date") ship_from: Optional[str] = Field(None, alias="ShipFrom", description="Ship from location") ship_to: Optional[str] = Field(None, alias="ShipTo", description="Ship to location") business_lead: Optional[str] = Field(None, alias="BusinessLead", description="Business lead flag") referred_by: Optional[str] = Field(None, alias="ReferredBy", description="Referral source") referred_name: Optional[str] = Field(None, alias="ReferredName", description="Referrer name") customer_comments: Optional[str] = Field(None, alias="CustomerComments", description="Customer comments") ip_address: Optional[str] = Field(None, alias="IPAddress", description="Client IP address") search_term: Optional[str] = Field(None, alias="SearchTerm", description="Search term used") franchisee_id: Optional[str] = Field(None, alias="FranchiseeId", description="Franchisee UUID") company_name: Optional[str] = Field(None, alias="CompanyName", description="Company name") paid: Optional[str] = Field(None, alias="Paid", description="Paid status") commodity: Optional[str] = Field(None, alias="Commodity", description="Commodity type") industry: Optional[str] = Field(None, alias="Industry", description="Industry") full_name: Optional[str] = Field(None, alias="FullName", description="Lead full name")
[docs] class Web2LeadGETResult(ResponseModel): """Inner result object from GET /Web2Lead/get.""" nc_import_failed: Optional[bool] = Field(None, alias="NC_Import_Failed", description="Whether import failed") nc_import_error_message: Optional[str] = Field(None, alias="NC_Import_ErrorMessage", description="Error message") nc_job_id: Optional[str] = Field(None, alias="NC_JobId", description="Created job ID") nc_contact_id: Optional[str] = Field(None, alias="NC_ContactId", description="Created contact ID")
[docs] class Web2LeadResponse(ResponseModel): """Response from GET /Web2Lead/get. Live API wraps the result under ``SubmitNewLeadGETResult``. """ result: Optional[Web2LeadGETResult] = Field( None, alias="SubmitNewLeadGETResult", description="Lead submission result" )
[docs] class Web2LeadRequest(RequestModel): """Body for POST /Web2Lead/post.""" name: Optional[str] = Field(None, description="Lead name") email: Optional[str] = Field(None, description="Lead email") phone: Optional[str] = Field(None, description="Lead phone") company: Optional[str] = Field(None, description="Lead company") message: Optional[str] = Field(None, description="Lead message/inquiry")