<?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>Party Component Services</description>
    <vendor>OFBiz</vendor>
    <version>1.0</version>

    <!-- Party view services -->
    <service name="findParty" engine="java"
        location="org.ofbiz.party.party.PartyServices" invoke="findParty">
        <description>General Party Find Service, Used in the findparty page in the Party Manager, etc</description>
        <attribute name="extInfo" type="String" mode="IN" optional="true"/>
        <attribute name="roleTypeId" type="String" mode="IN" optional="true"/> <!-- can be null or ANY to include any -->
        <attribute name="VIEW_INDEX" type="String" mode="IN" optional="true"/>
        <attribute name="VIEW_SIZE" type="String" mode="IN" optional="true"/>
        <attribute name="lookupFlag" type="String" mode="IN" optional="true"/>
        <attribute name="showAll" type="String" mode="IN" optional="true"/>
        <attribute name="partyId" type="String" mode="IN" optional="true"/> <!-- does a LIKE compare on this, can do partial, case insensitive, etc -->
        <attribute name="partyTypeId" type="String" mode="IN" optional="true"/>
        <attribute name="userLoginId" type="String" mode="IN" optional="true"/> <!-- does a LIKE compare on this, can do partial, case insensitive, etc -->
        <attribute name="groupName" type="String" mode="IN" optional="true"/>
        <attribute name="firstName" type="String" mode="IN" optional="true"/>
        <attribute name="lastName" type="String" mode="IN" optional="true"/>
        <attribute name="address1" type="String" mode="IN" optional="true"/>
        <attribute name="address2" type="String" mode="IN" optional="true"/>
        <attribute name="city" type="String" mode="IN" optional="true"/>
        <attribute name="stateProvinceGeoId" type="String" mode="IN" optional="true"/>
        <attribute name="postalCode" type="String" mode="IN" optional="true"/>
        <attribute name="infoString" type="String" mode="IN" optional="true"/> <!-- the ContactMech infoString -->
        <attribute name="countryCode" type="String" mode="IN" optional="true"/>
        <attribute name="areaCode" type="String" mode="IN" optional="true"/>
        <attribute name="contactNumber" type="String" mode="IN" optional="true"/>
        <attribute name="inventoryItemId" type="String" mode="IN" optional="true"/> <!-- does a LIKE compare on this -->
        <attribute name="serialNumber" type="String" mode="IN" optional="true"/> <!-- does a LIKE compare on this -->
        <attribute name="softIdentifier" type="String" mode="IN" optional="true"/> <!-- does a LIKE compare on this -->
        <attribute name="partyRelationshipTypeId" type="String" mode="IN" optional="true"/>
        <attribute name="ownerPartyIds" type="List" mode="IN" optional="true"/><!-- Lead Owners Parties -->
        <attribute name="sortField" type="String" mode="IN" optional="true"/>

        <attribute name="roleTypes" type="List" mode="OUT" optional="false"/>
        <attribute name="partyTypes" type="List" mode="OUT" optional="false"/>
        <attribute name="currentRole" type="org.ofbiz.entity.GenericValue" mode="OUT" optional="true"/>
        <attribute name="currentPartyType" type="org.ofbiz.entity.GenericValue" mode="OUT" optional="true"/>
        <attribute name="currentStateGeo" type="org.ofbiz.entity.GenericValue" mode="OUT" optional="true"/>
        <attribute name="viewIndex" type="Integer" mode="OUT" optional="false"/>
        <attribute name="viewSize" type="Integer" mode="OUT" optional="false"/>
        <attribute name="partyList" type="List" mode="OUT" optional="false"/>
        <attribute name="partyListSize" type="Integer" mode="OUT" optional="false"/>
        <attribute name="paramList" type="String" mode="OUT" optional="false"/>
        <attribute name="highIndex" type="Integer" mode="OUT" optional="false"/>
        <attribute name="lowIndex" type="Integer" mode="OUT" optional="false"/>
        <attribute name="sortField" type="String" mode="OUT" optional="true"/>
    </service>

    <service name="getPartyContactMechValueMaps" engine="java"
            transaction-timeout="7200"
            location="org.ofbiz.party.contact.ContactMechServices" invoke="getPartyContactMechValueMaps" auth="true">
        <description>Get Contact Mechs associated with party. It produces a list of Maps (valueMaps) which can contain a list of contactMechPurposes, a partyContactMech Map, contactMechtype Map and a contactMech Map</description>
        <attribute name="partyId" type="String" mode="IN" optional="true"/>
        <attribute name="contactMechTypeId" type="String" mode="IN" optional="true"/>
        <attribute name="showOld" type="Boolean" mode="IN" optional="true"/>
        <attribute name="userLogin" type="org.ofbiz.entity.GenericValue" mode="IN" optional="true"/>
        <attribute name="valueMaps" type="java.util.List" mode="OUT" optional="true"/>
    </service>
    <service name="getPerson" engine="java"
            location="org.ofbiz.party.party.PartyServices" invoke="getPerson">
        <description>Gets a person entity from the cache/database</description>
        <attribute name="partyId" type="String" mode="IN"/>
        <attribute name="lookupPerson" type="org.ofbiz.entity.GenericValue" mode="OUT"/>
    </service>

    <service name="getPartyFromEmail" engine="java"
            location="org.ofbiz.party.party.PartyServices" invoke="getPartyFromEmail">
        <description>Gets a collection of parties from an email address</description>
        <attribute name="email" type="String" mode="IN"/>
        <attribute name="parties" type="java.util.Collection" mode="OUT" optional="true"/>
    </service>

    <service name="getPartyFromUserLogin" engine="java"
            location="org.ofbiz.party.party.PartyServices" invoke="getPartyFromUserLogin">
        <description>Gets a collection of parties from an email address</description>
        <attribute name="userLoginId" type="String" mode="IN"/>
        <attribute name="parties" type="java.util.Collection" mode="OUT" optional="true"/>
    </service>

    <service name="getPartyFromName" engine="java"
            location="org.ofbiz.party.party.PartyServices" invoke="getPartyFromPerson">
        <description>Gets a collection of parties from a first/last name</description>
        <attribute name="firstName" type="String" mode="IN" optional="true"/>
        <attribute name="lastName" type="String" mode="IN" optional="true"/>
        <attribute name="parties" type="java.util.Collection" mode="OUT" optional="true"/>
    </service>

    <service name="getPartyFromGroupName" engine="java"
            location="org.ofbiz.party.party.PartyServices" invoke="getPartyFromPartyGroup">
        <description>Gets a collection of parties from a party group namee</description>
        <attribute name="groupName" type="String" mode="IN" optional="false"/>
        <attribute name="parties" type="java.util.Collection" mode="OUT" optional="true"/>
    </service>

    <service name="getPartiesByRelationship" engine="simple"
        location="component://party/script/org/ofbiz/party/party/PartyServices.xml" invoke="getPartiesByRelationship">
        <description>Gets all parties related to partyIdFrom through the PartyRelationship entity</description>
        <auto-attributes mode="IN" include="all" optional="true" entity-name="PartyRelationship"/>
        <attribute name="parties" type="java.util.Collection" mode="OUT" optional="true"/>
        <override name="partyIdFrom" optional="false"/>
    </service>
    <service name="getRelatedParties" engine="simple"
            location="component://party/script/org/ofbiz/party/party/PartyServices.xml" invoke="getRelatedParties">
        <description>
            Get Parties Related to a Party
            - The relatedPartyIdList coming out will include the original partyIdFrom
            - The includeFromToSwitched and recurse attributes should by "Y" or "N" and default to N.
            - The useCache attribute should be "true" or "false", defaults to "false"
        </description>
        <attribute name="partyIdFrom" type="String" mode="IN" optional="false"/>
        <attribute name="partyRelationshipTypeId" type="String" mode="IN" optional="true"/>
        <attribute name="roleTypeIdFrom" type="String" mode="IN" optional="true"/>
        <attribute name="roleTypeIdFromInclueAllChildTypes" type="String" mode="IN" optional="true"/>
        <attribute name="roleTypeIdTo" type="String" mode="IN" optional="true"/>
        <attribute name="roleTypeIdToIncludeAllChildTypes" type="String" mode="IN" optional="true"/>
        <attribute name="includeFromToSwitched" type="String" mode="IN" optional="true"/>
        <attribute name="recurse" type="String" mode="IN" optional="true"/>
        <attribute name="useCache" type="String" mode="IN" optional="true"/>
        <attribute name="relatedPartyIdList" type="List" mode="OUT" optional="false"/>
    </service>

    <service name="getParentOrganizations" engine="simple"
            location="component://party/script/org/ofbiz/party/party/PartyServices.xml" invoke="getParentOrganizations">
        <description>
            Gets Parent Organizations for an Organization Party.
            This uses the PartyRelationship table with partyRelationshipTypeId="GROUP_ROLLUP".
            The Parent Organization will be in the relationship on either side with roleTypeId="PARENT_ORGANIZATION".
            The Child Organization will be in the relationship on either side with roleTypeId="ORGANIZATION_UNIT", or any child of that type.
            The getParentsOfParents attribute defaults to Y.
            The parentOrganizationPartyIdList coming out will contain the original organizationPartyId.
        </description>
        <attribute name="organizationPartyId" type="String" mode="IN" optional="false"/>
        <attribute name="getParentsOfParents" type="String" mode="IN" optional="true"/>
        <attribute name="parentOrganizationPartyIdList" type="List" mode="OUT" optional="false"/>
    </service>

    <service name="getChildRoleTypes" engine="simple"
            location="component://party/script/org/ofbiz/party/party/PartyServices.xml" invoke="getChildRoleTypes">
        <description>
            Get Child RoleTypes.
            The childRoleTypeIdList coming out will contain the original roleTypeId.
        </description>
        <attribute name="roleTypeId" type="String" mode="IN" optional="false"/>
        <attribute name="childRoleTypeIdList" type="List" mode="OUT" optional="false"/>
    </service>

    <!-- PostalAddressBoundary -->
    <service name="getPostalAddressBoundary" engine="simple"
            location="component://party/script/org/ofbiz/party/party/PartyServices.xml" invoke="getPostalAddressBoundary">
        <description>Get all Postal Address Boundaries</description>
        <permission-service service-name="partyBasePermissionCheck" main-action="VIEW"/>
        <attribute name="contactMechId" type="String" mode="IN" optional="false"/>
        <attribute name="geos" type="java.util.List" mode="OUT" optional="true"/>
    </service>
</services>
