Company Models

Models for company-related API responses with inheritance hierarchy.

Base Models

Detailed Models

class ABConnect.api.models.companies.CompanyDetails(**data)[source]

Bases: IdentifiedModel

CompanyDetails model

Extended company information including addresses and contacts.

Example Response Structure:

{
  "companyID": "ed282b80-54fe-4f42-bf1b-69103ce1f76c",
  "companyName": "Training",
  "companyCode": "TRAINING",
  "companyEmail": "training@abconnect.co",
  "companyPhone": "8009814202",
  "mainAddress": {
    "address1": "2534 Vista Dr",
    "city": "Castle Rock",
    "state": "CO",
    "zipCode": "80104"
  },
  "companyInfo": {
    "isThirdParty": false,
    "isActive": true
  }
}
details: Optional[CompanyDetailsBaseInfo]
preferences: Optional[CompanyDetailsPreferences]
capabilities: Optional[CommercialCapabilities]
address: Optional[AddressDetails]
account_information: Optional[FranchiseeCarrierAccounts]
pricing: Optional[CompanyDetailsServicePricings]
insurance: Optional[CompanyDetailsInsurancePricing]
final_mile_tariff: Optional[List[CompanyDetailsFinalMileTariffItem]]
taxes: Optional[CompanyDetailsTaxPricing]
read_only_access: Optional[bool]
model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'populate_by_name': True, 'str_strip_whitespace': True, 'use_enum_values': True, 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Supporting Models

Usage Examples

Working with company hierarchy:

from ABConnect import ABConnectAPI

api = ABConnectAPI()

# Get basic company info
company = api.companies.get("ed282b80-54fe-4f42-bf1b-69103ce1f76c")
print(f"{company.name} ({company.code})")

# Get detailed information
details = api.companies.get_details(company.id)
print(f"Email: {details.companyEmail}")
print(f"Phone: {details.companyPhone}")
print(f"Address: {details.mainAddress.address1}")

# Get full details including pricing
full = api.companies.get_full_details(company.id)
print(f"Base markup: {full.pricing.transportationMarkups.base}")

Searching for companies:

# Get all available companies
companies = api.companies.get_available()

for company in companies:
    print(f"{company.name} - {company.code}")

    # Check if it has a parent company
    if company.parentCompanyId:
        parent = api.companies.get(company.parentCompanyId)
        print(f"  Parent: {parent.name}")

Model Inheritance

The company models use inheritance to avoid duplication:

  1. CompanyBase - Common fields (id, code, name, parentCompanyId)

  2. CompanyBasic - Inherits from CompanyBase, used for simple listings

  3. CompanyDetails - Adds contact info, addresses, and settings

  4. CompanyFullDetails - Adds pricing, insurance, and capabilities

This allows consistent field names across all company endpoints while providing appropriate levels of detail for each use case.

See Also

  • Contact Models - Contact models associated with companies

  • Address Models - Address models used in company details

  • CompanyType - Company type enumeration