Skip to content

Releases: AfterShip/tracking-sdk-java

10.0.3

Choose a tag to compare

@1415003719 1415003719 released this 02 Jul 06:06
5b9f83b

What's Changed

  • Bump org.bouncycastle:bcprov-jdk18on from 1.78 to 1.84 by @dependabot[bot] in #21

New Contributors

Full Changelog: 10.0.2...10.0.3

11.0.0

Choose a tag to compare

@1415003719 1415003719 released this 13 Jan 07:17
b2ae5ab

What's Changed

Full Changelog: 10.0.2...11.0.0

10.0.2

Choose a tag to compare

@1415003719 1415003719 released this 18 Dec 08:11
eadf91c

What's Changed

Full Changelog: 10.0.1...10.0.2

10.0.1

Choose a tag to compare

@1415003719 1415003719 released this 30 Sep 02:50
8a5a58f

What's Changed

Full Changelog: 10.0.0...10.0.1

10.0.0

Choose a tag to compare

@1415003719 1415003719 released this 23 Sep 07:33
6a19e86

Breaking Changes - AfterShip Tracking Java SDK v10.0.0

1. Main Class Renamed

Main Class Change

// v9
import com.aftership.AfterShip;

// v10  
import com.aftership.tracking.TrackingSdk;

// Initialization methods remain the same
AfterShip.init(apiKey);                 // v9
TrackingSdk.init(apiKey);               // v10

Impact: All initialization and configuration code must update class references

2. Package Structure Complete Refactor

Package Structure Comparison

// v9 - Top-level package structure
import com.aftership.tracking.TrackingResource;
import com.aftership.courier.CourierResource;
import com.aftership.model.*;

// v10 - Nested package structure  
import com.aftership.tracking.tracking.TrackingResource;
import com.aftership.tracking.courier.CourierResource;
import com.aftership.tracking.model.*;

Impact: All import statements need updating, with deeper package hierarchy

3. Response Structure Complete Refactor

v9 direct property access

// v9 - Direct property access
CreateTrackingResponse response = creator.create();
String id = response.getId();
String trackingNumber = response.getTrackingNumber();

v10 must access through getData()

// v10 - Access through getData()
CreateTrackingResponse response = creator.create();
Tracking data = response.getData();
String id = data.getId(); 
String trackingNumber = data.getTrackingNumber();
// Can also access response headers
Meta responseHeader = response.getResponseHeader();

Impact: All API response handling code needs rewriting to access actual data through getData() method

4. Model Name Changes - Prefix Naming Convention

Model classes changed from suffix naming to prefix naming

// v9 - Suffix naming
import com.aftership.model.CourierEstimatedDeliveryDateTracking;
import com.aftership.model.ShipmentWeightTracking;
import com.aftership.model.AftershipEstimatedDeliveryDateTracking;
import com.aftership.model.CarbonEmissionsTracking;
import com.aftership.model.CustomEstimatedDeliveryDateTracking;
import com.aftership.model.FirstEstimatedDeliveryTracking;
import com.aftership.model.FirstMileTracking;
import com.aftership.model.LastMileTracking;
import com.aftership.model.CustomersTracking;

// v10 - Prefix naming  
import com.aftership.tracking.model.TrackingCourierEstimatedDeliveryDate;
import com.aftership.tracking.model.TrackingShipmentWeight;
import com.aftership.tracking.model.TrackingAftershipEstimatedDeliveryDate;
import com.aftership.tracking.model.TrackingCarbonEmissions;
import com.aftership.tracking.model.TrackingCustomEstimatedDeliveryDate;
import com.aftership.tracking.model.TrackingFirstEstimatedDelivery;
import com.aftership.tracking.model.TrackingFirstMile;
import com.aftership.tracking.model.TrackingLastMile;
import com.aftership.tracking.model.TrackingCustomers;

Impact: All nested Tracking model class names need updating, from XxxTracking to TrackingXxx

5. Enum Member Name Changes

Tag enum member names changed to PascalCase

v9 v10
Tag.Inforeceived Tag.InfoReceived
Tag.Intransit Tag.InTransit
Tag.Outfordelivery Tag.OutForDelivery
Tag.Attemptfail Tag.AttemptFail
Tag.Availableforpickup Tag.AvailableForPickup

Impact: Code using these enum members needs name updates

6. String to Enum Changes

Several string fields changed to enum types (following API documentation)

Request Models (Input)

// 1. CreateTrackingRequest.DeliveryType
// v9
CreateTrackingRequest request = new CreateTrackingRequest();
request.setDeliveryType("pickup_at_store");
// v10
CreateTrackingRequest request = new CreateTrackingRequest();
request.setDeliveryType(CreateTrackingRequestDeliveryType.PickupAtStore);

// 2. UpdateTrackingByIdRequest.DeliveryType
// v9
updateRequest.setDeliveryType("door_to_door");
// v10
updateRequest.setDeliveryType(UpdateTrackingByIdRequestDeliveryType.DoorToDoor);

// 3. MarkTrackingCompletedByIdRequest.Reason
// v9
markRequest.setReason("DELIVERED");
// v10
markRequest.setReason(MarkTrackingCompletedByIdRequestReason.Delivered);

7. Error Code Constants Simplified

v9 ErrorEnum detailed structure

// v9 - Contains detailed error information and methods
ErrorEnum.INVALID_API_KEY.getCode()    // Returns numeric error code (e.g. 1)
ErrorEnum.INVALID_API_KEY.getMessage() // Returns error message (e.g. "Invalid API key")
ErrorEnum.INVALID_API_KEY.getStatusCode() // Returns status code

v10 ErrorEnum simplified to enum names

// v10 - Simplified to pure enum with only name() method
ErrorEnum.INVALID_API_KEY.name()       // Returns enum name string "INVALID_API_KEY"
// getCode(), getMessage(), getStatusCode() methods no longer available

8. Reader → Fetcher Architecture Change

v9 uses Reader returning Page objects

// v9
import com.aftership.tracking.GetTrackingsReader;
import com.aftership.base.Page;

GetTrackingsReader reader = TrackingResource.getTrackings();
Page<Tracking> result = reader.read();
List<Tracking> trackings = result.getRecords();
String nextCursor = result.getNextCursor();

v10 uses Fetcher returning Response objects

// v10
import com.aftership.tracking.tracking.GetTrackingsFetcher;
import com.aftership.tracking.model.GetTrackingsResponse;

GetTrackingsFetcher fetcher = TrackingResource.getTrackings();
GetTrackingsResponse response = fetcher.fetch();
List<Tracking> trackings = response.getData().getTrackings();
String nextCursor = response.getData().getPagination().getNextCursor();

9.0.0

Choose a tag to compare

@1415003719 1415003719 released this 23 Apr 06:13
069b7d0

What's Changed

New Contributors

Full Changelog: 8.0.0...9.0.0

8.0.0

Choose a tag to compare

@AfterShip-Team-Mocha AfterShip-Team-Mocha released this 10 Jan 10:26
fb09285
  • supported 2025-01 version.
  • added response headers in error object.

7.1.0

Choose a tag to compare

@panxl6 panxl6 released this 17 Dec 01:55
125c53b
  • added HTTP response header in ApiException object.

7.0.0

Choose a tag to compare

@panxl6 panxl6 released this 25 Oct 06:13
ed6c806
  • supporting 2024-10 version.

API and SDK Version

Each SDK version is designed to work with a specific API version. Please refer to the table below to identify the supported API versions for each SDK version, ensuring you select the appropriate SDK version for the API version you intend to use.

SDK Version Supported API Version Branch
7.x.x 2024-10 https://github.com/AfterShip/tracking-sdk-java/tree/2024-10
6.x.x 2024-07 https://github.com/AfterShip/tracking-sdk-java/tree/2024-07
5.x.x 2024-04 https://github.com/AfterShip/tracking-sdk-java/tree/2024-04
4.x.x 2023-10 https://github.com/AfterShip/aftership-sdk-java
<=3.x.x Legacy API https://github.com/AfterShip/aftership-sdk-java

6.0.0

Choose a tag to compare

@panxl6 panxl6 released this 30 Jul 10:27
b95ec8c
  • supporting 2024-07 version.

API and SDK Version

Each SDK version is designed to work with a specific API version. Please refer to the table below to identify the supported API versions for each SDK version, ensuring you select the appropriate SDK version for the API version you intend to use.

SDK Version Supported API Version Branch
6.x.x 2024-07 https://github.com/AfterShip/tracking-sdk-java/tree/2024-07
5.x.x 2024-04 https://github.com/AfterShip/tracking-sdk-java/tree/2024-04
4.x.x 2023-10 https://github.com/AfterShip/aftership-sdk-java
<=3.x.x Legacy API https://github.com/AfterShip/aftership-sdk-java