The API (and the .NET SDK) surfaces function that gives list of available service, package & accessorial options based on the partial shipment template. The more information you pass in request (more shipment fields are filled in) the more detailed response you get. (see Rate for a full Shipment details).
You may use this call multiple times, where in the first call you get broad list of available services/options and then (as customer makes or your business logic makes a selection about accessorials) you make the same call again, only providing more details (service and packaging) in the request.
At minimum we recommend specifying for the first request:
Carrier
ShipTo Country
GetShipmentOptionsResponse will include shipmentOptions that are not availalbe for every carrier. For example, LimitedAccessDeliveryItems is only available for freight carriers. But possible values will be displayed for all carriers.
If you are unsure of valid shipment options, or what elements are required for a given shipment/service combination, there is a solution: Use the ShipRush GUI interactively. What we mean here is: Use the ShipRush GUI as the documentation of what is available for a given shipment. The ShipRush GUI is the definitive benchmark for what is allowed on any given shipment. If an option is not available in the ShipRush UI, you should not make it available to your shippers.
The ShipRush GUI is enhanced, often multiple times a month, to accurately reflect what is available (and what is required) for specific shipment types. To our knowledge, it is the most complete documentation available.
Request
http://<url>/shipmentservice.svc/shipment/lookup/shipmentoptions
.NET wrapper function: APICommand SHIPMENT_LOOKUP_SHIPMENTOPTIONS
<GetShipmentOptionsRequest>
<ShipTransaction>
<Shipment>
<Carrier>1</Carrier>
<DeliveryAddress>
<Address>
...
<Country>US</Country>
</Address>
</DeliveryAddress>
...
</Shipment>
</ShipTransaction>
</GetShipmentOptionsRequest>Response
<GetShipmentOptionsResponse>
<UIFeatures>
<HidePackaging>false</HidePackaging>
<ShowWeight>true</ShowWeight>
<ShowWeightOunces>false</ShowWeightOunces>
...
</UIFeatures>
<ServiceTypeItems>
<TUPSService>I06</TUPSService>
<TUPSService>I01</TUPSService>
<TUPSService>FDXIPE</TUPSService>
<TUPSService>I03</TUPSService>
<TUPSService>I92</TUPSService>
</ServiceTypeItems>
<ShipToCountryItems>
<TCountry>US</TCountry>
<TCountry>CA</TCountry>
<TCountry>AL</TCountry>
<TCountry>DZ</TCountry>
<TCountry>AS</TCountry>
...
</ShipToCountryItems>
<PackagingTypeItems>
<TPackageType>02</TPackageType>
<TPackageType>01</TPackageType>
...
</PackagingTypeItems>
...
</GetShipmentOptionsResponse>