8.0.0
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 headersApplies 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 TrackingAftershipEstimatedDeliveryDateResponse 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