Documentation
¶
Overview ¶
Package upsfreight provides tooling to connect to the UPS Freight API. This is for truck shipments, not small parcels. Think LTL (less than truckload) shipments. This code was created off the UPS API documentation. This uses UPS's JSON API.
You will need to have a UPS account and register for API access to use this code.
Currently this package can perform: - pickup requests
To create a pickup request: - Set your UPS credentials (SetCredentials()). - Set test or production mode (SetProductionMode()). - Set the packaging type (PackagingType{}). - Set the weight of the goods (Weight{}). - Create the shipment details (ShipmentDetail{}). - Create the pickup details (PickupRequestDetails{}). - Set a unique identifier for the pickup request (SetCustomerContext()). - Set the timeframe for the pickup (SetPickupSchedule()). - Request the pickup (RequestPickup()). - Check for any errors.
Index ¶
- func SetCredentials(username, password, accessKey string)
- func SetProductionMode(yes bool)
- func SetTimeout(seconds time.Duration)
- type Address
- type PackagingType
- type PhoneNum
- type PickupRequest
- type PickupRequestDetails
- type PickupRequestError
- type PickupRequestResponse
- type Requester
- type ShipFromAddress
- type ShipmentDetail
- type Weight
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SetCredentials ¶
func SetCredentials(username, password, accessKey string)
SetCredentials saves the login credentials for the UPS website and API so we can make requests
func SetProductionMode ¶
func SetProductionMode(yes bool)
SetProductionMode chooses the production url for use
func SetTimeout ¶
SetTimeout updates the timeout value to something the user sets use this to increase the timeout if connecting to UPS is really slow
Types ¶
type Address ¶
type Address struct {
AddressLine string //street
City string
StateProvinceCode string //two characters
PostalCode string
CountryCode string //two characters
}
Address is the container for an address
type PackagingType ¶
PackagingType holds data on what format a shipment is in Skid, boxes, etc. Code is a three character code. This can be found in the UPS API documentation. Description is the maching text description to the Code. Ex: Shipping a skid would be Code: SKD, Description: Skid
type PickupRequest ¶
type PickupRequest struct {
Security security
FreightPickupRequest PickupRequestDetails
}
PickupRequest is the main container struct for data sent to UPS to request a pickup This format, and children types, was determined from UPS API documentation.
type PickupRequestDetails ¶
type PickupRequestDetails struct {
Request struct {
TransactionReference struct {
CustomerContext string //some unique identifier, time stamp or somethine else unique
}
}
AdditionalComments string
DestinationPostalCode string //the ship to location
DestinationCountryCode string //the ship to location
Requester Requester //who is scheduling the pickup
ShipFrom ShipFromAddress //the ship from location
ShipmentDetail ShipmentDetail //what is shipping
PickupDate string //YYYYMMDD; cannot be in the past
EarliestTimeReady string //24 hour time, HHMM; cannot be in the past
LatestTimeReady string //24 hour time, HHMM; cannot be in the past
}
PickupRequestDetails is the container around the actual pickup request This holds the ship to location, who is making the pickup request, the ship from location, the shipment details, and other pickup information
func (*PickupRequestDetails) RequestPickup ¶
func (prd *PickupRequestDetails) RequestPickup() (responseData PickupRequestResponse, err error)
RequestPickup performs the call the the UPS API to schedule a pickup
func (*PickupRequestDetails) SetCustomerContext ¶
func (prd *PickupRequestDetails) SetCustomerContext(c string)
SetCustomerContext saves the unique identifier for this request to the request details
func (*PickupRequestDetails) SetPickupSchedule ¶
func (prd *PickupRequestDetails) SetPickupSchedule(startTime, endTime time.Time) error
SetPickupSchedule sets the date and time range for a pickup This is the time UPS will attempt to perform the pickup Times should be in the future and be on the same date.
type PickupRequestError ¶
type PickupRequestError struct {
Fault struct {
FaultCode string `json:"faultcode"`
FaultString string `json:"faultstring"`
Detail struct {
Errors struct {
ErrorDetail errorDetail
}
} `json:"detail"`
}
}
PickupRequestError is the data we get back from a pickup request when there is an error
type PickupRequestResponse ¶
type PickupRequestResponse struct {
FreightPickupResponse struct {
Response struct {
ResponseStatus struct {
Code string
Description string
}
TransactionReference struct {
CustomerContext string
}
}
PickupRequestConfirmationNumber string
}
}
PickupRequestResponse is the data we get back when a pickup is scheduled successfully
type Requester ¶
type Requester struct {
AttentionName string //a person's name or department name
EMailAddress string //for sending pickup request confirmation
Name string //company name where pickup is being made
Phone PhoneNum
}
Requester is data on who is scheduling the pickup
type ShipFromAddress ¶
type ShipFromAddress struct {
AttentionName string //a person's name or department name
Name string //company name where pickup is being made
Address Address //the address where the pickup will be made
Phone PhoneNum
}
ShipFromAddress is the info on where the shipment is shipping from
type ShipmentDetail ¶
type ShipmentDetail struct {
HazMatIndicator string //usually blank
PackagingType PackagingType
NumberOfPieces string //must be a string for api to work
DescriptionOfCommodity string
Weight Weight
}
ShipmentDetail holds data on the shipment