Shiip

Integrations Spec

1. Introduction

The purpose of this document is to outline the guidelines and specifications required to integrate external systems with Shiip.

Shiip's integration capabilities can broadly be classified into the following functions:

There are two methods presented in this spec with which a client can integrate with Shiip, a REST based web API service, and a CSV file upload service. Generally the API service is recommended as it affords better error handling capabilities, however file upload integration is also available to accomodate compatability with existing or legacy systems.

2. Revision history

2.1 TODO

3. Shiip API web services

3.1. Overview

The Shiip API web service is a RESTful suite of web services that allows an authenticated Shiip client to consume and interact with various Shiip features and functionality programatically. The Shiip Web Services are typically used for bespoke integrations and interactions via first and thrid party customer software and services.

3.1.1. Features

3.1.2. Service details

The Shiip API web service is a REST based web service with a variety of endpoints that accept serialised JSON request objects. The service is compatible with and intended to be used by REST based clients over HTTPS.

Request payload structure is presented in JSON format, the user is expected to understand JSON syntax - including the format of any required array parameters, quoting and escaping on string values, and omitting quotes on number values.

3.1.3. Environments and URIs

Shiip has two environments available for consumption of the APIs outlined in this document.

Shiip Demo environment - This is a sandboxed environment that always contains an identical feature set to the Shiip Production environment. The Demo environment is a non-live environment that should be utilised for initial integration development and testing before using the Shiip Production environment.

The Shiip Demo environment base URI is https://demo.api.shiip.com.au/

Shiip Production environment - This is Shiip's live environment where any API interactions will result in stateful real world changes.

The Shiip Production environment base URI is https://prod.api.shiip.com.au/

3.1.4. Authentication

The service is secured via 0Auth 2.0 authentication using JSON Web Tokens (JWT). A connecting client must authenticate with a valid and active Shiip login/password combination and WMS Code to request an access token, which is then used to authenticate with Shiip web services.

3.2. Authentication Token

3.2.1. Authentication parameters

Name Type Constraints Required Description
email String Y Shiip email address registerd to the authenticating user
password String Y Shiip password registerd to the authenticating user
wmsCode String Y Shiip Tenant ID (historically known as Warehouse Management Service Code)

3.2.1. Request

POST /TokenByWmsCode

{
  "email": string,
  "password": string,
  "wmsCode": string
}

3.2.2. Response

{
  "access_token": string
}

3.2.3. Example response

{
  "access_token" : "Bearer E/04rkIMJYuBZYi5hLmVqDYqo9Ew+epZ0lkVE3ylAhGoOzKgm1P8Oh258gwu396VgJ8ftIR1XYvhJYM2T7s0Fe2qAEq2ZE95qSgU7aQLu32BmYGZzOLTQAi/Vbma+PMFf6pyXYf8dWYYEJoNAt6M4tua8/1qUzilza3FyfcjLpY5FMVt8kTXBsl3K8LfPlO12YuloAoZqiXv6PY9KGSrCeOqNoHqW5vOZ29S0tLkYvYkMnHnToh/HocexLse3iuMCxy9ZIr+Igs="
}

3.2.4. Using the authentication token response

The token may then be used in the "Authorization" header on subsequent requests to authenticate against all Shiip API endpoints.

Authorization: Bearer E/04rkIMJYuBZYi5hLmVqDYqo9Ew+epZ0lkVE3ylAhGoOzKgm1P8Oh258gwu396VgJ8ftIR1XYvhJYM2T7s0Fe2qAEq2ZE95qSgU7aQLu32BmYGZzOLTQAi/Vbma+PMFf6pyXYf8dWYYEJoNAt6M4tua8/1qUzilza3FyfcjLpY5FMVt8kTXBsl3K8LfPlO12YuloAoZqiXv6PY9KGSrCeOqNoHqW5vOZ29S0tLkYvYkMnHnToh/HocexLse3iuMCxy9ZIr+Igs=t

3.3. Create Shipments

This API accepts a single shipment object and returns either a success message or list of errors.

3.3.1. Basic Request

POST /Shipment/CreateShipment

3.3.1.1. Structure

{
  "readyDateTime": string,
  "customerCode": string,
  "warehouseCode": string,
  "senderReferences": [
    string
  ],
  "receiverReferences": [
    string
  ],
  "senderAddress": {
    "CompanyName": string,
    "Address1": string,
    "Address2": string,
    "Suburb": string,
    "State": string,
    "PostCode": string,
    "Country": string,
    "Contact": string,
    "Phone": string,
    "Email": string
  },
  "receiverAddress": {
    "CompanyName": string,
    "Address1": string,
    "Address2": string,
    "Suburb": string,
    "State": string,
    "PostCode": string,
    "Country": string,
    "Contact": string,
    "Phone": string,
    "Email": string
  },
  "emailTracking": [
    string
  ],
  "shipmentGoods": [
    {
      "ItemReference": string,
      "Qty": int,
      "Weight": float,
      "Length": float,
      "Width": float,
      "Height": float,
      "UnitOfMeasureName": string
    }
  ],
  "specialInstructions": string,
  "additionalCharges": [
    string
  ]
  "serviceCode": string,
  "labelPrinter": string,
  "accountNo": string",
  "addToAddressBook": boolean,
  "saveAsDraft": boolean,
  "reassignedFrom": string,
  "reason": string,
  "autoManifest": boolean,
  "autoManifestDateTime": string,
  "costCentre": string,
  "orderNo": string,
  "vehicleType": string,
  "originator": string,
  "preferredJourney": boolean
}

3.3.1.2. Shipment object parameters

Name Type Constraints Required Description
readyDateTime String ISO date time format eg. 2021-02-02T04:28:43.740Z
customerCode String Y Shiip Tenant ID (Same as WMS Code)
warehouseCode String "3PT" for Third Party Y Shiip Warehouse / Location ID
senderReferences Array of Strings Array of Sender References
receiverReferences Array of Strings Array of Receiver References
senderAddress Address If "3PT" Sender Address (sender address is only required if the sending location has been specified as 3rd party in "warehouseCode")
receiverAddress Address Y Receiver Address
emailTracking Array of Strings Array of email addresses to receive tracking notifications
shipmentGoods Array of Goods Y Refer to Shipment Goods object params (includes Dangerous Goods)
specialInstructions String Special instructions for delivery
additionalServices Array of Objects Additional services required for delivery (refer to Additional Services object params)
carrierCode String Internal carrier code for nominated carrier *
serviceCode String Internal service code for nominated service *
labelPrinter String Name of label printer to use for automated printing if applicable
accountNo String Carrier account number to charge this shipment to (limited to a subset of carriers)
saveAsDraft Boolean Force the shipment to be saved as a draft (Incomplete status)
reassignedFrom String Required for reassignment ShipmentNo of existing shipment this one will be replacing (refert to Reassignment Options section)
reason String Reason for reassigning this shipment to another carrier
autoManifest Boolean Automatically manifest this shipment
autoManifestDateTime String Defaults to readyDateTime DateTime for this shipment to be auto-manifested
costCentre String Convenience attribute to specify a cost centre for you own records
orderNo String Convenience attribute to specify an order number for you own records
vehicleType String Vehicle Types List Specify a preferred vehicle type to carry the goods (refer to Vehicle Preference Options section)
preferredJourney Boolean Force shipment to be allocated to the sending location's preferred carrier and service (if available)
addToAddressBook Boolean Add or update the Shiip Address Book with the receiver details specified in the receiverAddress
originator String Specify which integrated system is creating this shipment (refer to Originating System Options section)

* The applicable carrier and service codes will be provided on request. The list of supported carriers is constantly changing and carriers can add/change their services at any time so providing a static list is infeasible.

3.3.1.3. Address object parameters

Name Type Constraints Required Description
CompanyName String Y Receiver Name
Address1 String Y Address Line 1
Address2 String Address Line 2
Suburb String Y Suburb
State String Y State (2 or 3 letter abbrev.)
Country String Defaults to Australia
PostCode String Y 4 digit postcode
Contact String Receiver contact name
Phone String Receiver contact phone
Email String Receiver contact email

3.3.1.4. Goods object parameters

Name Type Constraints Required Description
ItemReference String Item reference or description (If this matches an item in the product list, Shiip will auto-populate dimensions.)
Qty Integer How many of this line item
Weight Integer Line item weight (kg)
Length Integer Line item length (cm)
Width Integer Line item width (cm)
Height Integer Line item height (cm)
UnitOfMeasureName String Shiip Unit of Measure ("SATCHEL", "CARTON", "PALLET", "SKID", etc.)
dangerousGoods Object Refer to Dangerous Goods object parameters below

3.3.1.5. Dangerous Goods object parameters

Name Type Constraints Required Description
shippingName String Y Descriptive name of the dangerous goods eg. "Batteries", "Hair Spray" etc.
className Integer 1 - 9 Y Dangerous goods class
unn String see link Y United Nations Number
packageType String see link Y Package type used to contain the dangerous goods
packingGroup String I, II, III Y Severity of the danger associated with the dangerous goods to be consigned (I - III)
noPkgs Integer Y Number of Dangerous Goods packages included in the shipment
aggregateQty Integer Y Number of Dangerous items within each package
contactName String Y Name of contact person responsible for the dangerous goods
contactPhone String Y Phone number of person responsible for the dangerous goods

3.3.1.6. Additional Services

The following additional services / delivery requirements may be specified in either a Create Shipment or Get Estimates request.

"additionalServices": [
    {
      "serviceCode": "string",
      "additionalFields": [
        {
          "name": "string",
          "value": "string/int/boolean"
        }
      ]
    }
]

Additional Services object parameters

Name Service Code Type Constraints Additional Fields Description
Two Person Delivery AL String Two people required to unload goods
Authority to leave goods ATL String Authority to leave goods in receiver's absence
Hire Pallets HP String Hire pallets included with delivery
Hand Unload HU String Driver to unload goods by hand
ID Check ID String Require receiver to prove identity
Outside Business Hours OH String Request delivery after 5pm
Oversize Item OI String Goods item is over standard general size
Over Length OL String Goods item is over standard length
Over Weight OW String Goods item is over standard weight
Proof Of Age PA String Require receiver to prove age
PO Box Delivery PB String Delivery location is a Post Office Box
Remote Area RA String Delivery location is in a remote area
Receiver Pays RC String Receiver to pay for delivery costs
Restricted Goods RE String Goods contain alcahol, tobacco or adult products
Refrigerated Goods RF String Service vehicle provides temperature control
Regional Surcharge RG String Delivery location is outside metro region
Residential RS String Delivery location is a residential address
Return Shipment RT String Returned goods
Upstairs Delivery RU String Upstairs Delivery
Saturday Delivery SA String Request delivery on a Saturday
Signature Required SG String A signature must be obtained on delivery
Time Slot Delivery ST String Request delivery at a specific time
Sunday Delivery SU String Request a delivery on a Sunday
Tailgate Required TG String Service vehicle provides a tailgate
Waste Removal WR String Service vehicle suitable for waste
Over Width WS String Goods item is over standard width

3.3.1.7. Vehicle Preference Options

Certain carriers and couriers allow specifying a preferred vehicle type for delivery. This can be convenient for small deliveries (such as requesting a bike for short inner city movements) or ensuring a large capacity vehicle is used for bulk freight movements. If not specified, the Vehicle Type will default to the standard vehicle type used with the corresponding carrier service.

Value Type Constraints Required Description
any String Default Carrier default vehicle
car String Sedan or similar
bike String Bicylcle or motorbike
van String Van
semi String Semi trailer
tautliner String Curtain sided truck/trailer

3.3.1.8. Auto-Manifest Options

Shiip provides the ability to automatically manifest shipments if the "autoManifest" attribute is set to "true".

3.3.1.9. Reassignment Options

Shiip provides the ability to reassign shipments and courier jobs between carriers.

Reassigning a shipment or courier job requires the following attributes to be utilised in a Create Shipment request:

Name Type Constraints Required Description
reassignFrom String Y ShipmentNo of an existing undispatched shipment that this one will be replacing
reason String Reason for reassigning this shipment to another carrier

When a shipment has been sucessfully reassigned, the following attributes will be available on the original shipment object that was reassigned:

  "reassignedTo": string,
  "reassignedToCarrier": string,
  "reassignedToService": string,
  "reassignedReason": string
Name Type Constraints Required Description
reassignedTo String ShipmentNo of the new shipment that has replaced this shipment
reassignedToCarrier String Name of the carrier the new shipment is assigned to
reassignedToService String Name of the service the new shipment is assigned to
reassignedReason String Reason this shipment was reassigned

The new shipment (replacing the old one) will contain the following attributes:

  "reassignedFrom": string,
  "reassignedFromCarrier": string,
  "reassignedFromService": string,
  "reassignedReason": string
Name Type Constraints Required Description
reassignedFrom String ShipmentNo of the original shipment that this one has replaced
reassignedFromCarrier String Name of the carrier the old shipment was assigned to
reassignedFromService String Name of the service the old shipment was assigned to
reassignedReason String Reason this shipment was reassigned

3.3.1.9. Originating System Options

Shiip provides some out of the box functionality for common integrated system workflows (at this time eCommerce platforms) based on the "originator" attribute present on a Shipment object. This attribute may also be utilised for convenience in combination with Shiip webhooks to track and trigger custom workflows via your own integrated systems.

The following values may be set on the "originator" attribute to activate supplemental workflows via supported integrated systems:

Value Type Constraints Required Description
shiip String Default No additional workflows triggered
shopify String Will call a Shopify fulfilment web service upon shipment dispatch or courier collection
woocommerce String Will call a WooCommerce fulfilment web service upon shipment dispatch or courier collection
magento String Will call a Magento fulfilment web service upon shipment dispatch or courier collection
[custom string] String Convenince attribute to identify your own orginating system (commonly utilised with webhooks)

3.3.2. Create Shipment Response

3.3.2.1. 200 OK

{
  "shipmentNo": string,
  "manifestNo": string,
  "status": string,
  "TrackingUrl": string,
  "carrierName": string,
  "serviceName": string,
  "ETA": string,
  "reassignedFrom": string
}
Name Type Constraints Required Description
shipmentNo String Y Shipment number of the created shipment
manifestNo String Manifest number if created in a ready state
Status String Incomplete, Ready, or Booked Y Status of created shipment
TrackingUrl String URL string Y URL directing to Shiip track and trace page
carrierName String Y Carrier Name
serviceName String Y Carrier Service Name
ETA String ISO date time format Y Estimated Delivery Date and Time
reassignedFrom String ShipmentNo of the original shipment that this one has replaced

3.3.2.2. 400 Bad Request

{
  "errors": {
    "ReceiverAddress.State": [
      "The State field is required."
    ]
  },
  "title": "One or more validation errors occurred.",
  "status": 400,
  "traceId": "00-3917ede038dca84a988e14a9ed613671-b13171b872ea184f-00"
}

3.3.3. Example request

{
  "CustomerCode": "TMS3PL",
  "WarehouseCode": "N04",
  "SenderReferences":[
    string
  ],
  "ReceiverReferences":[
    string
  ],
  "ReceiverAddress": {
    "CompanyName": "Acme Industries",
    "Address1": "9-12 Test Street",
    "Address2": "",
    "Suburb": "Acme South",
    "State": "QLD",
    "PostCode": "4008",
    "Country": "Australia",
    "Contact": "",
    "Phone": "0733300333",
    "Email": "wile.e.coyote@acme.com.au"
  },
  "EmailTracking": [
    "wile.e.coyote@acme.com.au",
    "manager@acme.com.au"
  ],
  "ShipmentGoods": [
    {
      "ItemReference": "STW9C2N-EU",
      "Qty": "4",
      "UnitOfMeasureName": "Pallet",
      "Weight": 5,
      "Length": 12,
      "Width": 20,
      "Height: 12
    }
  ],
  "SpecialInstructions": "Beware of the dog"
}

3.3.4. Example response

{	
  " shipmentNo": "Draft-1P82D",
  "manifestNo": "",
  "status": "Incomplete"
  "TrackingUrl": ""url"",
  "carrierName": "",
  "serviceName": "",
  "ETA": ""
}
{
  " shipmentNo": "TEST01342",
  "manifestNo": "20191220001",
  "status": "Ready"
  "TrackingUrl": "https://path/to/trackingNo",
  "carrierName": "Startrack Express",
  "serviceName": "FPP",
  "ETA": "2020-07-24T00:00:00"
}

3.4. Get Estimates

This service allows clients to request a list of available carriers, services and price estimates for a given sender, receiver and goods combination. Results can be optionally sorted and truncated using "sortBy" and "limitResultsTo" parameters.

The service returns an array of Carrier/Service objects which can optionaly be identified by a temporary corresponding draft ‘ShipmentNo’. The draft shipmentNo from the returned object can then be used as the sole parameter in a CreateShipment request to convert a selected estimate into an ‘Incomplete' or ‘Ready’ shipment. or a "Booked" courier job in Shiip.

3.4.1. Request

POST /Estimate/GetEstimates

3.4.1.1. Structure

The GetEstimates request follows the same request structure and attributes as the CreateShipment request, with the following additions/changes:

3.4.1.2. Shipment object parameters

Name Type Constraints Required Description
createDrafts Boolean If True, Shiip will return a corresponding draft ShipmentNo with each estimate. This may then be used in a subsequent CreateShipment call to create a Shipment with the selected carrier (see above).
sortResultsBy String "lowest price", "fastest", "preferred carrier" Return results sorted by the option specified
limitResultsTo Int Limit the number of results returned by the int specified. If not used in combination with "sortResultsBy", results will be sorted lowest price

3.4.1.3. Address object parameters

Name Type Constraints Required Description
CompanyName String Not required for estimates only (cannot be omited if createDrafts is true)
Address1 String Not required for estimates only (cannot be omited if createDrafts is true)
Address2 String Not required for estimates only

3.4.2. Get Estimates Response

3.4.2.1. 200 OK

[
  {
    "shipmentNo": "Draft-33AVH",
    "account": "TMS123",
    "carrierName": "Allied Express",
    "serviceName": "Road Express",
    "price": "14.68",
    "eta": "2020-07-24T00:00:00",
    "minEta": "0001-01-01T00:00:00"
  },
  {
    "shipmentNo": "Draft-LITMW",
    "account": "30512344",
    "carrierName": "TNT Express",
    "serviceName": "Road Express",
    "price": "30.18",
    "eta": "2020-07-24T00:00:00",
    "minEta": "0001-01-01T00:00:00"
  },
  {
    " shipmentNo ": "Draft-JO5ZM",
    "account": "112123438",
    "carrierName": "Couriers Please",
    "serviceName": "Express I55",
    "eta": "2020-07-24T00:00:00",
    "minEta": "0001-01-01T00:00:00"
  },
  {
    " shipmentNo ": "Draft-TERVX",
    "account": "TMSFSD",
    "carrierName": "BlueStar Logistics",
    "serviceName": "Exp Plt - 2.2 High To Town",
    "eta": "2020-07-24T00:00:00",
    "minEta": "0001-01-01T00:00:00"
  }
]

3.4.3. Usage of the Get Estimates response

The estimates response can be used as it is to display approximate quotes or do calculations.

To subsequently create a shipment based on a selected estimate, a value of "true" can be set on the "createDrafts" attribute of the Get Estimates request. The response will include the "shipmentNo" property on each service returned which may then be supplied to the CreateShipment endpoint as follows:

POST /Shipment/CreateShipment

{
  " shipmentNo": "Draft-TERVX",
}
Name Type Constraints Required Description
shipmentNo String Y shipmentNo as returned by GetEstimates response

3.5. Cancel Shipment

This endpoint accepts a single shipmentNo string and returns a success or failure response indicating the successful or unsuccessful cancellation of the given shipment.

3.5.1. Request

DELETE / Shipment /CancelShipment/{shipmentNo}

3.5.1.1. Structure

As a DELETE request there is no request payload, the shipment to cancel will be specified as the final path component of the request URI.

3.5.1.2. Parameters

Name Type Constraints Required Description
shipmentNo String Y Shipment number to be cancelled

3.5.2. Cancel Shipment Response

3.5.2.1. 200 OK

3.6. GetEventsByShipmentNo

This endpoint accepts a single shipment number and returns a history of any related shipment events that have occured to date

3.6.1. Request

GET /Shipment/GetEventsByShipmentNo/{shipmentNo}

3.6.1.1. Structure

As a GET request there is no request payload, the shipment will be specified as the final path component of the request URI.

3.6.1.2. Parameters

Name Type Constraints Required Description
shipmentNo String Y Shipment number for the tracking being requested

3.6.2. Response

3.6.2.1. 200 OK

3.6.2.1.1. Structure
{
    "shipmentNumber": string,
    "trackingStatus": string,
    "trackingLocation": string,
    "eta": string,
    "events": [
        {
            "status": string,
            "dateTime": string,
            "details": string,
            "location": string,
            "orderId": integer
        }
    ]
}
3.6.2.1.2. Attributes

Note that the status attributes provided in this response are normalised to Shiip statuses where possible so that API users do not have to handle carrier specific status responses.

Shipment object

Name Type Description
shipmentNumber String
trackingStatus String Last known Shiip status of the shipment
trackingLocation String Last known location of the shipment
eta String Current ETA if provided by carrier, otherwise original ETA
Most services do not specify a time and will always return 12am

Event object

Name Type Description
status String Shiip shipment status that this event corresponds to
dateTime String Date and time (if available) that this event took place
details String Raw status text as provided by carrier
location String Location as at the time of this event (if available)
orderId integer Specifies the relative order of the listed events
3.6.2.1.3. Example
{
    "shipmentNumber": "TEST00005143",
    "trackingStatus": "In Transit",
    "trackingLocation": "BRISBANE, QLD",
    "eta": "28/01/2020 12:00:00 AM",
    "events": [
        {
            "status": "In Transit",
            "dateTime": "2020-01-27T16:03:23",
            "details": "Item(s) picked up from sender location",
            "location": "BRISBANE, QLD",
            "orderId": 1518386
        },
        {
            "status": "In Transit",
            "dateTime": "2020-01-28T14:12:08",
            "details": "Item(s) in transit",
            "location": "AP MOUNT ISA DC, QLD",
            "orderId": 1524557
        },
        {
            "status": "In Transit",
            "dateTime": "2020-01-28T14:10:16",
            "details": "Item(s) in transit",
            "location": "AP MOUNT ISA DC, QLD",
            "orderId": 1524556
        },
        {
            "status": "Despatched",
            "dateTime": "2020-01-27T14:45:13.1133333",
            "details": "Item(s) despatched to Startrack Express",
            "location": "TINGALPA, QLD",
            "orderId": 1
        }
    ]
}

3.7. Get Proof of Delivery

This endpoint accepts a single shipment number and returns a Proof of Delivery (POD) image.

3.7.1. Request

GET /Shipment/GetPod/{shipmentNo}

3.7.1.1. Structure

As a GET request there is no request payload, the shipment will be specified as the final path component of the request URI.

3.7.1.2. Parameters

Name Type Constraints Required Description
shipmentNo String Y Shipment number corresponding to the POD required

3.7.2. Get POD Response

3.7.2.1. 200 OK

HTTPS response returning an image in JPEG format.

3.8. Get Labels

This endpoint accepts an array of shipment numbers and an optional array of item reference numbers and will return the corresponding labels in the format specified.

3.8.1. Request

POST /Print/GetLabelsByType/{labelType}

3.8.1.1. Structure

[
  {
    "shipmentNo": "string",
    "itemReferences": [
      "string",
      ...
    ]
  },
  {
    "shipmentNo": "string",
      "itemReferences": [
        "string",
        ...
      ]
  },
  ...
]

3.8.1.2. Parameters

Name Type Constraints Required Description
shipmentNo String Y Shipment number for the label(s) being requested
itemReferences String Array Shipment number for the label(s) being requested

3.8.1.3. Label Types

The following label formats are supported and can be requested by specifying the labelType in the URI

Label Type Constraints Description
pdf Default Labels returned in pdf format
zpl Labels returned in zebra thermal label format
excel Labels returned as csv with embedded image
word Labels returned as doc with embedded image
image Labels returned as jpeg image
html Labels returned as html with images

3.8.2. Get Labels Response

3.8.2.1. 200 OK

HTTPS response specifying the corresponding content-type and body containing the application data stream.

3.9. Load Shipment On Vehicle

This endpoint accepts a single shipment number and flags it as being loaded on the delivery vehicle prior to manifesting

3.9.1. Request

PUT /Shipment/Loadshipment/{shipmentNo}

3.9.1.1. Structure

As a PUT request there is no request body, theshipmentNo will be specified as the final path component of the request URI.

3.9.1.2. Parameters

Name Type Constraints Required Description
shipmentNo String Y Shipment number of the shipment to be flagged as loaded on vehicle

3.9.2. Response

3.9.2.1. 200 OK

4. Manifest By ShipmentNo

This endpoint accepts a single manifest number and returns a success or failure response indiciting the successful or unsucesful transmission of shipment data to the assigned carrier.

4.1.1. Request

PUT /Shipment/ManifestByNo/{shipmentNo}

4.1.1.1. Structure

As a PUT request there is no request body, the manifestNo will be specified as the final path component of the request URI.

4.1.1.2. Parameters

Name Type Constraints Required Description
manifestNo String Y Manifest number of the Shiip manifest to be manifested

4.1.2. Manifest By ShipmentNo Response

4.1.2.1. 200 OK

5. Create Shipments CSV service

5.1. Overview

Clients can submit shipment data in a CSV format via a SFTP server, which is then accessible as an Incomplete (draft) shipment in Shiip.

5.1.1. Features

5.1.2. Service details

The Create Shipment CSV Service operates as a standard SFTP server.

The client will need to connect to the SFTP server, authenticate, and then upload 1 or more CSV files matching the provided specification.

If your client implementation requires an absolute path, the upload path is /incoming - in most cases specifying an upload path is not required, the server will attempt to put the client in the incoming directory by default.

5.1.3. Authentication

A client connecting to the Shiip SFTP host must authenticate with a valid and active SFTP login/password combination (which will be provided by the Shiip team).

5.2. Shipment CSV specification

5.2.1. Structure

See also: sample CSV file

The CSV file should contain the shipment details for 1 or more shipments with all the shipment details that you wish to import.

Column requirements can vary:

5.2.2. Columns

Heading Type Required Description
CustomerCode Text Y Shiip tenancy code *
SenderCode Text Y Shiip location code to specify which of your locations a shipment should be created in (Use 3PT for 3rd party sending locations). *
SenderName Text Only used if SenderCode is 3PT.
SenderAddress1 Text Only used if SenderCode is 3PT.
SenderAddress2 Text Only used if SenderCode is 3PT.
SenderSuburb Text Only used if SenderCode is 3PT.
SenderState Text Only used if SenderCode is 3PT.
SenderPostcode Number Only used if SenderCode is 3PT.
SenderCountry Text Only used if SenderCode is 3PT.
SenderContact Text Only used if SenderCode is 3PT.
SenderPhone Text (10) Only used if SenderCode is 3PT.
SenderEmail Text Only used if SenderCode is 3PT.
ReceiverName Text Y
ReceiverAddress1 Text Y
ReceiverAddress2 Text Y
ReceiverSuburb Text Y
ReceiverState Text Y
ReceiverPostcode Number Y
ReceiverCountry Text
ReceiverContact Text
ReceiverPhone Text (10)
ReceiverEmail Text
TrackingEmail Text Multiple emails can be separated with a | (Shift-\)
SenderRef Text Multiple references can be separated with a | (Shift-\)
ReceiverRef Text Multiple references can be separated with a | (Shift-\)
ItemRef Text If the ItemRef matches a product in your Shiip product list, Shiip will use it to fill in the UOM/Weight/Length/Width/Height.
UOM Text CARTON, PALLET, etc.
Qty Number
Weight Decimal
Length Decimal
Width Decimal
Height Decimal
CarrierCode Text Shiip carrier code for nominated carrier if you need the service pre-selected. *
ServiceCode Text Shiip service code for nominated service if you need the service pre-selected. *
SpecialInstructions Text
isATL T/F Any value that isn't t/true/y/yes/1 is treated as false.
isResidential T/F Any value that isn't t/true/y/yes/1 is treated as false.
DespatchDate Text Expected ready date in dd/mm/yyyy format.
labelPrinter String Name of label printer to use for automated printing if applicable
* The applicable codes will be provided as needed. Tenancy and location codes depend the tenant's setup, and providing an exhaustive list of Carrier/Service codes would require significant maintenance and would make this document much longer than it needs to be.

5.3. Additional Notes

6. Webhook tracking event service

6.1. Overview

The Webhook tracking event service facilitates the Shiip system providing live, event driven tracking updates for use by your developed applications.

6.2. Features

6.3. Service details

A user can provide one or more endpoint URLs, nominate one or more events, and select which attributes to send in the payload. This is configured in the Shiip front end via Settings > Connectivity > Webhooks. When the status of a relevant shipment changes, Shiip will send a HTTPS request with the user's selected payload to the provided URL.

6.4. Request

6.4.1. Structure

{
  " shipmentNo": string,
  "carrierName": string,
  "serviceName": string,
  "estimatedPrice": string,
  "eta": string,
  "minEta": string,
  "accountNo": string,
  "senderAddress": {
    "companyName": string,
    "address1": string,
    "address2": string,
    "suburb": string,
    "state": string,
    "postCode": string,
    "contact": string,
    "phone": string,
    "email": string,
    "country": string
  },
  "reference": string,
  "senderReferences": [
    string
  ],
  "receiverReferences": [
    string
  ],
  "receiverAddress": {
    "companyName": string,
    "address1": string,
    "address2": string,
    "suburb": string,
    "state": string,
    "postCode": string,
    "contact": string,
    "phone": string,
    "email": string,
    "country": string
  },
  "shipmentGoods": [
    {
      "itemReference": string,
      "qty": int,
      "length": float,
      "width": float,
      "height": float,
      "weight": float,
      "unitOfMeasureName": string
    }
  ],
  "specialInstructions": string,
  "serviceCode": string,
  "labelPrinter": string,
  "accountNo": string",
  "autoManifest": boolean,
  "autoManifestDateTime": string,
  "costCentre": string,
  "orderNo": string,
  "vehicleType": string,
  "originator": string,
  "reassignedTo": string,
  "reassignedToCarrier": string,
  "reassignedToService": string,
  "reassignedFrom": string,
  "reassignedFromCarrier": string,
  "reassignedFromService": string,
  "reassignedReason": string
  "events": [
    {
      "status": string,
      "dateTime": string,
      "details": string,
      "location": string
    }
  ]
}

EOF