<?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.apache.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.apache.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.apache.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>
