Source code for ab.api.models.forms
"""Form models for ACPortal API."""
from __future__ import annotations
from typing import Optional
from pydantic import Field
from ab.api.models.base import RequestModel, ResponseModel
[docs]
class BillOfLadingParams(RequestModel):
"""Query parameters for GET /job/{jobDisplayId}/form/bill-of-lading."""
shipment_plan_id: Optional[str] = Field(None, alias="shipmentPlanId", description="Shipment plan identifier")
provider_option_index: Optional[int] = Field(
None, alias="providerOptionIndex", description="Provider option index"
)
[docs]
class OperationsFormParams(RequestModel):
"""Query parameters for GET /job/{jobDisplayId}/form/operations."""
ops_type: Optional[str] = Field(None, alias="type", description="Operations form type")
[docs]
class FormTypeParams(RequestModel):
"""Query parameters for form generation with type selection."""
type: Optional[str] = Field(None, alias="type", description="Form type identifier")
[docs]
class PackagingLabelsParams(RequestModel):
"""Query parameters for GET packaging labels."""
shipment_plan_id: Optional[str] = Field(None, alias="shipmentPlanId", description="Shipment plan identifier")
[docs]
class FormsShipmentPlan(ResponseModel):
"""Shipment plan for BOL selection — GET /job/{jobDisplayId}/form/shipments.
This is the only JSON-returning form endpoint. All other form endpoints
return raw PDF bytes.
"""
shipment_plan_id: Optional[str] = Field(None, alias="shipmentPlanId", description="Plan identifier")
provider_option_index: Optional[int] = Field(None, alias="providerOptionIndex", description="Provider index")
carrier_name: Optional[str] = Field(None, alias="carrierName", description="Carrier")
service_type: Optional[str] = Field(None, alias="serviceType", description="Service level")
job_shipment_id: Optional[str] = Field(None, alias="jobShipmentID", description="Shipment UUID")
job_id: Optional[str] = Field(None, alias="jobID", description="Job UUID")
from_address_id: Optional[int] = Field(None, alias="fromAddressId", description="Origin address ID")
to_address_id: Optional[int] = Field(None, alias="toAddressId", description="Destination address ID")
provider_id: Optional[str] = Field(None, alias="providerID", description="Provider UUID")
sequence_no: Optional[int] = Field(None, alias="sequenceNo", description="Sequence number")
from_location_company_name: Optional[str] = Field(
None, alias="fromLocationCompanyName", description="Origin company name"
)
to_location_company_name: Optional[str] = Field(
None, alias="toLocationCompanyName", description="Destination company name"
)
transport_type: Optional[str] = Field(
None, alias="transportType", description="Transport type (PickUp, Delivery, House)"
)
provider_company_name: Optional[str] = Field(
None, alias="providerCompanyName", description="Provider company name"
)
option_index: Optional[int] = Field(None, alias="optionIndex", description="Option index")