Accessing the web service
The endpoints for the centrally hosted services can be obtained from your primary GLS contact and will be given with your credentials for the Service. You can retrieve the WSDL of the corresponding service by adding '?wsdl' to the URL.
If you are connecting to a locally installed GLS ShipIT, you have to adapt the URL to point to the host (and port) in your network where the GLS ShipIT backend is running. E.g. https://10.10.10.10:8443/backend/ShipmentProcessingService/ShipmentProcessingPortType?wsdl The web service request/response content is encoded using UTF-8.
All web services operations within this port are about creating or updating shipments. A shipment is a selection of one or more parcels that are collected at address A and delivered to address B. If several parcels should be sent from address A to address B and those parcels should share the same services, they can be combined to a shipment.
If the user is authenticated successfully the actual backend state is requested from datahub. If the backend is active in datahub, the backend state in backend database is set to active and the request is executed, else the backend state in backend database is set to inactive and an error is returned.
Available web service operations
Webservices Examples
The pages below contain examples of webservice calls and error responses:
createParcels (F-114)
This operation creates a shipment that contains one or more shipment units. The operation takes an instance of eu.glsgroup.fpcs.datatypes.soap.v1.shipmentprocessing.ShipmentRequestData The input object is split into several sections allowing you to specify Shipper data, Consignee data, Shipment unit data, products and services, Printing options as well as some Custom content like an extra barcode or image that should be printed on the label.
The parts of the request are explained in the following sections in more detail:
Shipment data
When you are creating a shipment, you can specify several attributes on the shipment level. These are:
-
ShipmentReference - You can provide one or more identifiers for this shipment.
-
ShippingDate - Provide a date for the shipment. If no value is provided, the next working day is picked automatically.
-
IncotermCode - If you ship between different commercial zones, you have to specify the inco term for this shipment.
-
Identifier - Attribute for storing a person in charge or a work station
-
Middleware - Attribute for storing Partner ERP System
-
Product - The product group in which you shipment fits (parcel, express or freight). GLS ShipIT will automatically choose the best product (small parcel or euro business parcel) for your shipment based on the defined group (depending on the parcel weight, pickup and delivery address)
-
ExpressAltDeliveryAllowed - The user has a possibility to deactivate the alternative delivery for Express shipment.
-
Consignee data
-
Shipper data
-
Shipment unit data
-
Service - The services that shall be booked for this shipment
<typ:Shipment>
<typ:ShipmentReference>1dd351a9-e0b5-4ead-ace4-d834a1233d27</typ:ShipmentReference>
<typ:ShipmentReference>d9652383-a95f-4cc4-b03a-6ee05f3b7aa5</typ:ShipmentReference>
<typ:ShippingDate>2019-01-01</typ:ShippingDate>
<typ:Identifier>userTestId</typ:Identifier>
<typ:Middleware>Primavera</typ:Middleware>
<typ:Product>Parcel</typ:Product>
...
</typ:Shipment>
Name | Expression in webservices | Field length | Type | Format | Mandatory/Optional | Restrictions | Level | Description |
Customer reference number | ShipmentReference | 40 | alphanumeric | | Optional | - | | Reference for this consignment of parcels |
Shipping date | ShippingDate | 10 | alphanumeric | YYYY-MM-DD | Optional | - | | Date for the shipment |
Incoterm | IncotermCode | 2 | alphanumeric | 10, 20, 30, etc. | Optional | | | Incoterm for this shipment. Represented by 2 digits |
Identifier | Identifier | 40 | alphanumeric | | Optional | - | | Person who started the parcel creation |
Middleware | Middleware | 40 | alphanumeric | | Optional | - | | Partner ERP System |
Product Group | Product | 7 | alphanumeric | | Mandatory | Parcel, Express or Freight | | Please select one |
Alternative delivery activation | ExpressAltDeliveryAllowed | 5 | boolean | | Optional | true or false | | Please select one |
Consignee | Consignee | | | | Mandatory | - | | see section restCreateParcelsConsignee |
Shipper | Shipper | | | | Mandatory | - | | see section restCreateParcelsShipper |
Shipment unit | ShipmentUnit | | | | Mandatory | - | | see section restCreateParcelsShipmentunit |
Services | Services | | | | Optional | - | | see section restCreateParcelsUnitServices |
Consignee data
The consignee is the person to which the shipment shall be sent. The consignee ID will be printed on the label if specified. The consignee address has to be specified within the request. The consignee category can be "BUSINESS" or "PRIVATE". If the field consignee category is omitted, the consignee will have no (empty) category.
In case of shipments with return services (pick&return, pick&ship, shopreturn) assigned, the consignee and the shipper data sections will automatically be switched on the return label. That means the consignee address, that you provide within your Webrequest will be used as pickup address on the return label. According to Pick&Ship and Pick&Return Service the following fields are mandatory: ContactPerson and FixedLinePhonenumber.
The consignee address can be specified as follows:
<com:Address>
<com:Name1>Max Mustermann</com:Name1>
<com:Name2>Travel and Co</com:Name2>
<com:CountryCode>DE</com:CountryCode>
<com:ZIPCode>38106</com:ZIPCode>
<com:City>Braunschweig</com:City>
<com:Street>Falkenbergstrasse</com:Street>
<com:StreetNumber>47</com:StreetNumber>
<com:eMail>max.mustermann@email.test</com:eMail>
<com:FixedLinePhonenumber>004953112345</com:FixedLinePhonenumber>
<com:MobilePhoneNumber>00491791234567</com:MobilePhoneNumber>
</com:Address>
The consignee category can be specified as follows:
<typ:Consignee>
<com:Category>BUSINESS</com:Category>
<com:Address>....</com:Address>
</typ:Consignee>
To provide an example of a consignee ID that should be printed on the label:
<typ:Consignee>
<com:ConsigneeID>100</com:ConsigneeID>
<com:Address>....</com:Address>
</typ:Consignee>
Name | Expression in webservices | Field length | Type | Format | Mandatory/Optional | Restrictions | Level | Description |
Consignee identifier | ConsigneeID | 80 | alphanumeric | | Optional | - | | Identifier for the recipient of the parcels |
Cost Center | CostCenter | 80 | alphanumeric | | Optional | - | | Delivery location cost center for Inbound |
Consignee Category | Category | 8 | alphanumeric | CAPS LOCK | Optional | Only PRIVATE or BUSINESS | | Classifies consignee as 2B (BUSINESS) or 2C (PRIVATE) recipient |
Consignee Address | Address | | | | Mandatory | - | | see section restCreateParcelsAddress for field details |
Address data
Name | Expression in webservices | Field length | Type | Format | Mandatory/Optional | Restrictions | Level | Description |
Name1 | Name1 | 40 | alphanumeric | | Mandatory | - | | Name of the consignee |
Name2 | Name2 | 40 | alphanumeric | | Optional | - | | Additional consignee name information |
Name3 | Name3 | 40 | alphanumeric | | Optional | - | | Additional consignee name information |
Country code | CountryCode | 2 | alphanumeric | DE, AT, BE, FR, etc. | Mandatory | - | | Destination country of the shipment |
Province | Province | 40 | alphanumeric | | Optional | - | | Province where the consignee's city is located in |
ZIPCode | ZIPCode | 10 | alphanumeric | | Mandatory | - | | ZIP code of the consignee's city |
City | City | 40 | alphanumeric | | Mandatory | - | | City of the consignee |
Street | Street | 40 | alphanumeric | | Mandatory | > 3 | | Street name |
Street number | StreetNumber | 40 | alphanumeric | | Optional | - | | Street number (if not part of the street) |
eMail | eMail | 80 | alphanumeric | | Optional | - | | Email address of the consignee |
Contact person | ContactPerson | 40 | alphanumeric | | Optional | > 5 | | Contact person to print on the label |
Fixed phonenumber | FixedLinePhonenumber | 40 | alphanumeric | | Optional | > 3 | | Fixed line phone number of the consignee |
Mobile | MobilePhoneNumber | 40 | alphanumeric | | Optional | > 3 | | Mobile phone number of the consignee |
Shipper data
This section fulfills two purposes. It identifies the shipper and as such the address from where the shipment shall be collected. It also offers the possibility to use an alternative shipper address that shall be printed on the labels. As the shipper ID please provide the Contact ID that was provided to you by GLS.
In case of shipments with return services (pick&return, pick&ship, shopreturn) assigned, the shipper data section represents the delivery address on the return label. That is the shipper address, that you provide within your Webrequest and that will be taken as the address on the return label, where the parcel will be delivered to.
<typ:Shipper>
<com:ContactID>2761234567</com:ContactID>
<com:AlternativeShipperAddress>
<com:Name1>Logistics and More</com:Name1>
<com:CountryCode>DE</com:CountryCode>
<com:ZIPCode>65760</com:ZIPCode>
<com:City>Eschborn</com:City>
<com:Street>Elly-Beinhorn-Strasse</com:Street>
<com:StreetNumber>1a</com:StreetNumber>
<com:eMail>logistics@more.test</com:eMail>
<com:FixedLinePhonenumber>004961961234567</com:FixedLinePhonenumber>
</com:AlternativeShipperAddress>
</typ:Shipper>
Name | Expression in webservices | Field length | Type | Format | Mandatory/Optional | Restrictions | Level | Description |
Shipper identifier | ContactID | 20 | alphanumeric | | Mandatory | - | | Shipper identifier as given by GLS |
Alternative address | AlternativeShipperAddress | - | Address | | Optional | - | | see section restCreateParcelsAddress |
French customer reference | FRAlphaCustomerReference | 10 | alphanumeric | | Optional | Field length must be exactly 10 | | French alpha contact reference number |
Shipment unit data
Within this section of the request you specify each shipment unit of your shipment.
A shipment unit can contain the following elements:
-
ReferenceNumber - You can provide one or more identifiers for this shipment unit.
-
Weight - The weight of the parcel
-
Service - Zero to many Services
Name | Expression in webservices | Field length | Type | Format | Mandatory/Optional | Restrictions | Level | Description |
Parcel reference | ShipmentUnitReference | 40 | alphanumeric | | Optional | - | | Reference to be given to the parcel |
Parcel Weight | Weight | 10 | decimal | | Optional | > 0 | | Each minimum weight is specified by Shipper |
Parcel note1 | Note1 | 50 | alphanumeric | | Optional | - | | Notes added to the parcel (line 1) |
Parcel note2 | Note2 | 50 | alphanumeric | | Optional | - | | Notes added to the parcel (line 2) |
Parcel services | Service | - | | | Optional | - | | see section restCreateParcelsUnitServices for detailed fields |
French parcel reference | FRAlphaParcelReference | 18 | alphanumeric | | Optional | Field length must be exactly 18 | | French alpha contact parcel reference |
Track identifier | TrackID | 40 | alphanumeric | | Optional | - | | Identifier for the parcel. Used for a cancelShipment request |
1D barcode number | ParcelNumber | - | alphanumeric | | Optional | - | | 1D barcode printed in the label |
Services
You can define services that should apply to your shipment. For further information on the services currently available in your country please go to https://gls-group.eu and check the page of the desired country.
The following services can be assigned on the shipment unit level:
-
Cash
<typ:ShipmentUnit>
...
<typ:Service>
<com:Cash>
<com:ServiceName>service_cash</com:ServiceName>
<com:Reason>Your order 4711</com:Reason>
<com:Amount>12.09</com:Amount>
<com:Currency>EUR</com:Currency>
</com:Cash>
</typ:Service>
</typ:ShipmentUnit>
-
AddonLiability
<typ:ShipmentUnit>
...
<typ:Service>
<com:AddonLiability>
<com:ServiceName>service_addonliability</com:ServiceName>
<com:Amount>5000</com:Amount>
<com:Currency>EUR</com:Currency>
</com:AddonLiability>
</typ:Service>
</typ:ShipmentUnit>
-
HazardousGoods
<typ:ShipmentUnit>
...
<typ:Service>
<com:HazardousGoods>
<com:ServiceName>service_hazardousgoods</com:ServiceName>
<com:HazardousGood>
<com:GLSHazNo>7000004</com:GLSHazNo>
<com:Weight>1.2</com:Weight>
</com:HazardousGood>
</com:HazardousGoods>
</typ:Service>
</typ:ShipmentUnit>
-
ExWorks
<typ:ShipmentUnit>
...
<typ:Service>
<com:ExWorks>
<com:ServiceName>service_exworks</com:ServiceName>
</com:ExWorks>
</typ:Service>
</typ:ShipmentUnit>
Those services may have different attributes for each shipment unit.
Services inside shipment unit can be combined like this:
-
Cash and AddonLiability
<typ:ShipmentUnit>
...
<typ:Service>
<com:Cash>
<com:ServiceName>service_cash</com:ServiceName>
<com:Reason>geleistete Dienste</com:Reason>
<com:Amount>100.00</com:Amount>
<com:Currency>EUR</com:Currency>
</com:Cash>
</typ:Service>
<typ:Service>
<com:AddonLiability>
<com:ServiceName>service_addonliability</com:ServiceName>
<com:Amount>5000</com:Amount>
<com:Currency>EUR</com:Currency>
<com:ParcelContent>some very good stuff</com:ParcelContent>
</com:AddonLiability>
</typ:Service>
</typ:ShipmentUnit>
Name | Expression in webservices | Field length | Type | Format | Mandatory/Optional | Restrictions | Level | Description |
Cash service | Cash | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_cash | Mandatory | Parcel | Shipment unit | Must use this fixed value for service name |
Cash reason | Reason | 160 | alphanumeric | | Mandatory | - | | Reason why the cash service was added to the parcel |
Cash amount | Amount | - | decimal | | Mandatory | - | | Cash amount (numeric value) |
Cash currency | Currency | 3 | alphanumeric | EUR | Mandatory | - | | Cash currency code (ISO4217 -> 3 digits) |
AddonLiability service | AddonLiability | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_addonliability | Mandatory | Parcel | Shipment unit | Must use this fixed value for service name |
AddonLiability amount | Amount | - | decimal | | Mandatory | - | | Liability amount might differ per country, please liaise with your sales contact |
AddonLiability currency | Currency | 3 | alphanumeric | EUR | Mandatory | - | | AddonLiability currency code (ISO4217 -> 3 digits) |
Parcel description | ParcelContent | 255 | alphanumeric | | Optional | - | | Specify the parcel content |
HazardousGoods service | HazardousGoods | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_hazardousgoods | Mandatory | Parcel | Shipment unit | Must use this fixed value for service name |
HazardousGoods | HazardousGoods | | | | | - | | Hazardous good item attributes |
Hazardous goods number | GLSHazNo | 8 | alphanumeric | | Mandatory | - | | Identifier for the hazardous goods type |
HazardousGoods Weight | Weight | - | decimal | | Optional | > 0 | | Weight for the hazardous good shipped (numeric) |
ExWorks service | ExWorks | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_exworks | Mandatory | Parcel | Shipment unit | Must use this fixed value for service name |
The following services can be assigned on the shipment level:
-
ShopDelivery
<typ:Shipment>
...
<typ:Service>
<com:ShopDelivery>
<com:ServiceName>service_shopdelivery</com:ServiceName>
<com:ParcelShopID>2760238818</com:ParcelShopID>
</com:ShopDelivery>
</typ:Service>
</typ:Shipment>
-
ShopReturn
<typ:Shipment>
...
<typ:Service>
<com:ShopReturn>
<com:ServiceName>service_shopreturn</com:ServiceName>
<com:NumberOfLabels>10</com:NumberOfLabels>
</com:ShopReturn>
</typ:Service>
</typ:Shipment>
-
Intercompany
<typ:Shipment>
...
<typ:Service>
<com:Intercompany>
<com:ServiceName>service_intercompany</com:ServiceName>
<com:Address>
<com:Name1>Hansi Meier</com:Name1>
<com:CountryCode>DE</com:CountryCode>
<com:ZIPCode>65760</com:ZIPCode>
<com:City>Eschborn</com:City>
<com:Street>Helfmannpark 5</com:Street>
</com:Address>
<com:NumberOfLabels>15</com:NumberOfLabels>
</com:Intercompany>
</typ:Service>
</typ:Shipment>
-
Exchange
<typ:Shipment>
...
<typ:Service>
<com:Exchange>
<com:ServiceName>service_exchange</com:ServiceName>
<com:Address>
<com:Name1>Hansi Meier</com:Name1>
<com:CountryCode>DE</com:CountryCode>
<com:ZIPCode>65760</com:ZIPCode>
<com:City>Eschborn</com:City>
<com:Street>Helfmannpark 5</com:Street>
</com:Address>
</com:Exchange>
</typ:Service>
</typ:Shipment>
-
DeliveryAtWork
<typ:Shipment>
...
<typ:Service>
<com:DeliveryAtWork>
<com:ServiceName>service_deliveryatwork</com:ServiceName>
<com:RecipientName>Hansi Meier</com:RecipientName>
<com:AlternateRecipientName>Hilde Schmidt</com:AlternateRecipientName>
<com:Building>Haus A</com:Building>
<com:Floor>2. Stock</com:Floor>
<com:Room>D234.22</com:Room>
<com:Phonenumber>+49 800 111 0 333</com:Phonenumber>
</com:DeliveryAtWork>
</typ:Service>
</typ:Shipment>
-
Deposit
<typ:Shipment>
...
<typ:Service>
<com:Deposit>
<com:ServiceName>service_deposit</com:ServiceName>
<com:PlaceOfDeposit>Under the doormat</com:PlaceOfDeposit>
</com:Deposit>
</typ:Service>
</typ:Shipment>
-
IdentPin
<typ:Shipment>
...
<typ:Service>
<com:IdentPin>
<com:ServiceName>service_identpin</com:ServiceName>
<com:PIN>2342</com:PIN>
<com:Birthdate>1970-02-03</com:Birthdate>
</com:IdentPin>
</typ:Service>
</typ:Shipment>
-
Ident
<typ:Shipment>
...
<typ:Service>
<com:Ident>
<com:ServiceName>service_ident</com:ServiceName>
<com:Birthdate>1980-01-02</com:Birthdate>
<com:Firstname>Hansi Herbert</com:Firstname>
<com:Lastname>Maier</com:Lastname>
<com:Nationality>
<com:CountryCode>DE</com:CountryCode>
</com:Nationality>
</com:Ident>
</typ:Service>
</typ:Shipment>
-
PickAndShip
The consignee data must contain values for ContactPerson and FixedLinePhonenumber when this service is used. <typ:Shipment>
...
<typ:Service>
<com:PickAndShip>
<com:ServiceName>service_pickandship</com:ServiceName>
<com:PickupDate>2017-07-31</com:PickupDate>
<com:SendEMailToShipper>true</com:SendEMailToShipper>
<com:SendEMailToConsignee>false</com:SendEMailToConsignee>
<com:SendSMSToShipper>false</com:SendSMSToShipper>
</com:PickAndShip>
</typ:Service>
</typ:Shipment>
-
PickAndReturn
The consignee data must contain values for ContactPerson and FixedLinePhonenumber when this service is used. <typ:Shipment>
...
<typ:Service>
<com:PickAndReturn>
<com:ServiceName>service_pickandreturn</com:ServiceName>
<com:PickupDate>2017-07-31</com:PickupDate>
<com:SendEMailToShipper>true</com:SendEMailToShipper>
<com:SendEMailToConsignee>false</com:SendEMailToConsignee>
<com:SendSMSToShipper>false</com:SendSMSToShipper>
</com:PickAndReturn>
</typ:Service>
</typ:Shipment>
-
InboundLogistics
In this case, please enter the supplier data in the shipper fields and the delivery address in the consignee fields.
A reference number for a delivery location can be defined in the cost-center field. <typ:Shipment>
...
<typ:Consignee>
<com:ConsigneeID>test</com:ConsigneeID>
<com:CostCenter>7475949844</com:CostCenter>
<com:Address>
...
<typ:Service>
<com:Service>
<com:ServiceName>service_inbound</com:ServiceName>
</com:Service>
</typ:Service>
</typ:Shipment>
-
TyreService
<typ:Shipment>
...
<typ:Service>
<com:Service>
<com:ServiceName>service_tyre</com:ServiceName>
</com:Service>
</typ:Service>
</typ:Shipment>
All other services do not require specific attributes and can be assigned on the shipment level. If you e.g. want to have more possibilities to customise parcel delivery, you can book the FlexDeliveryService as follows:
<typ:Shipment>
...
<typ:Service>
<com:Service>
<com:ServiceName>service_flexdelivery</com:ServiceName>
</com:Service>
</typ:Service>
</typ:Shipment>
The same applies to Express shipments - these services do not require further information and can be added like stated underneath. Please note that parcels targeted to be delivered by the end of the business day do not need a dedicated service attached.
<typ:Shipment>
...
<typ:Product>EXPRESS</typ:Product>
...
<typ:Service>
<com:Service>
<com:ServiceName>service_1000</com:ServiceName>
</com:Service>
</typ:Service>
</typ:Shipment>
Name | Expression in webservices | Field length | Type | Format | Mandatory/Optional | Restrictions | Level | Description |
Other service | Service | | | | | | | |
Name of the service | ServiceName | - | alphanumeric | | service_name | | | Must use the service name defined in DB |
ShopDelivery service | ShopDelivery | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_shopdelivery | Mandatory | Parcel | Shipment | Must use this fixed value for service name |
Parcel shop identifier | ParcelShopID | 10 | alphanumeric | | Mandatory | - | | Specify parcel shop |
ShopReturn service | ShopReturn | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_shopreturn | Mandatory | Parcel | Shipment | Must use this fixed value for service name |
Amount of labels | NumberOfLabels | | numeric | | Mandatory | > 0 | | Specify amount of labels to print |
Intercompany service | Intercompany | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_intercompany | Mandatory | Parcel | Shipment | Must use this fixed value for service name |
Intercompany address | Address | | | | Mandatory | | | see section restCreateParcelsAddress |
Amount of labels | NumberOfLabels | | numeric | | Mandatory | > 0 | | Specify amount of labels to print |
Expected Weight | ExpectedWeight | - | decimal | | Optional | > 0 | | Expected weight of the returned shipment |
Exchange service | Exchange | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_exchange | Mandatory | Parcel | Shipment | Must use this fixed value for service name |
Exchange address | Address | | | | Mandatory | - | | see section restCreateParcelsAddress |
Expected Weight | ExpectedWeight | - | decimal | | Optional | > 0 | | Expected weight of the returned shipment |
DeliveryAtWork service | DeliveryAtWork | | | | | | | Add an expected weight of the returned shipment |
Name of the service | ServiceName | 80 | alphanumeric | service_deliveryatwork | Mandatory | Parcel | Shipment | Must use this fixed value for service name |
Name of the Recipient | RecipientName | 40 | alphanumeric | | Mandatory | - | | Person who is allowed to receive the parcel |
AlternateRecipientName | AlternateRecipientName | 40 | alphanumeric | | Optional | - | | Alternative person who is allowed to receive the parcel |
Building | Building | 40 | decimal | | Mandatory | - | | Building number |
Floor | Floor | 40 | decimal | | Mandatory | - | | Floor number |
Room | Room | 40 | decimal | | Optional | - | | Room number |
Phonenumber | Phonenumber | 40 | decimal | | Optional | - | | Phone number of the contact person |
Deposit service | Deposit | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_deposit | Mandatory | Parcel | Shipment | Must use this fixed value for service name |
Place of deposit | PlaceOfDeposit | 255 | | | Mandatory | - | | Place where the driver can drop the parcel |
IdentPin service | IdentPin | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_identpin | Mandatory | Parcel | Shipment | Must use this fixed value for service name |
PIN | PIN | 4 | alphanumeric | | Mandatory | | | 4-digit PIN code that the consignee needs to enter |
Birthdate | Birthdate | 10 | date | YYYY-MM-DD | Mandatory | < today | | Birthdate of the consignee |
Ident service | Ident | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_ident | Mandatory | Parcel | Shipment | Must use this fixed value for service name |
Birthdate | Birthdate | 10 | date | YYYY-MM-DD | Mandatory | < today | | Birthdate of the consignee |
Firstname | Firstname | 40 | alphanumeric | | Mandatory | - | | First name of the consignee |
Lastname | Lastname | 40 | alphanumeric | | Mandatory | - | | Last name of the consignee |
Nationality | Nationality | 2 | alphanumeric | | Mandatory | CountryCode | | Nationality of the consignee |
PickAndShip service | PickAndShip | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_pickandship | Mandatory | Parcel | Shipment | Must use this fixed value |
PickupDate | PickupDate | 10 | date | YYYY-MM-DD | Mandatory | > today | | Date when parcel should be picked up at shipper |
Send email to Shipper | SendEMailToShipper | 5 | boolean | | Mandatory | true or false | | Specify if email must be sent to shipper |
Send email to Consignee | SendEMailToConsignee | 5 | boolean | | Mandatory | true or false | | Specify if email must be sent to Consignee |
Send SMS to Shipper | SendSMSToShipper | 5 | boolean | | Mandatory | true or false | | Specify if Sms must be sent to shipper |
PickAndReturn service | PickAndReturn | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_pickandreturn | Mandatory | Parcel | Shipment | Must use this fixed value |
PickupDate | PickupDate | 10 | date | YYYY-MM-DD | Mandatory | > today | | Date when parcel should be picked up at shipper |
Send email to Shipper | SendEMailToShipper | 5 | boolean | | Mandatory | true or false | | Specify if email must be sent to shipper |
Send email to Consignee | SendEMailToConsignee | 5 | boolean | | Mandatory | true or false | | Specify if email must be sent to Consignee |
Send SMS to Shipper | SendSMSToShipper | 5 | boolean | | Mandatory | true or false | | Specify if Sms must be sent to shipper |
Inbound Logistics | InboundLogistics | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_inbound | Mandatory | Parcel | Shipment | Must use this fixed value for service name |
Document Return Service | DocumentReturnService | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_documentreturn | Mandatory | Parcel | Shipment (w/o attributes) | Must use this fixed value for service name |
Flex Delivery Service | FlexDeliveryService | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_flexdelivery | Mandatory | Parcel | Shipment (w/o attributes) | Must use this fixed value for service name |
Guaranteed24 Service | Guaranteed24Service | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_guaranteed24 | Mandatory | Parcel | Shipment (w/o attributes) | Must use this fixed value for service name |
AddresseeOnly Service | AddresseeOnlyService | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_addresseeonly | Mandatory | Parcel | Shipment (w/o attributes) | Must use this fixed value for service name |
Tyre service | TyreService | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_tyre | Mandatory | Parcel/Express | Shipment (w/o attributes) | Must use this fixed value for service name |
0800 Service | 0800Service | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_0800 | Mandatory | Express | Shipment | Must use this fixed value for service name |
0900 Service | 0900Service | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_0900 | Mandatory | Express | Shipment | Must use this fixed value for service name |
1000 Service | 1000Service | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_1000 | Mandatory | Express | Shipment | Must use this fixed value for service name |
1200 Service | 1200Service | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_1200 | Mandatory | Express | Shipment | Must use this fixed value for service name |
Saturday 1000 Service | Saturday1000Service | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_saturday_1000 | Mandatory | Express | Shipment | Must use this fixed value for service name |
Saturday 1200 Service | Saturday1200Service | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_saturday_1200 | Mandatory | Express | Shipment | Must use this fixed value for service name |
Saturday Service | SaturdayService | | | | | | | |
Name of the service | ServiceName | 80 | alphanumeric | service_Saturday | Mandatory | Express (Euro) | Shipment | Must use this fixed value for service name |
| Delivery next working day (EOB) | | | | | | | |
Name of the service | ServiceName | | | | | Express | | No service needs to be added |
If you want to send a shipment containing two shipment units (parcels) with FlexDeliveryService and CashService, you could use something like the following:
<typ:Shipment>
...
<typ:ShipmentUnit>
<typ:ShipmentUnitReference>Ref-Unit-0815</typ:ShipmentUnitReference>
<typ:Weight>5.00</typ:Weight>
<typ:Service>
<com:Cash>
<com:ServiceName>service_cash</com:ServiceName>
<com:Reason>Your order 4711</com:Reason>
<com:Amount>230.81</com:Amount>
<com:Currency>EUR</com:Currency>
</com:Cash>
</typ:Service>
</typ:ShipmentUnit>
<typ:ShipmentUnit>
<typ:ShipmentUnitReference>Ref-Unit-0816</typ:ShipmentUnitReference>
<typ:Weight>1.00</typ:Weight>
<typ:Service>
<com:Cash>
<com:ServiceName>service_cash</com:ServiceName>
<com:Reason>Your order 4711</com:Reason>
<com:Amount>12.09</com:Amount>
<com:Currency>EUR</com:Currency>
</com:Cash>
</typ:Service>
</typ:ShipmentUnit>
<typ:Service>
<com:Service>
<com:ServiceName>service_flexdelivery</com:ServiceName>
</com:Service>
</typ:Service>
</typ:Shipment>
Not all of these services are available in all countries and not all of those services may be combined with each other. Please check online which services are available for your region on your local GLS website.
Products
Finding the right product for your shipment will be determined by GLS ShipIT. The only information you have to give: if you want to send a standard parcel or wish to speed up by using express. Depending on the country-relation (where to send your parcel) and the weight the respective shipment product will be calculated.
1) Parcels sent within a country are considered as BusinessParcel or ExpressParcel - dependent on the product type chosen.
Small, light products with a given size and weight will get a "Small" - BusinessSmallParcel
You can create a Request BusinessParcel like the following example:
<typ:ShipmentRequestData>
<typ:Shipment>
<typ:Product>Parcel</typ:Product>
<typ:Consignee>
<com:Address>
<com:Name1>Mister Mal</com:Name1>
<com:CountryCode>DE</com:CountryCode>
<com:ZIPCode>65760</com:ZIPCode>
<com:City>Eschborn</com:City>
<com:Street>Mergenthalerallee</com:Street>
<com:StreetNumber>77</com:StreetNumber>
</com:Address>
</typ:Consignee>
<typ:Shipper>
<com:ContactID>276bu5y6En</com:ContactID>
</typ:Shipper>
<typ:ShipmentUnit>
<typ:Weight>3.1</typ:Weight>
</typ:ShipmentUnit>
</typ:Shipment>
<typ:PrintingOptions>
<typ:UseDefault>Default</typ:UseDefault>
</typ:PrintingOptions>
</typ:ShipmentRequestData>
You can create a Request ExpressParcel like the following example:
<typ:ShipmentRequestData>
<typ:Shipment>
<typ:Product>Express</typ:Product>
<typ:Consignee>
<com:Address>
<com:Name1>Mister Mal</com:Name1>
<com:CountryCode>DE</com:CountryCode>
<com:ZIPCode>65760</com:ZIPCode>
<com:City>Eschborn</com:City>
<com:Street>Mergenthalerallee</com:Street>
<com:StreetNumber>77</com:StreetNumber>
</com:Address>
</typ:Consignee>
<typ:Shipper>
<com:ContactID>2769995N0E</com:ContactID>
</typ:Shipper>
<typ:ShipmentUnit>
<typ:ShipmentUnitReference>Ref-Unit-0816</typ:ShipmentUnitReference>
<typ:Weight>4.30</typ:Weight>
</typ:ShipmentUnit>
<typ:Service>
<com:Service>
<com:ServiceName>service_1200</com:ServiceName>
</com:Service>
</typ:Service>
</typ:Shipment>
<typ:PrintingOptions>
<typ:UseDefault>Default</typ:UseDefault>
</typ:PrintingOptions>
</typ:ShipmentRequestData>
2) Parcels that are sent cross-border to other European countries will be either EuroBusinessParcels or EuroExpressParcels.
For EuroBusinessParcel there is as well the option to send them as EuroBusinessSmallParcel.
Don't forget to add incoterm information to your request, sending to customs areas like Switzerland.
Request EuroBusinessParcel
<typ:ShipmentRequestData>
<typ:Shipment>
<typ:ShipmentReference>05846-43873264</typ:ShipmentReference>
<typ:IncotermCode>10</typ:IncotermCode>
<typ:Product>Parcel</typ:Product>
<typ:Consignee>
<com:Address>
<com:Name1>Matteo Huber</com:Name1>
<com:CountryCode>CH</com:CountryCode>
<com:ZIPCode>3963</com:ZIPCode>
<com:City>Crans-Montana</com:City>
<com:Street>Route du Petit Signal</com:Street>
<com:StreetNumber>6</com:StreetNumber>
</com:Address>
</typ:Consignee>
<typ:Shipper>
<com:ContactID>276hjnkN0E</com:ContactID>
</typ:Shipper>
<typ:ShipmentUnit>
<typ:ShipmentUnitReference>REF_1</typ:ShipmentUnitReference>
<typ:Weight>12.2</typ:Weight>
</typ:ShipmentUnit>
</typ:Shipment>
<typ:PrintingOptions>
<typ:UseDefault>Default</typ:UseDefault>
</typ:PrintingOptions>
</typ:ShipmentRequestData>
Request EuroExpressParcel
<typ:ShipmentRequestData>
<typ:Shipment>
<typ:Product>Express</typ:Product>
<typ:Consignee>
<com:Address>
<com:Name1>Franz Huber</com:Name1>
<com:CountryCode>AT</com:CountryCode>
<com:ZIPCode>8970</com:ZIPCode>
<com:City>Wien</com:City>
<com:Street>Schiliftgasse</com:Street>
<com:StreetNumber>66</com:StreetNumber>
</com:Address>
</typ:Consignee>
<typ:Shipper>
<com:ContactID>2769995N0E</com:ContactID>
</typ:Shipper>
<typ:ShipmentUnit>
<typ:ShipmentUnitReference>Ref-Unit-0816</typ:ShipmentUnitReference>
<typ:Weight>11.00</typ:Weight>
</typ:ShipmentUnit>
<typ:Service>
<com:Service>
<com:ServiceName>service_1200</com:ServiceName>
</com:Service>
</typ:Service>
</typ:Shipment>
<typ:PrintingOptions>
<typ:UseDefault>Default</typ:UseDefault>
</typ:PrintingOptions>
</typ:ShipmentRequestData>
3) International parcels are marked with a leading "Global" - so either GlobalBusinessParcel or GlobalExpressParcel.
Request GlobalBusinessParcel
<typ:ShipmentRequestData>
<typ:Shipment>
<typ:IncotermCode>10</typ:IncotermCode>
<typ:Product>Parcel</typ:Product>
<typ:Consignee>
<com:Address>
<com:Name1>Caradas Burrowes</com:Name1>
<com:CountryCode>UY</com:CountryCode>
<com:ZIPCode>37006</com:ZIPCode>
<com:City>Tupambaé</com:City>
<com:Street>Treinta y Tres</com:Street>
<com:StreetNumber>7106</com:StreetNumber>
</com:Address>
</typ:Consignee>
<typ:Shipper>
<com:ContactID>2769111N0E</com:ContactID>
</typ:Shipper>
<typ:ShipmentUnit>
<typ:ShipmentUnitReference>Ref-Unit-0816</typ:ShipmentUnitReference>
<typ:Weight>23.2</typ:Weight>
</typ:ShipmentUnit>
</typ:Shipment>
<typ:PrintingOptions>
<typ:UseDefault>Default</typ:UseDefault>
</typ:PrintingOptions>
</typ:ShipmentRequestData>
Request GlobalExpressParcel
<typ:ShipmentRequestData>
<typ:Shipment>
<typ:IncotermCode>10</typ:IncotermCode>
<typ:Product>Express</typ:Product>
<typ:Consignee>
<com:Address>
<com:Name1>Caradas Burrowes</com:Name1>
<com:CountryCode>UY</com:CountryCode>
<com:ZIPCode>37006</com:ZIPCode>
<com:City>Tupambaé</com:City>
<com:Street>Treinta y Tres</com:Street>
<com:StreetNumber>7106</com:StreetNumber>
</com:Address>
</typ:Consignee>
<typ:Shipper>
<com:ContactID>2769995N0E</com:ContactID>
</typ:Shipper>
<typ:ShipmentUnit>
<typ:ShipmentUnitReference>Ref-Unit-016</typ:ShipmentUnitReference>
<typ:Weight>23.2</typ:Weight>
</typ:ShipmentUnit>
</typ:Shipment>
<typ:PrintingOptions>
<typ:UseDefault>Default</typ:UseDefault>
</typ:PrintingOptions>
</typ:ShipmentRequestData>
French APN and FNCR
In france for every shipment the french shipper need a French National Customer Reference number (FNCR) and each parcel an Alpha Parcel Number (APN). For french shippers the FNCR and the starting value of the APN can be configured in the GLS ShipIT client in shipper settings. If they are not configured both have to be delivered with each SOAP request as follows:
<typ:Shipment>
...
<typ:Shipper>
...
<com:FRAlphaCustomerReference>0123456789</com:FRAlphaCustomerReference>
</typ:Shipper>
<typ:ShipmentUnit>
...
<typ:FRAlphaParcelReference>0123456789012345FR</typ:FRAlphaParcelReference>
</typ:ShipmentUnit>
</typ:Shipment>
The FNCR has to have a length of 10, the APN has to have a length of 18.
In case FNCR and APN are configured in GLS ShipIT shipper settings they must not be delivered in SOAP requests.
Printing options
The printing options give you several ways of dealing with the labels that you need to place on your parcels. In general you can choose between GLS ShipIT handling the printing (this option is not available if you are using GLS ShipIT hosted at GLS premises) or for GLS ShipIT to return the created labels. If you choose to retrieve the labels from GLS ShipIT, you can choose the format of the labels to match your printers. Thus when issuing the request, you have to define one of the following printing options:
-
UseDefault
-
DefinePrinter
-
ReturnLabels
The PrintingOptions section is mandatory for all types of shipment creation webservice requests. This also includes services like Pick&Ship and Pick&Return, where no label data is returned.
If your are connecting to a centrally hosted GLS ShipIT, you can only use the option "ReturnLabels" as there will not be any printer installed within the centrally hosted GLS ShipIT (and you won't be able to retrieve the labels).
If you plan to use GLS ShipIT for printing your labels, please check the chapter "Druckerverwaltung" of the manual for information on how to configure printers in GLS ShipIT.
The option "UseDefault" should be considered when you are using GLS ShipIT with the Client or when you already configured your printers within your GLS ShipIT installation. By choosing that option, all documents are sent to the printers that are configured within GLS ShipIT. As the SOAP requests are being executed on the GLS ShipIT backend, only the configured backend printers are valid printers for this printing option.
The option "DefinePrinter" should be considered when you have printers configured within GLS ShipIT, but you want to print to different printers then the configured default printers of GLS ShipIT (e.g. you want to use a different printer when using the SOAP interface as when a user is creating parcels using the GLS ShipIT client application). With this option you have to provide the name of the printers that should be used for printing the labels and the accompanying documents. As the SOAP requests are being executed on the GLS ShipIT backend, only the configured backend printers are valid printers for this printing option.
The option "ReturnLabels" should be used when you cannot configure your printers in GLS ShipIT (e.g. the printer cannot be reached from the host which runs the GLS ShipIT backend). For this option you have to specify which type of printer you have. GLS ShipIT will return the labels for the desired type of printer. All other documents (e.g. additional documents for addon liability or ident service) will be returned as PDF document. If you do not have any of the supported label printers (or if your label printer is capable of printing PDF), you can specify PDF as the desired label format.
Here are some samples of the printing options you can use in your requests:
If you want to use GLS ShipIT for printing labels and documents:
<typ:PrintingOptions>
<typ:UseDefault>Default</typ:UseDefault>
</typ:PrintingOptions>
If you want to use dedicated printers configured in GLS ShipIT (but not the default printers):
<typ:PrintingOptions>
<typ:DefinePrinter>
<typ:LabelPrinter>ThermoI34</typ:LabelPrinter>
<typ:DocumentPrinter>\\Logistics\Laser</typ:DocumentPrinter>
</typ:DefinePrinter>
</typ:PrintingOptions>
If you want to print the labels on your thermal printer (in this case an Intermec Easycoder PF8d):
<typ:PrintingOptions>
<typ:ReturnLabels>
<typ:TemplateSet>PF8D200</typ:TemplateSet>
<typ:LabelFormat>Intermec</typ:LabelFormat>
</typ:ReturnLabels>
</typ:PrintingOptions>
If you want to retrieve the labels as PDF documents:
<typ:PrintingOptions>
<typ:ReturnLabels>
<typ:TemplateSet>NONE</typ:TemplateSet>
<typ:LabelFormat>PDF</typ:LabelFormat>
</typ:ReturnLabels>
</typ:PrintingOptions>
Name | Expression in webservices | Field length | Type | Format | Mandatory/Optional | Restrictions | Level | Description |
Use default printer | UseDefault | 7 | alphanumeric | Default | Optional | Default fixed value | | <typ:UseDefault>Default</typ:UseDefault> |
Define printer | DefinePrinter | | | | | | | Define configured printers for printing labels and shipment documents |
Label printer | LabelPrinter | 255 | alphanumeric | | Optional | - | | Please define name of the label printer |
Document printer | DocumentPrinter | 255 | alphanumeric | | Optional | - | | Please define name of the document printer |
Define printer for return labels | ReturnLabels | | | | | | | |
Template name | TemplateSet | 7 | alphanumeric | | Optional | Must use one of the defined set | | NONE, D_200, PF_4_I, PF_4_I_200, PF_4_I_300, PF_8_D_200, T_200_BF, T_300_BF, ZPL_200, ZPL_300 |
Printer label format | LabelFormat | 8 | alphanumeric | | Optional | Must use one of the defined set | | PDF, ZEBRA, INTERMEC, DATAMAX, TOSHIBA |
Custom content
This section of the request contains several optional attributes. You do not need to fill any of them. If you however have the need of adding your own barcode or logo to the labels or if you want to suppress the shipper address on the labels, you can use this request section to steer this behaviour.
If you want to have a custom logo / image on the labels, fill the content of the element "CustomerLogo" with the binary data of the logo. The data must be Base64 encoded. The image formats jpg, gif and png are supported. Hint: The available character set of selected barcode type needs to be observed.
To print your logo on the label, use something like this:
<typ:CustomContent>
<typ:CustomerLogo>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</typ:CustomerLogo>
</typ:CustomContent>
If you need an own barcode on the label there are two elements to support this. In the element "Barcode" you specify the data that should be printed as a barcode. In the element "BarcodeType" you can specify the barcode format that should be used. You can choose between the following barcode formats:
If you want to print a Code39 barcode on the label, you can define the elements like this:
<typ:CustomContent>
<typ:Barcode>0123456789</typ:Barcode>
<typ:BarcodeType>CODE_39</typ:BarcodeType>
</typ:CustomContent>
If you want to hide the shipper address on the label you can define the elements like this:
<typ:CustomContent>
<typ:HideShipperAddress>true</typ:HideShipperAddress>
</typ:CustomContent>
Name | Expression in webservices | Field length | Type | Format | Mandatory/Optional | Restrictions | Level | Description |
Customer logo | CustomerLogo | 5 | base64Binary | | Optional | - | | Custom content provided for label generation (f.e. customer logo) |
Barcode | Barcode | 5 | alphanumeric | | Optional | - | | Barcode to create in the label |
Barcode type | BarcodeType | 7 | alphanumeric | | Optional | EAN_128 or CODE_39 | | The type of barcode to create in the label |
Hide shipper address | HideShipperAddress | 5 | boolean | | Optional | true or false | | Specify if the shipper address must be removed from the label |
Input validation
-
The referenced shipper must exist and must be accessible for the user issuing the request
-
The referenced product group must be available to the shipper that is referenced within the request
-
If services are listed, those services must exist and be available to the referenced shipper
-
If an incoterm is provided, this incoterm must be available
-
The shipment must be valid (no defined validation rule may be violated). You can find more on this in Use case description: validateParcels (F-115)
Response
The SOAP response is an instance of eu.glsgroup.fpcs.datatypes.soap.v1.shipmentprocessing.CreatedShipment or one of the following faults:
Depending of multiple conditions the response can have different content/information:
-
ShipmentReference - The given ShipmentReference from the request.
-
ParcelData
-
PrintData - If requested, the print data (content) with the corresponding format (PDF, Zebra, Intermec, etc.).
-
CustomerID - The ID of the customer to whom the specified shipper belongs.
-
PickupLocation - The location where the shipment has to be picked up.
-
GDPR - Information about our Group data protection web site.
-
Nemonico - Information about Spanish routing.
ParcelData
Barcodes
The Barcodes section varies. The informations (as the NDI numbers or UniShip for example) are filled depending of origin, destination and used services:
<Barcodes>
<Primary2D>ADE 777DE 777abcdefghij2761234567YZ8YO14ZAA 3esa081538106 00560001001</Primary2D>
<Secondary2D>A|Max Mustermann|Falkenbergstrasse 47|Braunschweig|| Ref-Unit-0815| Ref-Ship-4711|</Secondary2D>
<Primary1D>200010111393</Primary1D>
<Primary1DPrint>true</Primary1DPrint>
</Barcodes>
RoutingInfo
The routing informations are returned in section RoutingInfo:
<RoutingInfo>
<Tour>0815</Tour>
<InboundSortingFlag>003</InboundSortingFlag>
<FinalLocationCode>DE 777</FinalLocationCode>
<HubLocation>esa</HubLocation>
<LastRoutingDate>2017-07-03</LastRoutingDate>
</RoutingInfo>
ServiceArea
When using a service, the SOAP response will list all used services with their service attributes:
<ServiceArea>
<Service>
<Header>DepositService</Header>
<Information>
<Name>Deposit Place</Name>
<Value>Under the doormat</Value>
</Information>
</Service>
</ServiceArea>
For product EXPRESS there is also a serviceArea entry:
<ServiceArea>
<Service>
<Header>ExpressParcel</Header>
</Service>
</ServiceArea>
ExpressData
In case of Express product the response contains additional express delivery/routing informations:
<ExpressData>
<AlternateDelivery>true</AlternateDelivery>
<ImportStation>1118</ImportStation>
<TourNumber>2228</TourNumber>
<CourierParcelNumber>820510120292</CourierParcelNumber>
</ExpressData>
ExpressArea
If the parcel is a Der Kurier parcel the Kurier1D, KurierTourNumber and KurierImportStation are given in the ExpressArea:
<ExpressArea>
<Kurier1D>820510120292</Kurier1D>
<KurierTourNumber>2228</KurierTourNumber>
<KurierImportStation>1118</KurierImportStation>
</ExpressArea>
NDIArea
For some destination countries there are NDI informations (NDI1D) returned. Parcels to Great Britain (GB) and to Switzerland (CH) have additional informations.
For parcels to Great Britain (GB) the GBProductIdentifier is filled with fixed value 24. The GB information GBPostOffice1D contains the zipcode (if longer than 4, the first 4 chars/digits only) surrounded by two asterisk (*):
<NDIArea>
<NDI1D>EH936454405GB</NDI1D>
<GBProductIdentifier>24</GBProductIdentifier>
<GBPostOffice1D>*NN15*</GBPostOffice1D>
</NDIArea>
For parcels to Switzerland (CH) the CHParcelNumber is filled with readable NDI number. The CH information CHPRI1D contains the fixed value 0509. The CH information CHSI1D contains the fixed value 0307:
<NDIArea>
<NDI1D>994010486057566096</NDI1D>
<CHParcelNumber>99.40.104860.57566096</CHParcelNumber>
<CHPRI1D>0509</CHPRI1D>
<CHSI1D>0307</CHSI1D>
</NDIArea>
HandlingInformation
There are some pre-defined shorthand symbols which are returned in HandlingInformation:
-
Express product: T
-
Small (weight): S
-
Heavy (weight): X
There are more shorthand symbols for various services which are returned if such a service is used. If there are more than one symbol for a parcel, those symbols are concatenated (separated by spaces).
Sample request
<soapenv:Envelope xmlns:soapenv="https://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:com="https://fpcs.gls-group.eu/v1/Common">
<soapenv:Header/>
<soapenv:Body>
<typ:ShipmentRequestData>
<typ:Shipment>
<typ:ShippingDate>2016-04-01</typ:ShippingDate>
<typ:Product>Parcel</typ:Product>
<typ:Consignee>
<com:ConsigneeID>DE00</com:ConsigneeID>
<com:Address>
<com:Name1>Max</com:Name1>
<com:CountryCode>DE</com:CountryCode>
<com:ZIPCode>38106</com:ZIPCode>
<com:City>Braunschweig</com:City>
<com:Street>Ringstrasse</com:Street>
</com:Address>
</typ:Consignee>
<typ:Shipper>
<com:ContactID>2761234567</com:ContactID>
</typ:Shipper>
<typ:ShipmentUnit>
<typ:Weight>23.2</typ:Weight>
</typ:ShipmentUnit>
<typ:Service>
<com:Service>
<com:ServiceName>service_flexdelivery</com:ServiceName>
</com:Service>
</typ:Service>
</typ:Shipment>
<typ:PrintingOptions>
<typ:UseDefault>Default</typ:UseDefault>
</typ:PrintingOptions>
</typ:ShipmentRequestData>
</soapenv:Body>
</soapenv:Envelope>
Sample response
If the request was successful:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<CreateParcelsResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<CreatedShipment>
<ParcelData>
<TrackID>YZ8YO12F</TrackID>
<Barcodes>
<Primary2D>ADE 777DE 777abcdefghij2761234567YZ8YO12FAAz 3esa081538106 02320001001</Primary2D>
<Secondary2D>A|Max|Ringstrasse|Braunschweig|| | |</Secondary2D>
<Primary1D>200010110471</Primary1D>
<Primary1DPrint>true</Primary1DPrint>
</Barcodes>
<RoutingInfo>
<Tour>0815</Tour>
<InboundSortingFlag>003</InboundSortingFlag>
<FinalLocationCode>DE 777</FinalLocationCode>
<HubLocation>esa</HubLocation>
<LastRoutingDate>2017-06-27</LastRoutingDate>
</RoutingInfo>
<ServiceArea>
<Service>
<Header>FlexDeliveryService</Header>
</Service>
</ServiceArea>
</ParcelData>
<CustomerID>abcdefghij</CustomerID>
<PickupLocation>DE 777</PickupLocation>
<GDPR>Informationen zum Datenschutz in der GLS-Gruppe finden Sie unter</GDPR>
<GDPR>gls-group.eu/dataprotection</GDPR>
</CreatedShipment>
</CreateParcelsResponse>
</soap:Body>
</soap:Envelope>
If the request was syntactically correct, but there where validation issues:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Shipment validation failed</faultstring>
<detail>
<ns2:InvalidFieldValueFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ns2:field>
<ns2:name>shipper.email</ns2:name>
<ns2:value>ADDRESS_VALID_EMAIL</ns2:value>
</ns2:field>
</ns2:InvalidFieldValueFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
If you specified an invalid service (or a service that is not available to the shipper used in the request):
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Article does not exist or is not available for shipper</faultstring>
<detail>
<ns2:InvalidFieldValueFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ns2:field>
<ns2:name>Shipment.Service.ServiceName</ns2:name>
<ns2:value>service_iamnotvalid</ns2:value>
</ns2:field>
</ns2:InvalidFieldValueFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
If a mandatory attribute was not set:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>PrintingOptions not defined</faultstring>
<detail>
<ns2:MandatoryFieldMissingFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ns2:fieldname>
<ns2:name>ShipmentRequestData.PrintingOptions</ns2:name>
</ns2:fieldname>
</ns2:MandatoryFieldMissingFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
validateParcels (F-115)
This operations checks if a shipment is valid. This operation is optional, you do not need to execute this before you create a shipment by calling Use case description: createParcels (F-114). The web service operation createParcels performs a validation on its own.
Input validation
-
The referenced shipper must exist and must be accessible for the user issuing the request
-
The referenced product group must be available to the shipper that is referenced within the request
-
If services are listed, those services must exist and be available to the referenced shipper
-
If an incoterm is provided, this incoterm must be available
-
The shipment must be valid (no defined validation rule may be violated)
To verify that the shipment is valid, the following areas are checked:
If at least one rule is violated, validation issues are returned and the validation of the shipment was not successful.
Address validations
Each address that is provided within the request is being validated. The attributes name1, streetname, city, zip and countrycode must be provided. All these attributes must not be empty. The zip code must be valid for the respective country.
If validation rules fail, you will receive an error describing the issue and the position within the request:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<ValidateParcelsResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<success>false</success>
<validationResult>
<Issues>
<Rule>ADDRESS_VALID_ZIPCODE</Rule>
<Location>consignee.zip</Location>
</Issues>
<Issues>
<Rule>SHIPMENT_VALID_ROUTING</Rule>
<Location>routing</Location>
</Issues>
</validationResult>
</ValidateParcelsResponse>
</soap:Body>
</soap:Envelope>
Valid routing
Checks are being performed to ensure that the shipment can be routed from the origin address to the destination address.
If no routing could be determined for the shipment:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<ValidateParcelsResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<success>false</success>
<validationResult>
<Issues>
<Rule>SHIPMENT_VALID_ROUTING</Rule>
<Location>routing</Location>
</Issues>
</validationResult>
</ValidateParcelsResponse>
</soap:Body>
</soap:Envelope>
Service availability
Services and products are usually available for a selection of origin and destination countries. There are validation rules in place that verify if the product and the services are available for the given origin and destination address.
If one or more services are not available for the origin or destination:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<ValidateParcelsResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<success>false</success>
<validationResult>
<Issues>
<Rule>ARTICLES_DESTINATION_EXCLUSIONS</Rule>
<Location>article.routing.notallowed</Location>
<Parameters>DE</Parameters>
<Parameters>27498</Parameters>
</Issues>
</validationResult>
</ValidateParcelsResponse>
</soap:Body>
</soap:Envelope>
Service combinations
Not all services and products can be combined with each other. An important part of the validation therefore is to check, if all provided services can be combined with the product and with each other.
If one or more services cannot be combined with each other:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<ValidateParcelsResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<success>false</success>
<validationResult>
<Issues>
<Rule>ARTICLE_COMBINATIONS</Rule>
<Location>articlecombination.notallowed</Location>
<Parameters>CashService</Parameters>
<Parameters>IntercompanyService</Parameters>
</Issues>
</validationResult>
</ValidateParcelsResponse>
</soap:Body>
</soap:Envelope>
Service attribute validations
Service attributes are verified by different criteria. For every service the API defines which attributes are mandatory. The validation further verifies if the attributes have valid values. As an example, there are maximum values for the cash amount of the cash on delivery service.
E.g. if the cash on delivery amount is too high, you will get a validation result as follows:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<ValidateParcelsResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<success>false</success>
<validationResult>
<Issues>
<Rule>ARTICLES_PRODUCT_MAX_COD</Rule>
<Location>shipmentunit.attribute.cod.toohigh</Location>
<Parameters>PRODUCT</Parameters>
</Issues>
</validationResult>
</ValidateParcelsResponse>
</soap:Body>
</soap:Envelope>
The soap response is an instance of eu.glsgroup.fpcs.datatypes.soap.v1.shipmentprocessing.ValidateParcelsResponse or one of the following soap faults:
Sample request
<soapenv:Envelope xmlns:soapenv="https://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:com="https://fpcs.gls-group.eu/v1/Common">
<soapenv:Header/>
<soapenv:Body>
<typ:ValidateShipmentRequestData>
<typ:Shipment>
<typ:ShippingDate>2016-04-01</typ:ShippingDate>
<typ:Product>Parcel</typ:Product>
<typ:Consignee>
<com:ConsigneeID>DE00</com:ConsigneeID>
<com:Address>
<com:Name1>Max</com:Name1>
<com:CountryCode>DE</com:CountryCode>
<com:ZIPCode>61381</com:ZIPCode>
<com:City>Friedrichsdorf</com:City>
<com:Street>Ringstrasse</com:Street>
</com:Address>
</typ:Consignee>
<typ:Shipper>
<com:ContactID>2760001154</com:ContactID>
</typ:Shipper>
<typ:ShipmentUnit>
<typ:Weight>23.2</typ:Weight>
</typ:ShipmentUnit>
</typ:Shipment>
</typ:ValidateShipmentRequestData>
</soapenv:Body>
</soapenv:Envelope>
Sample response
If the request was successful, but the shipment contains validation issues:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<ValidateParcelsResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<success>false</success>
<validationResult>
<Issues>
<Rule>ADDRESS_ZIPCODE_MANDATORY</Rule>
<Location>consignee.zip</Location>
</Issues>
<Issues>
<Rule>ADDRESS_CITY_MANDATORY</Rule>
<Location>consignee.city</Location>
</Issues>
<Issues>
<Rule>SHIPMENT_VALID_ROUTING</Rule>
<Location>routing</Location>
</Issues>
</validationResult>
</ValidateParcelsResponse>
</soap:Body>
</soap:Envelope>
If the request was successful and the shipment is valid:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<ValidateParcelsResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<success>true</success>
<validationResult/>
</ValidateParcelsResponse>
</soap:Body>
</soap:Envelope>
If the request was syntactically incorrect:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<ValidateParcelsResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<success>false</success>
<validationResult>
<Issues>
<Rule>COMMON</Rule>
<Location>Shipment.Service.ServiceName</Location>
<Parameters>Article does not exist or is not available for shipper</Parameters>
<Parameters>abc</Parameters>
</Issues>
</validationResult>
</ValidateParcelsResponse>
</soap:Body>
</soap:Envelope>
If a mandatory attribute or element was not provided:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Unmarshalling Error: cvc-complex-type.2.4.a: Invalid content was found starting with element 'typ:Shipper'. One of '{"https://fpcs.gls-group.eu/v1/ShipmentProcessing/types":Consignee}' is expected.</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
cancelParcelById (F-116)
This operation tries to cancel a previously created parcel. This operation is not guaranteed to succeed. If the parcel is already being processed, it cannot be cancelled anymore. The cancel operation itself is handled asynchronously in most cases. If the system is not connected to the central systems of GLS at the time of the issuing of the request, it will be retried at a later time. The SOAP service will not wait for the request to be executed, it will return after the request has been scheduled successfully. Return parcels can only be cancelled through your responsible depot. A webservice can be called but this does not have any operational impact.
Parameter | Mandatory | Description |
trackID | TRUE | The track ID of the parcel that should be canceled. |
Input validation
-
A parcel with the given ID must exist
-
The parcel must belong to a shipper to which the user issuing the request has access to
The soap request must contain the shipment unit's trackID as a java.lang.String
The soap response is an instance of eu.glsgroup.fpcs.datatypes.soap.v1.shipmentprocessing.CancelParcelResponse or one of the following soap faults:
Sample request
<soapenv:Envelope xmlns:soapenv="https://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types">
<soapenv:Header/>
<soapenv:Body>
<typ:TrackID>YZ8YPH2Q</typ:TrackID>
</soapenv:Body>
</soapenv:Envelope>
If the cancellation was successful:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<CancelParcelResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<TrackID>YZ8YPH2Q</TrackID>
<result>CANCELLED</result>
</CancelParcelResponse>
</soap:Body>
</soap:Envelope>
If the cancellation was successfully scheduled:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<CancelParcelResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<TrackID>YZ8YPH2Q</TrackID>
<result>CANCELLATION_PENDING</result>
</CancelParcelResponse>
</soap:Body>
</soap:Envelope>
Sample response
If the request was successful, but the parcel cannot be cancelled:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<CancelParcelResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<TrackID>YZ8YPH2Q</TrackID>
<result>SCANNED</result>
</CancelParcelResponse>
</soap:Body>
</soap:Envelope>
If a wrong TrackID has been transmitted:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>A parcel with the given ID does not exist</faultstring>
<detail>
<ns2:InvalidFieldValueFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ns2:field>
<ns2:name>TrackID</ns2:name>
<ns2:value>zzZZzzZZ</ns2:value>
</ns2:field>
</ns2:InvalidFieldValueFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
If a mandatory attribute was not provided (e.g. the TrackID):
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Mandatory field is not set</faultstring>
<detail>
<ns2:MandatoryFieldMissingFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ns2:fieldname>
<ns2:name>TrackID</ns2:name>
</ns2:fieldname>
</ns2:MandatoryFieldMissingFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
If a shipper shall be used to which the user does not have access:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>access to shipper denied</faultstring>
<detail>
<ns2:InsufficientPermissionFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ns2:customer>012345678912</ns2:customer>
<ns2:user>testuser</ns2:user>
</ns2:InsufficientPermissionFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
getAllowedServices (F-117)
This SOAP web service operation returns a list of services (product/articles) that can be used for a shipment from a specific source address to a specific destination address.
Input validation
No special input validation is being done. The zip code should comply with zip code rules of the respective country.
The soap response is an instance of eu.glsgroup.fpcs.datatypes.soap.v1.shipmentprocessing.AllowedServicesResponse or one of the following soap faults:
Sample request
<soapenv:Envelope xmlns:soapenv="https://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types">
<soapenv:Header/>
<soapenv:Body>
<typ:AllowedServicesRequestParameter>
<typ:Source>
<typ:CountryCode>DE</typ:CountryCode>
<typ:ZIPCode>38106</typ:ZIPCode>
</typ:Source>
<typ:Destination>
<typ:CountryCode>DE</typ:CountryCode>
<typ:ZIPCode>65779</typ:ZIPCode>
</typ:Destination>
</typ:AllowedServicesRequestParameter>
</soapenv:Body>
</soapenv:Envelope>
It is possible to add a specific shipper as an optional parameter to the request above, in order to get the allowed services for that shipper only:
<typ:AllowedServicesRequestParameter>
<typ:Source>
...
</typ:Source>
<typ:Destination>
...
</typ:Destination>
<typ:ContactID>1234567890</typ:ContactID>
</typ:AllowedServicesRequestParameter>
Sample response
If the request was successful:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<AllowedServicesResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<AllowedServices>
<ProductName>Parcel</ProductName>
</AllowedServices>
<AllowedServices>
<ProductName>Express</ProductName>
</AllowedServices>
<AllowedServices>
<ProductName>Freight</ProductName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_cash</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_pickandship</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_pickandreturn</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_addonliability</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_deliveryatwork</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_deposit</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_hazardousgoods</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_exchange</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_saturday_1000</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_guaranteed24</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_shopreturn</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_0800</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_0900</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_1000</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_1200</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_intercompany</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_directshop</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_smsservice</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_ident</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_identpin</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_shopdelivery</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_preadvice</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_saturday_1200</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_Saturday</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_exworks</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_tyre</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_flexdelivery</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_pickpack</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_documentreturn</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_1300</ServiceName>
</AllowedServices>
<AllowedServices>
<ServiceName>service_addresseeonly</ServiceName>
</AllowedServices>
</AllowedServicesResponse>
</soap:Body>
</soap:Envelope>
If the request was syntactically incorrect:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Mandatory field is not set</faultstring>
<detail>
<ns2:MandatoryFieldMissingFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ns2:fieldname>
<ns2:name>source.ZIPCode</ns2:name>
</ns2:fieldname>
</ns2:MandatoryFieldMissingFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
If an attribute had a wrong value (e.g. a invalid country code):
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Mandatory field is not set or invalid</faultstring>
<detail>
<ns2:InvalidFieldValueFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ns2:field>
<ns2:name>source.countryCode</ns2:name>
<ns2:value>XY</ns2:value>
</ns2:field>
</ns2:InvalidFieldValueFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
getEndOfDayReport (F-118)
Executes the end of day procedure for the given day and returns all shipments that where affected by the end of day procedure.
Parameter | Mandatory | Description |
date | TRUE | Shipping or pick up day for which the end of day procedure should be executed |
The end of day procedure does the following things:
-
Ensure that all shipment units that undergo the procedure are transmitted to GLS. That is, each unit that was not yet transmitted, will be transmitted before the procedure can finish.
-
All shipment units that undergo the procedure are set to CLOSED.
The shipment units for which end of day will be performed is limited by the shipments to which the user issuing the request has access to. This means, it affects all shippers to which the user has access based on the roles assigned to him.
If you are connecting to a local installation of GLS ShipIT on your premises, you can configure the following actions to be done during end of day:
-
Reports can be generated and printed during end of day (please check the chapter shipment settings in your fpcs manual on how to configure this)
-
E-Mails can be send either when shipments are transmitted or during end of day (please check the chapter E-Mail Settings in your fpcs manual)
-
Old shipments might be deleted during the end of day procedure (please check the chapter my settings in you fpcs manual)
The operation takes a date as an input parameter.
Input validation
No input validation is to be done.
The soap response is an instance of eu.glsgroup.fpcs.datatypes.soap.v1.shipmentprocessing.EndOfDayResponse or one of the following soap faults:
Sample request
<soapenv:Envelope xmlns:soapenv="https://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types">
<soapenv:Header/>
<soapenv:Body>
<typ:EndOfDayDate>2017-06-28</typ:EndOfDayDate>
</soapenv:Body>
</soapenv:Envelope>
Sample response
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<EndOfDayResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<Shipments>
<ShippingDate>2017-06-28</ShippingDate>
<Product>Parcel</Product>
<Consignee>
<ns2:Address>
<ns2:Name1>Max</ns2:Name1>
<ns2:CountryCode>DE</ns2:CountryCode>
<ns2:ZIPCode>38106</ns2:ZIPCode>
<ns2:City>Braunschweig</ns2:City>
<ns2:Street>Ringstrasse</ns2:Street>
</ns2:Address>
</Consignee>
<Shipper>
<ns2:ContactID>2761234567</ns2:ContactID>
<ns2:AlternativeShipperAddress>
<ns2:Name1>Logistics and More</ns2:Name1>
<ns2:CountryCode>DE</ns2:CountryCode>
<ns2:ZIPCode>65760</ns2:ZIPCode>
<ns2:City>Eschborn</ns2:City>
<ns2:Street>Elly-Beinhorn-Strasse</ns2:Street>
<ns2:StreetNumber>1a</ns2:StreetNumber>
<ns2:eMail>logistics@more.test</ns2:eMail>
<ns2:FixedLinePhonenumber>004961961234567</ns2:FixedLinePhonenumber>
</ns2:AlternativeShipperAddress>
</Shipper>
<ShipmentUnit>
<Weight>23.2</Weight>
<TrackID>YZDLDM5J</TrackID>
<ParcelNumber>20281021031</ParcelNumber>
</ShipmentUnit>
</Shipments>
</EndOfDayResponse>
</soap:Body>
</soap:Envelope>
If shipments still need to be transmitted, but could not be transmitted:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Transmission of one or more of the following shipment units not successful</faultstring>
<detail>
<ns2:CouldNotTransmitShipmentsFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ns2:shipmentUnitId>XYZ00012</ns2:shipmentUnitId>
</ns2:CouldNotTransmitShipmentsFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
updateParcelWeight (F-119)
Updates the weight of a shipment unit. The shipment unit will be searched by its trackID.
This function is not fully supported yet but will only update the weight in your backend. Changes are not transmitted to GLS.
The search is restricted to the shippers to which the user issuing the request has access to.
Input validation
-
The trackID must identify a shipment unit. If none or more than one unit is found, a fault is returned.
The soap response is an instance of eu.glsgroup.fpcs.datatypes.soap.v1.shipmentprocessing.UpdateParcelWeightResponse or one of the following soap faults:
Sample request
<soapenv:Envelope xmlns:soapenv="https://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types">
<soapenv:Header/>
<soapenv:Body>
<typ:UpdateParcelWeightRequestParameter>
<typ:TrackID>ZDF8DOSZ</typ:TrackID>
<typ:Weight>17</typ:Weight>
</typ:UpdateParcelWeightRequestParameter>
</soapenv:Body>
</soapenv:Envelope>
Sample response
If the request was successful:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<UpdateParcelWeightResponse xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<UpdatedWeight>17.0</UpdatedWeight>
</UpdateParcelWeightResponse>
</soap:Body>
</soap:Envelope>
If the request points to more than one shipment unit:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Shipment unit could not be identified. IDs are not unique (shipment reference number: 47110815, shipment unit reference number: unitref47)</faultstring>
<detail>
<InvalidShipmentIDFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ShipmentID>unitref47</ShipmentID>
</InvalidShipmentIDFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
If the shipment unit cannot be found by the provided reference numbers:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>No shipment unit found for shipment reference number 47110815 and shipment unit reference number unitref47</faultstring>
<detail>
<InvalidShipmentIDFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ShipmentID>unitref47</ShipmentID>
</InvalidShipmentIDFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
If the shipment unit cannot be found by the provided reference number on shipment unit level (no shipment reference number passed to the service):
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>No shipment unit found for shipment reference number null and shipment unit reference number unitref48</faultstring>
<detail>
<InvalidShipmentIDFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ShipmentID>unitref48</ShipmentID>
</InvalidShipmentIDFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
If a mandatory parameter is not provided:
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>UpdateParcelWeightRequestParameter.ShipmentUnitNumber must be set to a non empty value</faultstring>
<detail>
<ns2:MandatoryFieldMissingFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ns2:fieldname>
<ns2:name>UpdateParcelWeightRequestParameter.ShipmentUnitNumber</ns2:name>
</ns2:fieldname>
</ns2:MandatoryFieldMissingFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
If an invalid value is provided (e.g. a too high weight):
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Invalid field Weight. Value 40.0 is not a valid value. Max value is 25.0</faultstring>
<detail>
<ns2:InvalidFieldValueFault xmlns="https://fpcs.gls-group.eu/v1/ShipmentProcessing/types" xmlns:ns2="https://fpcs.gls-group.eu/v1/Common">
<ns2:field>
<ns2:name>Weight</ns2:name>
<ns2:value>40.0</ns2:value>
</ns2:field>
</ns2:InvalidFieldValueFault>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>