<?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.apache.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.apache.ofbiz.entity.GenericValue" mode="OUT" optional="true"/>
        <attribute name="currentPartyType" type="org.apache.ofbiz.entity.GenericValue" mode="OUT" optional="true"/>
        <attribute name="currentStateGeo" type="org.apache.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="performFindParty" engine="java"
        location="org.apache.ofbiz.party.party.PartyServices" invoke="performFindParty">
        <description>General Party Find Service, duplicated for screen widget purpose, Used in the new findparty page in the Party Manager, etc</description>
        <attribute name="roleTypeId" type="String" mode="IN" optional="true"/> <!-- can be null or ANY to include any -->
        <attribute name="noConditionFind" type="String" mode="IN" optional="true" default-value="N"/>
        <attribute name="extInfo" type="String" mode="IN" optional="true"/>
        <attribute name="extCond" type="org.apache.ofbiz.entity.condition.EntityCondition" mode="IN" optional="true">
            <description>EntityCondition that can be send to this service to manage complex search case</description>
        </attribute>
        <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="externalId" type="String" mode="IN" optional="true"/>
        <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="idValue" type="String" mode="IN" optional="true"/>
        <attribute name="partyIdentificationTypeId" 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="partyClassificationGroupId" type="String" mode="IN" optional="true"/>

        <attribute name="listIt" type="org.apache.ofbiz.entity.util.EntityListIterator" mode="OUT" optional="true"/>
    </service>

    <service name="getPartyContactMechValueMaps" engine="java"
            transaction-timeout="7200"
            location="org.apache.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.apache.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.apache.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.apache.ofbiz.entity.GenericValue" mode="OUT"/>
    </service>

    <service name="getPartyFromEmail" engine="java"
            location="org.apache.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.apache.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.apache.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.apache.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="getPartyFromExternalId" engine="java"
            location="org.apache.ofbiz.party.party.PartyServices" invoke="getPartyFromExternalId">
        <description>Gets a list of parties from a party externalId </description>
        <attribute name="externalId" type="String" mode="IN" optional="false"/>
        <attribute name="parties" type="java.util.List" mode="OUT" optional="true"/>
    </service>
    
    <service name="getPartiesByRelationship" engine="simple"
        location="component://party/minilang/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/minilang/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/minilang/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/minilang/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/minilang/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>
