Environments
| Production {{URL}} | https://restapi.shipmentserver.com |
| Test {{URL}} | https://demo.shipmentserver.com:8080 |
| Production 2 {{URL}} | https://api.shipmentserver.com |
Important information about the test environment:
You cannot use an Actor from the production environment on the test environment. You need a separate actor for testing. Please contact Customer service for help on setting this up.
Note: Unless told otherwise, use the endpoint https://restapi.shipmentserver.com when using the REST API for ShipmentServer
Contact Customer Service for more information.
Authentication
The API supports both Basic Authentication and Bearer Authentication
The authentication is added to the headers Authorization key
The request body takes an application/json object with the following keys:
- data - the payload for the command ( example could be a shipment object )
- options - some commands can be controlled with additional settings
Swagger
The API methods can also be viewed using swagger
- Production | https://api.shipmentserver.com/index.html
- Test | https://demo.shipmentserver.com:8080/index.html
Note:
Currently, Swagger can only be used to test the methods using the webpage if you import it into another application, some configurations are missing from the JSON file.
Ex. the model/schema is missing, and the authentication also has to be configured manually.
Postman Collection - API Version 2
This collection contains request & response examples:
https://nshiftship.zendesk.com/hc/en-us/articles/23106569451420-Postman-Collection
Shipment Object
See this article on how it should be constructed using the Ticket UI Developer Tool:
Activating and using the Developer Tools
Or how to construct it manually:
Shipment Data Object
Index - API Version 2
-
Shipments - create, add, update, delete, submit, transmit, reprint & get
| POST | Create a shipment | #post_saveShipment | |
| POST | Create a shipment using shipping rules | #post_orderAdvice | |
| POST | Create a shipment in the order database | #post_orders |
| POST | Add a new line to an existing shipment | #post_lines |
| POST | Update a Package on a shipment | not implemented | |
| PATCH | Update a Line on a shipment | #patch_lines | |
| PATCH | Update Details on a shipment | #patch_details |
| DEL | Delete a package on a shipment | #delete_packages | |
| DEL | Delete a line on a shipment | #delete_lines | |
| DEL | Delete a shipment | #delete_shipments |
| POST | Submit a shipment | #post_shipments | |
| POST | Submit a shipment from inbox | #post_submitOrder | |
| POST | Submit a shipment using a flat file | #post_importUpload | |
| POST | Submit a ShadowBooking | #post_shadowShipments |
| PUT | Transmit specific shipments | #put_manifest_shipments | |
| PUT | Transmit all shipments on a stack | #put_stacks_manifest | |
| PUT | Transmit specific packages on a shipment | #put_manifest |
| POST | Reprint one or all labels | #post_labelReprint |
| GET | Get the object of an existing shipment | #get_shipments | |
| GET | Get the package object on a shipment | not implemented | |
| GET | Get all shipments from Inbox | not implemented | |
| GET | Get all shipments from AutoPrint | not implemented | |
| GET | Get all shipments from Draft | not implemented |
| GET | Get all documents from a shipment | #get_documents | |
| GET | Get a list of documents on a shipment | #get_documentLists |
-
ShipAdvisor
| POST | Get Delivery Options (Services/Products) | #post_shipAdvises |
-
Stacks
| GET | Get all Stacks | #get_stacks | |
| POST | Get all shipments from a Stack | #post_stacks_shipments | |
| PATCH | Move shipments to another Stack |
#patch_stacks_shipments |
| POST | Create a new Stack | #post_stacks | |
| DEL | Delete a Stack | #delete_stacks |
-
Batches
| POST | Get all Batches | #post_batches | |
| GET | Get one Batch | #get_batches | |
| GET | Get a file from a Batch | #get_batchereports | |
| GET | Get all Shipments from a Batch | #get_batchshipments |
-
Waybills
| POST | Create Waybill | #post_waybills |
| POST | Create BreakBulk | not implemented | |
| POST | Clear BreakBulk | not implemented | |
| POST | Create BreakBulk Shipment | not implemented | |
| POST | Get BreakBulk Invoice Summary | not implemented |
| POST | Craete Lead Shipment | not implemented | |
| POST | Get Lead group details | not implemented | |
| POST | Get Lead group | not implemented |
-
Services
| GET | Get all Services/Products | #get_products | |
| POST | Get the freight cost for a Shipment | #post_shipmentPrice | |
| POST | Validate a Shipment Object | #post_shipmentValidations | |
| POST | Validate addresses on a Product | #post_validRoutes | |
| POST | Return default value for the Product | #post_shipments_default | |
| GET | Get track & trace information | #get_trackingUrl | |
| POST | Get link to Claim Insurance | not implemented |
-
Addons
| POST | Get a list of Droppoints | #post_dropPoints |
| POST | Get a list of pickuplockers | #post_pickupLockers | |
| POST | Allocate a pickuplocker | #post_pickupLockerAllocations | |
| POST | Cancel a pickuplocker | not implemented |
| POST | Get a list of time slots | #post_timeSlots | |
| POST | Allocate a time slot | #post_timeSlotAllocations | |
| POST | Cancel a time slot | #post_voidTimeSlot |
| POST | Calculate Insurance Price | not implemented |
| POST | Get information of one DGOFFICE article | not implemented | |
| POST | Get a list of DGOFFICE articles | not implemented |
| POST | Get a list of DG articles | not implemented | |
| POST | Get values for DG fields | not implemented |
-
Config
| POST | Get printer font as base64 | not implemented | |
| GET | Get the default Sender Address | #get_senderAddress | |
| POST | Get printers from a DropZone client | #post_dropZonePrinters |
API Documentation
-
#POST_SaveShipments | Create a shipment
Used to save a shipment to Inbox
- Normally used when the shipment is being completed using the Ticket UI
Request
POST {{URL}}/ShipServer/{{ID}}/SaveShipment
- ID - the id of the actor to run the request against
Request body
The request body takes an application/json object
{
"data": {},
"options": {
"Place": "STRING",
"ServiceLevel": "STRING",
"UseShippingRules": "INT 0/1"
}
}
See the postman collection for a full example
Data
See the article about the Data Object
Options
- Place - where to save the shipment possible values: Inbox | Draft
- ServiceLevel - name of a ServiceLevel to execute in Shipping Rules
- UseShippingRules - set to 1 to enable Shipping Rules
-
#POST_OrderAdvice | Create a shipment using shipping rules
Creates a new shipment using Shipping Rules and ETA web service. It will select a product based on the shipment data and required delivery date. To use this function, you must have a CSR setup for the actor, and if you use Required delivery date, you should also have configured ETA
The flow is like this.
- CSR validates all products in a given service level.
- A call to ETA web service with all valid products from the previous step together with the required delivery date.
- ETA web service returns the delivery date and production cut-off time for all products that can deliver within the date specified.
- If more than one product can deliver, the allocation rule in Shipping Rules will decide which one to use.
- If no products can deliver, products close to the requested date will be selected
Request
POST {{URL}}/ShipServer/{{ID}}/OrderAdvice
- ID- the id of the actor to run the request against
Request body
The request body takes a shipment data object and an options object
{
"data": {},
"options": {
"ServiceLevel": "STRING",
"RequiredDeliveryDate": "DATETIME",
"Visibility": "STRING"
"Submit": INT (0/1),
"Labels": "STRING",
"TicketUserName": "STRING",
"WorkstationID": "UUID",
"DropZoneLabelPrinterKey": "STRING",
"DropZoneDocPrinterKey": "STRING",
"ValidatePostCode": INT (0/1)
}
}See the postman collection for a full example
Data
See the article about the Data Object
Options
- ServiceLevel - name of a ServiceLevel to execute in Shipping Rules
- RequiredDeliveryDate - the eta of when the shipment should be delivered YYYY-MM-DD
- ValidatePostCode - use 0 to disable PostCode validation
-
Visibility - use the value "extended" to return product and carrier name in the response
- - Submit - create the shipment instead of saving it to Inbox
-
Labels - the label type to generate, more information here
PDF, ZPL203, ZPL300, ZPL600, ZPL, ZPLGK, EPL, PNG, DATAMAXLP2, DATAMAXDPL, none
- - TicketUserName - login name used in the DropZone client
-
WorkstationID - id of the installed DropZone client
- DropZoneLabelPrinterKey - name of a label printer key defined in the DropZone client
- DropZoneDocPrinterKey - name of an a4 printer key defined in the DropZone client
-
#POST_Orders | Create a shipment in the order database
Used to store part of a shipment in the Orders storage service.
The shipment can then be completed using SubmitShipment or ImportUpload
Request
POST {{URL}}/ShipServer/{{ID}}/Orders
- ActorID - the id of the actor to run the request against
Request body
The request body takes a shipment data object and an options object
{
"data": {},
"options": {
"OrderID": "STRING"
}
}
See the postman collection for a full example
Data
See the article about the Data Object
Options
- OrderID - Uuid or another unique string.
-
#POST_Lines | Add a new line to an existing shipment
Creates new line on an already existing shipment.
Request
POST {{URL}}/ShipServer/{{ID}}/Shipments/:ShipmentTag/Lines
- ID - the id of the actor to run the request against
- ShipmentTag - the ID or Tag of the Shipment
Request body
The request body require a data object with a Lines Array
{
"data": {
"ShpCSID": "INT",
"Number": "INT",
"PkgWeight": "INT",
"PkgVol": "INT",
"Loadmeter": "INT",
"GoodsTypeID": "INT"
},
"options": {}
}
See the postman collection for a full example
Data
See the article about the Data Object
-
#PATCH_Lines | Update a Line on a Shipment
Update a line on an existing shipment
Request
PATCH {{URL}}/ShipServer/{{ID}}/:ShipmentTag/Lines/:LineTag
- ID - the id of the actor to run the request against
- ShipmentTag - the ID or Tag of the Shipment
- LineTag- the Tag of the line
Request body
The request body requires a data object with a Lines Array
{
"data": {
"ShpCSID": "INT",
"LineCSID": "INT",
"PkgWeight": "INT",
"LineWeight": "INT"
},
"options": {}
}
See the postman collection for a full example
Data
See the article about Lines Array and the Data Object
-
#PATCH_Details | Update details on a Shipment
Updates details for a shipment.
- Existing Details on the shipment will be removed before adding the supplied Details.
Request
PATCH {{URL}}/ShipServer/{{ID}}/Shipments/:ShipmentTag/Details
- ID - the id of the actor to run the request against
- ShipmentTag - the ID or Tag of the Shipment
Request body
The request body requires shipment data containing the details
{
"data": {
"ShpCSID": "INT",
"DetailGroups": "ARRAY[OBJECT]"
},
"options": {}
}
See the postman collection for a full example
Data
See the section about the DetailGroups in the article about the Data Object
-
#DELETE_Package | Delete a Package on a Shipment
Deletes package by PkgCSID or PkgTag
- Only packages that are not transmitted can be deleted.
Request
DELETE {{URL}}/ShipServer/{{ID}}/Shipments/:ShipmentTag/Packages/:PackageTag
- ID- the id of the actor to run the request against
- ShipmentTag - the ID or Tag of the Shipment (Not needed anymore)
- PackageTag- the ID or Tag of the package
See the postman collection for a full example
-
#DELETE_Lines | Delete a Line on a Shipment
Delete a line on an existing shipment
Request
DELETE {{URL}}/ShipServer/{{ID}}/Shipments/:ShipmentTag/Lines/:LineTag
- ID - the id of the actor to run the request against
- ShipmentTag - the ID or Tag of the Shipment
- LineTag- the Tag of the line
-
#DELETE_Shipment | Delete shipment based on Identifier
Used to delete a shipment that has not yet been transmitted.
Request
DELETE {{URL}}/ShipServer/{{ID}}/Shipments/:ShipmentTag
- ID- the id of the actor to run the request against
- ShipmentTag - both the ShpTag or ShpCSID can be used here
See the postman collection for a full example
-
#POST_Shipments | Submit a Shipment
Submits a shipment with or without the usage of Shipping Rules
- The most common way to create Shipments on the API
- Labels can be printed using Drop Zone and Cloud Print or returned as a base64 string
- Recommended Label format is ZPLGK, PNG, or PDF
Request
POST {{URL}}/ShipServer/{{ID}}/Shipments
- ID- the id of the actor to run the request against
Request body
The request body takes an application/json object with the following keys: data & options
{
"data": {},
"options": {
"Labels": "STRING",
"TrackingURL": "INT(0/1)",
"TicketUserName": "STRING",
"WorkstationID": "UUID",
"DropZoneLabelPrinterKey": "STRING",
"DropZoneDocPrinterKey": "STRING",
"UseShippingRules": "INT (0/1)",
"ServiceLevel": "STRING",
"RerunCSROnError": "INT (0/1)",
"Token": "STRING",
"ReturnShipment": "INT (0/1)",
"PriceCalculation": "INT (0/1)",
"UseErrorLabels": "INT(0/1)"
"SaveShipmentOnError": "STRING"
}
}
See the postman collection for a full example
Data
See the article about the Data Object
Options
-
Labels - the label type to generate, more information here
[ PDF, ZPL203, ZPL300, ZPL600, ZPL, ZPLGK, EPL, PNG, DATAMAXLP2, DATAMAXDPL, none ] -
Labels_LLR - get Labelless return QR code in PDF
[PDF] - -
- TrackingURL - Return Shipment / Package tracking URL if provided by the Carrier
- TicketUserName - login name used in the DropZone client
-
WorkstationID - id of the installed DropZone client
- DropZoneLabelPrinterKey - name of a label printer key defined in the DropZone client
-
DropZoneDocPrinterKey - name of an A4 printer key defined in the DropZone client
- - UseShippingRules - use 1 to activate Shipping Rules
-
ServiceLevel - name of a ServiceLevel to execute in Shipping Rule
- - Token - a token found in the response of the method GetShipAdvise, which describes the product to create the shipment with
-
RerunCSROnError - use 1 to rerun CSR if the product specified in the token is no longer valid
- - ReturnShipment - creates a return shipment in addition to the other shipment.
- PriceCalculation - use 1 to get a price back from Price Calculation Setup Item
-
UseErrorLabels - use 1 to return a label with the content of the ErrorMessage array
- - OrderID- Uuid or another unique string. The ID of the partial shipment in Order Storage created by nShift Checkout. Equivalent to nShift Checkout prepareID.
-
CompleteLabel - use 1 to get back graphics on all shipments in a shipment with multiple lines. If not defined, we will only return graphics on the first label. (default behavior)
Only enable this option if multiple labels are received in a response and not all labels are printed using the same label printer. Usually, printers store graphics, enabling subsequent labels to reuse stored data for faster printing speeds. - SaveShipmentOnError - use "Autoprint" or "Inbox" to save the shipment into the "Error Handling" or "Inbox" folder if the validation fails.
-
#POST_SubmitOrder | Submit a shipment from inbox
Submits an existing order that has been created using the OrderAdvice or SaveShipment method
- Cloud Print can be used to print the labels on a certain workstation.
-
CSR can be executed again without calling ETA Web Service. If the ServiceLevel is specified and different from OrderAdvice
Request
POST {{URL}}/ShipServer/{{ID}}/SubmitOrder
- ID- the id of the actor to run the request against
Request body
The request body takes an application/json object with the following keys: data & options
{
"data": {
"ShpCSID": "INT"
},
"options": {
"Labels": "STRING"
"TicketUserName": "STRING"
"WorkstationID": "UUID"
"UseCopy": "STRING"
"UseShippingRules": "STRING"
"ReturnShipmentServiceLevel": "STRING"
"ReturnShipmentFirst": "STRING"
"Vibility": "STRING"
}
}
See the postman collection for a full example
Data
See the article about the Data Object
Options
-
Labels - the label type to generate, more information here
PDF, ZPL203, ZPL300, ZPL600, ZPL, ZPLGK, EPL, PNG, DATAMAXLP2, DATAMAXDPL, none - TicketUserName - login name used in the DropZone client
- WorkstationID - id of the installed DropZone client
-
UseCopy - use 1 to keep the original shipment in the inbox
- - UseShippingRules - enable Shipping Rules on the request
-
ServiceLevel - name of a ServiceLevel to execute in Shipping Rules
- - ReturnShipmentServiceLevel - if a return label is needed, add the name of the ServiceLevel that contains the return products
- ReturnShipmentFirst - use 1 if the return label needs to be printed first
- -
- Visibility - use the value "extended" to return product and carrier name in the response
-
#POST_ImportUpload | Submit a shipment using a flat file
This method creates a shipment using a base64 encoded file
- txt, csv, edi, or custom
-
XML is also supported, but an XSLT version 1 stylesheet is required in order to translate the file into a CSV file.
before it can be processed.
Request
POST {{URL}}/ShipServer/{{ID}}/ImportUpload
- ID- the id of the actor to run the request against
Request body
The request body takes an application/json object with the following keys: data & options
{
"data": {
"filename": "STRING",
"filecontent": "BASE64 ENCODED STRING"
},
"options": {
"Labels": "STRING",
"ImportOnLocation": "INT (0/1)",
"TicketUserName": "STRING",
"WorkstationID": "UUID"
}
}See the postman collection for a full example
Data
- filename - name and extension of the file
- filecontent - the content of the file to be uploaded, encoded in base64
Options
-
Labels - the label type to generate, more information here
PDF, ZPL203, ZPL300, ZPL600, ZPL, ZPLGK, EPL, PNG, DATAMAXLP2, DATAMAXDPL, none
- - ImportOnLocation - target the Setup Item - Import Setup on Actor (0) or Location (1)
- TicketUserName - login name used in the DropZone client
- WorkstationID - uuid of the installed DropZone client
-
#POST_ShadowShipments | Submit a ShadowShipment
Create a copy of an existing shipment that was created in another booking system.
- All carrier validations are disabled
- No labels are created
- Shipment, Package number, or both must be supplied in the Data object
- SubmitDate, TransmitDate, and PickupDate must be supplied in the Data object
Request
POST {{URL}}/ShipServer/{{ID}}/ShadowShipments
- ID- the id of the actor to run the request against
Request body
The request body takes an application/json object with the following keys: data & options
{
"data": {},
"options": {}
}
See the postman collection or swagger page for a full example
Data
See the article about the Data Object
Options
- No options are supported
-
#PUT_Manifest_Shipments | Transmit specific shipments
This method will only transmit the specified shipment(s) within a stack.
Request
PUT {{URL}}/ShipServer/{{ID}}/Shipments/Manifest
- ID - the id of the actor to run the request against
Request body
The request body takes an Array of ShpCSID
{
"data": {
"ShipmentCSIDs": "ARRAY"
},
"options": {}
}
See the postman collection for a full example
Data
- ShipmentCSIDs - the shipments to be transmitted
- IsThisATest - is only supported on some Carriers, used to send test EDI data to a Carrier
-
#PUT_Stacks_Manifest | Transmit all Shipments on a Stack
Transmit all shipments on a stack
Request
POST {{URL}}/ShipServer/{{ID}}/Stacks/:StackID/Manifest
- ID - the id of the actor to run the request against
- StackID - the id of the stack to delete
See the postman collection for a full example
-
#PUT_Manifest | Transmit specific packages on a shipment
This method will create new shipments based on the PackageCSIDs given in the body and transmit them.
Customer specific developed method.
Contact customer support if you need to use this.
Agents can assess the documentation for this method here:
-
#POST_LabelReprint | Reprint a label
Used to reprint one or all labels on a shipment that has been submitted
- Use the same label format as when it was submitted.
Request
POST {{URL}}/ShipServer/{{ID}}/Shipments/LabelReprint
- ActorID - the id of the actor to run the request against
Request body
The request body takes a shipment data and an options object
{
"data": {
"ShpCSID": "INT",
"PkgCSID": "INT"
},
"options": {
"Labels": "STRING",
"TicketUserName": "STRING",
"WorkstationID": "UUID",
"DropZoneLabelPrinterKey": "STRING",
"DropZoneDocPrinterKey": "STRING",
}
}
See the postman collection for a full example
Data
- ShpCSID - the id of the shipment ( used to reprint all labels )
- PkgCSID - the id of the package ( used if you want to reprint a specific label )
Options
-
Labels - the label type to generate, more information here
PDF, ZPL203, ZPL300, ZPL600, ZPL, ZPLGK, EPL, PNG, DATAMAXLP2, DATAMAXDPL, none
- - TicketUserName - login name used in the DropZone client
-
WorkstationID - id of the installed DropZone client
- DropZoneLabelPrinterKey - name of a label printer key defined in the DropZone client
- DropZoneDocPrinterKey - name of an A4 printer key defined in the DropZone client
-
#GET_Shipments | Get Shipment based on Identifier
Used to return a shipment that has not been deleted.
Request
GET {{URL}}/ShipServer/{{ID}}/Shipments/{ShipmentTag}
- ID- the id of the actor to run the request against
- ShipmentTag - both the ShpTag or ShpCSID can be used here
See the postman collection for a full example
-
#Get_Documents | Get documents from a Shipment
This method documents is used to return a list of all documents encoded as base64 on a shipment.
Request
GET {{URL}}/ShipServer/{{ID}}/Shipments/:ShipmentTag/Documents
- ID - the id of the actor to run the request against
- ShipmentTag - both the ShpTag or ShpCSID can be used here
See the postman collection for a full example
-
#Get_DocumentLists | Get a list of documents from a Shipment
This method is used to return a list of all documents on a shipment.
Request
GET {{URL}}/ShipServer/{{ID}}/Shipments/:ShipmentTag/DocumentLists
- ID - the id of the actor to run the request against
- ShipmentTag - both the ShpTag or ShpCSID can be used here
See the postman collection for a full example
ShipAdvisor
-
#POST_ShipAdvises | Get Delivery Options (Services/Products)
Get advice on which products can be used based on the data object in the payload.
- Normally used on the checkout page in a webshop
- Shipping Rules contain the logic on which products should be returned
- Can also use Carrier Performance (ETA) to display the expected delivery time
Request
POST {{URL}}/ShipServer/{{ID}}/shipAdvises
- ID - the id of the actor to run the request against
Request body
The request body takes a shipment data and an options object.
{
"data": {
"Addresses": "ARRAY,
"Lines": "ARRAY"
},
"options": {
"ServiceLevel": "STRING",
"Price": "STRING",
"TimeSlots": "INT",
"DropPoints": "INT",
"DropPointCount": "INT",
"PickupLockers": "INT",
"EarliestPickup": "DATE",
"RequiredDeliveryDate": "DATETIME",
"Deliverydate": "STRING",
"NoProductTokens" INT(0/1)
}
}
See the postman collection for a full example
Data
See the section here
Options
- ServiceLevel - name of a ServiceLevel to execute in Shipping Rules
- Price - Use value "CSR" to get price from CSR, or "1" or "2" to get Price1 or Price2
-
TimeSlots - Use value 1 to activate TimeSlots
Read the TimeSlots article to get more information on how to create a Shipment using TimeSlots - DropPoints - Use value 1 to get DropPoints
- DropPointCount - Number of drop points to return for each product
- PickupLockers - Use value 1 for carriers who support this
- EarliestPickup - Set the earliest time for the carrier to pick up the shipment
- RequiredDeliveryDate - YYYYMMDD
- Deliverydate - "ETAWS"
- NoProductTokens - used to define if you want the product token returned
Stacks
-
#GET_Stacks | Get All Stacks
A stack is a placeholder for shipments ready for transmitting EDI to the carrier.
When shipments are submitted, they are placed in a stack at subcarrier level.
Request
GET {{URL}}/ShipServer/{{ID}}/Stacks
- ID - the id of the actor to run the request against
See the postman collection for a full example
---
#POST_Stacks_Shipments | Get all Shipments from a Stack
The method returns all the shipments within a stack on the given StackCSID.
Request
POST {{URL}}/ShipServer/{{ID}}/Stacks/Shipments
- ID - the id of the actor to run the request against
Request body
The request body takes a data object with the stack id
{
"data": {
"StackCSID": "INT"
},
"options": {}
}
Data
- StackCSID - the id of the stack
-
#PATCH_Stacks_Shipments | Move multiple Shipments to another Stack
Move Shipments from one Stack to another
Request
Patch {{URL}}/ShipServer/{{ID}}/Stacks/Shipments
- ID - the id of the actor to run the request against
Request body
The request body takes a shipment data and an options object.
{
"data": {
"StackCSID": "INT",
"ShpCSID": "ARRAY"
},
"options": {}
}See the postman collection for a full example
Data
- StackCSID - id of the target stack
- ShpCSID - Id or Tag of the shipment(s) to move
-
#POST_Stacks | Create a new Stack
Use to create a new Stack on a SubCarrier
Request
POST {{URL}}/ShipServer/{{ID}}/Stacks
- ID - the id of the actor to run the request against
Request body
The request body takes a shipment data and an options object
{
"data": {
"SubcarrierCSID": "INT",
"SubcarrierConceptID": "INT",
"StackName": "STRING"
},
"options": {}
}See the postman collection for a full example
Data
Only one of the SubcarrierConceptID and SubcarrierCSID is needed
-
#DELETE_Stacks | Delete a Stack
Use to delete a Stack
Request
DEL {{URL}}/ShipServer/{{ID}}/Stacks/:StackID
- ID - the id of the actor to run the request against
- StackID - the id of the stack to delete
See the postman collection for a full example
Batches
-
#POST_Batches | Get all Batches
Return returns a list of batches from the criteria in the request. When shipments are transmitted, they are placed in a batch. A batch will only contain the currently transmitted shipments for the carrier it belongs to. That means that next time shipments are transmitted, a new batch is created for them.
Request
POST {{URL}}/ShipServer/{{ID}}/Batches
- ID - the id of the actor to run the request against
See the postman collection for a full example
-
#GET_Batches | Get one Batch based on Identifier
Return a single Batch using the BatchID
Request
GET {{URL}}/ShipServer/{{ID}}/Batches/:BatchID
- ID - the id of the actor to run the request against
- BatchID - the id of the actor to run the request against
See the postman collection for a full example
-
#GET_Batch_Report | Get a file from a Batch
Return one report using the BatchReportID
Request
GET {{URL}}/ShipServer/{{ID}}/Batches/:BatchID
- ID - the id of the actor to run the request against
- BatchID - the id of the actor to run the request against
See the postman collection for a full example
-
#GET_Batch_Shipments | Get shipments from a Batch using Identifier
Return all shipment from a Batch using the BatchID
Request
GET {{URL}}/ShipServer/{{ID}}/Batches/:BatchID
- ID - the id of the actor to run the request against
- BatchID - the id of the actor to run the request against
See the postman collection for a full example
Waybills
-
#POST_Waybills | Create Waybill from a Batch
Creates a waybill using a BatchID
See this article for more information: Creating a waybill on Shipment Server
Request
GET {{URL}}/ShipServer/{{ID}}/Batches/:BatchID
- ID - the id of the actor to run the request against
- BatchID - the id of the actor to run the request against
See the postman collection for a full example
Services
-
#GET_Products | Get all Services / Products
Gets all carriers and subcarriers, products, and services for the given actor, along with the corresponding ConceptIDs and ServiceIDs. These IDs are unique identifiers for carriers, subcarriers, products, and services. With this method, it is easy to build a product selection at the client side that provides the IDs you need to create shipments.
Support both Concept Carriers and Custom Carriers
Request
GET {{URL}}/ShipServer/{{ID}}/Products
- ID - the id of the actor to run the request against
See the postman collection for a full example
-
#POST_ShipmentPrice | Get the freight cost for a Shipment
Calculates the price based on the shipment if price calculation is activated on the product.
Request
POST {{URL}}/ShipServer/{{ID}}/shipmentPrices
- ID - the id of the actor to run the request against
Request body
The request body takes a shipment data object
{
"data": {
"ProdConceptID": "INT",
"Addresses": "ARRAY",
"Lines": "ARRAY"
},
"options": {
}
}
See the postman collection for a full example
Data
-
#POST_ShipmentValidations | Validate a Service based on Shipment data
Validates the shipment based on the input for the shipment object (data)
Request
POST {{URL}}/ShipServer/{{ID}}/ShipmentValidations
- ID - the id of the actor to run the request against
Request body
The request body takes a shipment data object
{
"data": {},
"options": {}
}
See the postman collection for a full example
Data
-
#POST_ValidRoutes | Validate a Route based on Shipment data and Carrier Validation
Validate addresses on a service; depending on the service, the strength of the validation will vary
Request
POST {{URL}}/ShipServer/{{ID}}/ValidRoutes
- ID - the id of the actor to run the request against
Request body
The request body takes a shipment data object
{
"data": {},
"options": {}
}
See the postman collection for a full example
Data
-
#POST_Shipments_Default | Get default values on a Service / Product
Return default value ( Setup Items ) for the service
Request
POST {{URL}}/ShipServer/{{ID}}/Shipments/Defaults
- ID - the id of the actor to run the request against
Request body
The request body takes a shipment data and an options object
{
"data": {
"ProdConceptID": "INT"
},
"options": {
}
}
See the postman collection for a full example
-
#Get_TrackingUrl | Get Track & Trace URL from a Shipment
Return the Tracking URL for a shipment
- If the carrier does not support track and trace, a link to nshiftportal.com can be returned instead.
Request
GET {{URL}}/ShipServer/{{ID}}/Shipments/:ShipmentTag/TrackingURL
- ID - the id of the actor to run the request against
-
ShipmentTag - the ID or Tag of the Shipment
See the postman collection for a full example
Addons
-
#POST_Droppoints | Get a list of DropPoints
Returns drop points (service points) for the given product that supports it.
See the article for more information: How to retrieve Droppoints
Request
POST {{URL}}/ShipServer/{{ID}}/DropPoints
- ID - the id of the actor to run the request against
Request body
The request body takes a shipment data and an options object
{
"data": {
"ProdConceptID": "INT",
"ResultCount": "INT",
"Addresses": "ARRAY"
},
"options": {}
}
See the postman collection for a full example
Example showing a request with multiple products:
{
"ProdConceptIDs": [
5318,
5319,
755
],
"ResultCount": "2",
"Addresses": [
{
"Kind": 1,
"CountryCode": "FR",
"PostCode": "76000",
"Street1": "84, rue de Epeule"
}
]
Data
- ProdConceptID - id of the product
- ResultCount - max is 20, but it depends on the carrier how many will be returned
- Addresses - see this article: How to retrieve Droppoints
- Services - some products require a service to support droppoints
-
#POST_PickupLockers | Get a list of PickupLockers
Returns a list of PickupLockers from a service
Request
POST {{URL}}/ShipServer/{{ID}}/PickupLockers
- ID - the id of the actor to run the request against
Request body
The request body requires a shipment data object
{
"data": {
"ProdConceptID: "INT",
"Addresses": "ARRAY",
"Lines": "ARRAY"
},
"options": {
}
}
See the postman collection for a full example
-
-
#POST_PickupLockerAllocations | Allocate a PickupLocker
Allocates a pickuplocker. To use this, you need to call GetPickupLockers, or GetShipAdvise first with the options parameter “PickupLocker”:1. These functions will return a PickupLockerToken added to the option section for AllocatePickupLocker.
Request
POST {{URL}}/ShipServer/{{ID}}/PickupLockerAllocations
- ID - the id of the actor to run the request against
Request body
The request body takes a shipment data and an options object
{
"data": {},
"options": {
"Token": "STRING",
"PickupLockerToken": "STRING"
}
}
See the postman collection for a full example
Data
See the article about the Data Object
Options
- Token - Can include product id instead
- PickupLockerToken -
-
#POST_TimeSlots | Get a list of TimeSlots
Return available timeslots for a product.
For more information, see this article: Creating Shipments using TimeSlots
Request
POST {{URL}}/ShipServer/{{ID}}/TimeSlots
- ID - the id of the actor to run the request against
Request body
The request body takes a shipment data and an options object
{
"data": {
"ProdConceptID": "INT",
"Addresses": "ARRAY",
"Lines": "ARRAY"
},
"options": {
"Token": "STRING",
"EarliestPickup": "DATETIME"
"LatestPickup": "DATETIME"
}
}
See the postman collection for a full example
Data
See the article about the Data Object
Options
- Token - Mandatory if product is not specified in Data
- EarliestPickup - Mandatory if LatestPickup is specified. The valid values can differ between carriers. For some carriers, EarliestPickup can be mandatory regardless.
- LatestPickup - Mandatory if EarliestPickup is specified. The valid values can differ between carriers. For some carriers, LatestPickup can be mandatory regardless.
-
-
#POST_TimeSlotAllocations | Allocate a TimeSlot
Allocated TimeSlot Token needs to be included in the options for SubmitShipment and Void Timeslot.
For more information, see this article:
Creating Shipments using TimeSlot
Request
POST {{URL}}/ShipServer/{{ID}}/TimeSlotAllocations
- ID - the id of the actor to run the request against
Request body
The request body takes a shipment data and an options object
{
"data": {},
"options": {
"Token": "STRING",
"EarliestPickup": "ISO DATE",
"LatestPickup": "ISO DATA"
}
}
See the postman collection for a full example
Data
See the article about the Data Object
Options
- Token
- EarliestPickup
- LatestPickup
-
#POST_VoidTimeSlot | Cancel a booked TimeSlot
Remove a time slot earlier allocated by AllocateTimeSlot.
For more information, see this article: Creating Shipments using TimeSlots
Request
POST {{URL}}/ShipServer/{{ID}}/VoidTimeSlot
- ID - the id of the actor to run the request against
Request body
The request body takes a shipment data and an options object
{
"data": {},
"options": {
"AllocatedTimeSlotToken": "STRING"
}
}
See the postman collection for a full example
Options
- AllocatedTimeSlotToken -
Config
-
#GET_SenderAddress | Get the Sender Address
Returns the sender address that is registered on the actor.
Request
GET {{URL}}/ShipServer/{{ID}}/SenderAddress
- ID - the id of the actor to run the request against
Request body
The request body takes a data object
{
"data": {
"UserName": "noreply@nshift.com"
}
}
See the postman collection for a full example
-
Labels
Information about the label format:
- All label types are encoded as Base64.
- none - will not return any label, but will create the shipment.
- PDF - labels in PDF format.
- ZPL203 - labels in ZPL format. Sets the DPI to 203. Works the same as ZPLGK.
- ZPL300 - labels in ZPL format. Sets the DPI to 300.
- ZPL600 - labels in ZPL format. Sets the DPI to 600.
- ZPL - labels in ZPL format, but will have a margin of 30 on top of the label. This label type is optimized for LP2844-Z printers and may print too far down on the label for other printers. If this issue occurs, try the ZPLGK type.
- ZPLGK - labels in ZPL II format but without the top margin. Supported by printers like GK420D, ZM400, and may also work with other printers that support ZPL II language.
- EPL - labels in EPL format for printers that support this, e.g., LP2844, ZM400, and GK420D.
- PNG - labels in PNG format.
- DATAMAXLP2 - label for Datamax printer.
- Unicode ( e.g., Cyrillic characters ) is only supported for PNG, PDF, and ZPLGK label types.
#POST_DropZonePrinters | Get list of printers from a DropZone client
Returns the sender address that is registered on the actor.
Request
POST {{URL}}/ShipServer/{{ID}}/DropZonePrinters
- ID - the id of the actor to run the request against
Request body
The request body takes a data object
{
"data": {
"UserName": "noreply@nshift.com"
}
}
See the postman collection for a full example
-