<?xml version="1.0" encoding="UTF-8" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/services.xsd">
  <description>DHL Shipment Interface Services, based on DHL ShipIt XML API</description>
  <vendor>OFBiz</vendor>
  <version>1.0</version>
  <!-- DHL Register Account API Services -->
  <service name="dhlRegisterAccount" engine="java" location="org.ofbiz.shipment.thirdparty.dhl.DhlServices" invoke="dhlRegisterInquire" auth="false">
    <description>DHL ShipIt Register Account inquire tool</description>
    <attribute name="postalCode" type="String" mode="IN" optional="false"/>
    <attribute name="shipmentGatewayConfigId" type="String" mode="IN" optional="false"/>
    <attribute name="configProps" type="String" mode="IN" optional="false"/>
    <attribute name="shippingKey" type="String" mode="OUT" optional="false"/>
  </service>
  <!-- DHL Rate API Services -->
   <service name="dhlRateEstimate" engine="java" location="org.ofbiz.shipment.thirdparty.dhl.DhlServices"
       invoke="dhlRateEstimate" auth="false">
    <description>DHL ShipIt rate inquire tool</description>
    <implements service="calcShipmentEstimateInterface"/>
    <attribute name="dhlRateCodeMap" type="Map" mode="OUT" optional="false"/>
  </service>
  <!-- DHL Lable API Services -->
  <service name="dhlShipmentConfirm" engine="java"
      location="org.ofbiz.shipment.thirdparty.dhl.DhlServices" invoke="dhlShipmentConfirm" auth="true" max-retry="3">
    <description>DHL Shipment Confirm</description>
    <auto-attributes entity-name="ShipmentRouteSegment" include="pk" mode="IN" optional="false"/>
  </service>
  <!-- TODO: void and track shipment services
    -->
</services>
