/* * This code was auto generated by AfterShip SDK Generator. * Do not edit the class manually. */ import { Request } from "../lib/request"; import { AftershipError, AfterShipErrorCodes } from "../error"; import { GetTrackingsResponse } from "../model/GetTrackingsResponse"; import { GetTrackingsQuery } from "../model/GetTrackingsQuery"; import { CreateTrackingRequest } from "../model/CreateTrackingRequest"; import { GetTrackingByIdResponse } from "../model/GetTrackingByIdResponse"; import { DeleteTrackingByIdResponse } from "../model/DeleteTrackingByIdResponse"; import { MarkTrackingCompletedByIdResponse } from "../model/MarkTrackingCompletedByIdResponse"; import { CreateTrackingResponse } from "../model/CreateTrackingResponse"; import { GetTrackingByIdQuery } from "../model/GetTrackingByIdQuery"; import { UpdateTrackingByIdRequest } from "../model/UpdateTrackingByIdRequest"; import { UpdateTrackingByIdResponse } from "../model/UpdateTrackingByIdResponse"; import { RetrackTrackingByIdResponse } from "../model/RetrackTrackingByIdResponse"; import { MarkTrackingCompletedByIdRequest } from "../model/MarkTrackingCompletedByIdRequest"; export class TrackingApi { private readonly request: Request; constructor(request: Request) { this.request = request; } /** * Get tracking results of multiple trackings.<div style="visibility:hidden; height: 0"></div> */ public async getTrackings( query?: GetTrackingsQuery, headers?: { [key: string]: any }, ): Promise { const url = `/tracking/2026-07/trackings`; return this.request.makeRequest({ url: url, method: "GET", query, headers, }); } /** * Create a tracking.<div style="visibility:hidden; height: 0"></div> */ public async createTracking( body: CreateTrackingRequest, headers?: { [key: string]: any }, ): Promise { const url = `/tracking/2026-07/trackings`; return this.request.makeRequest({ url: url, method: "POST", body, headers, }); } /** * Get tracking results of a single tracking. */ public async getTrackingById( id: string, query?: GetTrackingByIdQuery, headers?: { [key: string]: any }, ): Promise { if (!id) { throw new AftershipError( "Invalid params: id", AfterShipErrorCodes.BAD_REQUEST, ); } const url = `/tracking/2026-07/trackings/${id}`; return this.request.makeRequest({ url: url, method: "GET", query, headers, }); } /** * Update a tracking. */ public async updateTrackingById( id: string, body: UpdateTrackingByIdRequest, headers?: { [key: string]: any }, ): Promise { if (!id) { throw new AftershipError( "Invalid params: id", AfterShipErrorCodes.BAD_REQUEST, ); } const url = `/tracking/2026-07/trackings/${id}`; return this.request.makeRequest({ url: url, method: "PUT", body, headers, }); } /** * Delete a tracking. */ public async deleteTrackingById( id: string, headers?: { [key: string]: any }, ): Promise { if (!id) { throw new AftershipError( "Invalid params: id", AfterShipErrorCodes.BAD_REQUEST, ); } const url = `/tracking/2026-07/trackings/${id}`; return this.request.makeRequest({ url: url, method: "DELETE", headers, }); } /** * Retrack an expired tracking. Max 3 times per tracking. */ public async retrackTrackingById( id: string, headers?: { [key: string]: any }, ): Promise { if (!id) { throw new AftershipError( "Invalid params: id", AfterShipErrorCodes.BAD_REQUEST, ); } const url = `/tracking/2026-07/trackings/${id}/retrack`; return this.request.makeRequest({ url: url, method: "POST", headers, }); } /** * Mark a tracking as completed. The tracking won't auto update until retrack it. */ public async markTrackingCompletedById( id: string, body: MarkTrackingCompletedByIdRequest, headers?: { [key: string]: any }, ): Promise { if (!id) { throw new AftershipError( "Invalid params: id", AfterShipErrorCodes.BAD_REQUEST, ); } const url = `/tracking/2026-07/trackings/${id}/mark-as-completed`; return this.request.makeRequest({ url: url, method: "POST", body, headers, }); } }