<?xml version="1.0"	encoding="UTF-8"?>

<!-- 
    NGNPro - SOAP/XML provisioning server for SIP Thor Platform

    WSDL description for the NGNPro API
    Version 6.1.3

    Copyright 2003-2025 AG Projects
    https://ag-projects.com
-->

<wsdl:definitions
	targetNamespace="urn:AGProjects:NGNPro"
	xmlns="http://schemas.xmlsoap.org/wsdl/"
	xmlns:apachesoap="http://xml.apache.org/xml-soap"
	xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
	xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:ngnpro="urn:AGProjects:NGNPro">

	<wsdl:types>
		<!-- package com.ag_projects.ngnpro -->
		<schema	targetNamespace="urn:AGProjects:NGNPro" xmlns="http://www.w3.org/2001/XMLSchema">
		
			<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
			
			<!-- Complex data types -->
			
			<complexType name="StringArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
					</restriction>
				</complexContent>
			</complexType>
			
			<complexType name="IntegerArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:integer[]"/>
					</restriction>
				</complexContent>
			</complexType>
			
			<complexType name="Range">
				<sequence>
					<element name="start" nillable="true" type="xsd:integer"/>
					<element name="count" nillable="true" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="SoapAuth">
				<sequence>
					<element name="username"    nillable="false" type="xsd:string"/>
					<element name="password"    nillable="false" type="xsd:string"/>
					<element name="admin"       nillable="true"  type="xsd:boolean"/>
					<element name="impersonate" nillable="true"  type="xsd:int"/>
				</sequence>
			</complexType>

	<!-- Customers Port

Multi-tenant functionality

The core of the multi-tenant functionality is based around the concept
of Customers.

Customers are entities created in the platform to store names,
address, billing and other information. Customers can also have
arbitrary attribute/value pairs stored in the properties attribute.

The Customers are stored in ngnpro database, in the customer table.

Each customer is assigned during creation by the server a unique id
and a reseller id. The reseller id has the role of grouping multiple
customers together. The concept is similar with how the users in a
Unix system work, where each user has a unique id and a group id. As
opposed to the Unix model, a customer can belong to a single reseller.

Customers having the id equal to the reseller_id are reffered as
resellers.

The customer ids can then be used for assignment of different record
types like SIP domains and ENUM ranges to them. The assignment is done
by setting the customer and reseller attribute of the record to be
equal to the customer id or reseller id respectively.

For example a SIP domain that has customer and reseller attributes set
cause all SIP accounts created under this domain share the same
customer and reseller too (because the SIP account always belong to a
domain). Same concept works for PSTN gateway groups, ENUM ranges and
DNS zones. At SIP account, SIP alias and ENUM number level another
attribute called owner exists. This owner attribute can be used to
assign or group individual records to entries in the customer table. 

It is possible to search for all entities in the platform by customer,
reseller and owner where applicable.

Multiple customers can be grouped together by assigning the same
reseller value to them. If the reseller property is not specified
during the creation of the customer entry, a new reseller id equal to
the customer id will be assigned, in fact creating a new Reseller in
the system. Only customer with specific rights can perform this
operation, see below for more about this functionality.

The customers table can then be used as a login database for
authenticating and authorizing SOAP/XML requests. The header of the
SOAP/XML request contains a username/password combination. If the
combination matches an entry in the customers table, all actions will
be performed in behalf of that customer. This means that any record
created will inherit the customer id and reseller id of the customer
and any modification will be checked for ownership before being
committed. This allows reseller to have limited access to the
platform based on rights assigned to them by the system administrator.

Conventions for resellers

A customer that is a reseller (the customer id is equal to reseller
id) is allowed to create other customers and records in the platform
if the resellerActive attribute of the customer is set to true.

The number of records each reseller is allowed to provision into the
platform is controlled by special properties belonging to the
reseller.

These special properties are:

  - sip_credit
  - sip_alias_credit    
  - enum_range_credit 
  - enum_number_credit
  - dns_zone_credit
  - email_credit

The same credit convention is valid for customers belonging to a
reseller. Each customer may create records within their own credit. 
The total of all records created by all customers may not exceed the
credit of the reseller. The server checks during creation of each
record if the quota has not been exceeded.

Convention for the properties attribute

As mentioned before each customer can have a list of attributed/value
pairs attached to them in the properties attribute, this allowing for
storage of arbitrary data with each customer. Each attribute has a
field called permission. The following rules apply:

* Properties having permission set to admin can be modified only by
  the administrator

* Properties having permission set to reseller can be modified by the
  administrator and their reseller

* Properties having other permission can be modified by their
  customer, their reseller or by the administrator

If the SIP domain of a SIP account belongs to a customer (the
customer_id != 0), the pstn access can be enabled only if the reseller
of that customer has pstn_access property set to 1.
      
        -->

			<complexType name="CustomerAccount">
				<sequence>
					<element name="id"           nillable="true" type="xsd:integer"/>
					<element name="reseller"     nillable="true" type="xsd:integer"/>
					<element name="impersonate"  nillable="true" type="xsd:integer"/>
					<element name="username"     nillable="true" type="xsd:string"/>
					<element name="password"     nillable="true" type="xsd:string"/>
					<element name="firstName"    nillable="true" type="xsd:string"/>
					<element name="lastName"     nillable="true" type="xsd:string"/>
					<element name="organization" nillable="true" type="xsd:string"/>
					<element name="vatNumber"    nillable="true" type="xsd:string"/>
					<element name="email"        nillable="true" type="xsd:string"/>
					<element name="web"          nillable="true" type="xsd:string"/>
					<element name="tel"          nillable="true" type="xsd:string"/>
					<element name="fax"          nillable="true" type="xsd:string"/>
					<element name="mobile"       nillable="true" type="xsd:string"/>
					<element name="sip"          nillable="true" type="xsd:string"/>
					<element name="enum"         nillable="true" type="xsd:string"/>
					<element name="address"      nillable="true" type="xsd:string"/>
					<element name="postcode"     nillable="true" type="xsd:string"/>
					<element name="city"         nillable="true" type="xsd:string"/>
					<element name="state"        nillable="true" type="xsd:string"/>
					<element name="country"      nillable="true" type="xsd:string"/>
					<element name="timezone"     nillable="true" type="xsd:string"/>
					<element name="language"     nillable="true" type="xsd:string"/>
					<element name="bankAccount"  nillable="true" type="xsd:string"/>
					<element name="billingAddress" nillable="true" type="xsd:string"/>
					<element name="billingEmail" nillable="true" type="xsd:string"/>
					<element name="balance"      nillable="true" type="xsd:double"/>
					<element name="credit"       nillable="true" type="xsd:double"/>
					<element name="companyCode"  nillable="true" type="xsd:string"/>
					<element name="resellerActive" nillable="true" type="xsd:boolean"/>
					<element name="changeDate"   nillable="true" type="xsd:string"/>
					<element name="properties"   nillable="true" type="ngnpro:CustomerPropertyArray"/>
				</sequence>
			</complexType>

			<complexType name="CustomerAccountArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:CustomerAccount[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="CustomerAccountList">
				<sequence>
				    <element name="accounts" nillable="false" type="ngnpro:CustomerAccountArray"/>
				    <element name="total"    nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="CustomerFilter">
				<sequence>
					<element name="username"     nillable="true"  type="xsd:string"/>
					<element name="firstName"    nillable="true"  type="xsd:string"/>
					<element name="lastName"     nillable="true"  type="xsd:string"/>
					<element name="organization" nillable="true"  type="xsd:string"/>
					<element name="tel"          nillable="true"  type="xsd:string"/>
					<element name="email"        nillable="true"  type="xsd:string"/>
					<element name="web"          nillable="true"  type="xsd:string"/>
					<element name="country"      nillable="true"  type="xsd:string"/>
					<element name="city"         nillable="true"  type="xsd:string"/>
					<element name="customer"     nillable="true"  type="xsd:integer"/>
					<element name="reseller"     nillable="true"  type="xsd:integer"/>
				</sequence>
			</complexType>

		    <simpleType name="CustomerOrderAttribute">
				<xsd:restriction base="xsd:string">
				    <xsd:enumeration value="username"/>
					<xsd:enumeration value="customer"/>
					<xsd:enumeration value="reseller"/>
					<xsd:enumeration value="firstName"/>
					<xsd:enumeration value="lastName"/>
					<xsd:enumeration value="organization"/>
				    <xsd:enumeration value="changeDate"/>
				</xsd:restriction>
		    </simpleType>

            <complexType name="CustomerOrder">
				<sequence>
				    <element name="attribute" nillable="false" type="ngnpro:CustomerOrderAttribute"/>
				    <element name="direction" nillable="false" type="ngnpro:SortDirection"/>
				</sequence>
		    </complexType>
 
            <complexType name="CustomerQuery">
                <sequence>
					<element name="filter"  nillable="false" type="ngnpro:CustomerFilter"/>
					<element name="orderBy" nillable="true"  type="ngnpro:CustomerOrder"/>
					<element name="range"   nillable="true"  type="ngnpro:Range"/>
		       </sequence>
		    </complexType>

			<complexType name="SipDomain">
				<sequence>
				    <element name="domain"       nillable="false" type="xsd:string"/>
					<element name="customer"     nillable="true"  type="xsd:integer"/>
					<element name="reseller"     nillable="true"  type="xsd:integer"/>
                                        <element name="certificate"     nillable="true"  type="xsd:string"/>
                                        <element name="private_key"     nillable="true"  type="xsd:string"/>
                                        <element name="ca_list"     nillable="true"  type="xsd:string"/>
                                        <element name="ca_dir"     nillable="true"  type="xsd:string"/>
                                        <element name="crl_dir"     nillable="true"  type="xsd:string"/>
                                        <element name="method"     nillable="true"  type="xsd:string"/>
                                        <element name="match_ip_address"     nillable="true"  type="xsd:string"/>
                                        <element name="match_sip_domain"     nillable="true"  type="xsd:string"/>
                                        <element name="verify_cert"     nillable="true" type="xsd:boolean"/>
                                        <element name="require_cert"     nillable="true" type="xsd:boolean"/>
                                        <element name="crl_check_all"     nillable="true" type="xsd:boolean"/>
				    <element name="changeDate"   nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>

			<complexType name="SipDomainArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:SipDomain[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="SipDomainList">
				<sequence>
				    <element name="domains" nillable="false" type="ngnpro:SipDomainArray"/>
				    <element name="total"   nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="SipDomainFilter">
				<sequence>
					<element name="domain"    nillable="true"  type="xsd:string"/>
					<element name="customer"  nillable="true"  type="xsd:integer"/>
					<element name="reseller"  nillable="true"  type="xsd:integer"/>
				</sequence>
			</complexType>

		    <simpleType name="SipDomainOrderAttribute">
				<xsd:restriction base="xsd:string">
				    <xsd:enumeration value="domain"/>
				    <xsd:enumeration value="changeDate"/>
				</xsd:restriction>
		    </simpleType>

            <complexType name="SipDomainOrder">
				<sequence>
				    <element name="attribute" nillable="false" type="ngnpro:SipDomainOrderAttribute"/>
				    <element name="direction" nillable="false" type="ngnpro:SortDirection"/>
				</sequence>
		    </complexType>
 
            <complexType name="SipDomainQuery">
                <sequence>
					<element name="filter"  nillable="false" type="ngnpro:SipDomainFilter"/>
					<element name="orderBy" nillable="true"  type="ngnpro:SipDomainOrder"/>
					<element name="range"   nillable="true"  type="ngnpro:Range"/>
		       </sequence>
		    </complexType>

			<!-- Sip -->
            <simpleType name="TrustedPeerProtocol">
                <restriction base="xsd:string">
                    <enumeration value="any"/>
                    <enumeration value="udp"/>
                    <enumeration value="tcp"/>
                    <enumeration value="tls"/>
                    <enumeration value="none"/>
                </restriction>
            </simpleType>

		<!-- 
			Trusted peers are allowed to initiate SIP sessions without digest authorization. 
			Trusted peers are identified by their source IP address or MS Teams domain
		-->

			<complexType name="TrustedPeer">
				<sequence>
					<element name="ip"           nillable="false" type="xsd:string"/>
					<element name="tenant"       nillable="true"  type="xsd:string"/>
					<element name="carrierName"  nillable="true"  type="xsd:string"/>
					<element name="originator"   nillable="true"  type="xsd:string"/>
					<element name="protocol"     nillable="true"  type="ngnpro:TrustedPeerProtocol" default="any"/>
					<element name="tag"          nillable="true"  type="xsd:string"/>
                                        <element name="callLimit"    nillable="true"  type="xsd:int"/>
                                        <element name="msteams"      nillable="true"  type="xsd:boolean"/>
                                        <element name="authToken"    nillable="true"  type="xsd:string" default=""/>
                                        <element name="prepaid"      nillable="true"  type="xsd:boolean"/>
                                        <element name="enumLookup"   nillable="true"  type="xsd:boolean"/>
                                        <element name="transit"      nillable="true"  type="xsd:boolean"/>
                                        <element name="blocked"      nillable="true"  type="xsd:int"/>
                                        <element name="prefix"       nillable="true" type="xsd:string"/>
                                        <element name="strip"        nillable="true" type="xsd:nonNegativeInteger"/>
					<element name="description"  nillable="true"  type="xsd:string" default=""/>
                                        <element name="tags"         nillable="true"  type="xsd:string" default=""/>
                                        <element name="billingId"    nillable="true"  type="xsd:string" default=""/>
					<element name="reseller"     nillable="true"  type="xsd:integer"/>
					<element name="changeDate"   nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>

			<complexType name="TrustedPeerArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:TrustedPeer[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="TrustedPeerList">
				<sequence>
				    <element name="peers"  nillable="false" type="ngnpro:TrustedPeerArray"/>
				    <element name="total"  nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="TrustedPeerFilter">
				<sequence>
					<element name="ip"          nillable="true"  type="xsd:string"/>
					<element name="tenant"      nillable="true"  type="xsd:string"/>
					<element name="tag"         nillable="true"  type="xsd:string"/>
					<element name="tags"        nillable="true"  type="xsd:string"/>
					<element name="billingId"   nillable="true"  type="xsd:string"/>
					<element name="description" nillable="true"  type="xsd:string"/>
					<element name="msteams"     nillable="true"  type="xsd:boolean"/>
					<element name="blocked"     nillable="true"  type="xsd:int"/>
					<element name="reseller"    nillable="true"  type="xsd:integer"/>
				</sequence>
			</complexType>

		    <simpleType name="TrustedPeerOrderAttribute">
				<xsd:restriction base="xsd:string">
				    <xsd:enumeration value="description"/>
                    <xsd:enumeration value="ip"/>
				</xsd:restriction>
            </simpleType>
            
            <complexType name="TrustedPeerOrder">
                <sequence>
                    <element name="attribute" nillable="false" type="ngnpro:TrustedPeerOrderAttribute"/>
                    <element name="direction" nillable="false" type="ngnpro:SortDirection"/>
                </sequence>
            </complexType>

            <complexType name="TrustedPeerQuery">
                <sequence>
    		        <element name="filter"  nillable="false" type="ngnpro:TrustedPeerFilter"/>
	    	        <element name="orderBy" nillable="true"  type="ngnpro:TrustedPeerOrder"/>
		            <element name="range"   nillable="true"  type="ngnpro:Range"/>
		        </sequence>
            </complexType>

            <complexType name="GatewayRule">
                <sequence>
                    <element name="id"          nillable="true" type="xsd:integer"/>
                    <element name="gateway_id"  nillable="true" type="xsd:integer"/>
                    <element name="gateway"     nillable="true" type="xsd:string"/>
                    <element name="carrier_id"  nillable="true" type="xsd:integer"/>
                    <element name="carrier"     nillable="true" type="xsd:string"/>
                    <element name="prefix"      nillable="true" type="xsd:string"/>
                    <element name="strip"       nillable="true" type="xsd:nonNegativeInteger"/>
                    <element name="prepend"     nillable="true" type="xsd:string"/>
                    <element name="minLength"   nillable="true" type="xsd:nonNegativeInteger"/>
                    <element name="maxLength"   nillable="true" type="xsd:nonNegativeInteger"/>
					<element name="reseller"    nillable="true" type="xsd:integer"/>
					<element name="changeDate"  nillable="true" type="xsd:string"/>
                </sequence>
            </complexType>

			<complexType name="GatewayRuleArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:GatewayRule[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="GatewayRuleList">
				<sequence>
				    <element name="gateway_rules" nillable="false" type="ngnpro:GatewayRuleArray"/>
				    <element name="total"    nillable="false" type="xsd:int"/>
				</sequence>
            </complexType>

			<complexType name="GatewayRuleFilter">
				<sequence>
					<element name="id"          nillable="true"  type="xsd:integer"/>
                    <element name="gateway_id"  nillable="true"  type="xsd:integer"/>
					<element name="gateway"     nillable="true"  type="xsd:string"/>
                    <element name="carrier_id"  nillable="true"  type="xsd:integer"/>
					<element name="carrier"     nillable="true"  type="xsd:string"/>
                    <element name="reseller"    nillable="true"  type="xsd:integer"/>
                    <element name="prefix"      nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>

		    <simpleType name="GatewayRuleOrderAttribute">
              <xsd:restriction base="xsd:string">
                <xsd:enumeration value="gateway"/>
                <xsd:enumeration value="carrier"/>
                <xsd:enumeration value="prefix"/>
				<xsd:enumeration value="changeDate"/>
              </xsd:restriction>
            </simpleType>
            
            <complexType name="GatewayRuleOrder">
              <sequence>
                <element name="attribute" nillable="false" type="ngnpro:GatewayRuleOrderAttribute"/>
                <element name="direction" nillable="false" type="ngnpro:SortDirection"/>
              </sequence>
            </complexType>

            <complexType name="GatewayRuleQuery">
              <sequence>
		        <element name="filter"  nillable="false" type="ngnpro:GatewayRuleFilter"/>
		        <element name="orderBy" nillable="true"  type="ngnpro:GatewayRuleOrder"/>
		        <element name="range"   nillable="true"  type="ngnpro:Range"/>
		      </sequence>
            </complexType>

			<complexType name="Gateway">
				<sequence>
                    <element name="id"         nillable="true"  type="xsd:integer"/>
					<element name="name"       nillable="true" type="xsd:string"/>
					<element name="carrier_id" nillable="true"  type="xsd:integer"/>
					<element name="carrier"    nillable="true"  type="xsd:string"/>
					<element name="ip"         nillable="true"  type="xsd:string"/>
					<element name="port"       nillable="true"  type="xsd:nonNegativeInteger"    default="5060"/>
                    <element name="transport"  nillable="true"  type="xsd:string" default="udp"/>
                    <element name="flags"      nillable="true"  type="xsd:integer"/>
					<element name="reseller"   nillable="true"  type="xsd:integer"/>
					<element name="changeDate" nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>

			<complexType name="GatewayFilter">
				<sequence>
                    <element name="id"          nillable="true"  type="xsd:integer"/>
					<element name="name"        nillable="true"  type="xsd:string"/>
					<element name="carrier_id"  nillable="true"  type="xsd:integer"/>
					<element name="carrier"     nillable="true"  type="xsd:string"/>
					<element name="reseller"    nillable="true"  type="xsd:integer"/>
				</sequence>
			</complexType>

		    <simpleType name="GatewayOrderAttribute">
              <xsd:restriction base="xsd:string">
                <xsd:enumeration value="name"/>
                <xsd:enumeration value="carrier"/>
                <xsd:enumeration value="ip"/>
				<xsd:enumeration value="prefix"/>
				<xsd:enumeration value="changeDate"/>
              </xsd:restriction>
            </simpleType>
            
            <complexType name="GatewayOrder">
              <sequence>
                <element name="attribute" nillable="false" type="ngnpro:GatewayOrderAttribute"/>
                <element name="direction" nillable="false" type="ngnpro:SortDirection"/>
              </sequence>
            </complexType>

            <complexType name="GatewayQuery">
              <sequence>
		        <element name="filter"  nillable="false" type="ngnpro:GatewayFilter"/>
		        <element name="orderBy" nillable="true"  type="ngnpro:GatewayOrder"/>
		        <element name="range"   nillable="true"  type="ngnpro:Range"/>
		      </sequence>
            </complexType>

			<complexType name="GatewayArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:Gateway[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="GatewayList">
				<sequence>
				    <element name="gateways" nillable="false" type="ngnpro:GatewayArray"/>
				    <element name="total"    nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="Carrier">
				<sequence>
                    <element name="id"          nillable="true"  type="xsd:integer"/>
					<element name="name"        nillable="true"  type="xsd:string"/>
					<element name="portability" nillable="true"  type="xsd:boolean"/>
					<element name="reseller"    nillable="true"  type="xsd:integer"/>
					<element name="changeDate"  nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>

			<complexType name="CarrierFilter">
				<sequence>
                    <element name="id"          nillable="true"  type="xsd:integer"/>
					<element name="name"        nillable="true"  type="xsd:string"/>
					<element name="portability" nillable="true"  type="xsd:boolean"/>
					<element name="reseller"    nillable="true"  type="xsd:integer"/>
				</sequence>
			</complexType>

		    <simpleType name="CarrierOrderAttribute">
              <xsd:restriction base="xsd:string">
                <xsd:enumeration value="name"/>
				<xsd:enumeration value="changeDate"/>
              </xsd:restriction>
            </simpleType>
            
            <complexType name="CarrierOrder">
              <sequence>
                <element name="attribute" nillable="false" type="ngnpro:CarrierOrderAttribute"/>
                <element name="direction" nillable="false" type="ngnpro:SortDirection"/>
              </sequence>
            </complexType>

            <complexType name="CarrierQuery">
              <sequence>
		        <element name="filter"  nillable="false" type="ngnpro:CarrierFilter"/>
		        <element name="orderBy" nillable="true"  type="ngnpro:CarrierOrder"/>
		        <element name="range"   nillable="true"  type="ngnpro:Range"/>
		      </sequence>
            </complexType>

			<complexType name="CarrierArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:Carrier[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="CarrierList">
				<sequence>
				    <element name="carriers" nillable="false" type="ngnpro:CarrierArray"/>
				    <element name="total"  nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

            <complexType name="Route">
              <sequence>
				<element name="id"           nillable="true"  type="xsd:integer"/>
		        <element name="prefix"       nillable="true"  type="xsd:string"/>
		        <element name="carrier_id"   nillable="true"  type="xsd:integer"/>
		        <element name="carrier"      nillable="true"  type="xsd:string"/>
                <element name="priority"     nillable="true"  type="xsd:int"/>
                <element name="originator"   nillable="true"  type="xsd:string"/>
				<element name="reseller"     nillable="true"  type="xsd:integer"/>
				<element name="changeDate"   nillable="true"  type="xsd:string"/>
		      </sequence>
            </complexType>

			<complexType name="RouteFilter">
                <sequence>
                    <element name="id"           nillable="true"  type="xsd:integer"/>
					<element name="prefix"       nillable="true"  type="xsd:string"/>
					<element name="carrier_id"   nillable="true"  type="xsd:integer"/>
					<element name="carrier"      nillable="true"  type="xsd:string"/>
					<element name="reseller"     nillable="true"  type="xsd:integer"/>
				</sequence>
			</complexType>

		    <simpleType name="RouteOrderAttribute">
              <xsd:restriction base="xsd:string">
                <xsd:enumeration value="prefix"/>
				<xsd:enumeration value="priority"/>
				<xsd:enumeration value="changeDate"/>
              </xsd:restriction>
            </simpleType>
            
            <complexType name="RouteOrder">
              <sequence>
                <element name="attribute" nillable="false" type="ngnpro:RouteOrderAttribute"/>
                <element name="direction" nillable="false" type="ngnpro:SortDirection"/>
              </sequence>
            </complexType>

            <complexType name="RouteQuery">
              <sequence>
		        <element name="filter"  nillable="false" type="ngnpro:RouteFilter"/>
		        <element name="orderBy" nillable="true"  type="ngnpro:RouteOrder"/>
		        <element name="range"   nillable="true"  type="ngnpro:Range"/>
		      </sequence>
            </complexType>

			<complexType name="RouteArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:Route[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="RouteList">
				<sequence>
				    <element name="routes"  nillable="false" type="ngnpro:RouteArray"/>
				    <element name="total"   nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="SipId">
				<sequence>
					<element name="username" nillable="false" type="xsd:string"/>
					<element name="domain"   nillable="false" type="xsd:string"/>
				</sequence>
			</complexType>
			
			<complexType name="SipIdArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:SipId[]"/>
					</restriction>
				</complexContent>
			</complexType>

            <complexType name="SubscriberACL">
                <sequence>
                    <element name="ip"            nillable="false" type="xsd:string"/>
                    <element name="mask"          nillable="false" type="xsd:integer" default="32"/>
                    <element name="port"          nillable="false" type="xsd:integer" default="0"/>
                    <element name="protocol"     nillable="false"  type="ngnpro:TrustedPeerProtocol" default="any"/>
                    <element name="tag"           nillable="true" type="xsd:string"/>
                    <element name="description"  nillable="false" type="xsd:string" default=""/>
                </sequence>
            </complexType>

            <complexType name="SubscriberACLArray">
                <complexContent>
                    <restriction base="soapenc:Array">
                        <attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:SubscriberACL[]"/>
                    </restriction>
                </complexContent>
            </complexType>

			<complexType name="Property">
				<sequence>
					<element name="name"  nillable="false" type="xsd:string"/>
					<element name="value" nillable="false" type="xsd:string"/>
				</sequence>
			</complexType>
			
			<complexType name="PropertyArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:Property[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="CustomerProperty">
				<sequence>
					<element name="name"       nillable="false" type="xsd:string"/>
					<element name="value"      nillable="false" type="xsd:string"/>
					<element name="permission" nillable="false" type="xsd:string"/>
					<element name="category"   nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>
			
			<complexType name="CustomerPropertyArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:CustomerProperty[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="SipAccount">
				<sequence>
					<element name="id"              nillable="false" type="ngnpro:SipId"/>
					<element name="password"        nillable="true"  type="xsd:string"/>
					<element name="ha1"             nillable="true"  type="xsd:string"/>
					<element name="ha1b"            nillable="true"  type="xsd:string"/>
					<element name="firstName"       nillable="true"  type="xsd:string"/>
					<element name="lastName"        nillable="true"  type="xsd:string"/>
					<element name="email"           nillable="true"  type="xsd:string"/>
                                        <element name="acl"             nillable="true"  type="ngnpro:SubscriberACLArray"/>
					<element name="groups"          nillable="true"  type="ngnpro:StringArray"/>
					<element name="properties"      nillable="true"  type="ngnpro:PropertyArray"/>
					<element name="timezone"        nillable="true"  type="xsd:string"/>
					<element name="rpid"            nillable="true"  type="xsd:string"/>
					<element name="quota"           nillable="true"  type="xsd:int"/>
					<element name="quickdialPrefix" nillable="true"  type="xsd:string"/>
                                        <element name="callLimit"       nillable="true"  type="xsd:int"/>
					<element name="prepaid"         nillable="true"  type="xsd:boolean"/>
					<element name="region"          nillable="true"  type="xsd:string"/>
					<element name="timeout"         nillable="true"  type="xsd:nonNegativeInteger"/>
					<element name="owner"           nillable="true"  type="xsd:integer"/>
					<element name="customer"        nillable="true"  type="xsd:integer"/>
					<element name="reseller"        nillable="true"  type="xsd:integer"/>
					<element name="changeDate"      nillable="true"  type="xsd:string"/>
					<element name="createDate"      nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>

			<!--
			Meaning of SIPAccount attributes:

			- rpid: caller id presented to the callee when calling to PSTN destinations
			- prepaid: if true, subscriber may call within the limit of its prepaid balance
			- properties: list with attribute/value pairs, used to store arbitrary data per subscriber
			- quota: if set to a possitive integer, the subscriber may call to the PSTN up to this limit, the usage is reset each calendar month
			- region: label that matches a region when calling an emergency number, the call is routed to the emergency point defined for that region
			- callLimit: maximum amount of concurrent calls allowed
			- groups: group membership for SIP accounts. Available groups and their meaning:
				- free-pstn: subscriber may call to PSTN destinations
				- blocked: only calls to emergency numbers defind in the SIP Proxy are allowed
				- anonymous: hide caller id when calling to the PSTN (using Privacy headers)
				- anonymous-reject: reject calls from anonymous@anonymous.invalid
				- quota: subscriber has been blocked because monthy quota has been exceeded, calls to PSTN destinations are denied

				Reserved groups for internal use (do not change them):
					- prepaid, intercept

			On updateAccount() operation all attributes must be
			supplied otherwise any missing attribute will be
			deleted.  First perform a getAccount() operation,
			update the attributes that need to be changed and
			finally perform an updateAccount() with the modified
			object.
                        -->

			<complexType name="SipAccountArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:SipAccount[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="SipAccountList">
				<sequence>
				    <element name="accounts" nillable="false" type="ngnpro:SipAccountArray"/>
				    <element name="total"    nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="SipAccountFilter">
				<sequence>
					<element name="username"  nillable="true"  type="xsd:string"/>
					<element name="domain"    nillable="true"  type="xsd:string"/>
					<element name="firstName" nillable="true"  type="xsd:string"/>
					<element name="lastName"  nillable="true"  type="xsd:string"/>
					<element name="email"     nillable="true"  type="xsd:string"/>
					<element name="groups"    nillable="true"  type="ngnpro:StringArray"/>
					<element name="owner"     nillable="true"  type="xsd:integer"/>
					<element name="customer"  nillable="true"  type="xsd:integer"/>
					<element name="reseller"  nillable="true"  type="xsd:integer"/>
				</sequence>
			</complexType>

      <simpleType name="SortDirection">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="ASC"/>
          <xsd:enumeration value="DESC"/>
        </xsd:restriction>
      </simpleType>

      <simpleType name="SipOrderAttribute">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="username"/>
          <xsd:enumeration value="domain"/>
          <xsd:enumeration value="name"/>
          <xsd:enumeration value="quota"/>
          <xsd:enumeration value="changeDate"/>
          <xsd:enumeration value="createDate"/>
        </xsd:restriction>
      </simpleType>

      <complexType name="SipOrder">
        <sequence>
          <element name="attribute" nillable="false" type="ngnpro:SipOrderAttribute"/>
          <element name="direction" nillable="false" type="ngnpro:SortDirection"/>
        </sequence>
      </complexType>

      <complexType name="SipQuery">
        <sequence>
					<element name="filter"  nillable="false" type="ngnpro:SipAccountFilter"/>
					<element name="orderBy" nillable="true"  type="ngnpro:SipOrder"/>
					<element name="range"   nillable="true"  type="ngnpro:Range"/>
				</sequence>
			</complexType>

			<complexType name="SipAlias">
				<sequence>
					<element name="id"         nillable="false" type="ngnpro:SipId"/>
					<element name="target"     nillable="true"  type="ngnpro:SipId"/>
					<element name="owner"      nillable="true"  type="xsd:integer"/>
					<element name="customer"   nillable="true"  type="xsd:integer"/>
					<element name="reseller"   nillable="true"  type="xsd:integer"/>
					<element name="changeDate" nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>

			<complexType name="SipAliasArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:SipAlias[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="SipAliasList">
				<sequence>
				    <element name="aliases" nillable="false" type="ngnpro:SipAliasArray"/>
				    <element name="total"   nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="AliasFilter">
				<sequence>
					<element name="aliasUsername"  nillable="true"  type="xsd:string"/>
					<element name="aliasDomain"    nillable="true"  type="xsd:string"/>
					<element name="targetUsername" nillable="true"  type="xsd:string"/>
					<element name="targetDomain"   nillable="true"  type="xsd:string"/>
					<element name="owner"          nillable="true"  type="xsd:integer"/>
					<element name="customer"       nillable="true"  type="xsd:integer"/>
					<element name="reseller"       nillable="true"  type="xsd:integer"/>
				</sequence>
			</complexType>

      <simpleType name="AliasOrderAttribute">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="aliasUsername"/>
          <xsd:enumeration value="aliasDomain"/>
          <xsd:enumeration value="targetUsername"/>
          <xsd:enumeration value="targetDomain"/>
		  <xsd:enumeration value="changeDate"/>
        </xsd:restriction>
      </simpleType>
      
      <complexType name="AliasOrder">
        <sequence>
          <element name="attribute" nillable="false" type="ngnpro:AliasOrderAttribute"/>
          <element name="direction" nillable="false" type="ngnpro:SortDirection"/>
        </sequence>
      </complexType>
      
      <complexType name="AliasQuery">
        <sequence>
          <element name="filter"  nillable="false" type="ngnpro:AliasFilter"/>
          <element name="orderBy" nillable="true"  type="ngnpro:AliasOrder"/>
          <element name="range"   nillable="true"  type="ngnpro:Range"/>
        </sequence>
      </complexType>

      <complexType name="PhonebookEntry">
				<sequence>
					<element name="uri"    nillable="false"  type="xsd:string"/>
					<element name="name"   nillable="true"  type="xsd:string"/>
					<element name="group"  nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>

			<complexType name="PhonebookEntryArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:PhonebookEntry[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="PhonebookEntryList">
				<sequence>
				    <element name="entries"  nillable="false" type="ngnpro:PhonebookEntryArray"/>
					<element name="total"    nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>
			
			<!-- Accept/Reject -->

			<complexType name="TemporaryAccept">
				<sequence>
				    <element name="groups"   nillable="true" type="ngnpro:StringArray"/>
					<element name="duration" nillable="true" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="PersistentAccept">
				<sequence>
				    <element name="groups"   nillable="false" type="ngnpro:StringArray"/>
					<element name="start"    nillable="true"  type="xsd:string"/>
					<element name="stop"     nillable="true"  type="xsd:string"/>
					<element name="days"     nillable="true"  type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="PersistentAcceptArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:PersistentAccept[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="AcceptRules">
				<sequence>
				    <element name="temporary"   nillable="true" type="ngnpro:TemporaryAccept"/>
					<element name="persistent"  nillable="true" type="ngnpro:PersistentAcceptArray"/>
				</sequence>
			</complexType>

			<complexType name="AcceptRulesReturn">
				<sequence>
				    <element name="rules"           nillable="false" type="ngnpro:AcceptRules"/>
					<element name="nonEmptyGroups"  nillable="false" type="ngnpro:StringArray"/>
				</sequence>
			</complexType>

			<complexType name="PrepaidCard">
				<sequence>
					<element name="id"     nillable="false" type="xsd:integer"/>
					<element name="number" nillable="false" type="xsd:string"/>
				</sequence>
			</complexType>

			<complexType name="PrepaidStatus">
				<sequence>
					<element name="balance"        nillable="false" type="xsd:double"/>
                    <element name="activeSessions" nillable="false" type="xsd:string"/>
				</sequence>
			</complexType>

			<complexType name="PrepaidStatusArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:PrepaidStatus[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="PrepaidBalanceInfo">
				<sequence>
					<element name="old_balance" nillable="false" type="xsd:double"/>
					<element name="new_balance" nillable="false" type="xsd:double"/>
				</sequence>
			</complexType>

			<complexType name="CreditHistory">
				<sequence>
					<element name="date"        nillable="false" type="xsd:string"/>
					<element name="action"      nillable="false" type="xsd:string"/>
					<element name="description" nillable="false" type="xsd:string"/>
					<element name="value"       nillable="false" type="xsd:double"/>
                    <element name="balance"     nillable="false" type="xsd:double"/>
                    <element name="session"     nillable="false" type="xsd:string"/>
                    <element name="reseller"    nillable="false" type="xsd:integer"/>
				</sequence>
			</complexType>

			<complexType name="CreditHistoryArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:CreditHistory[]"/>
					</restriction>
				</complexContent>
            </complexType>

			<complexType name="CreditHistoryList">
				<sequence>
				    <element name="entries"  nillable="false" type="ngnpro:CreditHistoryArray"/>
					<element name="total"    nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<!-- Voicemail -->
			<complexType name="VoicemailOptions">
				<sequence>
					<element name="delete" nillable="false" type="xsd:boolean"/>
				</sequence>
			</complexType>

			<complexType name="VoicemailAccount">
				<sequence>
					<!-- password should be digits only -->
					<element name="sipId"    nillable="false" type="ngnpro:SipId"/>
					<element name="mailbox"  nillable="true"  type="xsd:string"/>
					<element name="password" nillable="true"  type="xsd:string"/>
					<element name="name"     nillable="true"  type="xsd:string"/>
					<element name="email"    nillable="true"  type="xsd:string"/>
					<element name="options"  nillable="true"  type="ngnpro:VoicemailOptions"/>
					<element name="info"     nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>
			
			<complexType name="CallDiversions">
				<sequence>
					<!--
						FUNC - forward unconditionally
						FNOL - forward if not online
						FUNV - forward if not available
						FNOA - forward if no answer
						FBUS - forward if busy
						RUNC - redirect unconditionally
						RNOL - redirect if not online
						RUNV - redirect if not available
						RNOA - redirect if no answer
						RBUS - redirect if busy
            
            - Forward conditions cause the traffic to be routed and accounted through the SIP Proxy
            - Redirect conditions cause traffic to be made directly between the caller and end destination, 
              bypassing the SIP Proxy
            - Always used FXXX conditions when accounting is desired
            
					-->	
					<element name="FUNC" nillable="true" type="xsd:string"/>
					<element name="FNOL" nillable="true" type="xsd:string"/>
					<element name="FUNV" nillable="true" type="xsd:string"/>
					<element name="FNOA" nillable="true" type="xsd:string"/>
					<element name="FBUS" nillable="true" type="xsd:string"/>
					<element name="RUNC" nillable="true" type="xsd:string"/>
					<element name="RNOL" nillable="true" type="xsd:string"/>
					<element name="RUNV" nillable="true" type="xsd:string"/>
					<element name="RNOA" nillable="true" type="xsd:string"/>
					<element name="RBUS" nillable="true" type="xsd:string"/>
				</sequence>
			</complexType>
			
			<complexType name="CallInfo">
				<sequence>
					<element name="sessionId"        nillable="false" type="xsd:string"/>
					<element name="fromURI"          nillable="false" type="xsd:string"/>
					<element name="fromHeader"       nillable="false" type="xsd:string"/>
					<element name="toURI"            nillable="false" type="xsd:string"/>
					<element name="translatedURI"    nillable="true"  type="xsd:string"/>
					<element name="canonicalURI"     nillable="true"  type="xsd:string"/>
					<element name="status"           nillable="false" type="xsd:string"/>
					<element name="startTime"        nillable="false" type="xsd:int"/>
					<element name="stopTime"         nillable="true"  type="xsd:int"/>
					<element name="duration"         nillable="false" type="xsd:int"/>
					<element name="price"            nillable="true"  type="xsd:double"/>
					<element name="callerBytes"      nillable="false" type="xsd:int"/>
					<element name="calledBytes"      nillable="false" type="xsd:int"/>
					<element name="callerUserAgent"  nillable="true"  type="xsd:string"/>
					<element name="calledUserAgent"  nillable="true"  type="xsd:string"/>
					<element name="codecs"           nillable="true"  type="ngnpro:StringArray"/>
					<element name="applicationTypes" nillable="true"  type="ngnpro:StringArray"/>
					<element name="rate"             nillable="false" type="xsd:string"/>
				</sequence>
			</complexType>
			
			<complexType name="CallInfoArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:CallInfo[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="CallStatistics">
				<sequence>
					<element name="calls"    nillable="false" type="xsd:int"/>
					<element name="duration" nillable="false" type="xsd:int"/>
					<element name="price"    nillable="false" type="xsd:double"/>
				</sequence>
			</complexType>
			
			<complexType name="CallQuery">
				<sequence>
					<element name="fromDate" nillable="true" type="xsd:int"/>
					<element name="toDate"   nillable="true" type="xsd:int"/>
					<!-- search is a feature to be added in a future version (currently ignored). -->
					<element name="search"   nillable="true" type="xsd:string"/>
					<element name="limit"    nillable="true" type="xsd:int"/>
				</sequence>
			</complexType>
			
			<complexType name="CallsQuery">
				<sequence>
					<element name="placed"   nillable="true" type="ngnpro:CallQuery"/>
					<element name="received" nillable="true" type="ngnpro:CallQuery"/>
				</sequence>
			</complexType>
			
			<complexType name="SipDeviceLocation">
				<sequence>
					<element name="address"            nillable="false" type="xsd:string"/>
					<element name="port"               nillable="false" type="xsd:int"/>
					<element name="publicAddress"      nillable="false" type="xsd:string"/>
					<element name="publicPort"         nillable="false" type="xsd:int"/>
					<element name="userAgent"          nillable="false" type="xsd:string"/>
					<element name="registrationPeriod" nillable="false" type="xsd:int"/>
					<element name="expires"            nillable="false" type="xsd:int"/>
					<element name="transport"          nillable="false" type="xsd:string"/>
				</sequence>
			</complexType>
			
			<complexType name="SipDeviceLocationArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:SipDeviceLocation[]"/>
					</restriction>
				</complexContent>
			</complexType>
			
			<complexType name="SipOnlineDevices">
				<sequence>
					<element name="sipId"     nillable="false" type="ngnpro:SipId"/>
					<element name="locations" nillable="true"  type="ngnpro:SipDeviceLocationArray"/>
				</sequence>
			</complexType>
			
			<complexType name="SipOnlineDevicesArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:SipOnlineDevices[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="SipTraceFilter">
				<sequence>
					<element name="nodeIp"    nillable="false" type="xsd:string"/>
					<element name="callId"    nillable="false" type="xsd:string"/>
					<element name="fromTag"   nillable="false" type="xsd:string"/>
					<element name="toTag"     nillable="true" type="xsd:string"/>
				</sequence>
            </complexType>

			<complexType name="MediaTraceFilter">
				<sequence>
					<element name="nodeIp"    nillable="false" type="xsd:string"/>
					<element name="callId"    nillable="false" type="xsd:string"/>
					<element name="fromTag"   nillable="false" type="xsd:string"/>
					<element name="toTag"     nillable="true" type="xsd:string"/>
				</sequence>
            </complexType>

			<!-- 
			ENUM

                        For each number prefix assigned to the operator an ENUM range must be created to hold 
			the telephone numbers assigned to subscribers
			
			Examples:

                        - 31 is the prefix for country code +31 The Netherlands
                        - 4031710 is the prefix for a Romanian VoIP operator +4031710
			
			The Top Level Domain must be the same as in the equipment 
			that does the ENUM queries in the ENUM server

			 -->
			<complexType name="EnumRangeId">
				<sequence>
					<element name="prefix"    nillable="false" type="xsd:string"/>
					<element name="tld"       nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>
			
			<complexType name="EnumRange">
				<sequence>
					<element name="id"          nillable="false" type="ngnpro:EnumRangeId"/>
					<element name="ttl"         nillable="true"  type="xsd:nonNegativeInteger" default="3600"/>
					<element name="minDigits"   nillable="true"  type="xsd:int"/>
					<element name="maxDigits"   nillable="true"  type="xsd:int"/>
					<element name="size"        nillable="true"  type="xsd:integer"/>
					<element name="nameservers" nillable="true"  type="ngnpro:StringArray"/>
					<element name="used"        nillable="true"  type="xsd:int"/>
					<element name="serial"      nillable="true"  type="xsd:int"/>
					<element name="customer"    nillable="true"  type="xsd:integer"/>
					<element name="reseller"    nillable="true"  type="xsd:integer"/>
					<element name="changeDate"  nillable="true"  type="xsd:string"/>
					<element name="info"        nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>

			<complexType name="EnumRangeArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:EnumRange[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="EnumRangeList">
				<sequence>
				    <element name="ranges"  nillable="false" type="ngnpro:EnumRangeArray"/>
				    <element name="total"   nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="EnumRangeFilter">
				<sequence>
					<element name="prefix"     nillable="true" type="xsd:string"/>
					<element name="tld"        nillable="true" type="xsd:string"/>
					<element name="customer"   nillable="true" type="xsd:integer"/>
					<element name="reseller"   nillable="true" type="xsd:integer"/>
					<element name="changeDate" nillable="true" type="xsd:string"/>
					<element name="info"       nillable="true" type="xsd:string"/>
				</sequence>
            </complexType>

            <simpleType name="EnumRangeOrderAttribute">
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="prefix"/>
                    <xsd:enumeration value="tld"/>
                    <xsd:enumeration value="changeDate"/>
				</xsd:restriction>
            </simpleType>
      
            <complexType name="EnumRangeOrder">
                <sequence>
                    <element name="attribute" nillable="false" type="ngnpro:EnumRangeOrderAttribute"/>
                    <element name="direction" nillable="false" type="ngnpro:SortDirection"/>
                </sequence>
             </complexType>
      
             <complexType name="EnumRangeQuery">
                 <sequence>
                     <element name="filter"  nillable="false" type="ngnpro:EnumRangeFilter"/>
                     <element name="orderBy" nillable="true"  type="ngnpro:EnumRangeOrder"/>
                     <element name="range"   nillable="true"  type="ngnpro:Range"/>
                 </sequence>
		     </complexType>

			<complexType name="EnumId">
				<sequence>
					<element name="number" nillable="false" type="xsd:string"/>
					<element name="tld"    nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>
			
			<complexType name="EnumIdArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:EnumId[]"/>
					</restriction>
				</complexContent>
			</complexType>
			
			<complexType name="EnumMapping">
                <sequence>
                    <element name="id"       nillable="true" type="xsd:int"/>
					<element name="type"     nillable="true" type="xsd:string"/>
					<element name="mapto"    nillable="true" type="xsd:string"/>
					<element name="priority" nillable="true" type="xsd:int"/>
				    <element name="ttl"      nillable="true" type="xsd:int" default="3600"/>
				</sequence>
			</complexType>
			
			<complexType name="EnumMappingArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:EnumMapping[]"/>
					</restriction>
				</complexContent>
			</complexType>
			
			<complexType name="EnumNumber">
				<sequence>
					<element name="id"         nillable="false" type="ngnpro:EnumId"/>
					<element name="mappings"   nillable="true"  type="ngnpro:EnumMappingArray"/>
					<element name="info"       nillable="true"  type="xsd:string"/>
					<element name="owner"      nillable="true"  type="xsd:integer"/>
					<element name="customer"   nillable="true"  type="xsd:integer"/>
					<element name="reseller"   nillable="true"  type="xsd:integer"/>
					<element name="changeDate" nillable="true"  type="xsd:string"/>
				</sequence>
			</complexType>

			<complexType name="EnumNumberArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:EnumNumber[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="EnumNumberList">
				<sequence>
				    <element name="numbers"  nillable="false" type="ngnpro:EnumNumberArray"/>
				    <element name="total"    nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="EnumNumberFilter">
				<sequence>
					<element name="number"     nillable="true" type="xsd:string"/>
					<element name="tld"        nillable="true" type="xsd:string"/>
					<element name="type"       nillable="true" type="xsd:string"/>
					<element name="mapto"      nillable="true" type="xsd:string"/>
					<element name="owner"      nillable="true" type="xsd:integer"/>
					<element name="customer"   nillable="true" type="xsd:integer"/>
					<element name="reseller"   nillable="true" type="xsd:integer"/>
					<element name="info"       nillable="true" type="xsd:string"/>
				</sequence>
			</complexType>

      <simpleType name="EnumNumberOrderAttribute">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="number"/>
          <xsd:enumeration value="tld"/>
          <xsd:enumeration value="changeDate"/>
        </xsd:restriction>
      </simpleType>
      
      <complexType name="EnumNumberOrder">
        <sequence>
          <element name="attribute" nillable="false" type="ngnpro:EnumNumberOrderAttribute"/>
          <element name="direction" nillable="false" type="ngnpro:SortDirection"/>
        </sequence>
      </complexType>
      
      <complexType name="EnumNumberQuery">
        <sequence>
          <element name="filter"  nillable="false" type="ngnpro:EnumNumberFilter"/>
          <element name="orderBy" nillable="true"  type="ngnpro:EnumNumberOrder"/>
          <element name="range"   nillable="true"  type="ngnpro:Range"/>
        </sequence>
      </complexType>

      <complexType name="RatingEntityProfiles">
        <sequence>
					<element name="entity"             nillable="false" type="xsd:string"/>
					<element name="profileWeekday"     nillable="false" type="xsd:string"/>
					<element name="profileWeekdayAlt"  nillable="true"  type="xsd:string"/>
					<element name="profileWeekend"     nillable="false" type="xsd:string"/>
					<element name="profileWeekendAlt"  nillable="true"  type="xsd:string"/>
					<element name="timezone"           nillable="false" type="xsd:string"/>
				</sequence>	
			</complexType>

			<!-- Result Types -->
			<complexType name="GetCallsResults">
				<sequence>
					<element name="placed"   nillable="true" type="ngnpro:CallInfoArray"/>
					<element name="received" nillable="true" type="ngnpro:CallInfoArray"/>
				</sequence>
			</complexType>

			<complexType name="GetCallStatisticsResults">
				<sequence>
					<element name="placed"   nillable="true" type="ngnpro:CallStatistics"/>
					<element name="received" nillable="true" type="ngnpro:CallStatistics"/>
				</sequence>
			</complexType>
			
			<!-- Exceptions -->
			
			<!-- Embedded in the detail element of the SOAP fault -->
			<!-- 
				Exception names to errorcodes mapping:
					Error                          1   general exception
					
					InvalidTypeError             100   invalid input type
					InvalidValueError            101   invalid input value
					MissingInputError            102   missing input to function call
					
					InternalError                200   server internal error
					DatabaseError                201   database access error
					SipProxyError                202   error accessing the sip proxy control port (opensips's fifo)
					
					NotImplementedError          900   function/feature is not implemented
					AuthenticationError          901
					AuthorizationError           902
					ImpersonationError           903

					SipCreditError               950
					SipAliasCreditError          951
					SipAdvancedCreditError       952
					EnumCreditError              953
					
					SipDomainNotFoundError      1000
					SipDomainExistsError        1001
					SipUserNotFoundError        1010
					SipUserExistsError          1011
					SipAliasNotFoundError       1020
					SipAliasExistsError         1021
					AlreadyInSipGroupError      1030
					NotInSipGroupError          1031
					PhonebookEntryNotFoundError 1040
					PhonebookEntryExistsError   1041

					VoicemailNotFoundError      2000
					VoicemailExistsError        2001
					
					EnumRangeNotFoundError      3000
					EnumRangeExistsError        3001
					EnumNumberNotFoundError     3002
					EnumNumberExistsError       3003
					EnumNumberRangeError        3004
					EnumMappingNotFoundError    3005
					TooManyEnumMappingsError    3006
					
					RatingEngineConnectionError 4000
					RatingEntityNotFoundError   4001
					RatingProfilesNotFoundError 4002
					
				    CustomerNotFoundError       5000
					CustomerExistsError         5001
			-->
			
			<!-- SOAP Exception structure. Provided for reference only -->
			<complexType name="SOAPError">
				<sequence>
					<element name="name"        nillable="false" type="xsd:string"/>
					<element name="errorcode"   nillable="false" type="xsd:int"/>
					<element name="errorstring" nillable="false" type="xsd:string"/>
				</sequence>
            </complexType>


            <!--
            DNS
            -->
            <complexType name="DnsZone">
                <sequence>
                    <element name="name"        nillable="false" type="xsd:string"/>
                    <element name="ttl"         nillable="true"  type="xsd:nonNegativeInteger"/>
                    <element name="nameservers" nillable="true"  type="ngnpro:StringArray"/>
                    <element name="email"       nillable="true"  type="xsd:string"/>
                    <element name="serial"      nillable="true"  type="xsd:int"/>
                    <element name="refresh"     nillable="true"  type="xsd:int"/>
                    <element name="retry"       nillable="true"  type="xsd:int"/>
                    <element name="expire"      nillable="true"  type="xsd:int"/>
                    <element name="minimum"     nillable="true"  type="xsd:int"/>
					<element name="customer"    nillable="true"  type="xsd:integer"/>
					<element name="reseller"    nillable="true"  type="xsd:integer"/>
					<element name="changeDate"  nillable="true"  type="xsd:string"/>
					<element name="info"        nillable="true"  type="xsd:string"/>
                </sequence>
            </complexType>

			<complexType name="DnsZoneArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:DnsZone[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="DnsZoneList">
				<sequence>
				    <element name="zones"       nillable="false" type="ngnpro:DnsZoneArray"/>
				    <element name="total"       nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="DnsZoneFilter">
				<sequence>
					<element name="name"        nillable="true"  type="xsd:string"/>
					<element name="customer"    nillable="true"  type="xsd:integer"/>
					<element name="reseller"    nillable="true"  type="xsd:integer"/>
					<element name="changeDate"  nillable="true"  type="xsd:string"/>
					<element name="info"        nillable="true"  type="xsd:string"/>
				</sequence>
            </complexType>

            <simpleType name="DnsZoneOrderAttribute">
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="name"/>
                    <xsd:enumeration value="changeDate"/>
                </xsd:restriction>
            </simpleType>
      
            <complexType name="DnsZoneOrder">
                <sequence>
                    <element name="attribute"   nillable="false" type="ngnpro:DnsZoneOrderAttribute"/>
                    <element name="direction"   nillable="false" type="ngnpro:SortDirection"/>
                </sequence>
            </complexType>

            <complexType name="DnsZoneQuery">
                <sequence>
                    <element name="filter"      nillable="false" type="ngnpro:DnsZoneFilter"/>
                    <element name="orderBy"     nillable="true"  type="ngnpro:DnsZoneOrder"/>
                    <element name="range"       nillable="true"  type="ngnpro:Range"/>
                </sequence>
            </complexType>
            
            <simpleType name="DnsRecordType">
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="A"/>
                    <xsd:enumeration value="AAAA"/>
                    <xsd:enumeration value="CNAME"/>
                    <xsd:enumeration value="MX"/>
                    <xsd:enumeration value="NAPTR"/>
                    <xsd:enumeration value="NS"/>
                    <xsd:enumeration value="SRV"/>
                    <xsd:enumeration value="TXT"/>
                    <xsd:enumeration value="PTR"/>
                    <xsd:enumeration value="LOC"/>
                </xsd:restriction>
            </simpleType>
            
            <simpleType name="DnsFancyRecordType">
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="MBOXFW"/>
                    <xsd:enumeration value="URL"/>
                </xsd:restriction>
            </simpleType>
            
            <complexType name="DnsRecord">
                <sequence>
                    <element name="id"          nillable="true" type="xsd:integer"/>
                    <element name="zone"        nillable="true"  type="xsd:string"/>
                    <element name="name"        nillable="true"  type="xsd:string"/>
                    <element name="type"        nillable="true"  type="ngnpro:DnsRecordType"/>
                    <element name="ttl"         nillable="true"  type="xsd:unsignedInt"/>
                    <element name="value"       nillable="true"  type="xsd:string"/>
                    <element name="priority"    nillable="true"  type="xsd:unsignedShort"/>
					<element name="owner"       nillable="true"  type="xsd:integer"/>
					<element name="customer"    nillable="true"  type="xsd:integer"/>
					<element name="reseller"    nillable="true"  type="xsd:integer"/>
					<element name="changeDate"  nillable="true"  type="xsd:string"/>
                </sequence>
            </complexType>

            <complexType name="DnsFancyRecord">
                <sequence>
                    <element name="id"          nillable="true" type="xsd:integer"/>
                    <element name="zone"        nillable="true"  type="xsd:string"/>
                    <element name="name"        nillable="true"  type="xsd:string"/>
                    <element name="type"        nillable="true"  type="ngnpro:DnsFancyRecordType"/>
                    <element name="ttl"         nillable="true"  type="xsd:unsignedInt"/>
                    <element name="value"       nillable="true"  type="xsd:string"/>
                    <element name="priority"    nillable="true"  type="xsd:unsignedShort"/>
					<element name="owner"       nillable="true"  type="xsd:integer"/>
					<element name="customer"    nillable="true"  type="xsd:integer"/>
					<element name="reseller"    nillable="true"  type="xsd:integer"/>
					<element name="changeDate"  nillable="true"  type="xsd:string"/>
                </sequence>
            </complexType>

			<complexType name="DnsRecordArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:DnsRecord[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="DnsFancyRecordArray">
				<complexContent>
					<restriction base="soapenc:Array">
						<attribute ref="soapenc:arrayType" wsdl:arrayType="ngnpro:DnsFancyRecord[]"/>
					</restriction>
				</complexContent>
			</complexType>

			<complexType name="DnsRecordList">
				<sequence>
				    <element name="records"     nillable="false" type="ngnpro:DnsRecordArray"/>
				    <element name="total"       nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="DnsFancyRecordList">
				<sequence>
				    <element name="records"     nillable="false" type="ngnpro:DnsFancyRecordArray"/>
				    <element name="total"       nillable="false" type="xsd:int"/>
				</sequence>
			</complexType>

			<complexType name="DnsRecordFilter">
				<sequence>
                    <element name="id"          nillable="true"  type="xsd:integer"/>
                    <element name="zone"        nillable="true"  type="xsd:string"/>
                    <element name="name"        nillable="true"  type="xsd:string"/>
                    <element name="type"        nillable="true"  type="ngnpro:DnsRecordType"/>
                    <element name="value"       nillable="true"  type="xsd:string"/>
                    <element name="priority"    nillable="true"  type="xsd:unsignedShort"/>
					<element name="owner"       nillable="true"  type="xsd:integer"/>
					<element name="customer"    nillable="true"  type="xsd:integer"/>
					<element name="reseller"    nillable="true"  type="xsd:integer"/>
				</sequence>
			</complexType>
			
			<complexType name="DnsFancyRecordFilter">
				<sequence>
                    <element name="id"          nillable="true"  type="xsd:integer"/>
                    <element name="zone"        nillable="true"  type="xsd:string"/>
                    <element name="name"        nillable="true"  type="xsd:string"/>
                    <element name="type"        nillable="true"  type="ngnpro:DnsFancyRecordType"/>
                    <element name="value"       nillable="true"  type="xsd:string"/>
                    <element name="priority"    nillable="true"  type="xsd:unsignedShort"/>
					<element name="owner"       nillable="true"  type="xsd:integer"/>
					<element name="customer"    nillable="true"  type="xsd:integer"/>
					<element name="reseller"    nillable="true"  type="xsd:integer"/>
				</sequence>
			</complexType>
			
            <simpleType name="DnsRecordOrderAttribute">
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="name"/>
                    <xsd:enumeration value="changeDate"/>
                    <xsd:enumeration value="type"/>
                </xsd:restriction>
            </simpleType>
      
            <complexType name="DnsRecordOrder">
                <sequence>
                    <element name="attribute"   nillable="false" type="ngnpro:DnsRecordOrderAttribute"/>
                    <element name="direction"   nillable="false" type="ngnpro:SortDirection"/>
                </sequence>
            </complexType>

            <complexType name="DnsRecordQuery">
                <sequence>
                    <element name="filter"      nillable="false" type="ngnpro:DnsRecordFilter"/>
                    <element name="orderBy"     nillable="true"  type="ngnpro:DnsRecordOrder"/>
                    <element name="range"       nillable="true"  type="ngnpro:Range"/>
                </sequence>
            </complexType>
        
            <complexType name="DnsFancyRecordQuery">
                <sequence>
                    <element name="filter"      nillable="false" type="ngnpro:DnsFancyRecordFilter"/>
                    <element name="orderBy"     nillable="true"  type="ngnpro:DnsRecordOrder"/>
                    <element name="range"       nillable="true"  type="ngnpro:Range"/>
                </sequence>
            </complexType>
        
        </schema>

	</wsdl:types>

	<!-- ======================================================================================== -->
	<!-- ======================================================================================== -->
	<!-- ======================================================================================== -->

	<!-- Message to handle login credentials -->
	
	<wsdl:message name="Login">
		<wsdl:part name="auth"    type="ngnpro:SoapAuth"/>
	</wsdl:message>

	<!-- Customer handling -->

	<!-- Customer.addAccount() -->	
	<wsdl:message name="AddCustomerAccountRequest">
		<wsdl:part name="account" type="ngnpro:CustomerAccount"/>
	</wsdl:message>

	<wsdl:message name="AddCustomerAccountResponse">
		<wsdl:part name="Result" type="ngnpro:CustomerAccount"/>
	</wsdl:message>

	<!-- Customer.updateAccount() -->	
	<wsdl:message name="UpdateCustomerAccountRequest">
		<wsdl:part name="account" type="ngnpro:CustomerAccount"/>
	</wsdl:message>

	<wsdl:message name="UpdateCustomerAccountResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Customer.deleteAccount() -->	
	<wsdl:message name="DeleteCustomerAccountRequest">
		<wsdl:part name="id" type="xsd:integer"/>
	</wsdl:message>

	<wsdl:message name="DeleteCustomerAccountResponse">
		<!-- void -->
	</wsdl:message>

    <!-- Customer.getAccount() -->
    <wsdl:message name="GetCustomerAccountRequest">
		<wsdl:part name="id" type="xsd:integer"/>
    </wsdl:message>
	
    <wsdl:message name="GetCustomerAccountResponse">
        <wsdl:part name="Result" type="ngnpro:CustomerAccount"/>
    </wsdl:message>

	<!-- Customer.getCustomers() -->
	<wsdl:message name="GetCustomersRequest">
	    <wsdl:part name="query" type="ngnpro:CustomerQuery"/>
	</wsdl:message>

	<wsdl:message name="GetCustomersResponse">
		<wsdl:part name="Result" type="ngnpro:CustomerAccountList"/>
	</wsdl:message>

	<!-- Customer.getResellers() -->
	<wsdl:message name="GetResellersRequest">
	    <wsdl:part name="query" type="ngnpro:CustomerQuery"/>
	</wsdl:message>

	<wsdl:message name="GetResellersResponse">
		<wsdl:part name="Result" type="ngnpro:CustomerAccountList"/>
	</wsdl:message>

	<!-- Customer.setProperties() -->
	<wsdl:message name="SetCustomerPropertiesRequest">
	    <wsdl:part name="customer"   type="xsd:integer"/>
	    <wsdl:part name="properties" type="ngnpro:CustomerPropertyArray"/>
	</wsdl:message>

	<wsdl:message name="SetCustomerPropertiesResponse">
	    <!-- void -->
	</wsdl:message>

	<!-- Customer.getProperties() -->
	<wsdl:message name="GetCustomerPropertiesRequest">
	    <wsdl:part name="customer"      type="xsd:integer"/>
	</wsdl:message>

	<wsdl:message name="GetCustomerPropertiesResponse">
	    <wsdl:part name="Result" type="ngnpro:CustomerPropertyArray"/>
	</wsdl:message>

	<!-- Sip domain handling -->
	
	<!-- Sip.addDomain() -->
	<wsdl:message name="AddSipDomainRequest">
		<wsdl:part name="domain" type="ngnpro:SipDomain"/>
	</wsdl:message>

	<wsdl:message name="AddSipDomainResponse">
        <wsdl:part name="Result" type="ngnpro:SipDomain"/>
	</wsdl:message>

	<!-- Sip.updateDomain() -->
	<wsdl:message name="UpdateSipDomainRequest">
		<wsdl:part name="domain" type="ngnpro:SipDomain"/>
	</wsdl:message>

	<wsdl:message name="UpdateSipDomainResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.deleteDomain() -->
	<wsdl:message name="DeleteSipDomainRequest">
		<wsdl:part name="domain" type="xsd:string"/>
	</wsdl:message>

	<wsdl:message name="DeleteSipDomainResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getDomains() -->
	<wsdl:message name="GetSipDomainsRequest">
	    <wsdl:part name="query" type="ngnpro:SipDomainQuery"/>
	</wsdl:message>

	<wsdl:message name="GetSipDomainsResponse">
		<wsdl:part name="Result" type="ngnpro:SipDomainList"/>
	</wsdl:message>

	<!-- Trusted Peer handling -->
	
	<!-- Sip.addTrustedPeer() -->	
	<wsdl:message name="AddTrustedPeerRequest">
		<wsdl:part name="peer" type="ngnpro:TrustedPeer"/>
	</wsdl:message>

	<wsdl:message name="AddTrustedPeerResponse">
        <wsdl:part name="Result" type="ngnpro:TrustedPeer"/>
	</wsdl:message>

	<!-- Sip.deleteTrustedPeer() -->
	<wsdl:message name="DeleteTrustedPeerRequest">
		<wsdl:part name="ip" type="xsd:string"/>
	</wsdl:message>

	<wsdl:message name="DeleteTrustedPeerResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getTrustedPeers() -->
	<wsdl:message name="GetTrustedPeersRequest">
		<wsdl:part name="query" type="ngnpro:TrustedPeerQuery"/>
	</wsdl:message>

	<wsdl:message name="GetTrustedPeersResponse">
		<wsdl:part name="Result" type="ngnpro:TrustedPeerList"/>
	</wsdl:message>

	<!-- Sip.updateTrustedPeer() -->
	<wsdl:message name="UpdateTrustedPeerRequest">
		<wsdl:part name="peer" type="ngnpro:TrustedPeer"/>
	</wsdl:message>

	<wsdl:message name="UpdateTrustedPeerResponse">
        	<wsdl:part name="Result" type="ngnpro:TrustedPeer"/>
	</wsdl:message>

	<!-- Gateway handling -->
	
	<!-- Sip.addGateway() -->
	<wsdl:message name="AddGatewayRequest">
		<wsdl:part name="gateway" type="ngnpro:Gateway"/>
	</wsdl:message>

	<wsdl:message name="AddGatewayResponse">
        <wsdl:part name="Result" type="ngnpro:Gateway"/>
	</wsdl:message>
	
	<!-- Sip.updateGateway() -->
	<wsdl:message name="UpdateGatewayRequest">
		<wsdl:part name="gateway" type="ngnpro:Gateway"/>
	</wsdl:message>

	<wsdl:message name="UpdateGatewayResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.deleteGateway() -->
	<wsdl:message name="DeleteGatewayRequest">
		<wsdl:part name="id" type="xsd:integer"/>
	</wsdl:message>

	<wsdl:message name="DeleteGatewayResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getGateways() -->
	<wsdl:message name="GetGatewaysRequest">
		<wsdl:part name="query" type="ngnpro:GatewayQuery"/>
	</wsdl:message>

	<wsdl:message name="GetGatewaysResponse">
		<wsdl:part name="Result" type="ngnpro:GatewayList"/>
    </wsdl:message>

    <!-- Gateway rules handling -->

	<!-- Sip.addGatewayRule() -->
	<wsdl:message name="AddGatewayRuleRequest">
		<wsdl:part name="rule" type="ngnpro:GatewayRule"/>
	</wsdl:message>

	<wsdl:message name="AddGatewayRuleResponse">
        <wsdl:part name="Result" type="ngnpro:GatewayRule"/>
	</wsdl:message>
	
	<!-- Sip.updateGatewayRule() -->
	<wsdl:message name="UpdateGatewayRuleRequest">
		<wsdl:part name="rule" type="ngnpro:GatewayRule"/>
	</wsdl:message>

	<wsdl:message name="UpdateGatewayRuleResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.deleteGatewayRule() -->
	<wsdl:message name="DeleteGatewayRuleRequest">
		<wsdl:part name="id" type="xsd:integer"/>
	</wsdl:message>

	<wsdl:message name="DeleteGatewayRuleResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getGatewayRules() -->
	<wsdl:message name="GetGatewayRulesRequest">
		<wsdl:part name="query" type="ngnpro:GatewayRuleQuery"/>
	</wsdl:message>

	<wsdl:message name="GetGatewayRulesResponse">
		<wsdl:part name="Result" type="ngnpro:GatewayRuleList"/>
    </wsdl:message>

	<!-- Gateway groups handling -->
	
	<!-- Sip.addCarrier() -->
	<wsdl:message name="AddCarrierRequest">
		<wsdl:part name="carrier" type="ngnpro:Carrier"/>
	</wsdl:message>

	<wsdl:message name="AddCarrierResponse">
        <wsdl:part name="Result" type="ngnpro:Carrier"/>
	</wsdl:message>

	<!-- Sip.updateCarrier() -->
	<wsdl:message name="UpdateCarrierRequest">
		<wsdl:part name="carrier" type="ngnpro:Carrier"/>
	</wsdl:message>

    <wsdl:message name="UpdateCarrierResponse">
        <!-- void -->
	</wsdl:message>

	<!-- Sip.deleteCarrier() -->
	<wsdl:message name="DeleteCarrierRequest">
		<wsdl:part name="id" type="xsd:integer"/>
	</wsdl:message>

	<wsdl:message name="DeleteCarrierResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getCarriers() -->
	<wsdl:message name="GetCarriersRequest">
		<wsdl:part name="query" type="ngnpro:CarrierQuery"/>
	</wsdl:message>

	<wsdl:message name="GetCarriersResponse">
		<wsdl:part name="Result" type="ngnpro:CarrierList"/>
	</wsdl:message>

	<!-- Route handling -->
	
	<!-- Sip.addRoutes() -->
	<wsdl:message name="AddRoutesRequest">
		<wsdl:part name="routes" type="ngnpro:RouteArray"/>
	</wsdl:message>

	<wsdl:message name="AddRoutesResponse">
        <wsdl:part name="Result" type="ngnpro:RouteArray"/>
	</wsdl:message>
	
	<!-- Sip.updateRoutes() -->
	<wsdl:message name="UpdateRoutesRequest">
		<wsdl:part name="routes" type="ngnpro:RouteArray"/>
	</wsdl:message>

    <wsdl:message name="UpdateRoutesResponse">
        <!-- void -->
	</wsdl:message>

	<!-- Sip.deleteRoutes() -->
	<wsdl:message name="DeleteRoutesRequest">
		<wsdl:part name="routes" type="ngnpro:RouteArray"/>
	</wsdl:message>

	<wsdl:message name="DeleteRoutesResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getRoutes() -->
	<wsdl:message name="GetRoutesRequest">
		<wsdl:part name="query" type="ngnpro:RouteQuery"/>
	</wsdl:message>

	<wsdl:message name="GetRoutesResponse">
		<wsdl:part name="Result" type="ngnpro:RouteList"/>
	</wsdl:message>

	<!-- SipAccount handling -->
	
	<!-- Sip.addAccount() -->
	<wsdl:message name="AddSipAccountRequest">
		<wsdl:part name="account" type="ngnpro:SipAccount"/>
	</wsdl:message>

	<wsdl:message name="AddSipAccountResponse">
        <wsdl:part name="Result" type="ngnpro:SipAccount"/>
	</wsdl:message>

	<!-- Sip.updateAccount() -->
	<wsdl:message name="UpdateSipAccountRequest">
		<wsdl:part name="account" type="ngnpro:SipAccount"/>
	</wsdl:message>

	<wsdl:message name="UpdateSipAccountResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.deleteAccount() -->
	<wsdl:message name="DeleteSipAccountRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
	</wsdl:message>

	<wsdl:message name="DeleteSipAccountResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getAccount() -->
	<wsdl:message name="GetSipAccountRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
	</wsdl:message>

	<wsdl:message name="GetSipAccountResponse">
		<wsdl:part name="Result" type="ngnpro:SipAccount"/>
	</wsdl:message>

	<!-- Sip.getAccounts() -->
	<wsdl:message name="GetSipAccountsRequest">
		<wsdl:part name="query" type="ngnpro:SipQuery"/>
	</wsdl:message>

	<wsdl:message name="GetSipAccountsResponse">
		<wsdl:part name="Result" type="ngnpro:SipAccountList"/>
	</wsdl:message>

	<!-- SIP alias handling -->

	<!-- Sip.addAlias() -->
	<wsdl:message name="AddSipAliasRequest">
		<wsdl:part name="alias" type="ngnpro:SipAlias"/>
	</wsdl:message>

	<wsdl:message name="AddSipAliasResponse">
        <wsdl:part name="alias" type="ngnpro:SipAlias"/>
	</wsdl:message>

	<!-- Sip.updateAlias() -->
	<wsdl:message name="UpdateSipAliasRequest">
		<wsdl:part name="alias" type="ngnpro:SipAlias"/>
	</wsdl:message>

	<wsdl:message name="UpdateSipAliasResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.deleteAlias() -->
	<wsdl:message name="DeleteSipAliasRequest">
		<wsdl:part name="id"    type="ngnpro:SipId"/>
	</wsdl:message>

	<wsdl:message name="DeleteSipAliasResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getAlias() -->
	<wsdl:message name="GetSipAliasRequest">
		<wsdl:part name="id"    type="ngnpro:SipId"/>
	</wsdl:message>

	<wsdl:message name="GetSipAliasResponse">
		<wsdl:part name="Result" type="ngnpro:SipAlias"/>
	</wsdl:message>

	<!-- Sip.getAliasesForAccount() - Deprecated, Sip.getAliases() -->
	<!--<wsdl:message name="GetSipAliasesForAccountRequest">
		<wsdl:part name="target"    type="ngnpro:SipId"/>
	</wsdl:message>

	<wsdl:message name="GetSipAliasesForAccountResponse">
		<wsdl:part name="Result" type="ngnpro:SipIdArray"/>
	</wsdl:message>-->

	<!-- Sip.getAliases() -->
	<wsdl:message name="GetSipAliasesRequest">
		<wsdl:part name="query" type="ngnpro:AliasQuery"/>
	</wsdl:message>

	<wsdl:message name="GetSipAliasesResponse">
		<wsdl:part name="Result" type="ngnpro:SipAliasList"/>
	</wsdl:message>

	<!-- SIP Groups handling -->

	<!-- Sip.addToGroup() -->
	<wsdl:message name="AddToSipGroupRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
		<wsdl:part name="group" type="xsd:string"/>
	</wsdl:message>

	<wsdl:message name="AddToSipGroupResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.removeFromGroup() -->
	<wsdl:message name="RemoveFromSipGroupRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
		<wsdl:part name="group" type="xsd:string"/>
	</wsdl:message>

	<wsdl:message name="RemoveFromSipGroupResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getGroups() -->
	<wsdl:message name="GetSipGroupsRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
	</wsdl:message>

	<wsdl:message name="GetSipGroupsResponse">
		<wsdl:part name="Result" type="ngnpro:StringArray"/>
	</wsdl:message>

	<!-- SIP Prepaid handling -->
	
	<!-- Sip.addBalance() -->
	<wsdl:message name="AddBalanceRequest">
		<wsdl:part name="sipId"       type="ngnpro:SipId"/>
        <wsdl:part name="value"       type="xsd:double"/>
        <wsdl:part name="description" type="xsd:string"/>
	</wsdl:message>

	<wsdl:message name="AddBalanceResponse">
        <wsdl:part name="Result" type="ngnpro:PrepaidBalanceInfo"/>
	</wsdl:message>
	
	<!-- Sip.addBalanceFromVoucher() -->
	<wsdl:message name="AddBalanceFromVoucherRequest">
		<wsdl:part name="sipId"  type="ngnpro:SipId"/>
		<wsdl:part name="card"   type="ngnpro:PrepaidCard"/>
	</wsdl:message>

	<wsdl:message name="AddBalanceFromVoucherResponse">
        <wsdl:part name="Result" type="ngnpro:PrepaidBalanceInfo"/>
	</wsdl:message>
	
	<!-- Sip.getPrepaidStatus() -->
	<wsdl:message name="GetPrepaidStatusRequest">
		<wsdl:part name="sipIds" type="ngnpro:SipIdArray"/>
	</wsdl:message>

	<wsdl:message name="GetPrepaidStatusResponse">
		<wsdl:part name="Result" type="ngnpro:PrepaidStatusArray"/>
	</wsdl:message>

	<!-- Sip.getCreditHistory() -->
	<wsdl:message name="GetCreditHistoryRequest">
        <wsdl:part name="sipId" type="ngnpro:SipId"/>
        <wsdl:part name="count" type="xsd:int"/>
	</wsdl:message>

	<wsdl:message name="GetCreditHistoryResponse">
		<wsdl:part name="Result" type="ngnpro:CreditHistoryList"/>
	</wsdl:message>

	<!-- SIP Phonebook handling -->

	<!-- Sip.addPhonebookEntry() -->
	<wsdl:message name="AddPhonebookEntryRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
		<wsdl:part name="entry" type="ngnpro:PhonebookEntry"/>
	</wsdl:message>

	<wsdl:message name="AddPhonebookEntryResponse">
		<!-- void -->
	</wsdl:message>
	
	<!-- Sip.updatePhonebookEntry() -->
    <wsdl:message name="UpdatePhonebookEntryRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>		
		<wsdl:part name="entry" type="ngnpro:PhonebookEntry"/>
	</wsdl:message>

	<wsdl:message name="UpdatePhonebookEntryResponse">
		<!-- void -->
	</wsdl:message>
	
	<!-- Sip.deletePhonebookEntry() -->
    <wsdl:message name="DeletePhonebookEntryRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
		<wsdl:part name="uri"   type="xsd:string"/>		
	</wsdl:message>

	<wsdl:message name="DeletePhonebookEntryResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getPhonebookEntries() -->
	<wsdl:message name="GetPhonebookEntriesRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
		<wsdl:part name="match" type="ngnpro:PhonebookEntry"/>
		<wsdl:part name="range" type="ngnpro:Range"/>
	</wsdl:message>

	<wsdl:message name="GetPhonebookEntriesResponse">
		<wsdl:part name="Result" type="ngnpro:PhonebookEntryList"/>
	</wsdl:message>

	<!-- Sip.setRejectMembers() -->	
	<wsdl:message name="SetRejectMembersRequest">
		<wsdl:part name="sipId"   type="ngnpro:SipId"/>
		<wsdl:part name="members" type="ngnpro:StringArray"/>
	</wsdl:message>

	<wsdl:message name="SetRejectMembersResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getRejectMembers() -->	
	<wsdl:message name="GetRejectMembersRequest">
		<wsdl:part name="sipId"   type="ngnpro:SipId"/>
	</wsdl:message>	

	<wsdl:message name="GetRejectMembersResponse">
		<wsdl:part name="Result"  type="ngnpro:StringArray"/>
	</wsdl:message>

	<!-- Sip.setAcceptRules() -->
	<wsdl:message name="SetAcceptRulesRequest">
		<wsdl:part name="sipId"  type="ngnpro:SipId"/>
		<wsdl:part name="rules"  type="ngnpro:AcceptRules"/>
	</wsdl:message>

	<wsdl:message name="SetAcceptRulesResponse">
		<!-- void -->
	</wsdl:message>
	
	<!-- Sip.getAcceptRules() -->
	<wsdl:message name="GetAcceptRulesRequest">
		<wsdl:part name="sipId"  type="ngnpro:SipId"/>
	</wsdl:message>

	<wsdl:message name="GetAcceptRulesResponse">
		<wsdl:part name="Result" type="ngnpro:AcceptRulesReturn"/>
	</wsdl:message>

	<!-- Sip.setBarringPrefixes() -->
	<wsdl:message name="SetBarringPrefixesRequest">
		<wsdl:part name="sipId"    type="ngnpro:SipId"/>		
		<wsdl:part name="prefixes" type="ngnpro:StringArray"/>
	</wsdl:message>

	<wsdl:message name="SetBarringPrefixesResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getBarringPrefixes() -->
	<wsdl:message name="GetBarringPrefixesRequest">
		<wsdl:part name="sipId"  type="ngnpro:SipId"/>
	</wsdl:message>

	<wsdl:message name="GetBarringPrefixesResponse">
		<wsdl:part name="Result"  type="ngnpro:StringArray"/>
	</wsdl:message>

	<!-- Voicemail handling -->
		
	<!-- Voicemail.addVoicemailAccount() -->
	<wsdl:message name="AddVoicemailAccountRequest">
		<wsdl:part name="account" type="ngnpro:VoicemailAccount"/>
	</wsdl:message>

	<wsdl:message name="AddVoicemailAccountResponse">
		<wsdl:part name="Result" type="ngnpro:VoicemailAccount"/>
	</wsdl:message>

	<!-- Voicemail.updateVoicemailAccount() -->
	<wsdl:message name="UpdateVoicemailAccountRequest">
		<wsdl:part name="account" type="ngnpro:VoicemailAccount"/>
	</wsdl:message>

	<wsdl:message name="UpdateVoicemailAccountResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Voicemail.deleteVoicemailAccount() -->
	<wsdl:message name="DeleteVoicemailAccountRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
	</wsdl:message>

	<wsdl:message name="DeleteVoicemailAccountResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Voicemail.getVoicemailAccount() -->
	<wsdl:message name="GetVoicemailAccountRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
	</wsdl:message>

	<wsdl:message name="GetVoicemailAccountResponse">
		<wsdl:part name="Result" type="ngnpro:VoicemailAccount"/>
	</wsdl:message>

	<!-- Voicemail.setVoicemailAnnouncement() -->
	<wsdl:message name="SetVoicemailAnnouncementRequest">
		<wsdl:part name="sipId"   type="ngnpro:SipId"/>
		<wsdl:part name="message" type="xsd:base64Binary"/>
	</wsdl:message>

	<wsdl:message name="SetVoicemailAnnouncementResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Call diversions handling (forwarding/redirecting) -->
		
	<!-- Sip.setCallDiversions() -->
	<wsdl:message name="SetCallDiversionsRequest">
		<wsdl:part name="sipId"      type="ngnpro:SipId"/>
		<wsdl:part name="diversions" type="ngnpro:CallDiversions"/>
	</wsdl:message>

	<wsdl:message name="SetCallDiversionsResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Sip.getCallDiversions() -->
	<wsdl:message name="GetCallDiversionsRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
	</wsdl:message>

	<wsdl:message name="GetCallDiversionsResponse">
		<wsdl:part name="Result" type="ngnpro:CallDiversions"/>
	</wsdl:message>
	
	<!-- Call information and statistics -->
	
	<!-- Sip.getCalls -->
	<wsdl:message name="GetCallsRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
		<wsdl:part name="query" type="ngnpro:CallsQuery"/>
	</wsdl:message>

	<wsdl:message name="GetCallsResponse">
		<wsdl:part name="Result" type="ngnpro:GetCallsResults"/>
	</wsdl:message>

	<!-- Sip.getCallStatistics -->
	<wsdl:message name="GetCallStatisticsRequest">
		<wsdl:part name="sipId" type="ngnpro:SipId"/>
		<wsdl:part name="query" type="ngnpro:CallsQuery"/>
	</wsdl:message>

	<wsdl:message name="GetCallStatisticsResponse">
		<wsdl:part name="Result" type="ngnpro:GetCallStatisticsResults"/>
	</wsdl:message>
	
	<!-- Sip.getSipDeviceLocations() -->
	<wsdl:message name="GetSipDeviceLocationsRequest">
		<wsdl:part name="sipIds" type="ngnpro:SipIdArray"/>
	</wsdl:message>

	<wsdl:message name="GetSipDeviceLocationsResponse">
		<wsdl:part name="Result" type="ngnpro:SipOnlineDevicesArray"/>
	</wsdl:message>

	<!-- Sip.getSipTrace() -->
	<wsdl:message name="GetSipTraceRequest">
		<wsdl:part name="filter"  type="ngnpro:SipTraceFilter"/>
	</wsdl:message>

	<wsdl:message name="GetSipTraceResponse">
		<wsdl:part name="Result" type="xsd:string"/>
	</wsdl:message>

	<!-- Sip.getMediaTrace() -->
	<wsdl:message name="GetMediaTraceRequest">
		<wsdl:part name="filter"  type="ngnpro:MediaTraceFilter"/>
	</wsdl:message>

	<wsdl:message name="GetMediaTraceResponse">
		<wsdl:part name="Result" type="xsd:string"/>
	</wsdl:message>

	<!-- Sip.getMediaSummary() -->
    <wsdl:message name="GetMediaSummaryRequest">
        <!-- void -->
	</wsdl:message>

	<wsdl:message name="GetMediaSummaryResponse">
		<wsdl:part name="Result" type="xsd:string"/>
	</wsdl:message>

	<!-- Sip.getMediaSessions() -->
    <wsdl:message name="GetMediaSessionsRequest">
        <!-- void -->
	</wsdl:message>

	<wsdl:message name="GetMediaSessionsResponse">
		<wsdl:part name="Result" type="xsd:string"/>
	</wsdl:message>

	<!-- ENUM -->
	
	<!-- Enum.addRange() -->
	<wsdl:message name="AddEnumRangeRequest">
		<wsdl:part name="range" type="ngnpro:EnumRange"/>
	</wsdl:message>

	<wsdl:message name="AddEnumRangeResponse">
        <wsdl:part name="Result" type="ngnpro:EnumRange"/>
	</wsdl:message>

	<!-- Enum.updateRange() -->
	<wsdl:message name="UpdateEnumRangeRequest">
		<wsdl:part name="range" type="ngnpro:EnumRange"/>
	</wsdl:message>

	<wsdl:message name="UpdateEnumRangeResponse">
		<wsdl:part name="range" type="ngnpro:EnumRange"/>
	</wsdl:message>

	<!-- Enum.deleteRange() -->
	<wsdl:message name="DeleteEnumRangeRequest">
		<wsdl:part name="range" type="ngnpro:EnumRangeId"/>
	</wsdl:message>

	<wsdl:message name="DeleteEnumRangeResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Enum.getRanges() -->
	<wsdl:message name="GetEnumRangesRequest">
		<wsdl:part name="query" type="ngnpro:EnumRangeQuery"/>
	</wsdl:message>

	<wsdl:message name="GetEnumRangesResponse">
		<wsdl:part name="Result" type="ngnpro:EnumRangeArray"/>
	</wsdl:message>

	<!-- Enum.addNumber() -->
	<wsdl:message name="AddEnumNumberRequest">
		<wsdl:part name="number" type="ngnpro:EnumNumber"/>
	</wsdl:message>

	<wsdl:message name="AddEnumNumberResponse">
        <wsdl:part name="Result" type="ngnpro:EnumNumber"/>
	</wsdl:message>

	<!-- Enum.updateNumber() -->
	<wsdl:message name="UpdateEnumNumberRequest">
		<wsdl:part name="number" type="ngnpro:EnumNumber"/>
	</wsdl:message>

	<wsdl:message name="UpdateEnumNumberResponse">
		<wsdl:part name="number" type="ngnpro:EnumNumber"/>
	</wsdl:message>

	<!-- Enum.deleteNumber() -->
	<wsdl:message name="DeleteEnumNumberRequest">
		<wsdl:part name="enumId" type="ngnpro:EnumId"/>
	</wsdl:message>

	<wsdl:message name="DeleteEnumNumberResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Enum.getNumber() -->
	<wsdl:message name="GetEnumNumberRequest">
		<wsdl:part name="enumId" type="ngnpro:EnumId"/>
	</wsdl:message>

	<wsdl:message name="GetEnumNumberResponse">
		<wsdl:part name="Result" type="ngnpro:EnumNumber"/>
	</wsdl:message>

	<!-- Enum.getNumbers() -->
	<wsdl:message name="GetEnumNumbersRequest">
		<wsdl:part name="query" type="ngnpro:EnumNumberQuery"/>
	</wsdl:message>

	<wsdl:message name="GetEnumNumbersResponse">
		<wsdl:part name="Result" type="ngnpro:EnumNumberList"/>
	</wsdl:message>

	<!-- Rating.setEntityProfiles() -->
	<wsdl:message name="SetEntityProfilesRequest">
		<wsdl:part name="profiles" type="ngnpro:RatingEntityProfiles"/>
	</wsdl:message>

	<wsdl:message name="SetEntityProfilesResponse">
	    <!-- void -->
	</wsdl:message>

	<!-- Rating.deleteEntityProfiles() -->
	<wsdl:message name="DeleteEntityProfilesRequest">
		<wsdl:part name="entity" type="xsd:string"/>
	</wsdl:message>

	<wsdl:message name="DeleteEntityProfilesResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Rating.getEntityProfiles() -->
	<wsdl:message name="GetEntityProfilesRequest">
		<wsdl:part name="entity" type="xsd:string"/>
	</wsdl:message>

	<wsdl:message name="GetEntityProfilesResponse">
		<wsdl:part name="Result" type="ngnpro:RatingEntityProfiles"/>	
    </wsdl:message>

    <!-- DNS -->

    <!-- Dns.addZone() -->
	<wsdl:message name="AddDnsZoneRequest">
		<wsdl:part name="zone"      type="ngnpro:DnsZone"/>
	</wsdl:message>

	<wsdl:message name="AddDnsZoneResponse">
        <wsdl:part name="Result"    type="ngnpro:DnsZone"/>
	</wsdl:message>

	<!-- Dns.updateZone() -->
	<wsdl:message name="UpdateDnsZoneRequest">
		<wsdl:part name="zone"      type="ngnpro:DnsZone"/>
	</wsdl:message>

	<wsdl:message name="UpdateDnsZoneResponse">
		<wsdl:part name="zone"      type="ngnpro:DnsZone"/>
	</wsdl:message>

	<!-- Dns.deleteZone() -->
	<wsdl:message name="DeleteDnsZoneRequest">
		<wsdl:part name="zone"      type="xsd:string"/>
	</wsdl:message>

	<wsdl:message name="DeleteDnsZoneResponse">
		<!-- void -->
	</wsdl:message>
    
    <!-- Dns.getZone() -->
	<wsdl:message name="GetDnsZoneRequest">
		<wsdl:part name="zone"     type="xsd:string"/>
	</wsdl:message>

	<wsdl:message name="GetDnsZoneResponse">
		<wsdl:part name="Result"    type="ngnpro:DnsZone"/>
	</wsdl:message>

	<!-- Dns.getZones() -->
	<wsdl:message name="GetDnsZonesRequest">
		<wsdl:part name="query"     type="ngnpro:DnsZoneQuery"/>
	</wsdl:message>

	<wsdl:message name="GetDnsZonesResponse">
		<wsdl:part name="Result"    type="ngnpro:DnsZoneList"/>
	</wsdl:message>

	<!-- Dns.addRecord() -->
	<wsdl:message name="AddDnsRecordRequest">
		<wsdl:part name="record"    type="ngnpro:DnsRecord"/>
	</wsdl:message>

	<wsdl:message name="AddDnsRecordResponse">
        <wsdl:part name="Result"    type="ngnpro:DnsRecord"/>
	</wsdl:message>

	<!-- Dns.addFancyRecord() -->
	<wsdl:message name="AddDnsFancyRecordRequest">
		<wsdl:part name="record"    type="ngnpro:DnsFancyRecord"/>
	</wsdl:message>

	<wsdl:message name="AddDnsFancyRecordResponse">
        <wsdl:part name="Result"    type="ngnpro:DnsFancyRecord"/>
	</wsdl:message>

	<!-- Dns.updateRecord() -->
	<wsdl:message name="UpdateDnsRecordRequest">
		<wsdl:part name="record"    type="ngnpro:DnsRecord"/>
	</wsdl:message>

	<wsdl:message name="UpdateDnsRecordResponse">
		<wsdl:part name="record"    type="ngnpro:DnsRecord"/>
	</wsdl:message>

	<!-- Dns.updateFancyRecord() -->
	<wsdl:message name="UpdateDnsFancyRecordRequest">
		<wsdl:part name="record"    type="ngnpro:DnsFancyRecord"/>
	</wsdl:message>

	<wsdl:message name="UpdateDnsFancyRecordResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Dns.deleteRecord() -->
	<wsdl:message name="DeleteDnsRecordRequest">
		<wsdl:part name="recordId"  type="xsd:integer"/>
	</wsdl:message>

	<wsdl:message name="DeleteDnsRecordResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Dns.deleteFancyRecord() -->
	<wsdl:message name="DeleteDnsFancyRecordRequest">
		<wsdl:part name="recordId"  type="xsd:integer"/>
	</wsdl:message>

	<wsdl:message name="DeleteDnsFancyRecordResponse">
		<!-- void -->
	</wsdl:message>

	<!-- Dns.getRecord() -->
	<wsdl:message name="GetDnsRecordRequest">
		<wsdl:part name="recordId"  type="xsd:integer"/>
	</wsdl:message>

	<wsdl:message name="GetDnsRecordResponse">
		<wsdl:part name="Result"    type="ngnpro:DnsRecord"/>
	</wsdl:message>

	<!-- Dns.getFancyRecord() -->
	<wsdl:message name="GetDnsFancyRecordRequest">
		<wsdl:part name="recordId"  type="xsd:integer"/>
	</wsdl:message>

	<wsdl:message name="GetDnsFancyRecordResponse">
		<wsdl:part name="Result"    type="ngnpro:DnsFancyRecord"/>
	</wsdl:message>

	<!-- Dns.getRecords() -->
	<wsdl:message name="GetDnsRecordsRequest">
		<wsdl:part name="query"     type="ngnpro:DnsRecordQuery"/>
	</wsdl:message>

	<wsdl:message name="GetDnsRecordsResponse">
		<wsdl:part name="Result"    type="ngnpro:DnsRecordList"/>
	</wsdl:message>

	<!-- Dns.getFancyRecords() -->
	<wsdl:message name="GetDnsFancyRecordsRequest">
		<wsdl:part name="query"     type="ngnpro:DnsFancyRecordQuery"/>
	</wsdl:message>

	<wsdl:message name="GetDnsFancyRecordsResponse">
		<wsdl:part name="Result"    type="ngnpro:DnsFancyRecordList"/>
    </wsdl:message>

    <!-- Network.getStatistics() -->
    <wsdl:message name="GetNetworkStatisticsRequest">
		<!-- void -->
    </wsdl:message>
    <wsdl:message name="GetNetworkStatisticsResponse">
        <wsdl:part name="query"     type="xsd:string"/>
    </wsdl:message>

    <!-- Network.getStatus() -->
    <wsdl:message name="GetNetworkStatusRequest">
		<!-- void -->
    </wsdl:message>
    <wsdl:message name="GetNetworkStatusResponse">
        <wsdl:part name="query"     type="xsd:string"/>
    </wsdl:message>

	<!-- ======================================================================================== -->
	<!-- ======================================================================================== -->
	<!-- ======================================================================================== -->
	<wsdl:portType name="CustomerPortType">
		
		<!-- addAccount - add a customer account -->
		<wsdl:operation name="addAccount" parameterOrder="account">
			<wsdl:input  message="ngnpro:AddCustomerAccountRequest"  name="AddCustomerAccountRequest"/>
			<wsdl:output message="ngnpro:AddCustomerAccountResponse" name="AddCustomerAccountResponse"/>
		</wsdl:operation>

		<!-- updateAccount - update a customer account -->
		<wsdl:operation name="updateAccount" parameterOrder="account">
			<wsdl:input  message="ngnpro:UpdateCustomerAccountRequest"  name="UpdateCustomerAccountRequest"/>
			<wsdl:output message="ngnpro:UpdateCustomerAccountResponse" name="UpdateCustomerAccountResponse"/>
		</wsdl:operation>

		<!-- deleteAccount - delete a customer account -->
		<wsdl:operation name="deleteAccount" parameterOrder="id">
			<wsdl:input  message="ngnpro:DeleteCustomerAccountRequest"  name="DeleteCustomerAccountRequest"/>
			<wsdl:output message="ngnpro:DeleteCustomerAccountResponse" name="DeleteCustomerAccountResponse"/>
		</wsdl:operation>

		<!-- getAccount - get customer account given customer id -->
		<wsdl:operation name="getAccount" parameterOrder="id">
		    <wsdl:input  message="ngnpro:GetCustomerAccountRequest"  name="GetCustomerAccountRequest"/>
		    <wsdl:output message="ngnpro:GetCustomerAccountResponse" name="GetCustomerAccountResponse"/>
		</wsdl:operation>

		<!-- getCustomers - get customer accounts given customer query -->
		<wsdl:operation name="getCustomers" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetCustomersRequest"  name="GetCustomersRequest"/>
			<wsdl:output message="ngnpro:GetCustomersResponse" name="GetCustomersResponse"/>
		</wsdl:operation>

		<!-- getResellers - get reseller accounts given customer query -->
		<wsdl:operation name="getResellers" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetResellersRequest"  name="GetResellersRequest"/>
			<wsdl:output message="ngnpro:GetResellersResponse" name="GetResellersResponse"/>
		</wsdl:operation>

		<!-- setProperties - set the customer properties for a given customer -->
		<wsdl:operation name="setProperties" parameterOrder="customer properties">
			<wsdl:input  message="ngnpro:SetCustomerPropertiesRequest"  name="SetCustomerPropertiesRequest"/>
			<wsdl:output message="ngnpro:SetCustomerPropertiesResponse" name="SetCustomerPropertiesResponse"/>
		</wsdl:operation>

		<!-- getProperties - get the customer properties for a given customer -->
		<wsdl:operation name="getProperties" parameterOrder="customer">
			<wsdl:input  message="ngnpro:GetCustomerPropertiesRequest"  name="GetCustomerPropertiesRequest"/>
			<wsdl:output message="ngnpro:GetCustomerPropertiesResponse" name="GetCustomerPropertiesResponse"/>
		</wsdl:operation>

	</wsdl:portType>	

	<wsdl:portType name="SipPortType">

		<!-- addGateway - add a new gateway to the system. -->
		<wsdl:operation name="addGateway" parameterOrder="gateway">
			<wsdl:input  message="ngnpro:AddGatewayRequest"  name="AddGatewayRequest"/>
			<wsdl:output message="ngnpro:AddGatewayResponse" name="AddGatewayResponse"/>
		</wsdl:operation>
		
		<!-- updateGateway - update a gateway. -->
		<wsdl:operation name="updateGateway" parameterOrder="gateway">
			<wsdl:input  message="ngnpro:UpdateGatewayRequest"  name="UpdateGatewayRequest"/>
			<wsdl:output message="ngnpro:UpdateGatewayResponse" name="UpdateGatewayResponse"/>
		</wsdl:operation>
		
		<!-- deleteGateway - deletes a gateway. -->
		<wsdl:operation name="deleteGateway" parameterOrder="name">
			<wsdl:input  message="ngnpro:DeleteGatewayRequest"  name="DeleteGatewayRequest"/>
			<wsdl:output message="ngnpro:DeleteGatewayResponse" name="DeleteGatewayResponse"/>
		</wsdl:operation>
		
		<!-- getGateways - return a list with all the gateways, filtered by a query. -->
		<wsdl:operation name="getGateways" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetGatewaysRequest"  name="GetGatewaysRequest"/>
			<wsdl:output message="ngnpro:GetGatewaysResponse" name="GetGatewaysResponse"/>
		</wsdl:operation>

		<!-- addGatewayRule - add a new gateway rule to the system. -->
		<wsdl:operation name="addGatewayRule" parameterOrder="rule">
			<wsdl:input  message="ngnpro:AddGatewayRuleRequest"  name="AddGatewayRuleRequest"/>
			<wsdl:output message="ngnpro:AddGatewayRuleResponse" name="AddGatewayRuleResponse"/>
		</wsdl:operation>
		
		<!-- updateGatewayRule - update a gateway rule. -->
		<wsdl:operation name="updateGatewayRule" parameterOrder="rule">
			<wsdl:input  message="ngnpro:UpdateGatewayRuleRequest"  name="UpdateGatewayRuleRequest"/>
			<wsdl:output message="ngnpro:UpdateGatewayRuleResponse" name="UpdateGatewayRuleResponse"/>
		</wsdl:operation>
		
		<!-- deleteGatewayRule - deletes a gateway rule. -->
		<wsdl:operation name="deleteGatewayRule" parameterOrder="id">
			<wsdl:input  message="ngnpro:DeleteGatewayRuleRequest"  name="DeleteGatewayRuleRequest"/>
			<wsdl:output message="ngnpro:DeleteGatewayRuleResponse" name="DeleteGatewayRuleResponse"/>
		</wsdl:operation>
		
		<!-- getGatewayRules - return a list with all the gateways, filtered by a query. -->
		<wsdl:operation name="getGatewayRules" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetGatewayRulesRequest"  name="GetGatewayRulesRequest"/>
			<wsdl:output message="ngnpro:GetGatewayRulesResponse" name="GetGatewayRulesResponse"/>
		</wsdl:operation>

		<!-- addCarrier - add a new carrier (which is a string). Each gateway 
		     belongs to a carrier either alone or among other gateways. All gateways 
			 in a carrier share the same priority.-->
		<wsdl:operation name="addCarrier" parameterOrder="carrier">
			<wsdl:input  message="ngnpro:AddCarrierRequest"  name="AddCarrierRequest"/>
			<wsdl:output message="ngnpro:AddCarrierResponse" name="AddCarrierResponse"/>
        </wsdl:operation>

        <!-- updateCarrier - update a carrier. -->
        <wsdl:operation name="updateCarrier" parameterOrder="carrier">
			<wsdl:input  message="ngnpro:UpdateCarrierRequest"  name="UpdateCarrierRequest"/>
			<wsdl:output message="ngnpro:UpdateCarrierResponse" name="UpdateCarrierResponse"/>
        </wsdl:operation>
		
		<!-- deleteCarrier - deletes a carrier. -->
		<wsdl:operation name="deleteCarrier" parameterOrder="name">
			<wsdl:input  message="ngnpro:DeleteCarrierRequest"  name="DeleteCarrierRequest"/>
			<wsdl:output message="ngnpro:DeleteCarrierResponse" name="DeleteCarrierResponse"/>
		</wsdl:operation>
		
		<!-- getGatewayGroups - return a list with all the gateway groups, filtered by a query. -->
		<wsdl:operation name="getCarriers" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetCarriersRequest"  name="GetCarriersRequest"/>
			<wsdl:output message="ngnpro:GetCarriersResponse" name="GetCarriersResponse"/>
		</wsdl:operation>

		<!-- addRoutes - add a list of routes to the system. -->
		<wsdl:operation name="addRoutes" parameterOrder="routes">
			<wsdl:input  message="ngnpro:AddRoutesRequest"  name="AddRoutesRequest"/>
			<wsdl:output message="ngnpro:AddRoutesResponse" name="AddRoutesResponse"/>
		</wsdl:operation>
		
		<!-- updateRoutes - update a list of routes. -->
		<wsdl:operation name="updateRoutes" parameterOrder="routes">
			<wsdl:input  message="ngnpro:UpdateRoutesRequest"  name="UpdateRoutesRequest"/>
			<wsdl:output message="ngnpro:UpdateRoutesResponse" name="UpdateRoutesResponse"/>
		</wsdl:operation>
		
		<!-- deleteRoutes - deletes a list of routes. -->
		<wsdl:operation name="deleteRoutes" parameterOrder="routes">
			<wsdl:input  message="ngnpro:DeleteRoutesRequest"  name="DeleteRoutesRequest"/>
			<wsdl:output message="ngnpro:DeleteRoutesResponse" name="DeleteRoutesResponse"/>
		</wsdl:operation>
		
		<!-- getRoutes - return a list with routes, filtered by a query. -->
		<wsdl:operation name="getRoutes" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetRoutesRequest"  name="GetRoutesRequest"/>
			<wsdl:output message="ngnpro:GetRoutesResponse" name="GetRoutesResponse"/>
		</wsdl:operation>

		<!-- addDomain - add a new SIP domain to the SIP Proxy. -->
		<wsdl:operation name="addDomain" parameterOrder="domain">
			<wsdl:input  message="ngnpro:AddSipDomainRequest"  name="AddSipDomainRequest"/>
			<wsdl:output message="ngnpro:AddSipDomainResponse" name="AddSipDomainResponse"/>
		</wsdl:operation>

		<!-- updateDomain - update a SIP domain. -->
		<wsdl:operation name="updateDomain" parameterOrder="domain">
			<wsdl:input  message="ngnpro:UpdateSipDomainRequest"  name="UpdateSipDomainRequest"/>
			<wsdl:output message="ngnpro:UpdateSipDomainResponse" name="UpdateSipDomainResponse"/>
		</wsdl:operation>

		<!-- deleteDomain - deletes a SIP domain from the SIP Proxy. -->
		<wsdl:operation name="deleteDomain" parameterOrder="domain">
			<wsdl:input  message="ngnpro:DeleteSipDomainRequest"  name="DeleteSipDomainRequest"/>
			<wsdl:output message="ngnpro:DeleteSipDomainResponse" name="DeleteSipDomainResponse"/>
		</wsdl:operation>
		
		<!-- getDomains - return a list with all domains served by the SIP Proxy. -->
		<wsdl:operation name="getDomains" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetSipDomainsRequest"  name="GetSipDomainsRequest"/>
			<wsdl:output message="ngnpro:GetSipDomainsResponse" name="GetSipDomainsResponse"/>
		</wsdl:operation>
		
		<!-- addTrustedPeer - add a new trusted peer to the SIP Proxy. -->
		<wsdl:operation name="addTrustedPeer" parameterOrder="peer">
			<wsdl:input  message="ngnpro:AddTrustedPeerRequest"  name="AddTrustedPeerRequest"/>
			<wsdl:output message="ngnpro:AddTrustedPeerResponse" name="AddTrustedPeerResponse"/>
		</wsdl:operation>

		<!-- updateTrustedPeer - update a trusted peer to the SIP Proxy. -->
		<wsdl:operation name="updateTrustedPeer" parameterOrder="peer">
			<wsdl:input  message="ngnpro:UpdateTrustedPeerRequest"  name="UpdateTrustedPeerRequest"/>
			<wsdl:output message="ngnpro:UpdateTrustedPeerResponse" name="UpdateTrustedPeerResponse"/>
		</wsdl:operation>

		<!-- deleteTrustedPeer - deletes a trusted peer from the SIP Proxy. -->
		<wsdl:operation name="deleteTrustedPeer" parameterOrder="ip">
			<wsdl:input  message="ngnpro:DeleteTrustedPeerRequest"  name="DeleteTrustedPeerRequest"/>
			<wsdl:output message="ngnpro:DeleteTrustedPeerResponse" name="DeleteTrustedPeerResponse"/>
		</wsdl:operation>
		
		<!-- getTrustedPeers - return a list with all the trusted peer recognized by the SIP Proxy. -->
		<wsdl:operation name="getTrustedPeers" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetTrustedPeersRequest"  name="GetTrustedPeersRequest"/>
			<wsdl:output message="ngnpro:GetTrustedPeersResponse" name="GetTrustedPeersResponse"/>
		</wsdl:operation>

		<!--
			addAccount - add a new SIP account to the system.
			Mandatory parameters: password, firstName, lastName, email, timezone. Others may be missing
			and can be modified later.
			
			NGNPro needs two MD5 checksums (hexdigests) computed based on the (id.username, id.domain, password) tuple.
			A hexdigest must be a string of length 32, containing only hexadecimal digits.
			These hexdigests can be computed by the client and given to NGNPro instead of a clear text
			password, as follows: the password field must be in "digest1:digest2" form, where 
			digest1=MD5("username:domain:password") and digest2=MD5("username@domain:domain:password").
			Otherwise, if the password is given in clear text, NGNPro computes these two digests and stores them.
			If the store_clear_text_passwords configuration option is set to Yes (the default value), the clear text
			password will be also be stored. If store_clear_text_passwords is set to No, the password will not
			be stored and it will not be available in the future.
			
			Properties are only for storing information in the form of name-value pairs and they can
			then be used on the client side for its own purposes. Properties do not influence routing
			decisions. Their meaning depends on the interpretation the client side gives them.
            
            If account.id.username is <autoincrement>, the username is taken as the next value of the AUTO_INCREMENT
            field `username' of table `sip_auto_increment'.
		-->
		<wsdl:operation name="addAccount" parameterOrder="account">
			<wsdl:input  message="ngnpro:AddSipAccountRequest"  name="AddSipAccountRequest"/>
			<wsdl:output message="ngnpro:AddSipAccountResponse" name="AddSipAccountResponse"/>
		</wsdl:operation>
		
		<!-- 
			updateAccount - Modify an existing SIP account.
			Parameters of the SipAccount structure that are missing (or set to nil)
			will not be modified.
		-->
		<wsdl:operation name="updateAccount" parameterOrder="account">
			<wsdl:input  message="ngnpro:UpdateSipAccountRequest"  name="UpdateSipAccountRequest"/>
			<wsdl:output message="ngnpro:UpdateSipAccountResponse" name="UpdateSipAccountResponse"/>
		</wsdl:operation>
		
		<!-- deleteAccount - delete a SIP account from the system. -->
		<wsdl:operation name="deleteAccount" parameterOrder="sipId">
			<wsdl:input  message="ngnpro:DeleteSipAccountRequest"  name="DeleteSipAccountRequest"/>
			<wsdl:output message="ngnpro:DeleteSipAccountResponse" name="DeleteSipAccountResponse"/>
		</wsdl:operation>
		
		<!-- 
			getAccount - return information about a SIP account.
			Please note that some information related to the SIP account should be retrieved
			separately, using the functions available for that category (for example
			aliases, or call forwarding)
		-->
		<wsdl:operation name="getAccount" parameterOrder="sipId">
			<wsdl:input  message="ngnpro:GetSipAccountRequest"  name="GetSipAccountRequest"/>
			<wsdl:output message="ngnpro:GetSipAccountResponse" name="GetSipAccountResponse"/>
		</wsdl:operation>

		<!-- 
			getAccounts - get a list of SIP Accounts using a SIP query.
		-->
		<wsdl:operation name="getAccounts" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetSipAccountsRequest"  name="GetSipAccountsRequest"/>
			<wsdl:output message="ngnpro:GetSipAccountsResponse" name="GetSipAccountsResponse"/>
		</wsdl:operation>		
		
		<!-- addAlias - add an alias to an existing SIP account. -->
		<wsdl:operation name="addAlias" parameterOrder="alias">
			<wsdl:input  message="ngnpro:AddSipAliasRequest"  name="AddSipAliasRequest"/>
			<wsdl:output message="ngnpro:AddSipAliasResponse" name="AddSipAliasResponse"/>
		</wsdl:operation>
		
		<!-- updateAlias - update an existing SipAlias. -->
		<wsdl:operation name="updateAlias" parameterOrder="alias">
			<wsdl:input  message="ngnpro:UpdateSipAliasRequest"  name="UpdateSipAliasRequest"/>
			<wsdl:output message="ngnpro:UpdateSipAliasResponse" name="UpdateSipAliasResponse"/>
		</wsdl:operation>
		
		<!-- deleteAlias - delete an alias from an existing SIP account. -->
		<wsdl:operation name="deleteAlias" parameterOrder="id">
			<wsdl:input  message="ngnpro:DeleteSipAliasRequest"  name="DeleteSipAliasRequest"/>
			<wsdl:output message="ngnpro:DeleteSipAliasResponse" name="DeleteSipAliasResponse"/>
		</wsdl:operation>
		
		<!-- getAlias -->
		<wsdl:operation name="getAlias" parameterOrder="id">
			<wsdl:input  message="ngnpro:GetSipAliasRequest"  name="GetSipAliasRequest"/>
			<wsdl:output message="ngnpro:GetSipAliasResponse" name="GetSipAliasResponse"/>
		</wsdl:operation>

		<!-- getAliasesForAccount - Deprecated, use getAliases-->
		<!--<wsdl:operation name="getAliasesForAccount" parameterOrder="target">
			<wsdl:input  message="ngnpro:GetSipAliasesForAccountRequest"  name="GetSipAliasesForAccountRequest"/>
			<wsdl:output message="ngnpro:GetSipAliasesForAccountResponse" name="GetSipAliasesForAccountResponse"/>
		</wsdl:operation>-->
		
		<!-- getAliases - get a list of SIP Aliases using an alias query -->
		<wsdl:operation name="getAliases" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetSipAliasesRequest"  name="GetSipAliasesRequest"/>
			<wsdl:output message="ngnpro:GetSipAliasesResponse" name="GetSipAliasesResponse"/>
		</wsdl:operation>
		
		<!-- addToGroup - add an existing SIP account to a given group. -->
		<wsdl:operation name="addToGroup" parameterOrder="sipId group">
			<wsdl:input  message="ngnpro:AddToSipGroupRequest"  name="AddToSipGroupRequest"/>
			<wsdl:output message="ngnpro:AddToSipGroupResponse" name="AddToSipGroupResponse"/>
		</wsdl:operation>
		
		<!-- removeFromGroup - removes a SIP account from a group. -->
		<wsdl:operation name="removeFromGroup" parameterOrder="sipId group">
			<wsdl:input  message="ngnpro:RemoveFromSipGroupRequest"  name="RemoveFromSipGroupRequest"/>
			<wsdl:output message="ngnpro:RemoveFromSipGroupResponse" name="RemoveFromSipGroupResponse"/>
		</wsdl:operation>
		
		<!-- getGroups - return all the groups of which the SIP account is a member. -->
		<wsdl:operation name="getGroups" parameterOrder="sipId">
			<wsdl:input  message="ngnpro:GetSipGroupsRequest"  name="GetSipGroupsRequest"/>
			<wsdl:output message="ngnpro:GetSipGroupsResponse" name="GetSipGroupsResponse"/>
		</wsdl:operation>

		<!-- 
		     addBalance - add a value to the current balance of a prepaid account.
		-->
		<wsdl:operation name="addBalance" parameterOrder="sipId value description">
			<wsdl:input  message="ngnpro:AddBalanceRequest"  name="AddBalanceRequest"/>
			<wsdl:output message="ngnpro:AddBalanceResponse" name="AddBalanceResponse"/>
		</wsdl:operation>

		<!-- 
		     addBalanceFromVoucher - add the value of a preaid card to the current balance of a prepaid account.
		     The prepaid cards are stored in CDRTool prepaid_cards table
		-->
		<wsdl:operation name="addBalanceFromVoucher" parameterOrder="sipId card">
			<wsdl:input  message="ngnpro:AddBalanceFromVoucherRequest"  name="AddBalanceFromVoucherRequest"/>
			<wsdl:output message="ngnpro:AddBalanceFromVoucherResponse" name="AddBalanceFromVoucherResponse"/>
		</wsdl:operation>
		
		<!-- getPrepaidStatus - returns information about a prepaid account. -->
		<wsdl:operation name="getPrepaidStatus" parameterOrder="sipIds">
			<wsdl:input  message="ngnpro:GetPrepaidStatusRequest"  name="GetPrepaidStatusRequest"/>
			<wsdl:output message="ngnpro:GetPrepaidStatusResponse" name="GetPrepaidStatusResponse"/>
		</wsdl:operation>		

		<!-- getCreditHistory - returns information about the credit history of a prepaid account. -->
		<wsdl:operation name="getCreditHistory" parameterOrder="sipId count">
			<wsdl:input  message="ngnpro:GetCreditHistoryRequest"  name="GetCreditHistoryRequest"/>
			<wsdl:output message="ngnpro:GetCreditHistoryResponse" name="GetCreditHistoryResponse"/>
		</wsdl:operation>

		<!-- addPhonebookEntry - add a contact to the phonebook for a sipId.
		     Mandatory parameter: uri (in 'sip:username@domain' format)
		     To indicate that the contact does not belong to any group, use the empty string.
		-->
		<wsdl:operation name="addPhonebookEntry" parameterOrder="sipId entry">
			<wsdl:input  message="ngnpro:AddPhonebookEntryRequest"  name="AddPhonebookEntryRequest"/>
			<wsdl:output message="ngnpro:AddPhonebookEntryResponse" name="AddPhonebookEntryResponse"/>
		</wsdl:operation>

		<!-- updatePhonebookEntry - update a contact from the phonebook for a sipId. 
		     Mandatory parameter: uri (in 'sip:username@domain' format).
			 Parameters of the PhonebookEntry structure that are missing (or set to nil)
			 will not be modified.
		-->
		<wsdl:operation name="updatePhonebookEntry" parameterOrder="sipId entry">
			<wsdl:input  message="ngnpro:UpdatePhonebookEntryRequest"  name="UpdatePhonebookEntryRequest"/>
			<wsdl:output message="ngnpro:UpdatePhonebookEntryResponse" name="UpdatePhonebookEntryResponse"/>
		</wsdl:operation>

		<!-- deletePhonebookEntry - delete an entry from the phonebook. -->
		<wsdl:operation name="deletePhonebookEntry" parameterOrder="sipId uri">
			<wsdl:input  message="ngnpro:DeletePhonebookEntryRequest"  name="DeletePhonebookEntryRequest"/>
			<wsdl:output message="ngnpro:DeletePhonebookEntryResponse" name="DeletePhonebookEntryResponse"/>
		</wsdl:operation>

		<!-- getPhonebookEntries - get a list of phonebook entries.
		     The search criteria may include one or more parameters of the PhonebookEntry 
			 structure. Wildcards % and _ can be used, with the exception of the "group" field, where
			 an exact string matching is performed.
			 The Range structure is used to select an interval of entries (the default
			 values are start=0 and count=10).
			 The total number of entries which have matched the search is returned.
		-->
		<wsdl:operation name="getPhonebookEntries" parameterOrder="sipId match range">
			<wsdl:input  message="ngnpro:GetPhonebookEntriesRequest"  name="GetPhonebookEntriesRequest"/>
			<wsdl:output message="ngnpro:GetPhonebookEntriesResponse" name="GetPhonebookEntriesResponse"/>
		</wsdl:operation>		

		<!-- setRejectMembers - set a list of sip URIs ('sip:username@domain') which will be rejected 
		     (wildcards % and _ can be used).
		-->
		<wsdl:operation name="setRejectMembers" parameterOrder="sipId members">
			<wsdl:input  message="ngnpro:SetRejectMembersRequest"  name="SetRejectMembersRequest"/>
			<wsdl:output message="ngnpro:SetRejectMembersResponse" name="SetRejectMembersResponse"/>
		</wsdl:operation>

		<!-- getRejectMembers - return the rejected sip URIs for a sipId. -->
		<wsdl:operation name="getRejectMembers" parameterOrder="sipId">
			<wsdl:input  message="ngnpro:GetRejectMembersRequest"  name="GetRejectMembersRequest"/>
			<wsdl:output message="ngnpro:GetRejectMembersResponse" name="GetRejectMembersResponse"/>
		</wsdl:operation>

		<!-- 
		    setAcceptRules - set the accept rules.
			The 'everybody' and 'nobody' groups can be used to accept (respectively reject) all calls.
			The Temporary section consists in a list of groups and a duration (in minutes). The Temporary
			rule is reset if either 'groups' or 'duration' parameters are set to nil.
			The Persistent section contains a list of PersistentAccept rules. The 'start' and 'stop' parameters
			of the PersistentAccept must be in the 'HH:MM' format. The 'days' parameter is an 8 bit
			value which represents the days of the week for which the rule is set. The least significant
			bit represents Monday, the most significant bit is ignored. The default values for
			'start', 'stop' and 'days' are '00:00', '23:59' and 127.
			If the 'temporary' or 'persistent' parameters of the AcceptRules structure are missing
			or set to nil, they will not be modified.
		-->
		<wsdl:operation name="setAcceptRules" parameterOrder="sipId rules">
			<wsdl:input  message="ngnpro:SetAcceptRulesRequest"  name="SetAcceptRulesRequest"/>
			<wsdl:output message="ngnpro:SetAcceptRulesResponse" name="SetAcceptRulesResponse"/>
		</wsdl:operation>

		<!-- getAcceptRules - return the accept rules. A list of non empty groups is also returned.-->
		<wsdl:operation name="getAcceptRules" parameterOrder="sipId">
			<wsdl:input  message="ngnpro:GetAcceptRulesRequest"  name="GetAcceptRulesRequest"/>
			<wsdl:output message="ngnpro:GetAcceptRulesResponse" name="GetAcceptRulesResponse"/>
		</wsdl:operation>

		<!-- setBarringPrefixes - set a list of barring prefixes for a sipId, in +E164 format.-->
		<wsdl:operation name="setBarringPrefixes" parameterOrder="sipId prefixes">
			<wsdl:input  message="ngnpro:SetBarringPrefixesRequest"   name="SetBarringPrefixesRequest"/>
			<wsdl:output message="ngnpro:SetBarringPrefixesResponse"  name="SetBarringPrefixesResponse"/>
		</wsdl:operation>

		<!-- getBarringPrefixes - return the barring prefixes for a sipId. -->
		<wsdl:operation name="getBarringPrefixes" parameterOrder="sipId">
			<wsdl:input  message="ngnpro:GetBarringPrefixesRequest"  name="GetBarringPrefixesRequest"/>
			<wsdl:output message="ngnpro:GetBarringPrefixesResponse" name="GetBarringPrefixesResponse"/>
		</wsdl:operation>
		
		<!-- setCallDiversions - set the diversions (call forwarding/redirecting) for a SIP account. -->
		<wsdl:operation name="setCallDiversions" parameterOrder="sipId diversions">
			<wsdl:input  message="ngnpro:SetCallDiversionsRequest"  name="SetCallDiversionsRequest"/>
			<wsdl:output message="ngnpro:SetCallDiversionsResponse" name="SetCallDiversionsResponse"/>
		</wsdl:operation>
		
		<!-- getCallDiversions - return a CallDiversions struct with the SIP account diversions. -->
		<wsdl:operation name="getCallDiversions" parameterOrder="sipId">
			<wsdl:input  message="ngnpro:GetCallDiversionsRequest"  name="GetCallDiversionsRequest"/>
			<wsdl:output message="ngnpro:GetCallDiversionsResponse" name="GetCallDiversionsResponse"/>
		</wsdl:operation>
		
		<!-- getCalls - return calls as described by the 'queries' list. -->
		<wsdl:operation name="getCalls" parameterOrder="sipId query">
			<wsdl:input  message="ngnpro:GetCallsRequest"  name="GetCallsRequest"/>
			<wsdl:output message="ngnpro:GetCallsResponse" name="GetCallsResponse"/>
		</wsdl:operation>

		<!-- 
		    getCallStatistics - return a statistic of the calls (number of calls, price, duration) as described by the 'queries' list. 
			The calls forwarded by the customer (sipId) are also included in the 'placed' call statistics.
		-->
		<wsdl:operation name="getCallStatistics" parameterOrder="sipId query">
			<wsdl:input  message="ngnpro:GetCallStatisticsRequest"  name="GetCallStatisticsRequest"/>
			<wsdl:output message="ngnpro:GetCallStatisticsResponse" name="GetCallStatisticsResponse"/>
		</wsdl:operation>
		
		<!-- getSipDeviceLocations - return locations for the SIP accounts in the sipIds array. -->
		<wsdl:operation name="getSipDeviceLocations" parameterOrder="sipIds">
			<wsdl:input  message="ngnpro:GetSipDeviceLocationsRequest"  name="GetSipDeviceLocationsRequest"/>
			<wsdl:output message="ngnpro:GetSipDeviceLocationsResponse" name="GetSipDeviceLocationsResponse"/>
		</wsdl:operation>

		<!-- getSipTrace . -->
		<wsdl:operation name="getSipTrace" parameterOrder="filter">
			<wsdl:input  message="ngnpro:GetSipTraceRequest"  name="GetSipTraceRequest"/>
			<wsdl:output message="ngnpro:GetSipTraceResponse" name="GetSipTraceResponse"/>
		</wsdl:operation>

		<!-- getMediaTrace . -->
		<wsdl:operation name="getMediaTrace" parameterOrder="filter">
			<wsdl:input  message="ngnpro:GetMediaTraceRequest"  name="GetMediaTraceRequest"/>
			<wsdl:output message="ngnpro:GetMediaTraceResponse" name="GetMediaTraceResponse"/>
		</wsdl:operation>

		<!-- getMediaSummary -->
		<wsdl:operation name="getMediaSummary" parameterOrder="">
			<wsdl:input  message="ngnpro:GetMediaSummaryRequest"  name="GetMediaSummaryRequest"/>
			<wsdl:output message="ngnpro:GetMediaSummaryResponse" name="GetMediaSummaryResponse"/>
		</wsdl:operation>

		<!-- getMediaSessions -->
		<wsdl:operation name="getMediaSessions" parameterOrder="">
			<wsdl:input  message="ngnpro:GetMediaSessionsRequest"  name="GetMediaSessionsRequest"/>
			<wsdl:output message="ngnpro:GetMediaSessionsResponse" name="GetMediaSessionsResponse"/>
		</wsdl:operation>

	</wsdl:portType>
	
	<wsdl:portType name="VoicemailPortType">

		<!-- 
			addAccount - add a voicemail account to a SIP account.
			Mandatory parameters: name and email. password may be missing.
			If they are missing they will be automatically generated.
		-->
		<wsdl:operation name="addAccount" parameterOrder="account">
			<wsdl:input  message="ngnpro:AddVoicemailAccountRequest" name="AddVoicemailAccountRequest"/>
			<wsdl:output message="ngnpro:AddVoicemailAccountResponse" name="AddVoicemailAccountResponse"/>
		</wsdl:operation>

		<!-- updateAccount - change voicemail settings. -->
		<wsdl:operation name="updateAccount" parameterOrder="account">
			<wsdl:input  message="ngnpro:UpdateVoicemailAccountRequest"  name="UpdateVoicemailAccountRequest"/>
			<wsdl:output message="ngnpro:UpdateVoicemailAccountResponse" name="UpdateVoicemailAccountResponse"/>
		</wsdl:operation>

		<!-- deleteAccount - remove the voicemail account. -->
		<wsdl:operation name="deleteAccount" parameterOrder="sipId">
			<wsdl:input  message="ngnpro:DeleteVoicemailAccountRequest"  name="DeleteVoicemailAccountRequest"/>
			<wsdl:output message="ngnpro:DeleteVoicemailAccountResponse" name="DeleteVoicemailAccountResponse"/>
		</wsdl:operation>

		<!-- getAccount - get voicemail settings. -->
		<wsdl:operation name="getAccount" parameterOrder="sipId">
			<wsdl:input  message="ngnpro:GetVoicemailAccountRequest"  name="GetVoicemailAccountRequest"/>
			<wsdl:output message="ngnpro:GetVoicemailAccountResponse" name="GetVoicemailAccountResponse"/>
		</wsdl:operation>

		<!-- setAnnouncement - set the message to play when call hits the voicemail account. -->
		<wsdl:operation name="setAnnouncement" parameterOrder="sipId message">
			<wsdl:input  message="ngnpro:SetVoicemailAnnouncementRequest"  name="SetVoicemailAnnouncementRequest"/>
			<wsdl:output message="ngnpro:SetVoicemailAnnouncementResponse" name="SetVoicemailAnnouncementResponse"/>
		</wsdl:operation>

	</wsdl:portType>

	<wsdl:portType name="EnumPortType">

		<!-- 
			addRange - add a new ENUM range into the system.
			Mandatory parameters: prefix, minDigits, maxDigits. Others may be missing.
			If tld is missing it defaults to e164.arpa.
			If size is missing it will be computed.
			'used' paramater should not be set, else an exception will be raised.
		-->
		<wsdl:operation name="addRange" parameterOrder="range">
			<wsdl:input  message="ngnpro:AddEnumRangeRequest"  name="AddEnumRangeRequest"/>
			<wsdl:output message="ngnpro:AddEnumRangeResponse" name="AddEnumRangeResponse"/>
		</wsdl:operation>

		<!--
			updateRange - update an ENUM range.
			Allow change of customerId, ttl and info if reseller or admin and propagate changes of
			customerId to existing numbers.
		-->
		<wsdl:operation name="updateRange" parameterOrder="range">
			<wsdl:input  message="ngnpro:UpdateEnumRangeRequest"  name="UpdateEnumRangeRequest"/>
			<wsdl:output message="ngnpro:UpdateEnumRangeResponse" name="UpdateEnumRangeResponse"/>
		</wsdl:operation>

		<!-- 
			deleteRange - delete an ENUM range from the system.
			Be very careful with this function, as it will also delete all ENUM numbers that
			belong to that range together with the ENUM mappings that belong to that range!!!
		-->
		<wsdl:operation name="deleteRange" parameterOrder="range">
			<wsdl:input  message="ngnpro:DeleteEnumRangeRequest"  name="DeleteEnumRangeRequest"/>
			<wsdl:output message="ngnpro:DeleteEnumRangeResponse" name="DeleteEnumRangeResponse"/>
		</wsdl:operation>
		
		<!-- 
			getRanges - get all ENUM ranges in the system.
		-->
		<wsdl:operation name="getRanges" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetEnumRangesRequest"  name="GetEnumRangesRequest"/>
			<wsdl:output message="ngnpro:GetEnumRangesResponse" name="GetEnumRangesResponse"/>
		</wsdl:operation>
		
		<!-- 
			addNumber - add a new ENUM number to the system.
			Mandatory parameters: number. Others may be missing and can be modified later.
			If tld is missing it defaults to e164.arpa.
		-->
		<wsdl:operation name="addNumber" parameterOrder="number">
			<wsdl:input  message="ngnpro:AddEnumNumberRequest"  name="AddEnumNumberRequest"/>
			<wsdl:output message="ngnpro:AddEnumNumberResponse" name="AddEnumNumberResponse"/>
		</wsdl:operation>

		<!-- 
			updateNumber - update an ENUM number.
			If tld is missing it defaults to e164.arpa.
		-->
		<wsdl:operation name="updateNumber" parameterOrder="number">
			<wsdl:input  message="ngnpro:UpdateEnumNumberRequest"  name="UpdateEnumNumberRequest"/>
			<wsdl:output message="ngnpro:UpdateEnumNumberResponse" name="UpdateEnumNumberResponse"/>
		</wsdl:operation>
		
		<!-- 
			deleteNumber - delete an ENUM number. It also deletes all number mappings.
			If tld is missing it defaults to e164.arpa.
		-->
		<wsdl:operation name="deleteNumber" parameterOrder="enumId">
			<wsdl:input  message="ngnpro:DeleteEnumNumberRequest"  name="DeleteEnumNumberRequest"/>
			<wsdl:output message="ngnpro:DeleteEnumNumberResponse" name="DeleteEnumNumberResponse"/>
		</wsdl:operation>
		
		<!-- 
			getNumber - get an ENUM number.
			If tld is missing it defaults to e164.arpa.
		-->
		<wsdl:operation name="getNumber" parameterOrder="enumId">
			<wsdl:input  message="ngnpro:GetEnumNumberRequest"  name="GetEnumNumberRequest"/>
			<wsdl:output message="ngnpro:GetEnumNumberResponse" name="GetEnumNumberResponse"/>
		</wsdl:operation>

		<!-- 
			getNumbers - get a list of ENUM numbers using an ENUM query -->
		-->
		<wsdl:operation name="getNumbers" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetEnumNumbersRequest"  name="GetEnumNumbersRequest"/>
			<wsdl:output message="ngnpro:GetEnumNumbersResponse" name="GetEnumNumbersResponse"/>
		</wsdl:operation>
		
	</wsdl:portType>

	<wsdl:portType name="DnsPortType">

		<!-- 
			addZone - add a new DNS zone into the system.
			Mandatory parameters: prefix, minDigits, maxDigits. Others may be missing.
			If tld is missing it defaults to e164.arpa.
			If size is missing it will be computed.
			'used' paramater should not be set, else an exception will be raised.
		-->
		<wsdl:operation name="addZone" parameterOrder="zone">
			<wsdl:input  message="ngnpro:AddDnsZoneRequest"     name="AddDnsZoneRequest"/>
			<wsdl:output message="ngnpro:AddDnsZoneResponse"    name="AddDnsZoneResponse"/>
		</wsdl:operation>

		<!--
			updateZone - update a DNS zone.
			Allow change of customerId, ttl and info if reseller or admin and propagate changes of
			customerId to existing numbers.
		-->
		<wsdl:operation name="updateZone" parameterOrder="zone">
			<wsdl:input  message="ngnpro:UpdateDnsZoneRequest"  name="UpdateDnsZoneRequest"/>
			<wsdl:output message="ngnpro:UpdateDnsZoneResponse" name="UpdateDnsZoneResponse"/>
		</wsdl:operation>

		<!-- 
			deleteZone - delete a DNS zone from the system.
			Be very careful with this function, as it will also delete all ENUM numbers that
			belong to that range together with the ENUM mappings that belong to that range!!!
		-->
		<wsdl:operation name="deleteZone" parameterOrder="zone">
			<wsdl:input  message="ngnpro:DeleteDnsZoneRequest"  name="DeleteDnsZoneRequest"/>
			<wsdl:output message="ngnpro:DeleteDnsZoneResponse" name="DeleteDnsZoneResponse"/>
		</wsdl:operation>
		
		<!-- 
			getZone - get a DNS zone by name.
		-->
		<wsdl:operation name="getZone" parameterOrder="zone">
			<wsdl:input  message="ngnpro:GetDnsZoneRequest"    name="GetDnsZoneRequest"/>
			<wsdl:output message="ngnpro:GetDnsZoneResponse"   name="GetDnsZoneResponse"/>
		</wsdl:operation>
		
		<!-- 
			getZones - get all DNS zones in the system.
		-->
		<wsdl:operation name="getZones" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetDnsZonesRequest"    name="GetDnsZonesRequest"/>
			<wsdl:output message="ngnpro:GetDnsZonesResponse"   name="GetDnsZonesResponse"/>
		</wsdl:operation>
		
		<!-- 
			addRecord - add a new DNS record to the system.
            Mandatory parameters: record.zone, record.name, record.type, record.value.
            Others may be missing and can be modified later. CANNOT add fancy record types;
            use Dns.addFancyRecord for fancy records. Current fancy record types: URL, MBOX.
		-->
		<wsdl:operation name="addRecord" parameterOrder="record">
			<wsdl:input  message="ngnpro:AddDnsRecordRequest"   name="AddDnsRecordRequest"/>
			<wsdl:output message="ngnpro:AddDnsRecordResponse"  name="AddDnsRecordResponse"/>
		</wsdl:operation>

		<!-- 
			addFancyRecord - add a new fancy DNS record to the system.
            Mandatory parameters: record.zone, record.name, record.type, record.value.
            Others may be missing and can be modified later. Can ONLY add fancy record types;
            use Dns.addRecord for non-fancy records. Current fancy record types: URL, MBOX.
		-->
		<wsdl:operation name="addFancyRecord" parameterOrder="record">
			<wsdl:input  message="ngnpro:AddDnsFancyRecordRequest"   name="AddDnsFancyRecordRequest"/>
			<wsdl:output message="ngnpro:AddDnsFancyRecordResponse"  name="AddDnsFancyRecordResponse"/>
		</wsdl:operation>

		<!-- 
			updateRecord - update a DNS record.
		-->
		<wsdl:operation name="updateRecord" parameterOrder="record">
			<wsdl:input  message="ngnpro:UpdateDnsRecordRequest"    name="UpdateDnsRecordRequest"/>
			<wsdl:output message="ngnpro:UpdateDnsRecordResponse"   name="UpdateDnsRecordResponse"/>
		</wsdl:operation>
        
        <!-- 
			updateFancyRecord - update a fancy DNS record.
		-->
		<wsdl:operation name="updateFancyRecord" parameterOrder="record">
			<wsdl:input  message="ngnpro:UpdateDnsFancyRecordRequest"    name="UpdateDnsFancyRecordRequest"/>
			<wsdl:output message="ngnpro:UpdateDnsFancyRecordResponse"   name="UpdateDnsFancyRecordResponse"/>
		</wsdl:operation>
		
		<!-- 
			deleteRecord - delete a DNS record.
		-->
		<wsdl:operation name="deleteRecord" parameterOrder="recordId">
			<wsdl:input  message="ngnpro:DeleteDnsRecordRequest"    name="DeleteDnsRecordRequest"/>
			<wsdl:output message="ngnpro:DeleteDnsRecordResponse"   name="DeleteDnsRecordResponse"/>
		</wsdl:operation>
		
		<!-- 
			deleteFancyRecord - delete a fancy DNS record.
		-->
		<wsdl:operation name="deleteFancyRecord" parameterOrder="recordId">
			<wsdl:input  message="ngnpro:DeleteDnsFancyRecordRequest"    name="DeleteDnsFancyRecordRequest"/>
			<wsdl:output message="ngnpro:DeleteDnsFancyRecordResponse"   name="DeleteDnsFancyRecordResponse"/>
		</wsdl:operation>
		
		<!-- 
			getRecord - get a DNS record.
		-->
		<wsdl:operation name="getRecord" parameterOrder="recordId">
			<wsdl:input  message="ngnpro:GetDnsRecordRequest"       name="GetDnsRecordRequest"/>
			<wsdl:output message="ngnpro:GetDnsRecordResponse"      name="GetDnsRecordResponse"/>
		</wsdl:operation>

		<!-- 
			getFancyRecord - get a fancy DNS record.
		-->
		<wsdl:operation name="getFancyRecord" parameterOrder="recordId">
			<wsdl:input  message="ngnpro:GetDnsFancyRecordRequest"       name="GetDnsFancyRecordRequest"/>
			<wsdl:output message="ngnpro:GetDnsFancyRecordResponse"      name="GetDnsFancyRecordResponse"/>
		</wsdl:operation>

		<!-- 
			getRecords - get a list of DNS records using a DNS query
		-->
		<wsdl:operation name="getRecords" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetDnsRecordsRequest"      name="GetDnsRecordsRequest"/>
			<wsdl:output message="ngnpro:GetDnsRecordsResponse"     name="GetDnsRecordsResponse"/>
		</wsdl:operation>

		<!-- 
			getFancyRecords - get a list of fancy DNS records using a DNS query
		-->
		<wsdl:operation name="getFancyRecords" parameterOrder="query">
			<wsdl:input  message="ngnpro:GetDnsFancyRecordsRequest"      name="GetDnsFancyRecordsRequest"/>
			<wsdl:output message="ngnpro:GetDnsFancyRecordsResponse"     name="GetDnsFancyRecordsResponse"/>
		</wsdl:operation>
		
	</wsdl:portType>

	<wsdl:portType name="RatingPortType">

		<!--
		    setEntityProfiles - set the rating profiles for a rating entity. A rating entity is a string which 
			can denote a subscriber, domain or gateway to which the specified rating profiles are attached.
			A rating entity has the following format: ('subscriber://username@domain'|'domain://domain'|'gateway://IP_address')
			The profiles must exist in the Rating Engine (CDRTool), otherwise an exception will be thrown.
		-->
		<wsdl:operation name="setEntityProfiles" parameterOrder="profiles">
			<wsdl:input  message="ngnpro:SetEntityProfilesRequest"  name="SetEntityProfilesRequest"/>
			<wsdl:output message="ngnpro:SetEntityProfilesResponse" name="SetEntityProfilesResponse"/>
		</wsdl:operation>

		<!--
		    deleteEntityProfiles - delete the rating profiles for a given rating entity.
		-->
		<wsdl:operation name="deleteEntityProfiles" parameterOrder="entity">
			<wsdl:input  message="ngnpro:DeleteEntityProfilesRequest"  name="DeleteEntityProfilesRequest"/>
			<wsdl:output message="ngnpro:DeleteEntityProfilesResponse" name="DeleteEntityProfilesResponse"/>
		</wsdl:operation>

		<!--
		    getEntityProfiles - get the rating profiles for a given rating entity.
		-->
		<wsdl:operation name="getEntityProfiles" parameterOrder="entity">
			<wsdl:input  message="ngnpro:GetEntityProfilesRequest"  name="GetEntityProfilesRequest"/>
			<wsdl:output message="ngnpro:GetEntityProfilesResponse" name="GetEntityProfilesResponse"/>
		</wsdl:operation>		
		
    </wsdl:portType>

    <wsdl:portType name="NetworkPortType">
        <!--
            getStatistics - get statistics about the current network status. The
            result is a json encoded object.
        -->
        <wsdl:operation name="getStatistics" parameterOrder="">
            <wsdl:input  message="ngnpro:GetNetworkStatisticsRequest"  name="GetNetworkStatisticsRequest"/>
            <wsdl:output message="ngnpro:GetNetworkStatisticsResponse" name="GetNetworkStatisticsResponse"/>
        </wsdl:operation>

        <!--
            getStatus - get the current members of the network and their status.
            The result is a json encoded object.
        -->
        <wsdl:operation name="getStatus" parameterOrder="">
            <wsdl:input  message="ngnpro:GetNetworkStatusRequest"  name="GetNetworkStatusRequest"/>
            <wsdl:output message="ngnpro:GetNetworkStatusResponse" name="GetNetworkStatusResponse"/>
        </wsdl:operation>
    </wsdl:portType>
	
	<!-- ======================================================================================== -->
	<!-- ======================================================================================== -->
	<!-- ======================================================================================== -->
	
	<wsdl:binding name="CustomerBinding" type="ngnpro:CustomerPortType">
		<!-- CustomerPort and Customer management functions are available only on Managed DNS hosted platform -->
	
		<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
		
		<wsdl:operation name="addAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddCustomerAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddCustomerAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="updateAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateCustomerAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateCustomerAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="deleteAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteCustomerAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteCustomerAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetCustomerAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetCustomerAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getCustomers">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetCustomersRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetCustomersResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getResellers">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetResellersRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetResellersResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="setProperties">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="SetCustomerPropertiesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="SetCustomerPropertiesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getProperties">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetCustomerPropertiesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetCustomerPropertiesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Customer" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

	</wsdl:binding>
	
	<wsdl:binding name="SipBinding" type="ngnpro:SipPortType">
	
		<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

		<wsdl:operation name="addGateway">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddGatewayRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddGatewayResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="updateGateway">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateGatewayRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateGatewayResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="deleteGateway">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteGatewayRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteGatewayResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getGateways">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetGatewaysRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetGatewaysResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="addGatewayRule">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddGatewayRuleRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddGatewayRuleResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="updateGatewayRule">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateGatewayRuleRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateGatewayRuleResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="deleteGatewayRule">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteGatewayRuleRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteGatewayRuleResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getGatewayRules">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetGatewayRulesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetGatewayRulesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="addCarrier">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddCarrierRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddCarrierResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="updateCarrier">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateCarrierRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateCarrierResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="deleteCarrier">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteCarrierRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteCarrierResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getCarriers">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetCarriersRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetCarriersResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="addRoutes">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddRoutesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddRoutesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="updateRoutes">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateRoutesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateRoutesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="deleteRoutes">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteRoutesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteRoutesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getRoutes">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetRoutesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetRoutesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="addDomain">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddSipDomainRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddSipDomainResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="updateDomain">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateSipDomainRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateSipDomainResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="deleteDomain">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteSipDomainRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteSipDomainResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getDomains">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetSipDomainsRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetSipDomainsResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="addTrustedPeer">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddTrustedPeerRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddTrustedPeerResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="updateTrustedPeer">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateTrustedPeerRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateTrustedPeerResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="deleteTrustedPeer">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteTrustedPeerRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteTrustedPeerResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getTrustedPeers">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetTrustedPeersRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetTrustedPeersResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

                <wsdl:operation name="addAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddSipAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddSipAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="updateAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateSipAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateSipAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="deleteAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteSipAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteSipAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetSipAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetSipAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getAccounts">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetSipAccountsRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetSipAccountsResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="addAlias">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddSipAliasRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddSipAliasResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="updateAlias">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateSipAliasRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateSipAliasResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="deleteAlias">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteSipAliasRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteSipAliasResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getAlias">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetSipAliasRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetSipAliasResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

        <!-- Deprecated, use getAliases -->
		<!--<wsdl:operation name="getAliasesForAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetSipAliasesForAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetSipAliasesForAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>-->		
		
		<wsdl:operation name="getAliases">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetSipAliasesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetSipAliasesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="addToGroup">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddToSipGroupRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddToSipGroupResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="removeFromGroup">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="RemoveFromSipGroupRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="RemoveFromSipGroupResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getGroups">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetSipGroupsRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetSipGroupsResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="addBalance">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddBalanceRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddBalanceResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="addBalanceFromVoucher">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddBalanceFromVoucherRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddBalanceFromVoucherResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getPrepaidStatus">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetPrepaidStatusRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetPrepaidStatusResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getCreditHistory">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetCreditHistoryRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetCreditHistoryResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="addPhonebookEntry">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddPhonebookEntryRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddPhonebookEntryResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="updatePhonebookEntry">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdatePhonebookEntryRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdatePhonebookEntryResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="deletePhonebookEntry">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeletePhonebookEntryRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeletePhonebookEntryResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getPhonebookEntries">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetPhonebookEntriesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetPhonebookEntriesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="setRejectMembers">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="SetRejectMembersRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="SetRejectMembersResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getRejectMembers">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetRejectMembersRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetRejectMembersResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="setAcceptRules">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="SetAcceptRulesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="SetAcceptRulesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getAcceptRules">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetAcceptRulesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetAcceptRulesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="setBarringPrefixes">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="SetBarringPrefixesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="SetBarringPrefixesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getBarringPrefixes">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetBarringPrefixesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetBarringPrefixesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="setCallDiversions">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="SetCallDiversionsRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="SetCallDiversionsResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getCallDiversions">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetCallDiversionsRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetCallDiversionsResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getCalls">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetCallsRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetCallsResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getCallStatistics">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetCallStatisticsRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetCallStatisticsResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getSipDeviceLocations">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetSipDeviceLocationsRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetSipDeviceLocationsResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getSipTrace">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetSipTraceRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetSipTraceResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getMediaTrace">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetMediaTraceRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetMediaTraceResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getMediaSummary">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetMediaSummaryRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetMediaSummaryResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getMediaSessions">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetMediaSessionsRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetMediaSessionsResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Sip" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

	</wsdl:binding>
	
	<wsdl:binding name="VoicemailBinding" type="ngnpro:VoicemailPortType">
	
		<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

		<wsdl:operation name="addAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddVoicemailAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Voicemail" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddVoicemailAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Voicemail" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="updateAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateVoicemailAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Voicemail" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateVoicemailAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Voicemail" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="deleteAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteVoicemailAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Voicemail" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteVoicemailAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Voicemail" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getAccount">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetVoicemailAccountRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Voicemail" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetVoicemailAccountResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Voicemail" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="setAnnouncement">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="SetVoicemailAnnouncementRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Voicemail" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="SetVoicemailAnnouncementResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Voicemail" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

	</wsdl:binding>

	<wsdl:binding name="EnumBinding" type="ngnpro:EnumPortType">
	
		<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
		
		<wsdl:operation name="addRange">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddEnumRangeRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddEnumRangeResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="updateRange">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateEnumRangeRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateEnumRangeResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="deleteRange">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteEnumRangeRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteEnumRangeResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getRanges">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetEnumRangesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetEnumRangesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="addNumber">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddEnumNumberRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddEnumNumberResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="updateNumber">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateEnumNumberRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateEnumNumberResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="deleteNumber">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteEnumNumberRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteEnumNumberResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getNumber">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetEnumNumberRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetEnumNumberResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getNumbers">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetEnumNumbersRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetEnumNumbersResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Enum" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
	</wsdl:binding>

	<wsdl:binding name="DnsBinding" type="ngnpro:DnsPortType">
	
		<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
		
		<wsdl:operation name="addZone">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddDnsZoneRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddDnsZoneResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="updateZone">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateDnsZoneRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateDnsZoneResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="deleteZone">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteDnsZoneRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteDnsZoneResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getZone">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetDnsZoneRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetDnsZoneResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getZones">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetDnsZonesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetDnsZonesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="addRecord">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddDnsRecordRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddDnsRecordResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="addFancyRecord">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="AddDnsFancyRecordRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="AddDnsFancyRecordResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="updateRecord">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateDnsRecordRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateDnsRecordResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="updateFancyRecord">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="UpdateDnsFancyRecordRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="UpdateDnsFancyRecordResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="deleteRecord">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteDnsRecordRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteDnsRecordResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="deleteFancyRecord">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteDnsFancyRecordRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteDnsFancyRecordResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getRecord">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetDnsRecordRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetDnsRecordResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getFancyRecord">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetDnsFancyRecordRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetDnsFancyRecordResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getRecords">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetDnsRecordsRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetDnsRecordsResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="getFancyRecords">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetDnsFancyRecordsRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>			
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetDnsFancyRecordsResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Dns" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>
		
	</wsdl:binding>

	<wsdl:binding name="RatingBinding" type="ngnpro:RatingPortType">
	
		<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

		<!-- setEntityProfiles -->
		<wsdl:operation name="setEntityProfiles">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="SetEntityProfilesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Rating" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="SetEntityProfilesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Rating" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="deleteEntityProfiles">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="DeleteEntityProfilesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Rating" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="DeleteEntityProfilesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Rating" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="getEntityProfiles">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="GetEntityProfilesRequest">
				<wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Rating" use="encoded"/>
			</wsdl:input>
			<wsdl:output name="GetEntityProfilesResponse">
				<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Rating" use="encoded"/>
			</wsdl:output>
		</wsdl:operation>

    </wsdl:binding>

    <wsdl:binding name="NetworkBinding" type="ngnpro:NetworkPortType">
        
        <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        
        <wsdl:operation name="getStatistics">
            <wsdlsoap:operation soapAction=""/>
            <wsdl:input name="GetNetworkStatisticsRequest">
                <wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
                <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Network" use="encoded"/>
            </wsdl:input>
            <wsdl:output name="GetNetworkStatisticsResponse">
                <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Network" use="encoded"/>
            </wsdl:output>
        </wsdl:operation>
        
        <wsdl:operation name="getStatus">
            <wsdlsoap:operation soapAction=""/>
            <wsdl:input name="GetNetworkStatusRequest">
                <wsdlsoap:header message="ngnpro:Login" part="auth" use="encoded" namespace="urn:AGProjects:NGNPro" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
                <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Network" use="encoded"/>
            </wsdl:input>
            <wsdl:output name="GetNetworkStatusResponse">
                <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:AGProjects:NGNPro:Network" use="encoded"/>
            </wsdl:output>
        </wsdl:operation>

    </wsdl:binding>

	<!-- ======================================================================================== -->
	<!-- ======================================================================================== -->
	<!-- ======================================================================================== -->

	<wsdl:service name="NGNPro">
		<wsdl:port binding="ngnpro:SipBinding"       name="SipPort">
		    <wsdlsoap:address location="https://mdns.sipthor.net/ngnpro/"/>
		</wsdl:port>
		<wsdl:port binding="ngnpro:VoicemailBinding" name="VoicemailPort">
		    <wsdlsoap:address location="https://mdns.sipthor.net/ngnpro/voicemail/"/>
		</wsdl:port>
		<wsdl:port binding="ngnpro:EnumBinding"      name="EnumPort">
		    <wsdlsoap:address location="https://mdns.sipthor.net/ngnpro/"/>
		</wsdl:port>
		<wsdl:port binding="ngnpro:DnsBinding"       name="DnsPort">
		    <wsdlsoap:address location="https://mdns.sipthor.net/ngnpro/"/>
		</wsdl:port>
		<wsdl:port binding="ngnpro:RatingBinding"	 name="RatingPort">
		    <wsdlsoap:address location="https://mdns.sipthor.net/ngnpro/"/>
		</wsdl:port>
		<wsdl:port binding="ngnpro:CustomerBinding"  name="CustomerPort">
		    <wsdlsoap:address location="https://mdns.sipthor.net/ngnpro/"/>
        </wsdl:port>
        <wsdl:port binding="ngnpro:NetworkBinding"   name="NetworkPort">
            <wsdlsoap:address location="https://mdns.sipthor.net/ngnpro/"/>
        </wsdl:port>

		<wsdl:port binding="ngnpro:SipBinding"       name="InternalSipPort">
		    <wsdlsoap:address location="http://ngnpro.sipthor.net:9200/"/>
		</wsdl:port>
		<wsdl:port binding="ngnpro:VoicemailBinding" name="InternalVoicemailPort">
		    <wsdlsoap:address location="http://ngnpro.sipthor.net:9200/"/>
		</wsdl:port>
		<wsdl:port binding="ngnpro:EnumBinding"      name="InternalEnumPort">
		    <wsdlsoap:address location="http://ngnpro.sipthor.net:9200/"/>
		</wsdl:port>
		<wsdl:port binding="ngnpro:DnsBinding"       name="InternalDnsPort">
		    <wsdlsoap:address location="http://ngnpro.sipthor.net:9200/"/>
		</wsdl:port>
		<wsdl:port binding="ngnpro:RatingBinding"    name="InternalRatingPort">
		    <wsdlsoap:address location="http://ngnpro.sipthor.net:9200/"/>
		</wsdl:port>
		<wsdl:port binding="ngnpro:CustomerBinding"  name="InternalCustomerPort">
		    <wsdlsoap:address location="http://ngnpro.sipthor.net:9200/"/>
        </wsdl:port>
        <wsdl:port binding="ngnpro:NetworkBinding"   name="InternalNetworkPort">
            <wsdlsoap:address location="http://ngnpro.sipthor.net:9200/"/>
        </wsdl:port>
			
	</wsdl:service>

</wsdl:definitions>
