Builder Module

The Builder module provides functionality to dynamically construct API requests from static JSON templates.

class ABConnect.Builder.APIRequestBuilder(req_type='Regular', base_data=None)[source]

Bases: object

Builder for API requests using static JSON configurations.

__init__(req_type='Regular', base_data=None)[source]
load(base_data)[source]

Loads new base data into the builder.

Return type:

APIRequestBuilder

update(path, value)[source]

Updates a nested dictionary or list structure by setting a value at the specified path.

Parameters:
  • path (Union[str, List[str]]) – Dot-separated keys or list of keys/indexes.

  • value (Any) – The value to set.

Returns:

The updated instance.

Return type:

APIRequestBuilder

build()[source]

Returns the built API request data.

Return type:

Dict[str, Any]

APIRequestBuilder

class ABConnect.Builder.APIRequestBuilder(req_type='Regular', base_data=None)[source]

Bases: object

Builder for API requests using static JSON configurations.

__init__(req_type='Regular', base_data=None)[source]
load(base_data)[source]

Loads new base data into the builder.

Return type:

APIRequestBuilder

update(path, value)[source]

Updates a nested dictionary or list structure by setting a value at the specified path.

Parameters:
  • path (Union[str, List[str]]) – Dot-separated keys or list of keys/indexes.

  • value (Any) – The value to set.

Returns:

The updated instance.

Return type:

APIRequestBuilder

build()[source]

Returns the built API request data.

Return type:

Dict[str, Any]

Usage Examples

Basic Request Building

from ABConnect.Builder import APIRequestBuilder

builder = APIRequestBuilder()

# Build a regular job request
request = builder.build(
    customer_id='CUST123',
    job_type='Regular',
    origin_address={
        'street': '123 Main St',
        'city': 'New York',
        'state': 'NY',
        'zip': '10001'
    },
    destination_address={
        'street': '456 Oak Ave',
        'city': 'Los Angeles',
        'state': 'CA',
        'zip': '90001'
    }
)

3PL Job Request

# Build a 3PL job request with extra containers
request = builder.build(
    customer_id='3PL_CUST',
    job_type='3PL',
    extra_containers=True,
    container_data={
        'type': 'special',
        'count': 2
    }
)

Template Structure

The Builder uses JSON templates stored in the base/ directory:

  • simple_request.json - Default request template

  • extra_containers.json - Additional container configurations for 3PL requests

  • companies.json - Company reference data

  • statuses.json - Status reference data