Skip to content

8.0.0

Choose a tag to compare

@1415003719 1415003719 released this 21 Oct 03:03
· 4 commits to 2025-07 since this release
2120f93

Breaking Changes - AfterShip Tracking Python SDK v8.0.0

1. Response Structure Complete Refactor

All Response classes now contain response_header and data structure:

# v7 - Direct access to response properties
response = client.tracking.create_tracking(request)
tracking_id = response.id
tracking_number = response.tracking_number

# v8 - Must access through data property
response = client.tracking.create_tracking(request)
tracking_id = response.data.id
tracking_number = response.data.tracking_number
headers = response.response_header  # New feature: get response headers

Applies to all API responses: create_tracking, get_tracking_by_id, get_trackings, update_tracking_by_id, get_couriers, etc.

2. Model Names Simplified

Tracking model naming convention changed:

# v7 - Suffix naming
from tracking.models.courier_estimated_delivery_date_tracking import CourierEstimatedDeliveryDateTracking
from tracking.models.shipment_weight_tracking import ShipmentWeightTracking
from tracking.models.aftership_estimated_delivery_date_tracking import AftershipEstimatedDeliveryDateTracking

# v8 - Prefix naming  
from tracking.models.tracking_courier_estimated_delivery_date import TrackingCourierEstimatedDeliveryDate
from tracking.models.tracking_shipment_weight import TrackingShipmentWeight
from tracking.models.tracking_aftership_estimated_delivery_date import TrackingAftershipEstimatedDeliveryDate

Response class simplification:

  • Old SDK had 150+ specialized response classes (e.g., AftershipEstimatedDeliveryDateCreateTrackingResponse, CarbonEmissionsGetTrackingByIdResponse)
  • New SDK unified these into simple, consistent response classes

3. String Parameters to Strong-Typed Enums

Parameters changed from string to enum types:

# v7 - String parameters
from tracking.models.mark_tracking_completed_by_id_request import MarkTrackingCompletedByIdRequest

request = MarkTrackingCompletedByIdRequest(
    reason="DELIVERED"  # String parameter
)

# v8 - Enum parameters
from tracking.models.mark_tracking_completed_by_id_request import MarkTrackingCompletedByIdRequest
from tracking.models.mark_tracking_completed_by_id_request_reason import MarkTrackingCompletedByIdRequestReason

request = MarkTrackingCompletedByIdRequest(
    reason=MarkTrackingCompletedByIdRequestReason.DELIVERED  # Enum parameter
)

Enum constants also changed naming convention:

# v7 - Concatenated naming
Tag.INFORECEIVED
Tag.INTRANSIT
Tag.OUTFORDELIVERY

# v8 - Underscore separated naming
Tag.INFO_RECEIVED
Tag.IN_TRANSIT
Tag.OUT_FOR_DELIVERY