UNPKG

@shipengine/connect-carrier-api

Version:

This is the typescript/javascript definitions for carrier api

117 lines (116 loc) 7.79 kB
import { ImportedTrackingEvent } from '../models'; import type { Request } from 'express'; import { RegisterRequest, CreateLabelRequest, VoidLabelsRequest, CreateManifestRequest, GetManifestRequest, SchedulePickupRequest, CancelPickupRequest, GetRatesRequest, TrackingRequest, CancelNotificationRequest, CreateNotificationRequest, ValidateInboundDataRequest, NormalizeTrackingDataRequest, GetRelayPointsRequest, GetServicePointsRequest, GetServicePointRequest, ImportTrackingEventsRequest, UpdateSettingsRequest } from '../requests'; import { RegisterResponse, CreateLabelResponse, VoidLabelsResponse, CreateManifestResponse, SchedulePickupResponse, CancelPickupResponse, GetRatesResponse, TrackingResponse, CancelNotificationResponse, CreateNotificationResponse, ValidateInboundDataResponse, NormalizeTrackingDataResponse, GetRelayPointsResponse, GetServicePointsResponse, GetServicePointResponse, UpdateSettingsResponse } from '../responses'; import { CarrierAppMetadata } from './metadata/carrier-app-metadata'; import { RequestResponseInfo, Handler } from '@shipengine/connect-runtime'; /** * @description This defines a connect carrier app */ export interface CarrierAppDefinition { Metadata: CarrierAppMetadata; /** * @description This method is used to register an account * @param request The information needed to register or initialize a connection with the shipping provider */ Register?: (request: RegisterRequest) => RegisterResponse | Promise<RegisterResponse>; /** * @description This method is used to create a label * @param request Data needed by the provider to create a label */ CreateLabel?: (request: CreateLabelRequest) => CreateLabelResponse | Promise<CreateLabelResponse>; /** * @description This method is used to void multiple labels * @param request Data needed by the provider to void multiple labels */ VoidLabels?: (request: VoidLabelsRequest) => VoidLabelsResponse | Promise<VoidLabelsResponse>; /** * @description This method is used to create a manifest with a carrier * @param request Data needed by the provider to create a manifest */ CreateManifest?: (request: CreateManifestRequest) => CreateManifestResponse | Promise<CreateManifestResponse>; /** * @description This method is used to retrieve a manifest with a carrier * @param request Data needed by the provider to retrieve a previousely created manifest */ GetManifest?: (request: GetManifestRequest) => CreateManifestResponse | Promise<CreateManifestResponse>; /** * @description This endpoint is used to schedule an adhoc pickup with the shipping provider * @param request Data needed by the provider to schedule adhoc pickups */ SchedulePickup?: (request: SchedulePickupRequest) => SchedulePickupResponse | Promise<SchedulePickupResponse>; /** * @description This endpoint is used to cancel a previously scheduled pickup * @param request Data needed by the provider to cancel a pickup */ CancelPickup?: (request: CancelPickupRequest) => CancelPickupResponse | Promise<CancelPickupResponse>; /** * @description This endpoint is used to get rates for a particular shipment * @param request Data needed by the provider to get a rate estimate */ GetRates?: (request: GetRatesRequest) => GetRatesResponse | Promise<GetRatesResponse>; /** * @description This endpoint is used to get tracking information about a shipment * @param request Data needed by the provider to track a shipment */ Track?: (request: TrackingRequest) => TrackingResponse | Promise<TrackingResponse>; /** * @description This endpoint is used to submit notification of the creation of a shipment * @param request Data needed by the provider to inform them of a shipment */ CreateNotification?: (request: CreateNotificationRequest) => CreateNotificationResponse | Promise<CreateNotificationResponse>; /** * @description This endpoint is used to submit cancellation of a shipment notification * @param request Data needed by the provider to inform them of the cancellation */ CancelNotification?: (request: CancelNotificationRequest) => CancelNotificationResponse | Promise<CancelNotificationResponse>; /** * @description This endpoint is used to validate inbound data and determine the type of data included in the inbound message * @param request Data received from the provider via an inbound method, such as a webhook */ ValidateInboundData?: (request: ValidateInboundDataRequest) => ValidateInboundDataResponse | Promise<ValidateInboundDataResponse>; /** * @description This endpoint is used to normalize inbound tracking data and determine the type of data * @param request Tracking data received from the provider via an inbound method, such as a webhook */ NormalizeTrackingData?: (request: NormalizeTrackingDataRequest) => NormalizeTrackingDataResponse | Promise<NormalizeTrackingDataResponse>; /** * @description This endpoint is used to get all relay points for carrier * @param request Data needed by the provider about the relay points to be returned */ GetRelayPoints?: (request: GetRelayPointsRequest) => GetRelayPointsResponse | Promise<GetRelayPointsResponse>; /** * @description This endpoint is used to get carrier service points * @param request Data needed by the provider about the service points to be returned */ GetServicePoints?: (request: GetServicePointsRequest) => GetServicePointsResponse | Promise<GetServicePointsResponse>; /** * @description This endpoint is used to get a carrier service point by id * @param request Data needed by the provider about the service point to be returned */ GetServicePoint?: (request: GetServicePointRequest) => GetServicePointResponse | Promise<GetServicePointResponse>; /** * @description This endpoint is used to import tracking events for a connection by id * @param request Data needed by the provider to import tracking events */ ImportTrackingEvents?: (request: ImportTrackingEventsRequest) => AsyncGenerator<ImportedTrackingEvent>; ScheduledFunction?: (request: Record<string, any>) => Promise<{}[] | null> | {}[] | null; /** @description A method that gets additional context to log from the request when logging */ getAdditionalContext?: (req: Request) => Record<string, string>; /** @description A method that redacts external HTTP requests and responses to prevent logging sensitive information */ redactExternalRequest?: (req: RequestResponseInfo) => Promise<RequestResponseInfo> | RequestResponseInfo; /** @description A method that gets additional information to return with the diagnostic version route */ getAdditionalVersionInfo?: () => Promise<Record<string, string>> | Record<string, string>; /** * @description This endpoint is used to update carrier settings * @param request Data needed by the provider to update carrier settings */ UpdateSettings?: (request: UpdateSettingsRequest) => UpdateSettingsResponse | Promise<UpdateSettingsResponse>; /** * @description A collection of additional routes that can be used to extend the functionality of the app. * Extension methods are not automatically called by the ShipEngine platform, and require working with Auctane developers to implement. * The request and response shapes of each method will be defined by Auctane, but will not be documented as part of Connect unless * they are made public and the functionality is taken out of extensions and into a named method. */ Extensions?: Record<string, Handler>; }