• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1450
  • Last Modified:

convert SOAP PHP to ASP

I'm trying to retrieve a shipping label from Fedex in a web application. FE says it can be done and i've got all the tools, just dont know how to use them. I understand ASP pretty good but there is no sample in that language.  I've got samples in PHP, C# and VB.NET. I have a very, very rudimentary understanding of PHP, the others not at all.

I'm not asking for someone to do my work, just point me in the right direction. What would be the best way to proceed?
0
webdork
Asked:
webdork
  • 10
  • 3
1 Solution
 
rdivilbissCommented:
Post the samples in PHP
0
 
webdorkAuthor Commented:
0
 
webdorkAuthor Commented:
0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
webdorkAuthor Commented:
sorry please use the http link above
0
 
rdivilbissCommented:
I asked you to POST the code not a link
0
 
webdorkAuthor Commented:
the system wont accept php code in the upload
0
 
webdorkAuthor Commented:
<?php

// Copyright 2009, FedEx Corporation. All rights reserved.
// Version 8.0.0

require_once('library/fedex-common.php5');


//The WSDL is not included with the sample code.
//Please include and reference in $path_to_wsdl variable.
$path_to_wsdl = "../wsdl/ShipService_v8.wsdl";

//Set commonly used variables in fedex-common.php5.  Set check to true.
if(setDefaults('check'))
{
      $key=setDefaults('key');
      $password=setDefaults('password');
      $shipAccount=setDefaults('shipaccount');
      $meter=setDefaults('meter');
      $billAccount=setDefaults('billaccount');
      $dutyAccount=setDefaults('dutyaccount');
}
//Set commonly used variables below.  Set check to false.
else
{
      $key='XXX';
      $password='YYY';
      $shipAccount='XXX';
      $meter='XXX';
      $billAccount='XXX';
      $dutyAccount='XXX';
}

ini_set("soap.wsdl_cache_enabled", "0");

$client = new SoapClient($path_to_wsdl, array('trace' => 1)); // Refer to http://us3.php.net/manual/en/ref.soap.php for more information

$request['WebAuthenticationDetail'] = array('UserCredential' =>
                                                      array('Key' => $key, 'Password' => $password));
$request['ClientDetail'] = array('AccountNumber' => $shipAccount, 'MeterNumber' => $meter);
$request['TransactionDetail'] = array('CustomerTransactionId' => '*** EmailLabel Request v8 using PHP ***');
$request['Version'] = array('ServiceId' => 'ship', 'Major' => '8', 'Intermediate' => '0', 'Minor' => '0');
$request['RequestedShipment']['DropoffType'] = 'REGULAR_PICKUP'; // valid values REGULAR_PICKUP, REQUEST_COURIER, ...
$request['RequestedShipment']['ShipTimestamp'] = date('c');
$request['RequestedShipment']['ServiceType'] = 'PRIORITY_OVERNIGHT'; // valid values STANDARD_OVERNIGHT, PRIORITY_OVERNIGHT, FEDEX_GROUND, ...
$request['RequestedShipment']['PackagingType'] = 'YOUR_PACKAGING'; // valid values FEDEX_BOX, FEDEX_PAK, FEDEX_TUBE, YOUR_PACKAGING, ...
$request['RequestedShipment']['Shipper'] = array('Contact' => array('PersonName' => 'Sender Name',
                                                                      'CompanyName' => 'Sender Company Name',
                                                                      'PhoneNumber' => '1234567890'),
                                                   'Address' => array('StreetLines' => array('Address Line 1'),
                                                                      'City' => 'Collierville',
                                                                      'StateOrProvinceCode' => 'TN',
                                                                      'PostalCode' => '38017',
                                                                      'CountryCode' => 'US',
                                                                      'Residential' => 1));
$request['RequestedShipment']['Recipient'] = array('Contact' => array('PersonName' => 'Recipient Name',
                                                                           'CompanyName' => 'Recipient Company Name',
                                                                           'PhoneNumber' => '1234567890'),
                                                        'Address' => array('StreetLines' => array('Address Line 1'),
                                                                           'City' => 'Herndon',
                                                                           'StateOrProvinceCode' => 'VA',
                                                                           'PostalCode' => '20171',
                                                                           'CountryCode' => 'US',
                                                                           'Residential' => 1));
$request['RequestedShipment']['ShippingChargesPayment'] = array('PaymentType' => 'SENDER',
                                                        'Payor' => array('AccountNumber' => $billAccount,
                                                                     'CountryCode' => 'US'));
$request['RequestedShipment']['SpecialServicesRequested'] = array('SpecialServiceTypes' => array ('RETURN_SHIPMENT', 'PENDING_SHIPMENT'),
                                                                  'EMailNotificationDetail' => array('PersonalMessage' => 'PersonalMessage',
                                                                                                      'Recipients' => array('EMailNotificationRecipientType' => 'RECIPIENT',
                                                                                                      'EMailAddress' => 'recipient@company.com',
                                                                                                      'Format' => 'HTML',
                                                                                                      'Localization' => array('LanguageCode' => 'EN', 'LocaleCode' => 'US'))),
                                                                  'ReturnShipmentDetail' => array('ReturnType' => 'PENDING',
                                                                                                  'ReturnEMailDetail' => array('MerchantPhoneNumber' => '901 999 9999',
                                                                                                                               'AllowedSpecialServices' => 'SATURDAY_DELIVERY')),
                                                                  'PendingShipmentDetail' => array('Type' => 'EMAIL', 'ExpirationDate' => date('Y-m-d'),
                                                                                           'EmailLabelDetail' => array('NotificationEMailAddress' => 'notification@company.com',
                                                                                                                        'NotificationMessage' => '')));
                                                                                                                                 
$request['RequestedShipment']['LabelSpecification'] = array('LabelFormatType' => 'COMMON2D',
                                                            'ImageType' => 'PNG');
$request['RequestedShipment']['RateRequestTypes'] = 'ACCOUNT';
$request['RequestedShipment']['RateRequestTypes'] = 'LIST';
$request['RequestedShipment']['PackageCount'] = '1';
$request['RequestedShipment']['PackageDetail'] = 'INDIVIDUAL_PACKAGES';
$request['RequestedShipment']['RequestedPackageLineItems'] = array('0' => array('SequenceNumber' => '1',
                                                                  'InsuredValue' => array('Amount' => 20.0,
                                                                                          'Currency' => 'USD'),
                                                                  'ItemDescription' => 'College Transcripts',
                                                                  'Weight' => array('Value' => 2.0,
                                                                                    'Units' => 'LB'),
                                                                  'Dimensions' => array('Length' => 25,
                                                                                        'Width' => 10,
                                                                                        'Height' => 10,
                                                                                        'Units' => 'IN'),
                                                                  'CustomerReferences' => array('CustomerReferenceType' => 'CUSTOMER_REFERENCE',
                                                                                                 'Value' => 'Undergraduate application')));

try
{
    $response = $client ->createPendingShipment($request);

    if ($response -> HighestSeverity != 'FAILURE' && $response -> HighestSeverity != 'ERROR')
    {
        echo 'Url: '.$response -> CompletedShipmentDetail -> AccessDetail -> EmailLabelUrl.Newline;
        echo 'User Id: '.$response -> CompletedShipmentDetail -> AccessDetail -> UserId.Newline;
        echo 'Password: '.$response -> CompletedShipmentDetail -> AccessDetail -> Password.Newline;
        echo 'Tracking Number: '.$response -> CompletedShipmentDetail -> CompletedPackageDetails -> TrackingIds -> TrackingNumber.Newline;
        printSuccess($client, $response);
    }
    else
    {
        printError($client, $response);
    }
   
    writeToLog($client);    // Write to log file  

} catch (SoapFault $exception) {
    printFault($exception, $client);
}

?>
0
 
webdorkAuthor Commented:

<?php


// Copyright 2009, FedEx Corporation. All rights reserved.

define('TRANSACTIONS_LOG_FILE', '../fedextransactions.log');  // Transactions log file

/**
 *  Print SOAP request and response
 */
define('Newline',"<br />");

function printSuccess($client, $response) {
    echo '<h2>Transaction Successful</h2>';  
    echo "\n";
    printRequestResponse($client);
}
function printRequestResponse($client){
      echo '<h2>Request</h2>' . "\n";
      echo '<pre>' . htmlspecialchars($client->__getLastRequest()). '</pre>';  
      echo "\n";
   
      echo '<h2>Response</h2>'. "\n";
      echo '<pre>' . htmlspecialchars($client->__getLastResponse()). '</pre>';
      echo "\n";
}

/**
 *  Print SOAP Fault
 */  
function printFault($exception, $client) {
    echo '<h2>Fault</h2>' . "<br>\n";                        
    echo "<b>Code:</b>{$exception->faultcode}<br>\n";
    echo "<b>String:</b>{$exception->faultstring}<br>\n";
    writeToLog($client);
}

/**
 * SOAP request/response logging to a file
 */                                  
function writeToLog($client){  
if (!$logfile = fopen(TRANSACTIONS_LOG_FILE, "a"))
{
   error_func("Cannot open " . TRANSACTIONS_LOG_FILE . " file.\n", 0);
   exit(1);
}

fwrite($logfile, sprintf("\r%s:- %s",date("D M j G:i:s T Y"), $client->__getLastRequest(). "\n\n" . $client->__getLastResponse()));
}

//To use these defaults set the check to return true.
function setDefaults($var){
      if($var == 'shipaccount') Return 'XXX';
/**
 * If the billaccount and dutyaccount do not match the shipping account
 * the pay type will need to be changed from SENDER in shipping transactions.
 */
      if($var == 'billaccount') Return 'XXX';
      if($var == 'dutyaccount') Return 'XXX';
      if($var == 'meter') Return 'XXX';
      if($var == 'key') Return 'XXX';
      if($var == 'password') Return 'XXX';
      if($var == 'check') Return false;
}

function printNotifications($notes){
      foreach($notes as $noteKey => $note){
            if(is_string($note)){    
            echo $noteKey . ': ' . $note . Newline;
        }
        else{
              printNotifications($note);
        }
      }
      echo Newline;
}

function printError($client, $response){
    echo '<h2>Error returned in processing transaction</h2>';
      echo "\n";
      printNotifications($response -> Notifications);
    printRequestResponse($client, $response);
}

?>
0
 
webdorkAuthor Commented:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://fedex.com/ws/ship/v8" xmlns:s1="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://fedex.com/ws/ship/v8" name="ShipServiceDefinitions">
  <types>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://fedex.com/ws/ship/v8">
      <xs:element name="CancelPendingShipmentRequest" type="ns:CancelPendingShipmentRequest"/>
      <xs:element name="CancelPendingShipmentReply" type="ns:CancelPendingShipmentReply"/>
      <xs:element name="CreatePendingShipmentRequest" type="ns:CreatePendingShipmentRequest"/>
      <xs:element name="CreatePendingShipmentReply" type="ns:CreatePendingShipmentReply"/>
      <xs:element name="ProcessShipmentRequest" type="ns:ProcessShipmentRequest"/>
      <xs:element name="ProcessShipmentReply" type="ns:ProcessShipmentReply"/>
      <xs:element name="DeleteShipmentRequest" type="ns:DeleteShipmentRequest"/>
      <xs:element name="ShipmentReply" type="ns:ShipmentReply"/>
      <xs:element name="ValidateShipmentRequest" type="ns:ValidateShipmentRequest"/>
      <xs:element name="ProcessTagRequest" type="ns:ProcessTagRequest"/>
      <xs:element name="ProcessTagReply" type="ns:ProcessTagReply"/>
      <xs:element name="DeleteTagRequest" type="ns:DeleteTagRequest"/>
      <xs:complexType name="AdditionalLabelsDetail">
        <xs:sequence>
          <xs:element name="Type" type="ns:AdditionalLabelsType">
          </xs:element>
          <xs:element name="Count" type="xs:nonNegativeInteger">
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="AdditionalLabelsType">
        <xs:annotation>
          <xs:documentation>Identifies the type of additional labels.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="BROKER"/>
          <xs:enumeration value="CONSIGNEE"/>
          <xs:enumeration value="CUSTOMS"/>
          <xs:enumeration value="DESTINATION"/>
          <xs:enumeration value="MANIFEST"/>
          <xs:enumeration value="ORIGIN"/>
          <xs:enumeration value="RECIPIENT"/>
          <xs:enumeration value="SHIPPER"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="Address">
        <xs:annotation>
          <xs:documentation>The descriptive data for a physical location.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="StreetLines" type="xs:string" minOccurs="0" maxOccurs="2">
            <xs:annotation>
              <xs:documentation>Combination of number, street name, etc. At least one line is required for a valid physical address; empty lines should not be included.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>35</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="City" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Name of city, town, etc.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>
                  <ns:Express>35</ns:Express>
                  <ns:Ground>20</ns:Ground>
                </xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="StateOrProvinceCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifying abbreviation for US state, Canada province, etc. Format and presence of this field will vary, depending on country.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>14</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="PostalCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identification of a region (usually small) for mail/package delivery. Format and presence of this field will vary, depending on country. This element is required if both the City and StateOrProvinceCode are not present.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>16</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="UrbanizationCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Relevant only to addresses in Puerto Rico. In Puerto Rico, multiple addresses within the same ZIP code can have the same house number and street name. When this is the case, the urbanization code is needed to distinguish them.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>100</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="CountryCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identification of a country.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>2</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Residential" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Indicates whether this address is residential (as opposed to commercial).</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="BarcodeSymbologyType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="CODE128B"/>
          <xs:enumeration value="CODE128C"/>
          <xs:enumeration value="CODE39"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="B13AFilingOptionType">
        <xs:annotation>
          <xs:documentation>
            Specifies which filing option is being exercised by the customer.
            Required for non-document shipments originating in Canada destined for any country other than Canada, the United States, Puerto Rico or the U.S. Virgin Islands.
          </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="FILED_ELECTRONICALLY"/>
          <xs:enumeration value="MANUALLY_ATTACHED"/>
          <xs:enumeration value="NOT_REQUIRED"/>
          <xs:enumeration value="SUMMARY_REPORTING"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="CancelPendingShipmentRequest">
        <xs:annotation>
          <xs:documentation>Descriptive data sent to FedEx by a customer in order to Cancel a Pending shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="WebAuthenticationDetail" type="ns:WebAuthenticationDetail">
            <xs:annotation>
              <xs:documentation>The descriptive data to be used in authentication of the sender's identity (and right to use FedEx web services).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ClientDetail" type="ns:ClientDetail">
            <xs:annotation>
              <xs:documentation>Descriptive data identifying the client submitting the transaction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TransactionDetail" type="ns:TransactionDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data for this customer transaction. The TransactionDetail from the request is echoed back to the caller in the corresponding reply.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Version" type="ns:VersionId">
            <xs:annotation>
              <xs:documentation>Identifies the version/level of a service operation expected by a caller (in each request) and performed by the callee (in each reply).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TrackingNumber" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CancelPendingShipmentReply">
        <xs:sequence>
          <xs:element name="HighestSeverity" type="ns:NotificationSeverityType"/>
          <xs:element name="Notifications" type="ns:Notification" maxOccurs="unbounded"/>
          <xs:element name="TransactionDetail" type="ns:TransactionDetail" minOccurs="0"/>
          <xs:element name="Version" type="ns:VersionId"/>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="CarrierCodeType">
        <xs:annotation>
          <xs:documentation>Identification of a FedEx operating company (transportation).</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="FDXC"/>
          <xs:enumeration value="FDXE"/>
          <xs:enumeration value="FDXG"/>
          <xs:enumeration value="FXCC"/>
          <xs:enumeration value="FXFR"/>
          <xs:enumeration value="FXSP"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="ClientDetail">
        <xs:annotation>
          <xs:documentation>The descriptive data identifying the client submitting the transaction.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="AccountNumber" type="xs:string">
            <xs:annotation>
              <xs:documentation>The FedEx account number assigned to the customer initiating the request.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>12</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="MeterNumber" type="xs:string">
            <xs:annotation>
              <xs:documentation>Identifies the unique client device submitting the request. This number is assigned by FedEx and identifies the unique device from which the request is originating.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>10</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="IntegratorId" type="xs:string" minOccurs="0"/>
          <xs:element name="Localization" type="ns:Localization" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Governs any future language/translations used for human-readable Notification.localizedMessages in responses to the request containing this ClientDetail object. Different requests from the same client may contain different Localization data. (Contrast with TransactionDetail.localization, which governs data payload language/translation.)</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="CodAddTransportationChargesType">
        <xs:annotation>
          <xs:documentation>Identifies what freight charges should be added to the COD collect amount.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ADD_ACCOUNT_COD_SURCHARGE"/>
          <xs:enumeration value="ADD_ACCOUNT_NET_CHARGE"/>
          <xs:enumeration value="ADD_ACCOUNT_NET_FREIGHT"/>
          <xs:enumeration value="ADD_ACCOUNT_TOTAL_CUSTOMER_CHARGE"/>
          <xs:enumeration value="ADD_LIST_COD_SURCHARGE"/>
          <xs:enumeration value="ADD_LIST_NET_CHARGE"/>
          <xs:enumeration value="ADD_LIST_NET_FREIGHT"/>
          <xs:enumeration value="ADD_LIST_TOTAL_CUSTOMER_CHARGE"/>
          <xs:enumeration value="ADD_SUM_OF_ACCOUNT_NET_CHARGES"/>
          <xs:enumeration value="ADD_SUM_OF_ACCOUNT_NET_FREIGHT"/>
          <xs:enumeration value="ADD_SUM_OF_LIST_NET_CHARGES"/>
          <xs:enumeration value="ADD_SUM_OF_LIST_NET_FREIGHT"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="CodCollectionType">
        <xs:annotation>
          <xs:documentation>Identifies the type of funds FedEx should collect upon package delivery.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ANY"/>
          <xs:enumeration value="CASH"/>
          <xs:enumeration value="GUARANTEED_FUNDS"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="CodDetail">
        <xs:annotation>
          <xs:documentation>Descriptive data required for a FedEx COD (Collect-On-Delivery) shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="AddTransportationCharges" type="ns:CodAddTransportationChargesType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies if freight charges are to be added to the COD amount. This element determines which freight charges should be added to the COD collect amount. See CodAddTransportationChargesType for the list of valid enumerated values.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CollectionType" type="ns:CodCollectionType">
            <xs:annotation>
              <xs:documentation>Identifies the type of funds FedEx should collect upon package delivery. See CodCollectionType for the list of valid enumerated values.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CodRecipient" type="ns:Party" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data about the recipient of the COD shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ReferenceIndicator" type="ns:CodReturnReferenceIndicatorType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Indicates which type of reference information to include on the COD return shipping label.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CodReturnPackageDetail">
        <xs:sequence>
          <xs:element name="CollectionAmount" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The COD amount (after any accumulations) that must be collected upon delivery of a package shipped using the COD special service.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Electronic" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="Barcodes" type="ns:PackageBarcodes" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Contains the data which form the Astra and 2DCommon barcodes that print on the COD return label.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Label" type="ns:ShippingDocument" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The label image or printer commands to print the label.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="CodReturnReferenceIndicatorType">
        <xs:annotation>
          <xs:documentation>Indicates which type of reference information to include on the COD return shipping label.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="INVOICE"/>
          <xs:enumeration value="PO"/>
          <xs:enumeration value="REFERENCE"/>
          <xs:enumeration value="TRACKING"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="CodReturnShipmentDetail">
        <xs:sequence>
          <xs:element name="CollectionAmount" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The COD amount (after any accumulations) that must be collected upon delivery of a package shipped using the COD special service.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Handling" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Currently not supported.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>TBD</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="ServiceTypeDescription" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The description of the FedEx service type used for the COD return shipment. Currently not supported.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>70</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="PackagingDescription" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The description of the packaging used for the COD return shipment.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>40</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="SecuredDescription" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Currently not supported.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>TBD</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Remitter" type="ns:Party" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Currently not supported.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CodRecipient" type="ns:Party" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Currently not supported.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CodRoutingDetail" type="ns:RoutingDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                The CodRoutingDetail element will contain the COD return tracking number and form id. In the case of a COD multiple piece shipment these will need to be inserted in the request for the last piece of the multiple piece shipment.
                The service commitment is the only other element of the RoutingDetail that is used for a CodRoutingDetail.
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Barcodes" type="ns:PackageBarcodes" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Contains the data which form the Astra and 2DCommon barcodes that print on the COD return label.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Label" type="ns:ShippingDocument" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The label image or printer commands to print the label.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CommercialInvoice">
        <xs:annotation>
          <xs:documentation>CommercialInvoice element is required for electronic upload of CI data. It will serve to create/transmit an Electronic Commercial Invoice through FedEx System. Customers are responsible for printing their own Commercial Invoice. Commercial Invoice support consists of a maximum of 99 commodity line items.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Comments" type="xs:string" minOccurs="0" maxOccurs="99">
            <xs:annotation>
              <xs:documentation>Commercial Invoice comments to be uploaded to customs.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>444</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="FreightCharge" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                Format: Two explicit decimal positions max length 19 including decimal.
                Required if Terms Of Sale is CFR or CIF.
                This charge should be added to the total customs value amount.
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TaxesOrMiscellaneousCharge" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                Format: Two explicit decimal positions max length 19 including decimal.
                This charge should be added to the total customs value amount.
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PackingCosts" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Any packing costs that are associated with this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="HandlingCosts" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Any handling costs that are associated with this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SpecialInstructions" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Free-form text.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DeclarationStatment" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Free-form text.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PaymentTerms" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Free-form text.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Purpose" type="ns:PurposeOfShipmentType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Test for the Commercial Invoice. Note that Sold is not a valid Purpose for a Proforma Invoice.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PurposeOfShipmentDescription" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive text for the purpose of the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomerInvoiceNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Customer assigned invoice number.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>15</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="OriginatorName" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Name of the International Expert that completed the Commercial Invoice different from Sender.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TermsOfSale" type="ns:TermsOfSaleType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Defines the terms of the sale.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CommercialInvoiceDetail">
        <xs:annotation>
          <xs:documentation>This element is currently not supported and is for the future use.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Format" type="ns:ShippingDocumentFormat" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomerImageUsages" minOccurs="0" maxOccurs="unbounded" type="ns:CustomerImageUsage">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="Commodity">
        <xs:annotation>
          <xs:documentation>
            For international multiple piece shipments, commodity information must be passed in the Master and on each child transaction.
            If this shipment cotains more than four commodities line items, the four highest valued should be included in the first 4 occurances for this request.
          </xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Name" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Name of this commodity.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="NumberOfPieces" type="xs:nonNegativeInteger">
            <xs:annotation>
              <xs:documentation>Total number of pieces of this commodity</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Description" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Complete and accurate description of this commodity.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>450</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="CountryOfManufacture" type="xs:string">
            <xs:annotation>
              <xs:documentation>Country code where commodity contents were produced or manufactured in their final form.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>2</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="HarmonizedCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                Unique alpha/numeric representing commodity item.
                At least one occurrence is required for US Export shipments if the Customs Value is greater than $2500 or if a valid US Export license is required.
              </xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>14</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Weight" type="ns:Weight">
            <xs:annotation>
              <xs:documentation>Total weight of this commodity. 1 explicit decimal position. Max length 11 including decimal.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Quantity" type="xs:nonNegativeInteger" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Number of units of a commodity in total number of pieces for this line item. Max length is 9</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="QuantityUnits" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Unit of measure used to express the quantity of this commodity line item.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>3</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="AdditionalMeasures" minOccurs="0" maxOccurs="unbounded" type="ns:Measure">
            <xs:annotation>
              <xs:documentation>Contains only additional quantitative information other than weight and quantity to calculate duties and taxes.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="UnitPrice" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Value of each unit in Quantity. Six explicit decimal positions, Max length 18 including decimal.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomsValue" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                Total customs value for this line item.
                It should equal the commodity unit quantity times commodity unit value.
                Six explicit decimal positions, max length 18 including decimal.
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ExciseConditions" minOccurs="0" maxOccurs="unbounded" type="ns:EdtExciseCondition">
            <xs:annotation>
              <xs:documentation>Defines additional characteristic of commodity used to calculate duties and taxes</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ExportLicenseNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Applicable to US export shipping only.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>12</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="ExportLicenseExpirationDate" type="xs:date" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                Date of expiration. Must be at least 1 day into future.
                The date that the Commerce Export License expires. Export License commodities may not be exported from the U.S. on an expired license.
                Applicable to US Export shipping only.
                Required only if commodity is shipped on commerce export license, and Export License Number is supplied.
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CIMarksAndNumbers" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                An identifying mark or number used on the packaging of a shipment to help customers identify a particular shipment.
              </xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>15</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="NaftaDetail" type="ns:NaftaCommodityDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>All data required for this commodity in NAFTA Certificate of Origin.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CompletedPackageDetail">
        <xs:sequence>
          <xs:element name="SequenceNumber" type="xs:positiveInteger" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The package sequence number of this package in a multiple piece shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TrackingIds" type="ns:TrackingId" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>The Tracking number and form id for this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="GroupNumber" type="xs:nonNegativeInteger" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Used with request containing PACKAGE_GROUPS, to identify which group of identical packages was used to produce a reply item.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="OversizeClass" type="ns:OversizeClassType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Oversize class for this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PackageRating" type="ns:PackageRating" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The rating information for this package. Note, this is a courtesy rate and may be different from what is invoiced.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="GroundServiceCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Associated with package, due to interaction with per-package hazardous materials presence/absence.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Barcodes" type="ns:PackageBarcodes" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The data that is used to from the Astra and 2DCommon barcodes for the label..</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="AstraHandlingText" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The textual description of the special service applied to the package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="AstraLabelElements" minOccurs="0" maxOccurs="unbounded" type="ns:AstraLabelElement">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Label" type="ns:ShippingDocument" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The label image or printer commands to print the label.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PackageDocuments" type="ns:ShippingDocument" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>All package-level shipping documents (other than labels and barcodes).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CodReturnDetail" type="ns:CodReturnPackageDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Information about the COD return shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SignatureOption" type="ns:SignatureOptionType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The actual signature option applied to this shipment. This could be different than the signature option requested if a conflict occured with other service features in the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="HazardousCommodities" minOccurs="0" maxOccurs="unbounded" type="ns:ValidatedHazardousCommodityContent">
            <xs:annotation>
              <xs:documentation>Documents the kinds and quantities of all hazardous commodities in the current package, using updated hazardous commodity description data.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ValidatedHazardousCommodityContent">
        <xs:annotation>
          <xs:documentation>Documents the kind and quantity of an individual hazardous commodity in a package.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Description" minOccurs="0" type="ns:ValidatedHazardousCommodityDescription">
            <xs:annotation>
              <xs:documentation>Identifies and describes an individual hazardous commodity.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Quantity" minOccurs="0" type="ns:HazardousCommodityQuantityDetail">
            <xs:annotation>
              <xs:documentation>Specifies the amount of the commodity in alternate units.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Options" minOccurs="0" type="ns:HazardousCommodityOptionDetail">
            <xs:annotation>
              <xs:documentation>Customer-provided specifications for handling individual commodities.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ValidatedHazardousCommodityDescription">
        <xs:annotation>
          <xs:documentation>Identifies and describes an individual hazardous commodity. For 201001 load, this is based on data from the FedEx Ground Hazardous Materials Shipping Guide.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Id" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Regulatory identifier for a commodity (e.g. "UN ID" value).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PackingGroup" minOccurs="0" type="ns:HazardousCommodityPackingGroupType">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ProperShippingName" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ProperShippingNameAndDescription" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Fully-expanded descriptive text for a hazardous commodity.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TechnicalName" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="HazardClass" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SubsidiaryClasses" minOccurs="0" maxOccurs="unbounded" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Symbols" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Coded indications for special requirements or constraints.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="LabelText" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CompletedShipmentDetail">
        <xs:sequence>
          <xs:element name="UsDomestic" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Indicates whether or not this is a US Domestic shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CarrierCode" type="ns:CarrierCodeType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Indicates the carrier that will be used to deliver this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="MasterTrackingId" type="ns:TrackingId" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The master tracking number and form id of this multiple piece shipment. This information is to be provided for each subsequent of a multiple piece shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ServiceTypeDescription" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Description of the FedEx service used for this shipment. Currently not supported.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>70</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="PackagingDescription" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Description of the packaging used for this shipment. Currently not supported.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>40</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="RoutingDetail" type="ns:ShipmentRoutingDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Information about the routing, origin, destination and delivery of a shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="AccessDetail" type="ns:PendingShipmentAccessDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Access Details about PendingShipment information.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TagDetail" type="ns:CompletedTagDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Only used in the reply to tag requests.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SmartPostDetail" type="ns:CompletedSmartPostDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Provides reply information specific to SmartPost shipments.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ShipmentRating" type="ns:ShipmentRating" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The rating information for this shipment. Note, this is a courtesy rate and may be different from what is invoiced.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CodReturnDetail" type="ns:CodReturnShipmentDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Information about the COD return shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="IneligibleForMoneyBackGuarantee" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Indicates whether or not this shipment is eligible for a money back guarantee.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ExportComplianceStatement" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>General field for exporting-country-specific export data (e.g. B13A for CA, FTSR Exemption or AES Citation for US.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CompletedEtdDetail" type="ns:CompletedEtdDetail" minOccurs="0"/>
          <xs:element name="ShipmentDocuments" type="ns:ShippingDocument" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>All shipment-level shipping documents (other than labels and barcodes).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CompletedPackageDetails" type="ns:CompletedPackageDetail" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Package level details about this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CompletedEtdDetail">
        <xs:sequence>
          <xs:element name="FolderId" type="xs:string" minOccurs="0"/>
          <xs:element name="UploadDocumentReferenceDetails" type="ns:UploadDocumentReferenceDetail" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CompletedTagDetail">
        <xs:annotation>
          <xs:documentation>Provides reply information specific to a tag request.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="ConfirmationNumber" type="xs:string">
            <xs:annotation>
              <xs:documentation>.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="AccessTime" type="xs:duration" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="CutoffTime" type="xs:time" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="Location" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="DeliveryCommitment" type="xs:dateTime" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="DispatchDate" type="xs:date" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ConfigurableLabelReferenceEntry">
        <xs:annotation>
          <xs:documentation>Defines additional data to print in the Configurable portion of the label, this allows you to print the same type information on the label that can also be printed on the doc tab.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="ZoneNumber" type="xs:positiveInteger">
            <xs:annotation>
              <xs:documentation>1 of 12 possible zones to position data.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Header" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The identifiying text for the data in this zone.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DataField" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>A reference to a field in either the request or reply to print in this zone following the header.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="LiteralValue" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>A literal value to print after the header in this zone.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="Contact">
        <xs:annotation>
          <xs:documentation>The descriptive data for a point-of-contact person.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="PersonName" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the contact person's name.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>35</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Title" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the contact person's title. Not currently used.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CompanyName" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the contact person's company name.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>35</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="PhoneNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the contact person's phone number.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>15</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="PagerNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the contact person's pager number.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>15</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="FaxNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the contact person's fax machine phone number.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>15</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="EMailAddress" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the contact person's email address.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>120</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ContactAndAddress">
        <xs:sequence>
          <xs:element name="Contact" type="ns:Contact" minOccurs="1"/>
          <xs:element name="Address" type="ns:Address" minOccurs="0"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CreatePendingShipmentRequest">
        <xs:annotation>
          <xs:documentation>Create Pending Shipment Request</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="WebAuthenticationDetail" type="ns:WebAuthenticationDetail" minOccurs="1">
            <xs:annotation>
              <xs:documentation>The descriptive data to be used in authentication of the sender's identity (and right to use FedEx web services).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ClientDetail" type="ns:ClientDetail" minOccurs="1">
            <xs:annotation>
              <xs:documentation>The descriptive data identifying the client submitting the transaction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TransactionDetail" type="ns:TransactionDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The descriptive data for this customer transaction. The TransactionDetail from the request is echoed back to the caller in the corresponding reply.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Version" type="ns:VersionId" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Identifies the version/level of a service operation expected by a caller (in each request) and performed by the callee (in each reply).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RequestedShipment" type="ns:RequestedShipment">
            <xs:annotation>
              <xs:documentation>Descriptive data about the shipment being sent by the requestor.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CreatePendingShipmentReply">
        <xs:annotation>
          <xs:documentation>Reply to the Close Request transaction. The Close Reply bring back the ASCII data buffer which will be used to print the Close Manifest. The Manifest is essential at the time of pickup.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="HighestSeverity" type="ns:NotificationSeverityType" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Identifies the highest severity encountered when executing the request; in order from high to low: FAILURE, ERROR, WARNING, NOTE, SUCCESS.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Notifications" type="ns:Notification" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>The descriptive data detailing the status of a sumbitted transaction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TransactionDetail" type="ns:TransactionDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data that governs data payload language/translations. The TransactionDetail from the request is echoed back to the caller in the corresponding reply.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Version" type="ns:VersionId" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Identifies the version/level of a service operation expected by a caller (in each request) and performed by the callee (in each reply).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CompletedShipmentDetail" type="ns:CompletedShipmentDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The reply payload. All of the returned information about this shipment/package.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CurrencyExchangeRate">
        <xs:annotation>
          <xs:documentation>Currency exchange rate information.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="FromCurrency" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The currency type being converted from.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="IntoCurrency" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The currency type being converted to.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Rate" type="xs:decimal" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The resulting amount.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ContentRecord">
        <xs:annotation>
          <xs:documentation>Content Record.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="PartNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Part Number.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ItemNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Item Number.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ReceivedQuantity" type="xs:nonNegativeInteger" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Received Quantity.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Description" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Description.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CustomerReference">
        <xs:annotation>
          <xs:documentation>Reference information to be associated with this package.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="CustomerReferenceType" type="ns:CustomerReferenceType">
            <xs:annotation>
              <xs:documentation>The reference type to be associated with this reference data.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Value" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="CustomerReferenceType">
        <xs:annotation>
          <xs:documentation>The types of references available for use.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="BILL_OF_LADING"/>
          <xs:enumeration value="CUSTOMER_REFERENCE"/>
          <xs:enumeration value="DEPARTMENT_NUMBER"/>
          <xs:enumeration value="INVOICE_NUMBER"/>
          <xs:enumeration value="P_O_NUMBER"/>
          <xs:enumeration value="SHIPMENT_INTEGRITY"/>
          <xs:enumeration value="STORE_NUMBER"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="CustomerSpecifiedLabelDetail">
        <xs:annotation>
          <xs:documentation>Allows customer-specified control of label content.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="DocTabContent" type="ns:DocTabContent" minOccurs="0">
            <xs:annotation>
              <xs:documentation>If omitted, no doc tab will be produced (i.e. default = former NONE type).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomContent" type="ns:CustomLabelDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Defines any custom content to print on the label.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ConfigurableReferenceEntries" type="ns:ConfigurableLabelReferenceEntry" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Defines additional data to print in the Configurable portion of the label, this allows you to print the same type information on the label that can also be printed on the doc tab.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="MaskedData" type="ns:LabelMaskableDataType" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Data to exclude from printing on the label.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TermsAndConditionsLocalization" type="ns:Localization" minOccurs="0"/>
          <xs:element name="AdditionalLabels" type="ns:AdditionalLabelsDetail" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="AirWaybillSuppressionCount" type="xs:nonNegativeInteger" minOccurs="0"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CustomLabelBarcodeEntry">
        <xs:sequence>
          <xs:element name="Position" type="ns:CustomLabelPosition"/>
          <xs:element name="Format" type="xs:string" minOccurs="0"/>
          <xs:element name="DataFields" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="BarHeight" type="xs:int" minOccurs="0"/>
          <xs:element name="ThinBarWidth" type="xs:int" minOccurs="0"/>
          <xs:element name="BarcodeSymbology" type="ns:BarcodeSymbologyType"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CustomLabelBoxEntry">
        <xs:sequence>
          <xs:element name="TopLeftCorner" type="ns:CustomLabelPosition"/>
          <xs:element name="BottomRightCorner" type="ns:CustomLabelPosition"/>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="CustomLabelCoordinateUnits">
        <xs:annotation>
          <xs:documentation>Valid values for CustomLabelCoordinateUnits</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="MILS"/>
          <xs:enumeration value="PIXELS"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="CustomLabelDetail">
        <xs:sequence>
          <xs:element name="CoordinateUnits" type="ns:CustomLabelCoordinateUnits" minOccurs="0"/>
          <xs:element name="TextEntries" type="ns:CustomLabelTextEntry" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="GraphicEntries" type="ns:CustomLabelGraphicEntry" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="BoxEntries" type="ns:CustomLabelBoxEntry" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="BarcodeEntries" type="ns:CustomLabelBarcodeEntry" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CustomLabelGraphicEntry">
        <xs:sequence>
          <xs:element name="Position" type="ns:CustomLabelPosition" minOccurs="0"/>
          <xs:element name="PrinterGraphicId" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CustomLabelPosition">
        <xs:sequence>
          <xs:element name="X" type="xs:nonNegativeInteger"/>
          <xs:element name="Y" type="xs:nonNegativeInteger"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CustomLabelTextEntry">
        <xs:sequence>
          <xs:element name="Position" type="ns:CustomLabelPosition" minOccurs="1"/>
          <xs:element name="Format" type="xs:string" minOccurs="0"/>
          <xs:element name="ThermalFontId" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Printer-specific font name for use with thermal printer labels.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="DangerousGoodsAccessibilityType">
        <xs:restriction base="xs:string">
          <xs:annotation>
            <xs:documentation>Identifies whether or not the products being shipped are required to be accessible during delivery.</xs:documentation>
          </xs:annotation>
          <xs:enumeration value="ACCESSIBLE"/>
          <xs:enumeration value="INACCESSIBLE"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="DangerousGoodsDetail">
        <xs:annotation>
          <xs:documentation>The descriptive data required for a FedEx shipment containing dangerous goods (hazardous materials).</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Accessibility" type="ns:DangerousGoodsAccessibilityType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies whether or not the products being shipped are required to be accessible during delivery.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CargoAircraftOnly" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Shipment is packaged/documented for movement ONLY on cargo aircraft.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Options" minOccurs="0" maxOccurs="unbounded" type="ns:HazardousCommodityOptionType">
            <xs:annotation>
              <xs:documentation>Indicates which kinds of hazardous content are in the current package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="HazardousCommodities" minOccurs="0" maxOccurs="unbounded" type="ns:HazardousCommodityContent">
            <xs:annotation>
              <xs:documentation>Documents the kinds and quantities of all hazardous commodities in the current package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Packaging" minOccurs="0" type="ns:HazardousCommodityPackagingDetail">
            <xs:annotation>
              <xs:documentation>Description of the packaging of this commodity, suitable for use on OP-900 and OP-950 forms.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="EmergencyContactNumber" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Telephone number to use for contact in the event of an emergency.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="HazardousCommodityContent">
        <xs:annotation>
          <xs:documentation>Documents the kind and quantity of an individual hazardous commodity in a package.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Description" minOccurs="0" type="ns:HazardousCommodityDescription">
            <xs:annotation>
              <xs:documentation>Identifies and describes an individual hazardous commodity.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Quantity" minOccurs="0" type="ns:HazardousCommodityQuantityDetail">
            <xs:annotation>
              <xs:documentation>Specifies the amount of the commodity in alternate units.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Options" minOccurs="0" type="ns:HazardousCommodityOptionDetail">
            <xs:annotation>
              <xs:documentation>Customer-provided specifications for handling individual commodities.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="HazardousCommodityDescription">
        <xs:annotation>
          <xs:documentation>Identifies and describes an individual hazardous commodity. For 201001 load, this is based on data from the FedEx Ground Hazardous Materials Shipping Guide.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Id" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Regulatory identifier for a commodity (e.g. "UN ID" value).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PackingGroup" minOccurs="0" type="ns:HazardousCommodityPackingGroupType">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ProperShippingName" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TechnicalName" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="HazardClass" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SubsidiaryClasses" minOccurs="0" maxOccurs="unbounded" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="LabelText" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="HazardousCommodityPackingGroupType">
        <xs:annotation>
          <xs:documentation>Identifies DOT packing group for a hazardous commodity.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="I"/>
          <xs:enumeration value="II"/>
          <xs:enumeration value="III"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="HazardousCommodityQuantityDetail">
        <xs:annotation>
          <xs:documentation>Identifies amount and units for quantity of hazardous commodities.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Amount" minOccurs="0" type="xs:decimal">
            <xs:annotation>
              <xs:documentation>Number of units of the type below.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Units" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Units by which the hazardous commodity is measured.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="HazardousCommodityLabelTextOptionType">
        <xs:annotation>
          <xs:documentation>Specifies how the commodity is to be labeled.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="APPEND"/>
          <xs:enumeration value="OVERRIDE"/>
          <xs:enumeration value="STANDARD"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="HazardousCommodityOptionDetail">
        <xs:annotation>
          <xs:documentation>Customer-provided specifications for handling individual commodities.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="LabelTextOption" minOccurs="0" type="ns:HazardousCommodityLabelTextOptionType">
            <xs:annotation>
              <xs:documentation>Specifies how the customer wishes the label text to be handled for this commodity in this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomerSuppliedLabelText" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Text used in labeling the commodity under control of the labelTextOption field.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="HazardousCommodityPackagingDetail">
        <xs:annotation>
          <xs:documentation>Identifies number and type of packaging units for hazardous commodities.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Count" minOccurs="0" type="xs:nonNegativeInteger">
            <xs:annotation>
              <xs:documentation>Number of units of the type below.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Units" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Units in which the hazardous commodity is packaged.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="HazardousCommodityOptionType">
        <xs:annotation>
          <xs:documentation>Indicates which kind of hazardous content (as defined by DOT) is being reported.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="HAZARDOUS_MATERIALS"/>
          <xs:enumeration value="LITHIUM_BATTERY_EXCEPTION"/>
          <xs:enumeration value="ORM_D"/>
          <xs:enumeration value="REPORTABLE_QUANTITIES"/>
          <xs:enumeration value="SMALL_QUANTITY_EXCEPTION"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="DateRange">
        <xs:annotation>
          <xs:documentation/>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Begins" type="xs:date" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The beginning date in a date range.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Ends" type="xs:date" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The end date in a date range.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="DayOfWeekType">
        <xs:annotation>
          <xs:documentation>Valid values for DayofWeekType</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="FRI"/>
          <xs:enumeration value="MON"/>
          <xs:enumeration value="SAT"/>
          <xs:enumeration value="SUN"/>
          <xs:enumeration value="THU"/>
          <xs:enumeration value="TUE"/>
          <xs:enumeration value="WED"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="DeleteShipmentRequest">
        <xs:annotation>
          <xs:documentation>Descriptive data sent to FedEx by a customer in order to delete a package.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="WebAuthenticationDetail" type="ns:WebAuthenticationDetail">
            <xs:annotation>
              <xs:documentation>The descriptive data to be used in authentication of the sender's identity (and right to use FedEx web services).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ClientDetail" type="ns:ClientDetail">
            <xs:annotation>
              <xs:documentation>Descriptive data identifying the client submitting the transaction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TransactionDetail" type="ns:TransactionDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data for this customer transaction. The TransactionDetail from the request is echoed back to the caller in the corresponding reply.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Version" type="ns:VersionId">
            <xs:annotation>
              <xs:documentation>Identifies the version/level of a service operation expected by a caller (in each request) and performed by the callee (in each reply).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ShipTimestamp" type="xs:dateTime" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The timestamp of the shipment request.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TrackingId" type="ns:TrackingId" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the FedEx tracking number of the package being cancelled.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DeletionControl" type="ns:DeletionControlType">
            <xs:annotation>
              <xs:documentation>Determines the type of deletion to be performed in relation to package level vs shipment level.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="DeleteTagRequest">
        <xs:sequence>
          <xs:element name="WebAuthenticationDetail" type="ns:WebAuthenticationDetail">
            <xs:annotation>
              <xs:documentation>The descriptive data to be used in authentication of the sender's identity (and right to use FedEx web services).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ClientDetail" type="ns:ClientDetail">
            <xs:annotation>
              <xs:documentation>Descriptive data identifying the client submitting the transaction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TransactionDetail" type="ns:TransactionDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data for this customer transaction. The TransactionDetail from the request is echoed back to the caller in the corresponding reply.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Version" type="ns:VersionId">
            <xs:annotation>
              <xs:documentation>Identifies the version/level of a service operation expected by a caller (in each request) and performed by the callee (in each reply).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DispatchLocationId" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Express Location Identifier.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DispatchDate" type="xs:date" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The date FedEx will attempt to pick up the shipment from the Sender.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Payment" type="ns:Payment"/>
          <xs:element name="ConfirmationNumber" type="xs:string">
            <xs:annotation>
              <xs:documentation>Also known as Pickup Confirmation Number or Dispatch Number</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="DeletionControlType">
        <xs:annotation>
          <xs:documentation>Valid values for DeletionControlType</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="DELETE_ALL_PACKAGES"/>
          <xs:enumeration value="DELETE_ONE_PACKAGE"/>
          <xs:enumeration value="LEGACY"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="DestinationControlDetail">
        <xs:annotation>
          <xs:documentation>Department of Commerce/Department of State information about this shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="StatementTypes" type="ns:DestinationControlStatementType" minOccurs="1" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>List of applicable Statment types.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DestinationCountries" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Countries this shipment is destined for.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="EndUser" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Department of State End User.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="DestinationControlStatementType">
        <xs:annotation>
          <xs:documentation>Used to indicate whether the Destination Control Statement is of type Department of Commerce, Department of State or both.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="DEPARTMENT_OF_COMMERCE"/>
          <xs:enumeration value="DEPARTMENT_OF_STATE"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="Dimensions">
        <xs:annotation>
          <xs:documentation>The dimensions of this package and the unit type used for the measurements.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Length">
            <xs:simpleType>
              <xs:restriction base="xs:nonNegativeInteger"/>
            </xs:simpleType>
          </xs:element>
          <xs:element name="Width">
            <xs:simpleType>
              <xs:restriction base="xs:nonNegativeInteger"/>
            </xs:simpleType>
          </xs:element>
          <xs:element name="Height">
            <xs:simpleType>
              <xs:restriction base="xs:nonNegativeInteger"/>
            </xs:simpleType>
          </xs:element>
          <xs:element name="Units" type="ns:LinearUnits"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="DocTabContent">
        <xs:sequence>
          <xs:element name="DocTabContentType" type="ns:DocTabContentType">
            <xs:annotation>
              <xs:documentation>The DocTabContentType options available.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Zone001" type="ns:DocTabContentZone001" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The DocTabContentType should be set to ZONE001 to specify additional Zone details.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Barcoded" type="ns:DocTabContentBarcoded" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The DocTabContentType should be set to BARCODED to specify additional BarCoded details.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="DocTabContentBarcoded">
        <xs:sequence>
          <xs:element name="Symbology" type="ns:BarcodeSymbologyType" minOccurs="0"/>
          <xs:element name="Specification" type="ns:DocTabZoneSpecification"/>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="DocTabContentType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="BARCODED"/>
          <xs:enumeration value="MINIMUM"/>
          <xs:enumeration value="STANDARD"/>
          <xs:enumeration value="ZONE001"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="DocTabContentZone001">
        <xs:sequence>
          <xs:element name="DocTabZoneSpecifications" type="ns:DocTabZoneSpecification" minOccurs="1" maxOccurs="12"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="DocTabZoneSpecification">
        <xs:sequence>
          <xs:element name="ZoneNumber" type="xs:positiveInteger">
            <xs:annotation>
              <xs:documentation>Zone number can be between 1 and 12.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Header" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Header value on this zone.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DataField" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Reference path to the element in the request/reply whose value should be printed on this zone.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="LiteralValue" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Free form-text to be printed in this zone.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Justification" type="ns:DocTabZoneJustificationType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Justification for the text printed on this zone.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="DocTabZoneJustificationType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="LEFT"/>
          <xs:enumeration value="RIGHT"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="DropoffType">
        <xs:annotation>
          <xs:documentation>Identifies the method by which the package is to be tendered to FedEx. This element does not dispatch a courier for package pickup.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="REGULAR_PICKUP"/>
          <xs:enumeration value="REQUEST_COURIER"/>
          <xs:enumeration value="DROP_BOX"/>
          <xs:enumeration value="BUSINESS_SERVICE_CENTER"/>
          <xs:enumeration value="STATION"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="ReturnEMailAllowedSpecialServiceType">
        <xs:annotation>
          <xs:documentation>Describes the special services the merchant will allow on a return shipment.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="SATURDAY_DELIVERY"/>
          <xs:enumeration value="SATURDAY_PICKUP"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="EMailLabelDetail">
        <xs:annotation>
          <xs:documentation>Describes specific information about the email label shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="NotificationEMailAddress" type="xs:string" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Notification email will be sent to this email address</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="NotificationMessage" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Message to be sent in the notification email</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="EMailNotificationDetail">
        <xs:annotation>
          <xs:documentation>The descriptive data required for FedEx to provide email notification to the customer regarding the shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="PersonalMessage" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the message text to be sent in the email notification.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>120</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Recipients" type="ns:EMailNotificationRecipient" minOccurs="1" maxOccurs="6">
            <xs:annotation>
              <xs:documentation>The descriptive data element for the collection of email recipients.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="EMailNotificationFormatType">
        <xs:annotation>
          <xs:documentation>A unique format can be specified for each email address indicated. The format will apply to notification emails sent to a particular email address.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="HTML"/>
          <xs:enumeration value="TEXT"/>
          <xs:enumeration value="WIRELESS"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="EMailNotificationRecipient">
        <xs:annotation>
          <xs:documentation>The descriptive data for a FedEx email notification recipient.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="EMailNotificationRecipientType" type="ns:EMailNotificationRecipientType">
            <xs:annotation>
              <xs:documentation>Identifies the email notification recipient type. See EMailNotificationRecipientType for a list of valid enumerated values.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="EMailAddress" type="xs:string">
            <xs:annotation>
              <xs:documentation>Identifies the email address of the notification recipient.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>120</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="NotifyOnShipment" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies if an email notification should be sent to the recipient when the package is shipped.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="NotifyOnException" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies if an email notification should be sent to the recipient when an exception occurs during package movement from origin to destination.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="NotifyOnDelivery" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies if an email notification should be sent to the recipient when the package is delivered.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Format" type="ns:EMailNotificationFormatType">
            <xs:annotation>
              <xs:documentation>A unique format can be specified for each email address indicated. The format will apply to notification emails sent to a particular email address..</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Localization" type="ns:Localization">
            <xs:annotation>
              <xs:documentation>Indicates the language the notification is expressed in.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="EMailNotificationRecipientType">
        <xs:annotation>
          <xs:documentation>Identifies the set of valid email notification recipient types. For SHIPPER, RECIPIENT and BROKER the email address asssociated with their definitions will be used, any email address sent with the email notification for these three email notification recipient types will be ignored.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="SHIPPER"/>
          <xs:enumeration value="RECIPIENT"/>
          <xs:enumeration value="BROKER"/>
          <xs:enumeration value="OTHER"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="ExportDetail">
        <xs:annotation>
          <xs:documentation>Country specific details of an International shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="B13AFilingOption" type="ns:B13AFilingOptionType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                Specifies which filing option is being exercised by the customer.
                Required for non-document shipments originating in Canada destined for any country other than Canada, the United States, Puerto Rico or the U.S. Virgin Islands.
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ExportComplianceStatement" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                Required only if B13AFilingOption is one of the following:
                FILED_ELECTRONICALLY
                MANUALLY_ATTACHED
                SUMMARY_REPORTING
                If B13AFilingOption = NOT_REQUIRED, this field should contain a valid B13A Exception Number.
              </xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>50</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="PermitNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>This field is applicable only to Canada export non-document shipments of any value to any destination. No special characters allowed. </xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>10</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="DestinationControlDetail" type="ns:DestinationControlDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Department of Commerce/Department of State information about this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ExpressFreightDetail">
        <xs:annotation>
          <xs:documentation>Details specific to an Express freight shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="PackingListEnclosed" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Indicates whether or nor a packing list is enclosed.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ShippersLoadAndCount" type="xs:positiveInteger" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                Total shipment pieces.
                e.g. 3 boxes and 3 pallets of 100 pieces each = Shippers Load and Count of 303.
                Applicable to International Priority Freight and International Economy Freight.
                Values must be in the range of 1 - 99999
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="BookingConfirmationNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Required for International Freight shipping. Values must be 8- 12 characters in length.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>12</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="GeneralAgencyAgreementDetail">
        <xs:annotation>
          <xs:documentation>This element is currently not supported and is for the future use.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Format" type="ns:ShippingDocumentFormat" minOccurs="1">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="HoldAtLocationDetail">
        <xs:annotation>
          <xs:documentation>Descriptive data required for a FedEx shipment that is to be held at the destination FedEx location for pickup by the recipient.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="PhoneNumber" type="xs:string">
            <xs:annotation>
              <xs:documentation>Identifies a telephone number.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>15</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Address" type="ns:Address">
            <xs:annotation>
              <xs:documentation>The descriptive data for a physical location.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="HomeDeliveryPremiumDetail">
        <xs:annotation>
          <xs:documentation>The descriptive data required by FedEx for home delivery services.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="HomeDeliveryPremiumType" type="ns:HomeDeliveryPremiumType">
            <xs:annotation>
              <xs:documentation>The type of Home Delivery Premium service being requested.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Date" type="xs:date" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Required for Date Certain Home Delivery.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PhoneNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Required for Date Certain and Appointment Home Delivery.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>15</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="HomeDeliveryPremiumType">
        <xs:annotation>
          <xs:documentation>The type of Home Delivery Premium service being requested.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="APPOINTMENT"/>
          <xs:enumeration value="DATE_CERTAIN"/>
          <xs:enumeration value="EVENING"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="InternationalDetail">
        <xs:sequence>
          <xs:element name="Broker" type="ns:Party" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                Descriptive data identifying the Broker responsible for the shipment.
                Required if BROKER_SELECT_OPTION is requested in Special Services.
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ImporterOfRecord" type="ns:Party" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                Applicable only for Commercial Invoice. If the consignee and importer are not the same, the Following importer fields are required.
                Importer/Contact/PersonName
                Importer/Contact/CompanyName
                Importer/Contact/PhoneNumber
                Importer/Address/StreetLine[0]
                Importer/Address/City
                Importer/Address/StateOrProvinceCode - if Importer Country Code is US or CA
                Importer/Address/PostalCode - if Importer Country Code is US or CA
                Importer/Address/CountryCode
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RecipientCustomsIdType" type="ns:RecipientCustomsIdType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Type of Brazilian taxpayer identifier provided in Recipient/TaxPayerIdentification/Number. For shipments bound for Brazil this overrides the value in Recipient/TaxPayerIdentification/TinType</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DutiesPayment" type="ns:Payment" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Indicates how payment of duties for the shipment will be made.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DocumentContent" type="ns:InternationalDocumentContentType">
            <xs:annotation>
              <xs:documentation>Indicates whether this shipment contains documents only or non-documents.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomsValue" type="ns:Money" minOccurs="1">
            <xs:annotation>
              <xs:documentation>The total customs value for the shipment. This total will rrepresent th esum of the values of all commodities, and may include freight, miscellaneous, and insurance charges. Must contain 2 explicit decimal positions with a max length of 17 including the decimal. For Express International MPS, the Total Customs Value is in the master transaction and all child transactions</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="InsuranceCharges" minOccurs="0" type="ns:Money">
            <xs:annotation>
              <xs:documentation>Documents amount paid to third party for coverage of shipment content.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PartiesToTransactionAreRelated" type="xs:boolean" minOccurs="0"/>
          <xs:element name="CommercialInvoice" type="ns:CommercialInvoice" minOccurs="0">
            <xs:annotation>
              <xs:documentation>CommercialInvoice element is required for electronic upload of CI data. It will serve to create/transmit an Electronic Commercial Invoice through FedEx System. Customers are responsible for printing their own Commercial Invoice. Commercial Invoice support consists of a maximum of 20 commodity line items.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Commodities" type="ns:Commodity" minOccurs="1" maxOccurs="99">
            <xs:annotation>
              <xs:documentation>
                For international multiple piece shipments, commodity information must be passed in the Master and on each child transaction.
                If this shipment cotains more than four commodities line items, the four highest valued should be included in the first 4 occurances for this request.
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ExportDetail" type="ns:ExportDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Country specific details of an International shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RegulatoryControls" type="ns:RegulatoryControlType" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>FOOD_OR_PERISHABLE is required by FDA/BTA; must be true for food/perishable items coming to US or PR from non-US/non-PR origin.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="InternationalDocumentContentType">
        <xs:annotation>
          <xs:documentation>The type of International shipment.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="DERIVED"/>
          <xs:enumeration value="DOCUMENTS_ONLY"/>
          <xs:enumeration value="NON_DOCUMENTS"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="LabelFormatType">
        <xs:annotation>
          <xs:documentation>Specifies the type of label to be returned.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="COMMON2D"/>
          <xs:enumeration value="LABEL_DATA_ONLY"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="LabelMaskableDataType">
        <xs:annotation>
          <xs:documentation>Names for data elements / areas which may be suppressed from printing on labels.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="CUSTOMS_VALUE"/>
          <xs:enumeration value="DUTIES_AND_TAXES_PAYOR_ACCOUNT_NUMBER"/>
          <xs:enumeration value="SHIPPER_ACCOUNT_NUMBER"/>
          <xs:enumeration value="TERMS_AND_CONDITIONS"/>
          <xs:enumeration value="TRANSPORTATION_CHARGES_PAYOR_ACCOUNT_NUMBER"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="LabelPrintingOrientationType">
        <xs:annotation>
          <xs:documentation>This indicates if the top or bottom of the label comes out of the printer first.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="BOTTOM_EDGE_OF_TEXT_FIRST"/>
          <xs:enumeration value="TOP_EDGE_OF_TEXT_FIRST"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="LabelSpecification">
        <xs:annotation>
          <xs:documentation>Description of shipping label to be returned in the reply</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Dispositions" minOccurs="0" maxOccurs="unbounded" type="ns:ShippingDocumentDispositionDetail">
            <xs:annotation>
              <xs:documentation>Specifies how to create, organize, and return the document.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="LabelFormatType" type="ns:LabelFormatType" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Specify type of label to be returned</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ImageType" type="ns:ShippingDocumentImageType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Specifies the image format used for a shipping document.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="LabelStockType" type="ns:LabelStockType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>For thermal printer lables this indicates the size of the label and the location of the doc tab if present.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="LabelPrintingOrientation" type="ns:LabelPrintingOrientationType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>This indicates if the top or bottom of the label comes out of the printer first.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PrintedLabelOrigin" type="ns:ContactAndAddress" minOccurs="0">
            <xs:annotation>
              <xs:documentation>If present, this contact and address information will replace the return address information on the label.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomerSpecifiedDetail" type="ns:CustomerSpecifiedLabelDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Allows customer-specified control of label content.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="ShippingDocumentImageType">
        <xs:annotation>
          <xs:documentation>Specifies the image format used for a shipping document.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="DOC"/>
          <xs:enumeration value="DPL"/>
          <xs:enumeration value="EPL2"/>
          <xs:enumeration value="PDF"/>
          <xs:enumeration value="PNG"/>
          <xs:enumeration value="RTF"/>
          <xs:enumeration value="TEXT"/>
          <xs:enumeration value="ZPLII"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="LabelStockType">
        <xs:annotation>
          <xs:documentation>For thermal printer labels this indicates the size of the label and the location of the doc tab if present.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="PAPER_4X6"/>
          <xs:enumeration value="PAPER_4X8"/>
          <xs:enumeration value="PAPER_4X9"/>
          <xs:enumeration value="PAPER_7X4.75"/>
          <xs:enumeration value="PAPER_8.5X11_BOTTOM_HALF_LABEL"/>
          <xs:enumeration value="PAPER_8.5X11_TOP_HALF_LABEL"/>
          <xs:enumeration value="STOCK_4X6"/>
          <xs:enumeration value="STOCK_4X6.75_LEADING_DOC_TAB"/>
          <xs:enumeration value="STOCK_4X6.75_TRAILING_DOC_TAB"/>
          <xs:enumeration value="STOCK_4X8"/>
          <xs:enumeration value="STOCK_4X9_LEADING_DOC_TAB"/>
          <xs:enumeration value="STOCK_4X9_TRAILING_DOC_TAB"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="LinearUnits">
        <xs:annotation>
          <xs:documentation>CM = centimeters, IN = inches</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="CM"/>
          <xs:enumeration value="IN"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="Localization">
        <xs:annotation>
          <xs:documentation>Governs any future language/translations used for human-readable text.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="LanguageCode" type="xs:string">
            <xs:annotation>
              <xs:documentation>Identifies the language to use for human-readable messages.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>2</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="LocaleCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the locale (i.e. country code) associated with the language.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>2</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="MinimumChargeType">
        <xs:annotation>
          <xs:documentation>Identifies which type minimum charge was applied.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="CUSTOMER"/>
          <xs:enumeration value="CUSTOMER_FREIGHT_WEIGHT"/>
          <xs:enumeration value="EARNED_DISCOUNT"/>
          <xs:enumeration value="MIXED"/>
          <xs:enumeration value="RATE_SCALE"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="Money">
        <xs:annotation>
          <xs:documentation>The descriptive data for the medium of exchange for FedEx services.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Currency" type="xs:string">
            <xs:annotation>
              <xs:documentation>Identifies the currency of the monetary amount.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>3</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Amount">
            <xs:annotation>
              <xs:documentation>Identifies the monetary amount.</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="xs:decimal"/>
            </xs:simpleType>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="NaftaCertificateOfOriginDetail">
        <xs:annotation>
          <xs:documentation>This element is currently not supported and is for the future use. (The descriptive data regarding NAFTA COO.)</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Format" type="ns:ShippingDocumentFormat" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="BlanketPeriod" type="ns:DateRange" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="ImporterSpecification" minOccurs="0" type="ns:NaftaImporterSpecificationType">
            <xs:annotation>
              <xs:documentation>Indicates which Party (if any) from the shipment is to be used as the source of importer data on the NAFTA COO form.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SignatureContact" type="ns:Contact" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="ProducerSpecification" type="ns:NaftaProducerSpecificationType" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="Producers" type="ns:NaftaProducer" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomerImageUsages" minOccurs="0" maxOccurs="unbounded" type="ns:CustomerImageUsage">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="NaftaCommodityDetail">
        <xs:annotation>
          <xs:documentation>This element is currently not supported and is for the future use.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="PreferenceCriterion" type="ns:NaftaPreferenceCriterionCode" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Defined by NAFTA regulations.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ProducerDetermination" type="ns:NaftaProducerDeterminationCode" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Defined by NAFTA regulations.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ProducerId" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identification of which producer is associated with this commodity (if multiple producers are used in a single shipment).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="NetCostMethod" type="ns:NaftaNetCostMethodCode" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="NetCostDateRange" type="ns:DateRange" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Date range over which RVC net cost was calculated.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="NaftaNetCostMethodCode">
        <xs:annotation>
          <xs:documentation>Net cost method used.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="NC"/>
          <xs:enumeration value="NO"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="NaftaPreferenceCriterionCode">
        <xs:annotation>
          <xs:documentation>See instructions for NAFTA Certificate of Origin for code definitions.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="A"/>
          <xs:enumeration value="B"/>
          <xs:enumeration value="C"/>
          <xs:enumeration value="D"/>
          <xs:enumeration value="E"/>
          <xs:enumeration value="F"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="NaftaProducer">
        <xs:annotation>
          <xs:documentation>This element is currently not supported and is for the future use.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Id" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="Producer" type="ns:Party" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="NaftaProducerDeterminationCode">
        <xs:annotation>
          <xs:documentation>See instructions for NAFTA Certificate of Origin for code definitions.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="NO_1"/>
          <xs:enumeration value="NO_2"/>
          <xs:enumeration value="NO_3"/>
          <xs:enumeration value="YES"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="NaftaProducerSpecificationType">
        <xs:annotation>
          <xs:documentation>This element is currently not supported and is for the future use.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="AVAILABLE_UPON_REQUEST"/>
          <xs:enumeration value="MULTIPLE_SPECIFIED"/>
          <xs:enumeration value="SAME"/>
          <xs:enumeration value="SINGLE_SPECIFIED"/>
          <xs:enumeration value="UNKNOWN"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="Notification">
        <xs:annotation>
          <xs:documentation>The descriptive data regarding the results of the submitted transaction.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Severity" type="ns:NotificationSeverityType">
            <xs:annotation>
              <xs:documentation>The severity of this notification. this can indicate success or failure or some other information about the request such as errors or notes.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Source" type="xs:string">
            <xs:annotation>
              <xs:documentation>Indicates the source of the notification. Combined with Code, it uniqely identifies this message.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Code" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>A code that represents this notification. Combined with Source, it uniqely identifies this message.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>8</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Message" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Text that explains this notification.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>255</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="LocalizedMessage" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>A translated message. The translation is based on the Localization element of the ClientDetail element of the request. Not currently supported</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="MessageParameters" type="ns:NotificationParameter" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>If the message used parameter replacement to be specific as to the meaning of the message, this is the list of parameters that were used.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="NotificationParameter">
        <xs:sequence>
          <xs:element name="Id" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Name identifiying the type of the data in the element 'Value'</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Value" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The value that was used as the replacement parameter.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="NotificationSeverityType">
        <xs:annotation>
          <xs:documentation>Identifies the set of severity values for a Notification.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ERROR"/>
          <xs:enumeration value="FAILURE"/>
          <xs:enumeration value="NOTE"/>
          <xs:enumeration value="SUCCESS"/>
          <xs:enumeration value="WARNING"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="OversizeClassType">
        <xs:annotation>
          <xs:documentation>The oversize class types.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="OVERSIZE_1"/>
          <xs:enumeration value="OVERSIZE_2"/>
          <xs:enumeration value="OVERSIZE_3"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="BinaryBarcode">
        <xs:annotation>
          <xs:documentation>Each instance of this data type represents a barcode whose content must be represented as binary data (i.e. not ASCII text).</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Type" type="ns:BinaryBarcodeType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The kind of barcode data in this instance.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Value" type="xs:base64Binary" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The data content of this instance.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="BinaryBarcodeType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="COMMON_2D"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="StringBarcode">
        <xs:annotation>
          <xs:documentation>Each instance of this data type represents a barcode whose content must be represented as ASCII text (i.e. not binary data).</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Type" type="ns:StringBarcodeType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The kind of barcode data in this instance.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Value" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The data content of this instance.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="StringBarcodeType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="ASTRA"/>
          <xs:enumeration value="GROUND"/>
          <xs:enumeration value="USPS"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="PackageBarcodes">
        <xs:annotation>
          <xs:documentation>Each instance of this data type represents the set of barcodes (of all types) which are associated with a specific package.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="BinaryBarcodes" type="ns:BinaryBarcode" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Binary-style barcodes for this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="StringBarcodes" type="ns:StringBarcode" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>String-style barcodes for this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="PackageRateDetail">
        <xs:sequence>
          <xs:element name="RateType" type="ns:ReturnedRateType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The type of rates this information contains either account based or list rates.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RatedWeightMethod" type="ns:RatedWeightMethod" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The method used to calculate the weight to be used in rating the package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="MinimumChargeType" type="ns:MinimumChargeType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The method used to calculate the weight to be used in rating the package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="BillingWeight" type="ns:Weight" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The weight that was used to calculate the rate.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DimWeight" type="ns:Weight" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The dimensional weight that was calculated for this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="OversizeWeight" type="ns:Weight" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The oversize weight that was used in the rate calculation.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="BaseCharge" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The freight charge that was calculated for this package before surcharges, discounts and taxes..</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalFreightDiscounts" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The total discounts used in the rate calculation.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="NetFreight" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The base charge minus discounts. </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalSurcharges" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The total amount of all surcharges applied to this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="NetFedExCharge" type="ns:Money" minOccurs="0"/>
          <xs:element name="TotalTaxes" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The total sum of all taxes applied to this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="NetCharge" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The the charge for this package including surcharges, discounts and taxes.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalRebates" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The total sum of all rebates applied to this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="FreightDiscounts" type="ns:RateDiscount" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>A list of discounts that were applied to this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Rebates" type="ns:Rebate" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="Surcharges" type="ns:Surcharge" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>A list of the surcharges applied to this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Taxes" type="ns:Tax" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>A list of the taxes applied to this package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="VariableHandlingCharges" type="ns:VariableHandlingCharges" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The variable handling charges calculated based on the type variable handling charges requested.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="PackageRating">
        <xs:annotation>
          <xs:documentation>Package level rate information.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="ActualRateType" type="ns:ReturnedRateType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies which entry in the PackageRateDetails array is considered as presenting the actual rates for the package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="EffectiveNetDiscount" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The difference between account based rates and list rates. Only returned when list rates are requested.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PackageRateDetails" type="ns:PackageRateDetail" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Each element of this field provides package-level rate data for a specific rate type.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="PackageSpecialServicesRequested">
        <xs:annotation>
          <xs:documentation>Descriptive data regarding special services requested by the shipper for a shipment. If the shipper is requesting a special service which requires additional data (e.g. COD), the special service type must be present in the specialServiceTypes collection, and the supporting detail must be provided in the appropriate sub-object. For example, to request COD, "COD" must be included in the SpecialServiceTypes collection and the CodDetail object must contain the required data.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="SpecialServiceTypes" type="ns:PackageSpecialServiceType" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Identifies the collection of special service types requested by the shipper. See SpecialServiceTypes for the list of valid enumerated types.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CodCollectionAmount" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The COD amount that must be collected upon delivery of a package shipped using the COD special service.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DangerousGoodsDetail" type="ns:DangerousGoodsDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data required for a FedEx shipment containing dangerous materials. This element is required when SpecialServiceType.DANGEROUS_GOODS or HAZARDOUS_MATERIAL is present in the SpecialServiceTypes collection.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DryIceWeight" type="ns:Weight" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data required for a FedEx shipment containing dry ice. This element is required when SpecialServiceType.DRY_ICE is present in the SpecialServiceTypes collection.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SignatureOptionDetail" type="ns:SignatureOptionDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The descriptive data required for FedEx signature services. This element is required when SpecialServiceType.SIGNATURE_OPTION is present in the SpecialServiceTypes collection.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PriorityAlertDetail" type="ns:PriorityAlertDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The descriptive data required for FedEx Priority Alert service. This element is required when SpecialServiceType.PRIORITY_ALERT is present in the SpecialServiceTypes collection.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="PackageSpecialServiceType">
        <xs:annotation>
          <xs:documentation>Identifies the collection of special service offered by FedEx. BROKER_SELECT_OPTION should be used for Ground shipments only.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="APPOINTMENT_DELIVERY"/>
          <xs:enumeration value="DANGEROUS_GOODS"/>
          <xs:enumeration value="DRY_ICE"/>
          <xs:enumeration value="NON_STANDARD_CONTAINER"/>
          <xs:enumeration value="PRIORITY_ALERT"/>
          <xs:enumeration value="SIGNATURE_OPTION"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="PackagingType">
        <xs:annotation>
          <xs:documentation>Identifies the collection of available FedEx or customer packaging options.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="FEDEX_10KG_BOX"/>
          <xs:enumeration value="FEDEX_25KG_BOX"/>
          <xs:enumeration value="FEDEX_BOX"/>
          <xs:enumeration value="FEDEX_ENVELOPE"/>
          <xs:enumeration value="FEDEX_PAK"/>
          <xs:enumeration value="FEDEX_TUBE"/>
          <xs:enumeration value="YOUR_PACKAGING"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="Party">
        <xs:annotation>
          <xs:documentation>The descriptive data for a person or company entitiy doing business with FedEx.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="AccountNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the FedEx account number assigned to the customer.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>12</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Tin" type="ns:TaxpayerIdentification" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data for taxpayer identification information.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Contact" type="ns:Contact">
            <xs:annotation>
              <xs:documentation>Descriptive data identifying the point-of-contact person.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Address" type="ns:Address" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The descriptive data for a physical location.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="Payment">
        <xs:annotation>
          <xs:documentation>The descriptive data for the monetary compensation given to FedEx for services rendered to the customer.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="PaymentType" type="ns:PaymentType">
            <xs:annotation>
              <xs:documentation>Identifies the method of payment for a service. See PaymentType for list of valid enumerated values.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Payor" type="ns:Payor" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data identifying the party responsible for payment for a service.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="PaymentType">
        <xs:annotation>
          <xs:documentation>Identifies the method of payment for a service.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="COLLECT"/>
          <xs:enumeration value="RECIPIENT"/>
          <xs:enumeration value="SENDER"/>
          <xs:enumeration value="THIRD_PARTY"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="Payor">
        <xs:annotation>
          <xs:documentation>The descriptive data identifying the party responsible for payment for a service.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="AccountNumber" type="xs:string">
            <xs:annotation>
              <xs:documentation>Identifies the FedEx account number assigned to the payor.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>12</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="CountryCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the country of the payor.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>2</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="PendingShipmentAccessDetail">
        <xs:annotation>
          <xs:documentation>Descriptive data for FedEx pending shipment</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="EmailLabelUrl" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Provides the url for accessing email label.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="UserId" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>User id.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Password" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Password.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ExpirationTimestamp" type="xs:dateTime" minOccurs="0">
            <xs:annotation>
              <xs:documentation>This element is currently not supported and is for the future use.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="PendingShipmentDetail">
        <xs:annotation>
          <xs:documentation>The descriptive data for FedEx pending shipment</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Type" type="ns:PendingShipmentType" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Identifies the type of FedEx pending shipment</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ExpirationDate" type="xs:date" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Date when the pending shipment expires.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="EmailLabelDetail" type="ns:EMailLabelDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data about notification email</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="PendingShipmentType">
        <xs:annotation>
          <xs:documentation>Identifies the type of service for a pending shipment.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="EMAIL"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="PickupDetail">
        <xs:sequence>
          <xs:element name="ReadyDateTime" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="LatestPickupDateTime" type="xs:dateTime" minOccurs="0"/>
          <xs:element name="CourierInstructions" type="xs:string" minOccurs="0"/>
          <xs:element name="RequestType" type="ns:PickupRequestType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the type of Pickup request</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RequestSource" type="ns:PickupRequestSourceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the type of source for Pickup request</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="PickupRequestSourceType">
        <xs:annotation>
          <xs:documentation>Identifies the type of source for pickup request service.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="AUTOMATION"/>
          <xs:enumeration value="CUSTOMER_SERVICE"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="PickupRequestType">
        <xs:annotation>
          <xs:documentation>Identifies the type of pickup request service.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="FUTURE_DAY"/>
          <xs:enumeration value="SAME_DAY"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="PricingCodeType">
        <xs:annotation>
          <xs:documentation>Identifies the type of pricing used for this shipment.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ACTUAL"/>
          <xs:enumeration value="ALTERNATE"/>
          <xs:enumeration value="BASE"/>
          <xs:enumeration value="HUNDREDWEIGHT"/>
          <xs:enumeration value="HUNDREDWEIGHT_ALTERNATE"/>
          <xs:enumeration value="INTERNATIONAL_DISTRIBUTION"/>
          <xs:enumeration value="INTERNATIONAL_ECONOMY_SERVICE"/>
          <xs:enumeration value="LTL_FREIGHT"/>
          <xs:enumeration value="PACKAGE"/>
          <xs:enumeration value="SHIPMENT"/>
          <xs:enumeration value="SHIPMENT_FIVE_POUND_OPTIONAL"/>
          <xs:enumeration value="SHIPMENT_OPTIONAL"/>
          <xs:enumeration value="SPECIAL"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="PriorityAlertDetail">
        <xs:sequence>
          <xs:element name="Content" type="xs:string" minOccurs="1" maxOccurs="unbounded">
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ProcessShipmentReply">
        <xs:sequence>
          <xs:element name="HighestSeverity" type="ns:NotificationSeverityType">
            <xs:annotation>
              <xs:documentation>This indicates the highest level of severity of all the notifications returned in this reply</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Notifications" type="ns:Notification" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>The descriptive data regarding the results of the submitted transaction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TransactionDetail" type="ns:TransactionDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data for this customer transaction. The TransactionDetail from the request is echoed back to the caller in the corresponding reply.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Version" type="ns:VersionId">
            <xs:annotation>
              <xs:documentation>Identifies the version/level of a service operation expected by a caller (in each request) and performed by the callee (in each reply).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CompletedShipmentDetail" type="ns:CompletedShipmentDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The reply payload. All of the returned information about this shipment/package.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ProcessShipmentRequest">
        <xs:annotation>
          <xs:documentation>Descriptive data sent to FedEx by a customer in order to ship a package.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="WebAuthenticationDetail" type="ns:WebAuthenticationDetail">
            <xs:annotation>
              <xs:documentation>The descriptive data to be used in authentication of the sender's identity (and right to use FedEx web services).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ClientDetail" type="ns:ClientDetail">
            <xs:annotation>
              <xs:documentation>Descriptive data identifying the client submitting the transaction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TransactionDetail" type="ns:TransactionDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data for this customer transaction. The TransactionDetail from the request is echoed back to the caller in the corresponding reply.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Version" type="ns:VersionId">
            <xs:annotation>
              <xs:documentation>Identifies the version/level of a service operation expected by a caller (in each request) and performed by the callee (in each reply).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RequestedShipment" type="ns:RequestedShipment">
            <xs:annotation>
              <xs:documentation>Descriptive data about the shipment being sent by the requestor.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ProcessTagReply">
        <xs:sequence>
          <xs:element name="HighestSeverity" type="ns:NotificationSeverityType"/>
          <xs:element name="Notifications" type="ns:Notification" maxOccurs="unbounded"/>
          <xs:element name="TransactionDetail" type="ns:TransactionDetail" minOccurs="0"/>
          <xs:element name="Version" type="ns:VersionId"/>
          <xs:element name="CompletedShipmentDetail" type="ns:CompletedShipmentDetail" minOccurs="0"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ProcessTagRequest">
        <xs:annotation>
          <xs:documentation>Descriptive data sent to FedEx by a customer in order to ship a package.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="WebAuthenticationDetail" type="ns:WebAuthenticationDetail">
            <xs:annotation>
              <xs:documentation>The descriptive data to be used in authentication of the sender's identity (and right to use FedEx web services).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ClientDetail" type="ns:ClientDetail">
            <xs:annotation>
              <xs:documentation>Descriptive data identifying the client submitting the transaction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TransactionDetail" type="ns:TransactionDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data for this customer transaction. The TransactionDetail from the request is echoed back to the caller in the corresponding reply.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Version" type="ns:VersionId">
            <xs:annotation>
              <xs:documentation>Identifies the version/level of a service operation expected by a caller (in each request) and performed by the callee (in each reply).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RequestedShipment" type="ns:RequestedShipment">
            <xs:annotation>
              <xs:documentation>Descriptive data about the shipment being sent by the requestor.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="PurposeOfShipmentType">
        <xs:annotation>
          <xs:documentation>Test for the Commercial Invoice. Note that Sold is not a valid Purpose for a Proforma Invoice.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="GIFT"/>
          <xs:enumeration value="NOT_SOLD"/>
          <xs:enumeration value="PERSONAL_EFFECTS"/>
          <xs:enumeration value="REPAIR_AND_RETURN"/>
          <xs:enumeration value="SAMPLE"/>
          <xs:enumeration value="SOLD"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="RateDiscount">
        <xs:annotation>
          <xs:documentation>Identifies a discount applied to the shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="RateDiscountType" type="ns:RateDiscountType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the type of discount applied to the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Description" type="xs:string" minOccurs="0"/>
          <xs:element name="Amount" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The amount of the discount applied to the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Percent" type="xs:decimal" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The percentage of the discount applied to the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="RateDiscountType">
        <xs:annotation>
          <xs:documentation>The type of the discount.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="BONUS"/>
          <xs:enumeration value="EARNED"/>
          <xs:enumeration value="OTHER"/>
          <xs:enumeration value="VOLUME"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="RatedWeightMethod">
        <xs:annotation>
          <xs:documentation>The weight method used to calculate the rate.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ACTUAL"/>
          <xs:enumeration value="AVERAGE_PACKAGE_WEIGHT_MINIMUM"/>
          <xs:enumeration value="BALLOON"/>
          <xs:enumeration value="DIM"/>
          <xs:enumeration value="FREIGHT_MINIMUM"/>
          <xs:enumeration value="MIXED"/>
          <xs:enumeration value="OVERSIZE"/>
          <xs:enumeration value="OVERSIZE_1"/>
          <xs:enumeration value="OVERSIZE_2"/>
          <xs:enumeration value="OVERSIZE_3"/>
          <xs:enumeration value="PACKAGING_MINIMUM"/>
          <xs:enumeration value="WEIGHT_BREAK"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="RateRequestType">
        <xs:annotation>
          <xs:documentation>Identifies the type(s) of rates to be returned in the reply.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ACCOUNT"/>
          <xs:enumeration value="LIST"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="RecipientCustomsIdType">
        <xs:annotation>
          <xs:documentation>Type of Brazilian taxpayer identifier provided in Recipient/TaxPayerIdentification/Number. For shipments bound for Brazil this overrides the value in Recipient/TaxPayerIdentification/TinType</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="COMPANY"/>
          <xs:enumeration value="INDIVIDUAL"/>
          <xs:enumeration value="PASSPORT"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="RegulatoryControlType">
        <xs:annotation>
          <xs:documentation>FOOD_OR_PERISHABLE is required by FDA/BTA; must be true for food/perishable items coming to US or PR from non-US/non-PR origin</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="EU_CIRCULATION"/>
          <xs:enumeration value="FOOD_OR_PERISHABLE"/>
          <xs:enumeration value="NAFTA"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="RequestedShipment">
        <xs:annotation>
          <xs:documentation>The descriptive data for the shipment being tendered to FedEx.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="ShipTimestamp" type="xs:dateTime">
            <xs:annotation>
              <xs:documentation>Identifies the date and time the package is tendered to FedEx. Both the date and time portions of the string are expected to be used. The date should not be a past date or a date more than 10 days in the future. The time is the local time of the shipment based on the shipper's time zone. The date component must be in the format: YYYY-MM-DD (e.g. 2006-06-26). The time component must be in the format: HH:MM:SS using a 24 hour clock (e.g. 11:00 a.m. is 11:00:00, whereas 5:00 p.m. is 17:00:00). The date and time parts are separated by the letter T (e.g. 2006-06-26T17:00:00). There is also a UTC offset component indicating the number of hours/mainutes from UTC (e.g 2006-06-26T17:00:00-0400 is defined form June 26, 2006 5:00 pm Eastern Time).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DropoffType" type="ns:DropoffType">
            <xs:annotation>
              <xs:documentation>Identifies the method by which the package is to be tendered to FedEx. This element does not dispatch a courier for package pickup. See DropoffType for list of valid enumerated values.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ServiceType" type="ns:ServiceType">
            <xs:annotation>
              <xs:documentation>Identifies the FedEx service to use in shipping the package. See ServiceType for list of valid enumerated values.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PackagingType" type="ns:PackagingType">
            <xs:annotation>
              <xs:documentation>Identifies the packaging used by the requestor for the package. See PackagingType for list of valid enumerated values.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalWeight" type="ns:Weight" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the total weight of the shipment being conveyed to FedEx.This is only applicable to International shipments and should only be used on the first package of a mutiple piece shipment.This value contains 1 explicit decimal position</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalInsuredValue" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Total insured amount.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PreferredCurrency" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the preferred currency of the requestor.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>3</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>          
          <xs:element name="Shipper" type="ns:Party">
            <xs:annotation>
              <xs:documentation>Descriptive data identifying the party responsible for shipping the package. Shipper and Origin should have the same address.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Recipient" type="ns:Party">
            <xs:annotation>
              <xs:documentation>Descriptive data identifying the party receiving the package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RecipientLocationNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>A unique identifier for a recipient location</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>10</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Origin" type="ns:ContactAndAddress" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Physical starting address for the shipment, if different from Shipper Address.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ShippingChargesPayment" type="ns:Payment" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data indicating the method and means of payment to FedEx for providing shipping services.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SpecialServicesRequested" type="ns:ShipmentSpecialServicesRequested" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data regarding special services requested by the shipper for this shipment. If the shipper is requesting a special service which requires additional data (e.g. COD), the special service type must be present in the specialServiceTypes collection, and the supporting detail must be provided in the appropriate sub-object. For example, to request COD, "COD" must be included in the SpecialServiceTypes collection and the CodDetail object must contain the required data.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ExpressFreightDetail" type="ns:ExpressFreightDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Details specific to an Express freight shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DeliveryInstructions" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Used with Ground Home Delivery and Freight.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="VariableHandlingChargeDetail" type="ns:VariableHandlingChargeDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Details about how to calculate variable handling charges at the shipment level.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="InternationalDetail" type="ns:InternationalDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Information about this package that only applies to an international (export) shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PickupDetail" type="ns:PickupDetail" minOccurs="0"/>
          <xs:element name="SmartPostDetail" type="ns:SmartPostShipmentDetail" minOccurs="0"/>
          <xs:element name="BlockInsightVisibility" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>If true, only the shipper/payor will have visibility of this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ErrorLabelBehavior" type="ns:ErrorLabelBehaviorType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Specifies the client-requested response in the event of errors within shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="LabelSpecification" type="ns:LabelSpecification">
            <xs:annotation>
              <xs:documentation>Details about the image format and printer type the label is to returned in.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ShippingDocumentSpecification" type="ns:ShippingDocumentSpecification" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Details such as shipping document types, NAFTA information, CI information, and GAA information.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RateRequestTypes" type="ns:RateRequestType" minOccurs="1" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Indicates the type of rates to be returned.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="EdtRequestType" minOccurs="0" type="ns:EdtRequestType">
            <xs:annotation>
              <xs:documentation>Specifies whether the customer wishes to have Estimated Duties and Taxes provided with the rate quotation on this shipment. Only applies with shipments moving under international services.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="MasterTrackingId" type="ns:TrackingId" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Used when requesting child pieces in a multiple piece shipment. The master tracking information will be returned in reply from the first package requested for a multiple piece shipment. That master tracking information is then inserted into the requests for each additional package requested for that multiple pice shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CodReturnTrackingId" type="ns:TrackingId" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Only used with multi-piece COD shipments sent in multiple transactions. Required on last transaction only.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PackageCount" type="xs:nonNegativeInteger" minOccurs="1">
            <xs:annotation>
              <xs:documentation>For a multiple piece shipment this is the total number of packages in the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PackageDetail" type="ns:RequestedPackageDetailType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Specifies whether packages are described individually,in groups, or summarized in a single description for total-piece-total-weight. This field controls which fields of the RequestedPackageLineItem will be used, and how many occurrences are expected.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RequestedPackageLineItems" minOccurs="0" maxOccurs="999" type="ns:RequestedPackageLineItem">
            <xs:annotation>
              <xs:documentation>One or more package-attribute descriptions, each of which describes an individual package, a group of identical packages, or (for the total-piece-total-weight case) common characteristics all packages in the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="ErrorLabelBehaviorType">
        <xs:annotation>
          <xs:documentation>
            Specifies the client-requested response in the event of errors within shipment.
            PACKAGE_ERROR_LABELS : Return per-package error label in addition to error Notifications.
            STANDARD             : Return error Notifications only.
          </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="PACKAGE_ERROR_LABELS"/>
          <xs:enumeration value="STANDARD"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="RequestedPackageDetailType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="INDIVIDUAL_PACKAGES"/>
          <xs:enumeration value="PACKAGE_GROUPS"/>
          <xs:enumeration value="PACKAGE_SUMMARY"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="RequestedShippingDocumentType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="GENERAL_AGENCY_AGREEMENT"/>
          <xs:enumeration value="LABEL"/>
          <xs:enumeration value="CERTIFICATE_OF_ORIGIN"/>
          <xs:enumeration value="COMMERCIAL_INVOICE"/>
          <xs:enumeration value="CUSTOMER_SPECIFIED_LABELS"/>
          <xs:enumeration value="CUSTOM_PACKAGE_DOCUMENT"/>
          <xs:enumeration value="CUSTOM_SHIPMENT_DOCUMENT"/>
          <xs:enumeration value="NAFTA_CERTIFICATE_OF_ORIGIN"/>
          <xs:enumeration value="OP_900"/>
          <xs:enumeration value="PRO_FORMA_INVOICE"/>
          <xs:enumeration value="RETURN_INSTRUCTIONS"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="ReturnEMailDetail">
        <xs:annotation>
          <xs:documentation>Return Email Details</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="MerchantPhoneNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Phone number of the merchant</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="AllowedSpecialServices" type="ns:ReturnEMailAllowedSpecialServiceType" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Allowed Special service type</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="ReturnedRateType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="PAYOR_ACCOUNT_PACKAGE"/>
          <xs:enumeration value="PAYOR_ACCOUNT_SHIPMENT"/>
          <xs:enumeration value="PAYOR_LIST_PACKAGE"/>
          <xs:enumeration value="PAYOR_LIST_SHIPMENT"/>
          <xs:enumeration value="RATED_ACCOUNT_PACKAGE"/>
          <xs:enumeration value="RATED_ACCOUNT_SHIPMENT"/>
          <xs:enumeration value="RATED_LIST_PACKAGE"/>
          <xs:enumeration value="RATED_LIST_SHIPMENT"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="ReturnShipmentDetail">
        <xs:annotation>
          <xs:documentation>Information relating to a return shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="ReturnType" type="ns:ReturnType">
            <xs:annotation>
              <xs:documentation>The type of return shipment that is being requested.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Rma" type="ns:Rma" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Return Merchant Authorization</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ReturnEMailDetail" type="ns:ReturnEMailDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Describes specific information about the email label for return shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="ReturnType">
        <xs:annotation>
          <xs:documentation>The type of return shipment that is being requested.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="FEDEX_TAG"/>
          <xs:enumeration value="PENDING"/>
          <xs:enumeration value="PRINT_RETURN_LABEL"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="ReturnedShippingDocumentType">
        <xs:annotation>
          <xs:documentation>Shipping document type.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="AUXILIARY_LABEL"/>
          <xs:enumeration value="CERTIFICATE_OF_ORIGIN"/>
          <xs:enumeration value="COD_RETURN_2_D_BARCODE"/>
          <xs:enumeration value="COD_RETURN_LABEL"/>
          <xs:enumeration value="COMMERCIAL_INVOICE"/>
          <xs:enumeration value="CUSTOM_PACKAGE_DOCUMENT"/>
          <xs:enumeration value="CUSTOM_SHIPMENT_DOCUMENT"/>
          <xs:enumeration value="ETD_LABEL"/>
          <xs:enumeration value="GENERAL_AGENCY_AGREEMENT"/>
          <xs:enumeration value="GROUND_BARCODE"/>
          <xs:enumeration value="NAFTA_CERTIFICATE_OF_ORIGIN"/>
          <xs:enumeration value="OP_900"/>
          <xs:enumeration value="OUTBOUND_2_D_BARCODE"/>
          <xs:enumeration value="OUTBOUND_LABEL"/>
          <xs:enumeration value="PRO_FORMA_INVOICE"/>
          <xs:enumeration value="RETURN_INSTRUCTIONS"/>
          <xs:enumeration value="TERMS_AND_CONDITIONS"/>
          <xs:enumeration value="USPS_BARCODE"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="Rma">
        <xs:annotation>
          <xs:documentation>Return Merchant Authorization</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Number" type="xs:string">
            <xs:annotation>
              <xs:documentation>The RMA number.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>20</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Reason" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The reason for the return.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>60</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="RoutingAstraDetail">
        <xs:annotation>
          <xs:documentation>The tracking number information and the data to form the Astra barcode for the label.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="TrackingId" type="ns:TrackingId" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The tracking number information for the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Barcode" minOccurs="0" type="ns:StringBarcode">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="AstraHandlingText" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The textual description of the special service applied to the package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="AstraLabelElements" minOccurs="0" maxOccurs="unbounded" type="ns:AstraLabelElement">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="AstraLabelElement">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Number" minOccurs="0" type="xs:int">
            <xs:annotation>
              <xs:documentation>Position of Astra element</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Content" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Content corresponding to the Astra Element</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="RoutingDetail">
        <xs:annotation>
          <xs:documentation>Information about the routing, origin, destination and delivery of a shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="ShipmentRoutingDetail" type="ns:ShipmentRoutingDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The routing information detail for this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="AstraDetails" type="ns:RoutingAstraDetail" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>The tracking number information and the data to form the Astra barcode for the label.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="ServiceType">
        <xs:annotation>
          <xs:documentation>Identifies the collection of available FedEx service options.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="EUROPE_FIRST_INTERNATIONAL_PRIORITY"/>
          <xs:enumeration value="FEDEX_1_DAY_FREIGHT"/>
          <xs:enumeration value="FEDEX_2_DAY"/>
          <xs:enumeration value="FEDEX_2_DAY_FREIGHT"/>
          <xs:enumeration value="FEDEX_3_DAY_FREIGHT"/>
          <xs:enumeration value="FEDEX_EXPRESS_SAVER"/>
          <xs:enumeration value="FEDEX_GROUND"/>
          <xs:enumeration value="FIRST_OVERNIGHT"/>
          <xs:enumeration value="GROUND_HOME_DELIVERY"/>
          <xs:enumeration value="INTERNATIONAL_ECONOMY"/>
          <xs:enumeration value="INTERNATIONAL_ECONOMY_FREIGHT"/>
          <xs:enumeration value="INTERNATIONAL_FIRST"/>
          <xs:enumeration value="INTERNATIONAL_GROUND"/>
          <xs:enumeration value="INTERNATIONAL_PRIORITY"/>
          <xs:enumeration value="INTERNATIONAL_PRIORITY_FREIGHT"/>
          <xs:enumeration value="PRIORITY_OVERNIGHT"/>
          <xs:enumeration value="SMART_POST"/>
          <xs:enumeration value="STANDARD_OVERNIGHT"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="ShippingDocument">
        <xs:annotation>
          <xs:documentation>All package-level shipping documents (other than labels and barcodes).</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Type" minOccurs="0" type="ns:ReturnedShippingDocumentType">
            <xs:annotation>
              <xs:documentation>Shipping Document Type</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Grouping" minOccurs="0" type="ns:ShippingDocumentGroupingType">
            <xs:annotation>
              <xs:documentation>Specifies how this document image/file is organized.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ShippingDocumentDisposition" minOccurs="0" type="ns:ShippingDocumentDispositionType">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="AccessReference" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>The name under which a STORED or DEFERRED document is written.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Resolution" minOccurs="0" type="xs:nonNegativeInteger">
            <xs:annotation>
              <xs:documentation>Specifies the image resolution in DPI (dots per inch).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CopiesToPrint" minOccurs="0" type="xs:positiveInteger">
            <xs:annotation>
              <xs:documentation>Number of copies to print.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Parts" minOccurs="0" maxOccurs="unbounded" type="ns:ShippingDocumentPart">
            <xs:annotation>
              <xs:documentation>One or more document parts which make up a single logical document, such as multiple pages of a single form.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ShippingDocumentFormat">
        <xs:annotation>
          <xs:documentation>Format of shipping documents</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Dispositions" minOccurs="0" maxOccurs="unbounded" type="ns:ShippingDocumentDispositionDetail">
            <xs:annotation>
              <xs:documentation>Specifies how to create, organize, and return the document.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TopOfPageOffset" minOccurs="0" type="ns:LinearMeasure">
            <xs:annotation>
              <xs:documentation>Specifies how far down the page to move the beginning of the image; allows for printing on letterhead and other pre-printed stock.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ImageType" type="ns:ShippingDocumentImageType" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="StockType" type="ns:ShippingDocumentStockType" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="ProvideInstructions" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ShippingDocumentDispositionDetail">
        <xs:annotation>
          <xs:documentation>Each occurrence of this class specifies a particular way in which a kind of shipping document is to be produced and provided.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="DispositionType" minOccurs="0" type="ns:ShippingDocumentDispositionType">
            <xs:annotation>
              <xs:documentation>Values in this field specify how to create and return the document.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Grouping" minOccurs="0" type="ns:ShippingDocumentGroupingType">
            <xs:annotation>
              <xs:documentation>Specifies how to organize all documents of this type.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="EMailDetail" minOccurs="0" type="ns:ShippingDocumentEMailDetail">
            <xs:annotation>
              <xs:documentation>Specifies how to e-mail document images.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PrintDetail" minOccurs="0" type="ns:ShippingDocumentPrintDetail">
            <xs:annotation>
              <xs:documentation>Specifies how a queued document is to be printed.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="ShippingDocumentGroupingType">
        <xs:annotation>
          <xs:documentation>Specifies how to organize all shipping documents of the same type.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="CONSOLIDATED_BY_DOCUMENT_TYPE"/>
          <xs:enumeration value="INDIVIDUAL"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="ShippingDocumentDispositionType">
        <xs:annotation>
          <xs:documentation>Specifies how to return a shipping document to the caller.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="CONFIRMED"/>
          <xs:enumeration value="DEFERRED"/>
          <xs:enumeration value="EMAILED"/>
          <xs:enumeration value="QUEUED"/>
          <xs:enumeration value="RETURNED"/>
          <xs:enumeration value="STORED"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="ShippingDocumentEMailDetail">
        <xs:annotation>
          <xs:documentation>Specifies how to e-mail shipping documents.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="EMailRecipients" minOccurs="0" maxOccurs="unbounded" type="ns:ShippingDocumentEMailRecipient">
            <xs:annotation>
              <xs:documentation>Provides the roles and email addresses for e-mail recipients.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Grouping" minOccurs="0" type="ns:ShippingDocumentEMailGroupingType">
            <xs:annotation>
              <xs:documentation>Identifies the convention by which documents are to be grouped as e-mail attachments.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="ShippingDocumentEMailGroupingType">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="BY_RECIPIENT"/>
          <xs:enumeration value="NONE"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="ShippingDocumentEMailRecipient">
        <xs:annotation>
          <xs:documentation>Specifies an individual recipient of e-mailed shipping document(s).</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="RecipientType" minOccurs="0" type="ns:EMailNotificationRecipientType">
            <xs:annotation>
              <xs:documentation>Identifies the relationship of this recipient in the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Address" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Address to which the document is to be sent.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ShippingDocumentPrintDetail">
        <xs:annotation>
          <xs:documentation>Specifies printing options for a shipping document.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="PrinterId" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Provides environment-specific printer identification.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="LinearMeasure">
        <xs:annotation>
          <xs:documentation>Represents a one-dimensional measurement in small units (e.g. suitable for measuring a package or document), contrasted with Distance, which represents a large one-dimensional measurement (e.g. distance between cities).</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Value" minOccurs="0" type="xs:decimal">
            <xs:annotation>
              <xs:documentation>The numerical quantity of this measurement.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Units" minOccurs="0" type="ns:LinearUnits">
            <xs:annotation>
              <xs:documentation>The units for this measurement.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ShippingDocumentPart">
        <xs:annotation>
          <xs:documentation>
            One or more document parts which make up a single logical document, such as
            multiple pages of a single form.
          </xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="DocumentPartSequenceNumber" type="xs:positiveInteger" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The one-origin position of this part within a document.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Image" type="xs:base64Binary" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Graphic or printer commands for this image within a document.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ShippingDocumentSpecification">
        <xs:annotation>
          <xs:documentation>Description of shipping documents</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="ShippingDocumentTypes" type="ns:RequestedShippingDocumentType" minOccurs="1" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Specify type of documents</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomPackageDocumentDetail" minOccurs="0" type="ns:CustomDocumentDetail">
            <xs:annotation>
              <xs:documentation>Specifies the production of each package-level custom document (the same specification is used for all packages).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomShipmentDocumentDetail" minOccurs="0" type="ns:CustomDocumentDetail">
            <xs:annotation>
              <xs:documentation>Specifies the production of a shipment-level custom document.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="NaftaCertificateOfOriginDetail" minOccurs="0" type="ns:NaftaCertificateOfOriginDetail">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CommercialInvoiceDetail" minOccurs="0" type="ns:CommercialInvoiceDetail">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="GeneralAgencyAgreementDetail" type="ns:GeneralAgencyAgreementDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>This element is currently not supported and is for the future use. (Details pertaining to the GAA.)</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CertificateOfOrigin" minOccurs="0" type="ns:CertificateOfOriginDetail">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Op900Detail" minOccurs="0" type="ns:Op900Detail">
            <xs:annotation>
              <xs:documentation>Specifies the production of the OP-900 document for hazardous materials.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CustomDocumentDetail">
        <xs:annotation>
          <xs:documentation>Data required to produce a custom-specified document, either at shipment or package level.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Format" minOccurs="0" type="ns:ShippingDocumentFormat">
            <xs:annotation>
              <xs:documentation>Common information controlling document production.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="LabelPrintingOrientation" minOccurs="0" type="ns:LabelPrintingOrientationType">
            <xs:annotation>
              <xs:documentation>Applicable only to documents produced on thermal printers with roll stock.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="LabelRotation" minOccurs="0" type="ns:LabelRotationType">
            <xs:annotation>
              <xs:documentation>Applicable only to documents produced on thermal printers with roll stock.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SpecificationId" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Identifies the formatting specification used to construct this custom document.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="LabelRotationType">
        <xs:annotation>
          <xs:documentation>Relative to normal orientation for the printer.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="LEFT"/>
          <xs:enumeration value="NONE"/>
          <xs:enumeration value="RIGHT"/>
          <xs:enumeration value="UPSIDE_DOWN"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="Op900Detail">
        <xs:annotation>
          <xs:documentation>The instructions indicating how to print the OP-900 form for hazardous materials.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Format" minOccurs="0" type="ns:ShippingDocumentFormat">
            <xs:annotation>
              <xs:documentation>Specifies characteristics of a shipping document to be produced.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Reference" minOccurs="0" type="ns:CustomerReferenceType">
            <xs:annotation>
              <xs:documentation>Identifies which reference type (from the package's customer references) is to be used as the source for the reference on this OP-900.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomerImageUsages" minOccurs="0" maxOccurs="unbounded" type="ns:CustomerImageUsage">
            <xs:annotation>
              <xs:documentation>Specifies the usage and identification of customer supplied images to be used on this document.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SignatureName" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Data field to be used when a name is to be printed in the document instead of (or in addition to) a signature image.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="ShippingDocumentStockType">
        <xs:annotation>
          <xs:documentation> Specifies the type of paper (stock) on which a document will be printed.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="OP_900_LG"/>
          <xs:enumeration value="OP_900_LL"/>
          <xs:enumeration value="OP_950"/>
          <xs:enumeration value="PAPER_4X6"/>
          <xs:enumeration value="PAPER_LETTER"/>
          <xs:enumeration value="STOCK_4X6"/>
          <xs:enumeration value="STOCK_4X6.75_LEADING_DOC_TAB"/>
          <xs:enumeration value="STOCK_4X6.75_TRAILING_DOC_TAB"/>
          <xs:enumeration value="STOCK_4X8"/>
          <xs:enumeration value="STOCK_4X9_LEADING_DOC_TAB"/>
          <xs:enumeration value="STOCK_4X9_TRAILING_DOC_TAB"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="ShipmentDryIceDetail">
        <xs:annotation>
          <xs:documentation>Number of packages in this shipment which contain dry ice and the total weight of the dry ice for this shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="PackageCount" type="xs:string" minOccurs="1"/>
          <xs:element name="TotalWeight" type="ns:Weight" minOccurs="1"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ShipmentRateDetail">
        <xs:annotation>
          <xs:documentation>Shipment level rate information. Currently this is the same as the package level rate information.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="RateType" type="ns:ReturnedRateType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The type used for this specific set of rate data.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RateScale" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The FedEx rate scale used to calculate these rates.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>5</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="RateZone" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The FedEx rate zone used to calculate these rates.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>1</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="PricingCode" type="ns:PricingCodeType" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Identifies the type of pricing used for this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RatedWeightMethod" minOccurs="0" type="ns:RatedWeightMethod">
            <xs:annotation>
              <xs:documentation>Indicates which weight was used.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="MinimumChargeType" minOccurs="0" type="ns:MinimumChargeType">
            <xs:annotation>
              <xs:documentation>INTERNAL FEDEX USE ONLY.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CurrencyExchangeRate" type="ns:CurrencyExchangeRate" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Currency exchange rate information.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SpecialRatingApplied" type="ns:SpecialRatingAppliedType" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Special circumstance rating used for this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DimDivisor" type="xs:nonNegativeInteger" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The value used to calculate the weight based on the dimensions.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DimDivisorType" minOccurs="0" type="ns:RateDimensionalDivisorType">
            <xs:annotation>
              <xs:documentation>Identifies the type of dim divisor that was applied.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="FuelSurchargePercent" type="xs:decimal" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Specifies a fuel surcharge percentage.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalBillingWeight" type="ns:Weight" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The weight used to calculate these rates.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalDimWeight" type="ns:Weight" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The dimensional weith used to calculate these rates, if applicible.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalBaseCharge" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The total freight charge that was calculated for this package before surcharges, discounts and taxes.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalFreightDiscounts" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The total discounts used in the rate calculation.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalNetFreight" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The freight charge minus discounts.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalSurcharges" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The total amount of all surcharges applied to this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalNetFedExCharge" type="ns:Money" minOccurs="0"/>
          <xs:element name="TotalTaxes" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The total amount of all taxes applied to this shipment. Currently not supported.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalNetCharge" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The net charge after applying all discounts and surcharges.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalRebates" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The total sum of all rebates applied to this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalDutiesAndTaxes" minOccurs="0" type="ns:Money">
            <xs:annotation>
              <xs:documentation>Total of all values under this shipment's dutiesAndTaxes; only provided if estimated duties and taxes were calculated for this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalNetChargeWithDutiesAndTaxes" minOccurs="0" type="ns:Money">
            <xs:annotation>
              <xs:documentation>This shipment's totalNetCharge + totalDutiesAndTaxes; only provided if estimated duties and taxes were calculated for this shipment AND duties, taxes and transportation charges are all paid by the same sender's account.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="FreightDiscounts" type="ns:RateDiscount" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="Rebates" type="ns:Rebate" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="Surcharges" type="ns:Surcharge" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="Taxes" type="ns:Tax" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="DutiesAndTaxes" minOccurs="0" maxOccurs="unbounded" type="ns:EdtCommodityTax">
            <xs:annotation>
              <xs:documentation>All commodity-based duties and taxes applicable to this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="VariableHandlingCharges" type="ns:VariableHandlingCharges" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The variable handling charges calculated based on the type variable handling charges requested.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalVariableHandlingCharges" type="ns:VariableHandlingCharges" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The total of the package and shipment level variable handling charges.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="Rebate">
        <xs:sequence>
          <xs:element name="RebateType" type="ns:RebateType" minOccurs="0"/>
          <xs:element name="Description" type="xs:string" minOccurs="0"/>
          <xs:element name="Amount" type="ns:Money" minOccurs="0"/>
          <xs:element name="Percent" type="xs:decimal" minOccurs="0"/>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="RebateType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="BONUS"/>
          <xs:enumeration value="EARNED"/>
          <xs:enumeration value="OTHER"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="RateDimensionalDivisorType">
        <xs:annotation>
          <xs:documentation>Indicates the reason that a dim divisor value was chose.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="COUNTRY"/>
          <xs:enumeration value="CUSTOMER"/>
          <xs:enumeration value="OTHER"/>
          <xs:enumeration value="PRODUCT"/>
          <xs:enumeration value="WAIVED"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="ShipmentRating">
        <xs:annotation>
          <xs:documentation>Shipment level rate information.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="ActualRateType" type="ns:ReturnedRateType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies which entry in the ShipmentRateDetails array is considered as presenting the actual rates for the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="EffectiveNetDiscount" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The difference between account based rates and list rates. Only returned when list rates are requested.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ShipmentRateDetails" type="ns:ShipmentRateDetail" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Each element of this field provides shipment-level rate data for a specific rate type.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ShipmentReply">
        <xs:sequence>
          <xs:element name="HighestSeverity" type="ns:NotificationSeverityType">
            <xs:annotation>
              <xs:documentation>This indicates the highest level of severity of all the notifications returned in this reply</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Notifications" type="ns:Notification" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>The descriptive data regarding the results of the submitted transaction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TransactionDetail" type="ns:TransactionDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data for this customer transaction. The TransactionDetail from the request is echoed back to the caller in the corresponding reply.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Version" type="ns:VersionId">
            <xs:annotation>
              <xs:documentation>Identifies the version/level of a service operation expected by a caller (in each request) and performed by the callee (in each reply).</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ShipmentRoutingDetail">
        <xs:annotation>
          <xs:documentation>Information about the routing, origin, destination and delivery of a shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="UrsaPrefixCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The prefix portion of the URSA (Universal Routing and Sort Aid) code.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>2</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="UrsaSuffixCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The suffix portion of the URSA code.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>5</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="OriginLocationId" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The identifier of the origin location of the shipment. Express only.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>5</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="OriginServiceArea" type="xs:string" minOccurs="0"/>
          <xs:element name="DestinationLocationId" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The identifier of the destination location of the shipment. Express only.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>5</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="DestinationServiceArea" type="xs:string" minOccurs="0"/>
          <xs:element name="DestinationLocationStateOrProvinceCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The state or province code of the destination of the shipment.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>14</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="DeliveryDate" type="xs:date" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The date the shipment is expected to be delivered.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DeliveryDay" type="ns:DayOfWeekType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The day of the week the shipment is expected to be delivered. Express only.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CommitDate" type="xs:date" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The date the shipment is committed to be delivered.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CommitDay" type="ns:DayOfWeekType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The day of the week the shipment is committed to be delivered. Express only.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TransitTime" type="ns:TransitTimeType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Currently not supported.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="AstraPlannedServiceLevel" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Text describing planned delivery.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="AstraDescription" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Currently not supported.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>TBD</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="PostalCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The postal code of the destination of the shipment.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>16</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="StateOrProvinceCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The state or province code of the destination of the shipment.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>14</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="CountryCode" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The country code of the destination of the shipment.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>2</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="AirportId" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The identifier for the airport of the destination of the shipment.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>4</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="ShipmentSpecialServicesRequested">
        <xs:annotation>
          <xs:documentation>Descriptive data regarding special services requested by the shipper for a shipment. If the shipper is requesting a special service which requires additional data (e.g. COD), the special service type must be present in the specialServiceTypes collection, and the supporting detail must be provided in the appropriate sub-object. For example, to request COD, "COD" must be included in the SpecialServiceTypes collection and the CodDetail object must contain the required data.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="SpecialServiceTypes" type="ns:ShipmentSpecialServiceType" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation>Identifies the collection of special service types requested by the shipper. See SpecialServiceTypes for the list of valid enumerated types.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CodDetail" type="ns:CodDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data required for a FedEx COD (Collect-On-Delivery) shipment. This element is required when SpecialServiceType.COD is present in the SpecialServiceTypes collection.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CodCollectionAmount" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The COD amount (after any accumulations) that must be collected upon delivery of a shipment shipped using the COD special service.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="HoldAtLocationDetail" type="ns:HoldAtLocationDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data required for a FedEx shipment that is to be held at the destination FedEx location for pickup by the recipient. This element is required when SpecialServiceType.HOLD_AT_LOCATION is present in the SpecialServiceTypes collection.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="EMailNotificationDetail" type="ns:EMailNotificationDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data required for FedEx to provide email notification to the customer regarding the shipment. This element is required when SpecialServiceType.EMAIL_NOTIFICATION is present in the SpecialServiceTypes collection.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ReturnShipmentDetail" type="ns:ReturnShipmentDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The descriptive data required for FedEx Printed Return Label. This element is required when SpecialServiceType.PRINTED_RETURN_LABEL is present in the SpecialServiceTypes collection</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PendingShipmentDetail" type="ns:PendingShipmentDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The descriptive data required for FedEx Pending shipment. This element is required when SpecialServiceType.PENDING_SHIPMENT is present in the SpecialServiceTypes collection</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ShipmentDryIceDetail" type="ns:ShipmentDryIceDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Number of packages in this shipment which contain dry ice and the total weight of the dry ice for this shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="HomeDeliveryPremiumDetail" type="ns:HomeDeliveryPremiumDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The descriptive data required for FedEx Home Delivery options. This element is required when SpecialServiceType.HOME_DELIVERY_PREMIUM is present in the SpecialServiceTypes collection</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="EtdDetail" type="ns:EtdDetail" minOccurs="0"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="EtdDetail">
        <xs:sequence>
          <xs:element name="RequestedDocumentCopies" type="ns:RequestedShippingDocumentType" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
          <xs:element name="DocumentReferences" type="ns:UploadDocumentReferenceDetail" minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
              <xs:documentation/>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="ShipmentSpecialServiceType">
        <xs:annotation>
          <xs:documentation>Identifies the collection of special service offered by FedEx. BROKER_SELECT_OPTION should be used for Express shipments only.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="BROKER_SELECT_OPTION"/>
          <xs:enumeration value="COD"/>
          <xs:enumeration value="DRY_ICE"/>
          <xs:enumeration value="ELECTRONIC_TRADE_DOCUMENTS"/>
          <xs:enumeration value="EMAIL_NOTIFICATION"/>
          <xs:enumeration value="FUTURE_DAY_SHIPMENT"/>
          <xs:enumeration value="HOLD_AT_LOCATION"/>
          <xs:enumeration value="HOME_DELIVERY_PREMIUM"/>
          <xs:enumeration value="INSIDE_DELIVERY"/>
          <xs:enumeration value="INSIDE_PICKUP"/>
          <xs:enumeration value="PENDING_SHIPMENT"/>
          <xs:enumeration value="RETURN_SHIPMENT"/>
          <xs:enumeration value="SATURDAY_DELIVERY"/>
          <xs:enumeration value="SATURDAY_PICKUP"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="SignatureOptionDetail">
        <xs:annotation>
          <xs:documentation>The descriptive data required for FedEx delivery signature services.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="OptionType" type="ns:SignatureOptionType">
            <xs:annotation>
              <xs:documentation>Identifies the delivery signature services option selected by the customer for this shipment. See OptionType for the list of valid values.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SignatureReleaseNumber" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies the delivery signature release authorization number.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>10</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="SignatureOptionType">
        <xs:annotation>
          <xs:documentation>Identifies the delivery signature services options offered by FedEx.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ADULT"/>
          <xs:enumeration value="DIRECT"/>
          <xs:enumeration value="INDIRECT"/>
          <xs:enumeration value="NO_SIGNATURE_REQUIRED"/>
          <xs:enumeration value="SERVICE_DEFAULT"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="CompletedSmartPostDetail">
        <xs:sequence>
          <xs:element name="PickUpCarrier" type="ns:CarrierCodeType" minOccurs="0"/>
          <xs:element name="Machinable" type="xs:boolean" minOccurs="0"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="SmartPostShipmentDetail">
        <xs:sequence>
          <xs:element name="Indicia" type="ns:SmartPostIndiciaType" minOccurs="0"/>
          <xs:element name="AncillaryEndorsement" type="ns:SmartPostAncillaryEndorsementType" minOccurs="0"/>
          <xs:element name="SpecialServices" type="ns:SmartPostShipmentSpecialServiceType" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="HubId" type="xs:string" minOccurs="0"/>
          <xs:element name="CustomerManifestId" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                The CustomerManifestId is used to group Smart Post packages onto a manifest for each trailer that is being prepared. If you do not have multiple trailers this field can be omitted. If you have multiple trailers, you
                must assign the same Manifest Id to each SmartPost package as determined by its trailer.  In other words, all packages on a trailer must have the same Customer Manifest Id. The manifest Id must be unique to your account number for a minimum of 6 months
                and cannot exceed 8 characters in length. We recommend you use the day of year + the trailer id (this could simply be a sequential number for that trailer). So if you had 3 trailers that you started loading on Feb 10
                the 3 manifest ids would be 041001, 041002, 041003 (in this case we used leading zeros on the trailer numbers).
              </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="SmartPostAncillaryEndorsementType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="ADDRESS_CORRECTION"/>
          <xs:enumeration value="CARRIER_LEAVE_IF_NO_RESPONSE"/>
          <xs:enumeration value="CHANGE_SERVICE"/>
          <xs:enumeration value="FORWARDING_SERVICE"/>
          <xs:enumeration value="RETURN_SERVICE"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="SmartPostIndiciaType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="MEDIA_MAIL"/>
          <xs:enumeration value="PARCEL_SELECT"/>
          <xs:enumeration value="PRESORTED_BOUND_PRINTED_MATTER"/>
          <xs:enumeration value="PRESORTED_STANDARD"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="SmartPostShipmentSpecialServiceType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="USPS_DELIVERY_CONFIRMATION"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="SpecialRatingAppliedType">
        <xs:annotation>
          <xs:documentation>Special circumstance rating used for this shipment.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="FIXED_FUEL_SURCHARGE"/>
          <xs:enumeration value="IMPORT_PRICING"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="Surcharge">
        <xs:annotation>
          <xs:documentation>Identifies each surcharge applied to the shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="SurchargeType" type="ns:SurchargeType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The type of surcharge applied to the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Level" type="ns:SurchargeLevelType" minOccurs="0"/>
          <xs:element name="Description" type="xs:string" minOccurs="0"/>
          <xs:element name="Amount" type="ns:Money">
            <xs:annotation>
              <xs:documentation>The amount of the surcharge applied to the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="SurchargeType">
        <xs:annotation>
          <xs:documentation>The type of the surcharge.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ADDITIONAL_HANDLING"/>
          <xs:enumeration value="APPOINTMENT_DELIVERY"/>
          <xs:enumeration value="BROKER_SELECT_OPTION"/>
          <xs:enumeration value="CANADIAN_DESTINATION"/>
          <xs:enumeration value="CLEARANCE_ENTRY_FEE"/>
          <xs:enumeration value="COD"/>
          <xs:enumeration value="CUT_FLOWERS"/>
          <xs:enumeration value="DANGEROUS_GOODS"/>
          <xs:enumeration value="DELIVERY_AREA"/>
          <xs:enumeration value="DELIVERY_CONFIRMATION"/>
          <xs:enumeration value="DELIVERY_SIGNATURE_OPTIONS"/>
          <xs:enumeration value="DRY_ICE"/>
          <xs:enumeration value="EMAIL_LABEL"/>
          <xs:enumeration value="EUROPE_FIRST"/>
          <xs:enumeration value="EXCESS_VALUE"/>
          <xs:enumeration value="EXPORT"/>
          <xs:enumeration value="FEDEX_TAG"/>
          <xs:enumeration value="FICE"/>
          <xs:enumeration value="FUEL"/>
          <xs:enumeration value="HOLD_AT_LOCATION"/>
          <xs:enumeration value="HOME_DELIVERY_APPOINTMENT"/>
          <xs:enumeration value="HOME_DELIVERY_DATE_CERTAIN"/>
          <xs:enumeration value="HOME_DELIVERY_EVENING"/>
          <xs:enumeration value="INSIDE_DELIVERY"/>
          <xs:enumeration value="INSIDE_PICKUP"/>
          <xs:enumeration value="INSURED_VALUE"/>
          <xs:enumeration value="INTERHAWAII"/>
          <xs:enumeration value="NON_MACHINABLE"/>
          <xs:enumeration value="OFFSHORE"/>
          <xs:enumeration value="ON_CALL_PICKUP"/>
          <xs:enumeration value="OTHER"/>
          <xs:enumeration value="OUT_OF_DELIVERY_AREA"/>
          <xs:enumeration value="OUT_OF_PICKUP_AREA"/>
          <xs:enumeration value="OVERSIZE"/>
          <xs:enumeration value="PIECE_COUNT_VERIFICATION"/>
          <xs:enumeration value="PRIORITY_ALERT"/>
          <xs:enumeration value="RESIDENTIAL_DELIVERY"/>
          <xs:enumeration value="RESIDENTIAL_PICKUP"/>
          <xs:enumeration value="RETURN_LABEL"/>
          <xs:enumeration value="SATURDAY_DELIVERY"/>
          <xs:enumeration value="SATURDAY_PICKUP"/>
          <xs:enumeration value="SIGNATURE_OPTION"/>
          <xs:enumeration value="THIRD_PARTY_CONSIGNEE"/>
          <xs:enumeration value="TRANSMART_SERVICE_FEE"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="SurchargeLevelType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="PACKAGE"/>
          <xs:enumeration value="SHIPMENT"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="Tax">
        <xs:annotation>
          <xs:documentation>Identifies each tax applied to the shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="TaxType" type="ns:TaxType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The type of tax applied to the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Description" type="xs:string" minOccurs="0"/>
          <xs:element name="Amount" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The amount of the tax applied to the shipment.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="TaxpayerIdentification">
        <xs:annotation>
          <xs:documentation>The descriptive data for taxpayer identification information.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="TinType" type="ns:TinType">
            <xs:annotation>
              <xs:documentation>Identifies the category of the taxpayer identification number. See TinType for the list of values.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Number" type="xs:string">
            <xs:annotation>
              <xs:documentation>Identifies the taxpayer identification number.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>15</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="TaxType">
        <xs:annotation>
          <xs:documentation>The type of the tax.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="EXPORT"/>
          <xs:enumeration value="GST"/>
          <xs:enumeration value="HST"/>
          <xs:enumeration value="OTHER"/>
          <xs:enumeration value="PST"/>
          <xs:enumeration value="VAT"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="TermsOfSaleType">
        <xs:annotation>
          <xs:documentation>
            Required for dutiable international express or ground shipment. This field is not applicable to an international PIB (document) or a non-document which does not require a commercial invoice express shipment.
            CFR_OR_CPT (Cost and Freight/Carriage Paid TO)
            CIF_OR_CIP (Cost Insurance and Freight/Carraige Insurance Paid)
            DDP (Delivered Duty Paid)
            DDU (Delivered Duty Unpaid)
            EXW (Ex Works)
            FOB_OR_FCA (Free On Board/Free Carrier)
          </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="CFR_OR_CPT"/>
          <xs:enumeration value="CIF_OR_CIP"/>
          <xs:enumeration value="DDP"/>
          <xs:enumeration value="DDU"/>
          <xs:enumeration value="EXW"/>
          <xs:enumeration value="FOB_OR_FCA"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="TinType">
        <xs:annotation>
          <xs:documentation>Identifies the category of the taxpayer identification number.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="EIN"/>
          <xs:enumeration value="SSN"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="TrackingId">
        <xs:sequence>
          <xs:element name="TrackingIdType" type="ns:TrackingIdType" minOccurs="0"/>
          <xs:element name="FormId" type="xs:string" minOccurs="0"/>
          <xs:element name="TrackingNumber" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="TrackingIdType">
        <xs:annotation>
          <xs:documentation>TrackingIdType</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="EXPRESS"/>
          <xs:enumeration value="GROUND"/>
          <xs:enumeration value="USPS"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="TransactionDetail">
        <xs:annotation>
          <xs:documentation>Descriptive data for this customer transaction. The TransactionDetail from the request is echoed back to the caller in the corresponding reply.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="CustomerTransactionId" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Identifies a customer-supplied unique identifier for this transaction. It is returned in the reply message to aid in matching requests to replies.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>40</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Localization" type="ns:Localization" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Governs any future language/translations applied to the data payload(contrasted with ClientDetail.localization, which governs Notification.localizedMessage language selection).</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="TransitTimeType">
        <xs:annotation>
          <xs:documentation>Identifies the set of valid shipment transit time values.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ONE_DAY"/>
          <xs:enumeration value="TWO_DAYS"/>
          <xs:enumeration value="THREE_DAYS"/>
          <xs:enumeration value="FOUR_DAYS"/>
          <xs:enumeration value="FIVE_DAYS"/>
          <xs:enumeration value="SIX_DAYS"/>
          <xs:enumeration value="SEVEN_DAYS"/>
          <xs:enumeration value="EIGHT_DAYS"/>
          <xs:enumeration value="NINE_DAYS"/>
          <xs:enumeration value="TEN_DAYS"/>
          <xs:enumeration value="ELEVEN_DAYS"/>
          <xs:enumeration value="TWELVE_DAYS"/>
          <xs:enumeration value="THIRTEEN_DAYS"/>
          <xs:enumeration value="FOURTEEN_DAYS"/>
          <xs:enumeration value="FIFTEEN_DAYS"/>
          <xs:enumeration value="SIXTEEN_DAYS"/>
          <xs:enumeration value="SEVENTEEN_DAYS"/>
          <xs:enumeration value="EIGHTEEN_DAYS"/>
          <xs:enumeration value="NINETEEN_DAYS"/>
          <xs:enumeration value="TWENTY_DAYS"/>
          <xs:enumeration value="UNKNOWN"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="ValidateShipmentRequest">
        <xs:annotation>
          <xs:documentation>Descriptive data sent to FedEx by a customer in order to validate a shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="WebAuthenticationDetail" type="ns:WebAuthenticationDetail">
            <xs:annotation>
              <xs:documentation>The descriptive data to be used in authentication of the sender's identity (and right to use FedEx web services).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ClientDetail" type="ns:ClientDetail">
            <xs:annotation>
              <xs:documentation>Descriptive data identifying the client submitting the transaction.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TransactionDetail" type="ns:TransactionDetail" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Descriptive data for this customer transaction. The TransactionDetail from the request is echoed back to the caller in the corresponding reply.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Version" type="ns:VersionId">
            <xs:annotation>
              <xs:documentation>Identifies the version/level of a service operation expected by a caller (in each request) and performed by the callee (in each reply).</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="RequestedShipment" type="ns:RequestedShipment">
            <xs:annotation>
              <xs:documentation>Descriptive data about the shipment being sent by the requestor.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="VariableHandlingChargeDetail">
        <xs:annotation>
          <xs:documentation>Details about how to calculate variable handling charges at the shipment level.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="VariableHandlingChargeType" type="ns:VariableHandlingChargeType">
            <xs:annotation>
              <xs:documentation>The type of handling charge to be calculated and returned in the reply.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="FixedValue" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                Used with Variable handling charge type of FIXED_VALUE.
                Contains the amount to be added to the freight charge.
                Contains 2 explicit decimal positions with a total max length of 10 including the decimal.
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PercentValue" type="xs:decimal" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                Used with Variable handling charge types PERCENTAGE_OF_BASE, PERCENTAGE_OF_NET or PERCETAGE_OF_NET_EXCL_TAXES.
                Used to calculate the amount to be added to the freight charge.
                Contains 2 explicit decimal positions.
              </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="VariableHandlingCharges">
        <xs:annotation>
          <xs:documentation>The variable handling charges calculated based on the type variable handling charges requested.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="VariableHandlingCharge" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The variable handling charge amount calculated based on the requested variable handling charge detail.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TotalCustomerCharge" type="ns:Money" minOccurs="0">
            <xs:annotation>
              <xs:documentation>The calculated varibale handling charge plus the net charge.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="VariableHandlingChargeType">
        <xs:annotation>
          <xs:documentation>The type of handling charge to be calculated and returned in the reply.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="FIXED_AMOUNT"/>
          <xs:enumeration value="PERCENTAGE_OF_NET_CHARGE"/>
          <xs:enumeration value="PERCENTAGE_OF_NET_CHARGE_EXCLUDING_TAXES"/>
          <xs:enumeration value="PERCENTAGE_OF_NET_FREIGHT"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="VersionId">
        <xs:annotation>
          <xs:documentation>Identifies the version/level of a service operation expected by a caller (in each request) and performed by the callee (in each reply).</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="ServiceId" type="xs:string" minOccurs="1" fixed="ship">
            <xs:annotation>
              <xs:documentation>Identifies a system or sub-system which performs an operation.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Major" type="xs:int" fixed="8" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Identifies the service business level. For this release this value should be set to 6.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Intermediate" type="xs:int" fixed="0" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Identifies the service interface level. For this release this value should be set to 0.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Minor" type="xs:int" fixed="0" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Identifies the service code level. For this release this value should be set to 0.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="WebAuthenticationDetail">
        <xs:annotation>
          <xs:documentation>The descriptive data to be used in authentication of the sender's identity (and right to use FedEx web services).</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="UserCredential" type="ns:WebAuthenticationCredential" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Credential used to authenticate a specific software application. This value is provided by FedEx after registration.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="WebAuthenticationCredential">
        <xs:annotation>
          <xs:documentation>Two part authentication string used for the sender's identity.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Key" type="xs:string" minOccurs="1">
            <xs:annotation>
              <xs:documentation>Publicly known part of authentication key used for authentication. This value is provided by FedEx after registration.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>16</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="Password" type="xs:string" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Secret part of authentication key used for authentication. This value is provided by FedEx after registration.</xs:documentation>
              <xs:appinfo>
                <xs:MaxLength>25</xs:MaxLength>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="Weight">
        <xs:annotation>
          <xs:documentation>The descriptive data for the heaviness of an object.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Units" type="ns:WeightUnits">
            <xs:annotation>
              <xs:documentation>Identifies the unit of measure associated with a weight value. See WeightUnits for the list of valid enumerated values.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Value">
            <xs:annotation>
              <xs:documentation>Identifies the weight value of the package/shipment. Contains 1 explicit decimal position</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="xs:decimal">
                <xs:minInclusive value="0"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="WeightUnits">
        <xs:annotation>
          <xs:documentation>Identifies the unit of measure associated with a weight value. See the list of enumerated types for valid values.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="KG"/>
          <xs:enumeration value="LB"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="CertificateOfOriginDetail">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="DocumentFormat" minOccurs="0" type="ns:ShippingDocumentFormat">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomerImageUsages" minOccurs="0" maxOccurs="unbounded" type="ns:CustomerImageUsage">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="CustomerImageUsage">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Type" minOccurs="0" type="ns:CustomerImageUsageType">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Id" minOccurs="0" type="ns:ImageId">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="ImageId">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="IMAGE_1"/>
          <xs:enumeration value="IMAGE_2"/>
          <xs:enumeration value="IMAGE_3"/>
          <xs:enumeration value="IMAGE_4"/>
          <xs:enumeration value="IMAGE_5"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="CustomerImageUsageType">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="LETTER_HEAD"/>
          <xs:enumeration value="SIGNATURE"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="EdtCommodityTax">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="HarmonizedCode" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Taxes" minOccurs="0" maxOccurs="unbounded" type="ns:EdtTaxDetail">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="EdtExciseCondition">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Category" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Value" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Customer-declared value, with data type and legal values depending on excise condition, used in defining the taxable value of the item.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="EdtRequestType">
        <xs:annotation>
          <xs:documentation>Specifies the types of Estimated Duties and Taxes to be included in a rate quotation for an international shipment.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ALL"/>
          <xs:enumeration value="NONE"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="EdtTaxDetail">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="TaxType" minOccurs="0" type="ns:EdtTaxType">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="EffectiveDate" minOccurs="0" type="xs:date">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Name" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="TaxableValue" minOccurs="0" type="ns:Money">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Description" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Formula" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Amount" minOccurs="0" type="ns:Money">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="EdtTaxType">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ADDITIONAL_TAXES"/>
          <xs:enumeration value="CONSULAR_INVOICE_FEE"/>
          <xs:enumeration value="CUSTOMS_SURCHARGES"/>
          <xs:enumeration value="DUTY"/>
          <xs:enumeration value="EXCISE_TAX"/>
          <xs:enumeration value="FOREIGN_EXCHANGE_TAX"/>
          <xs:enumeration value="GENERAL_SALES_TAX"/>
          <xs:enumeration value="IMPORT_LICENSE_FEE"/>
          <xs:enumeration value="INTERNAL_ADDITIONAL_TAXES"/>
          <xs:enumeration value="INTERNAL_SENSITIVE_PRODUCTS_TAX"/>
          <xs:enumeration value="OTHER"/>
          <xs:enumeration value="SENSITIVE_PRODUCTS_TAX"/>
          <xs:enumeration value="STAMP_TAX"/>
          <xs:enumeration value="STATISTICAL_TAX"/>
          <xs:enumeration value="TRANSPORT_FACILITIES_TAX"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="Measure">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Quantity" minOccurs="0" type="xs:decimal">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Units" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="NaftaImporterSpecificationType">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="IMPORTER_OF_RECORD"/>
          <xs:enumeration value="RECIPIENT"/>
          <xs:enumeration value="UNKNOWN"/>
          <xs:enumeration value="VARIOUS"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="RequestedPackageLineItem">
        <xs:annotation>
          <xs:documentation>This class rationalizes RequestedPackage and RequestedPackageSummary from previous interfaces. The way in which it is uses within a RequestedShipment depends on the RequestedPackageDetailType value specified for that shipment.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="SequenceNumber" minOccurs="0" type="xs:positiveInteger">
            <xs:annotation>
              <xs:documentation>Used only with INDIVIDUAL_PACKAGE, as a unique identifier of each requested package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="GroupNumber" minOccurs="0" type="xs:nonNegativeInteger">
            <xs:annotation>
              <xs:documentation>Used only with PACKAGE_GROUPS, as a unique identifier of each group of identical packages.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="GroupPackageCount" minOccurs="0" type="xs:positiveInteger">
            <xs:annotation>
              <xs:documentation>Used only with PACKAGE_GROUPS, as a count of packages within a group of identical packages.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="VariableHandlingChargeDetail" minOccurs="0" type="ns:VariableHandlingChargeDetail">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="InsuredValue" minOccurs="0" type="ns:Money">
            <xs:annotation>
              <xs:documentation>Only used for INDIVIDUAL_PACKAGES and PACKAGE_GROUPS. Ignored for PACKAGE_SUMMARY, in which case totalInsuredValue and packageCount on the shipment will be used to determine this value.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Weight" minOccurs="0" type="ns:Weight">
            <xs:annotation>
              <xs:documentation>Only used for INDIVIDUAL_PACKAGES and PACKAGE_GROUPS. Ignored for PACKAGE_SUMMARY, in which case totalweight and packageCount on the shipment will be used to determine this value.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="Dimensions" minOccurs="0" type="ns:Dimensions">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="PhysicalPackaging" minOccurs="0" type="ns:PhysicalPackagingType">
            <xs:annotation>
              <xs:documentation>Provides additional detail on how the customer has physically packaged this item. As of June 2009, required for packages moving under international and SmartPost services.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ItemDescription" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>Human-readable text describing the package.</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomerReferences" minOccurs="0" maxOccurs="3" type="ns:CustomerReference">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="SpecialServicesRequested" minOccurs="0" type="ns:PackageSpecialServicesRequested">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="ContentRecords" minOccurs="0" maxOccurs="unbounded" type="ns:ContentRecord">
            <xs:annotation>
              <xs:documentation>Only used for INDIVIDUAL_PACKAGES and PACKAGE_GROUPS.</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="PhysicalPackagingType">
        <xs:annotation>
          <xs:documentation>This enumeration rationalizes the former FedEx Express international "admissibility package" types (based on ANSI X.12) and the FedEx Freight packaging types. The values represented are those common to both carriers.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="BAG"/>
          <xs:enumeration value="BARREL"/>
          <xs:enumeration value="BASKET"/>
          <xs:enumeration value="BOX"/>
          <xs:enumeration value="BUCKET"/>
          <xs:enumeration value="BUNDLE"/>
          <xs:enumeration value="CARTON"/>
          <xs:enumeration value="CASE"/>
          <xs:enumeration value="CONTAINER"/>
          <xs:enumeration value="CRATE"/>
          <xs:enumeration value="CYLINDER"/>
          <xs:enumeration value="DRUM"/>
          <xs:enumeration value="ENVELOPE"/>
          <xs:enumeration value="HAMPER"/>
          <xs:enumeration value="OTHER"/>
          <xs:enumeration value="PAIL"/>
          <xs:enumeration value="PALLET"/>
          <xs:enumeration value="PIECE"/>
          <xs:enumeration value="REEL"/>
          <xs:enumeration value="ROLL"/>
          <xs:enumeration value="SKID"/>
          <xs:enumeration value="TANK"/>
          <xs:enumeration value="TUBE"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="UploadDocumentReferenceDetail">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="LineNumber" minOccurs="0" type="xs:nonNegativeInteger">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="CustomerReference" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DocumentProducer" minOccurs="0" type="ns:UploadDocumentProducerType">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DocumentType" minOccurs="0" type="ns:UploadDocumentType">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DocumentId" minOccurs="0" type="xs:string">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="DocumentIdProducer" minOccurs="0" type="ns:UploadDocumentIdProducer">
            <xs:annotation>
              <xs:documentation>?</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="UploadDocumentIdProducer">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="CUSTOMER"/>
          <xs:enumeration value="FEDEX_CSHP"/>
          <xs:enumeration value="FEDEX_GTM"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="UploadDocumentProducerType">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="CUSTOMER"/>
          <xs:enumeration value="FEDEX_CLS"/>
          <xs:enumeration value="FEDEX_GTM"/>
          <xs:enumeration value="OTHER"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="UploadDocumentType">
        <xs:annotation>
          <xs:documentation>?</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
          <xs:enumeration value="CERTIFICATE_OF_ORIGIN"/>
          <xs:enumeration value="COMMERCIAL_INVOICE"/>
          <xs:enumeration value="ETD_LABEL"/>
          <xs:enumeration value="NAFTA_CERTIFICATE_OF_ORIGIN"/>
          <xs:enumeration value="OTHER"/>
          <xs:enumeration value="PRO_FORMA_INVOICE"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:schema>
  </types>
  <message name="ProcessShipmentRequest">
    <part name="ProcessShipmentRequest" element="ns:ProcessShipmentRequest"/>
  </message>
  <message name="ProcessShipmentReply">
    <part name="ProcessShipmentReply" element="ns:ProcessShipmentReply"/>
  </message>
  <message name="DeleteShipmentRequest">
    <part name="DeleteShipmentRequest" element="ns:DeleteShipmentRequest"/>
  </message>
  <message name="ShipmentReply">
    <part name="ShipmentReply" element="ns:ShipmentReply"/>
  </message>
  <message name="ValidateShipmentRequest">
    <part name="ValidateShipmentRequest" element="ns:ValidateShipmentRequest"/>
  </message>
  <message name="CreatePendingShipmentRequest">
    <part name="CreatePendingShipmentRequest" element="ns:CreatePendingShipmentRequest"/>
  </message>
  <message name="CreatePendingShipmentReply">
    <part name="CreatePendingShipmentReply" element="ns:CreatePendingShipmentReply"/>
  </message>
  <message name="CancelPendingShipmentRequest">
    <part name="CancelPendingShipmentRequest" element="ns:CancelPendingShipmentRequest"/>
  </message>
  <message name="CancelPendingShipmentReply">
    <part name="CancelPendingShipmentReply" element="ns:CancelPendingShipmentReply"/>
  </message>
  <message name="ProcessTagRequest">
    <part name="ProcessTagRequest" element="ns:ProcessTagRequest"/>
  </message>
  <message name="ProcessTagReply">
    <part name="ProcessTagReply" element="ns:ProcessTagReply"/>
  </message>
  <message name="DeleteTagRequest">
    <part name="DeleteTagRequest" element="ns:DeleteTagRequest"/>
  </message>
  <portType name="ShipPortType">
    <operation name="processShipment" parameterOrder="ProcessShipmentRequest">
      <input message="ns:ProcessShipmentRequest"/>
      <output message="ns:ProcessShipmentReply"/>
    </operation>
    <operation name="deleteShipment" parameterOrder="DeleteShipmentRequest">
      <input message="ns:DeleteShipmentRequest"/>
      <output message="ns:ShipmentReply"/>
    </operation>
    <operation name="validateShipment" parameterOrder="ValidateShipmentRequest">
      <input message="ns:ValidateShipmentRequest"/>
      <output message="ns:ShipmentReply"/>
    </operation>
    <operation name="createPendingShipment" parameterOrder="CreatePendingShipmentRequest">
      <input message="ns:CreatePendingShipmentRequest"/>
      <output message="ns:CreatePendingShipmentReply"/>
    </operation>
    <operation name="cancelPendingShipment" parameterOrder="CancelPendingShipmentRequest">
      <input message="ns:CancelPendingShipmentRequest"/>
      <output message="ns:CancelPendingShipmentReply"/>
    </operation>
    <operation name="processTag" parameterOrder="ProcessTagRequest">
      <input message="ns:ProcessTagRequest"/>
      <output message="ns:ProcessTagReply"/>
    </operation>
    <operation name="deleteTag" parameterOrder="DeleteTagRequest">
      <input message="ns:DeleteTagRequest"/>
      <output message="ns:ShipmentReply"/>
    </operation>
  </portType>
  <binding name="ShipServiceSoapBinding" type="ns:ShipPortType">
    <s1:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="processShipment">
      <s1:operation soapAction="processShipment" style="document"/>
      <input>
        <s1:body use="literal"/>
      </input>
      <output>
        <s1:body use="literal"/>
      </output>
    </operation>
    <operation name="deleteShipment">
      <s1:operation soapAction="deleteShipment" style="document"/>
      <input>
        <s1:body use="literal"/>
      </input>
      <output>
        <s1:body use="literal"/>
      </output>
    </operation>
    <operation name="validateShipment">
      <s1:operation soapAction="validateShipment" style="document"/>
      <input>
        <s1:body use="literal"/>
      </input>
      <output>
        <s1:body use="literal"/>
      </output>
    </operation>
    <operation name="createPendingShipment">
      <s1:operation soapAction="createPendingShipment" style="document"/>
      <input>
        <s1:body use="literal"/>
      </input>
      <output>
        <s1:body use="literal"/>
      </output>
    </operation>
    <operation name="cancelPendingShipment">
      <s1:operation soapAction="cancelPendingShipment" style="document"/>
      <input>
        <s1:body use="literal"/>
      </input>
      <output>
        <s1:body use="literal"/>
      </output>
    </operation>
    <operation name="processTag">
      <s1:operation soapAction="processTag" style="document"/>
      <input>
        <s1:body use="literal"/>
      </input>
      <output>
        <s1:body use="literal"/>
      </output>
    </operation>
    <operation name="deleteTag">
      <s1:operation soapAction="deleteTag" style="document"/>
      <input>
        <s1:body use="literal"/>
      </input>
      <output>
        <s1:body use="literal"/>
      </output>
    </operation>
  </binding>
  <service name="ShipService">
    <port name="ShipServicePort" binding="ns:ShipServiceSoapBinding">
      <s1:address location="https://gatewaybeta.fedex.com:443/web-services/ship"/>
    </port>
  </service>
</definitions>
0
 
webdorkAuthor Commented:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><CreatePendingShipmentRequest xmlns="http://fedex.com/ws/ship/v8"><WebAuthenticationDetail><UserCredential><Key></Key><Password></Password></UserCredential></WebAuthenticationDetail><ClientDetail><AccountNumber></AccountNumber><MeterNumber></MeterNumber></ClientDetail><UserDetail><UserId/><Password/><UniqueUserId/></UserDetail><TransactionDetail><CustomerTransactionId>TC01_US_US_E01011_Non-Mobi_ship_ServPak_POS</CustomerTransactionId></TransactionDetail><Version><ServiceId>ship</ServiceId><Major>8</Major><Intermediate>0</Intermediate><Minor>0</Minor></Version><RequestedShipment><ShipTimestamp>2010-02-09T09:30:47-05:00</ShipTimestamp><DropoffType>REGULAR_PICKUP</DropoffType><ServiceType>PRIORITY_OVERNIGHT</ServiceType><PackagingType>YOUR_PACKAGING</PackagingType><Shipper><AccountNumber></AccountNumber><Contact><PersonName>Sender Contact</PersonName><CompanyName>WAPI_Sender</CompanyName><PhoneNumber>1234567890</PhoneNumber></Contact><Address><StreetLines>Test Sender Address Line1</StreetLines><City>Collierville</City><StateOrProvinceCode>TN</StateOrProvinceCode><PostalCode>38017</PostalCode><CountryCode>US</CountryCode></Address></Shipper><Recipient><AccountNumber></AccountNumber><Contact><PersonName>Recipient Contact</PersonName><CompanyName>WAPI_Receiver</CompanyName><PhoneNumber>1234567890</PhoneNumber></Contact><Address><StreetLines>Recipient Address Line1</StreetLines><City>Austin</City><StateOrProvinceCode>TX</StateOrProvinceCode><PostalCode>73301</PostalCode><CountryCode>US</CountryCode></Address></Recipient><ShippingChargesPayment><PaymentType>SENDER</PaymentType><Payor><AccountNumber></AccountNumber><CountryCode>USD</CountryCode></Payor></ShippingChargesPayment><SpecialServicesRequested><SpecialServiceTypes>PENDING_SHIPMENT</SpecialServiceTypes><PendingShipmentDetail><Type>EMAIL</Type><ExpirationDate>2010-03-28</ExpirationDate><EmailLabelDetail><NotificationEMailAddress>Satish_shinde@syntelinc.com</NotificationEMailAddress><NotificationMessage>shipmentisdonetracpending</NotificationMessage></EmailLabelDetail></PendingShipmentDetail></SpecialServicesRequested><LabelSpecification><LabelFormatType>COMMON2D</LabelFormatType><ImageType>PNG</ImageType></LabelSpecification><RateRequestTypes>ACCOUNT</RateRequestTypes><PackageCount>1</PackageCount><PackageDetail>INDIVIDUAL_PACKAGES</PackageDetail><RequestedPackageLineItems><SequenceNumber>1</SequenceNumber><Weight><Units>LB</Units><Value>50.0</Value></Weight><Dimensions><Length>5</Length><Width>5</Width><Height>5</Height><Units>IN</Units></Dimensions><PhysicalPackaging>BAG</PhysicalPackaging><ItemDescription>Book</ItemDescription><CustomerReferences><CustomerReferenceType>CUSTOMER_REFERENCE</CustomerReferenceType><Value>NAFTA_COO</Value></CustomerReferences></RequestedPackageLineItems></RequestedShipment></CreatePendingShipmentRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>
0
 
webdorkAuthor Commented:
I think that all of it.
0
 
rdivilbissCommented:
In the first code block posted it has:

require_once('library/fedex-common.php5');

which is including an important piece of code so translating that into ASP would be a waste of time as ASP can't use the php library file.

In the second block of code there is the line (and others)

$client->__getLastRequest()

Which isn't translatable into ASP, (and which I should have looked for before I started translating the file.)

I'm almost certain the VB.NET and C# code will not translate to classic ASP either, which is why I asked for the PHP code.

Given the PHP specific instructions which won't translate into (10 year old) Classic ASP, (which has no SOAP support and PHP does and they are using it,) it would appear you are going to have to run the ASP.NET version.

I say run it, in that any IIS version since 5.1 will run .NET.

From the PHP code, it is clear there are some user specific values which will need to be entered into the code.  That will be the same with the .NET version no doubt.

Are you running your own server or using an ISP's server?

Rod

0
 
webdorkAuthor Commented:
I've have a dedicated server co located at MAXIMUMASP.  Both the C# and VB.NET sample files have multiple files that I'm not sure how to handle.  Do I need some application like Visual Studio to create a .net file or are those multiple files ready to run on the web server?

I've created a new Q here: http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/SOAP/Q_26078022.html
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

  • 10
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now