Releases · AfterShip/tracking-sdk-python
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