SC API Guide 961aaa v1 2
SC API Guide 961aaa v1 2
Bridgewater, Bridgewater Systems, Widespan and the Bridgewater Systems Logo are the trademarks of Bridgewater Systems
Corporation. Other company or product names referenced may be the trademark or registered trademark of their respective
companies. ©1997-2012 Bridgewater Systems Corporation. All rights reserved.
About this guide
This guide describes the API operations and command line utilities for the
Provisioning Server XML interface.
Audience
The intended audience for this document is:
• application developers
• test developers
Installation
For AAA RPM and package installation procedures, see the Bridgewater
Installation Reference Guide.
For SDB RPM and package installation procedures, see the HSS: Installation and
Configuration Guide.
For Policy Controller RPM and package installation procedures, see the Policy
Controller: Installation and Configuration Guide.
Text conventions
Document history
Related documents
The Release 9.6-AAA documentation consists of the following guides:
• 3G/WLAN Interworking Guide
Describes 3G/WLAN interworking environments. Covers the deployment
options and configuration procedures for 3G/WLAN interworking in a
Bridgewater deployment.
• Accounting Framework Guide
Describes how to configure, operate, and maintain the Accounting Framework,
and how to use the accounting records, and the usage and revenue reports.
• Bridgewater Installation Reference Guide
Describes the deployment options, installation procedures, installation
packages, engineering requirements, and security considerations for
Bridgewater Systems products.
• Bridgewater Master Glossary
Describes the terms and acronyms used in Bridgewater Systems software and
documentation.
• Bridgewater SNMP Guide
Describes how to configure SNMP support for the Bridgewater Systems
software components, and provides reference information about Bridgewater
MIBs. It also describes how to use Key Performance Indicator (KPI) scripts to
obtain SNMP metrics for reporting performance and capacity data. KPI scripts
gather time-based loading level statistics from Bridgewater components.
• CALEA Controller with SS8 Guide
Describes how to install, configure, and operate the CALEA (Communications
Assistance for Law Enforcement Agencies) Controller.
• CALEA Controller with Verint Guide
Describes how to install, configure, and operate the CALEA (Communications
Assistance for Law Enforcement Agencies) Controller.
HSS documents
The HSS documentation consists of the following guides:
• HSS: API Guide
Describes the Provisioning Server XML interface, operations, client application
design criteria, and the command line utilities for provisioning operations.
• HSS: Deployment Planning Guide
Describes how to plan an HSS deployment. Provides information about
servers, the software environment, and troubleshooting logs.
• HSS: Getting Started Guide
Describes the 3GPP (3rd Generation Partnership Project) network specification
for Long Term Evolution (LTE). Also describes the HSS and related products
such as the 3GPP-AAA.
• HSS: Installation and Configuration Guide
Describes the deployment options, installation procedures, and installation
packages for the HSS and related products such as the 3GPP-AAA.
• HSS: IPv6 Implementation Guide
Describes the IPv6 protocol. Also describes how to configure IPv6 for Solaris
and the HSS.
• HSS: Operations and Maintenance Guide
Describes procedures for operating and maintaining an HSS deployment, such
as how to configure HSS policy rules or use HSS test tools.
• HSS: Provisioning Guide
Describes how to provision HSS components in the Profile database using the
Service Manager.
DomainAPI operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
createDomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
createDomainProfileSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
getDomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
getDomainProfileSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
updateDomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
updateDomainProfileSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
HotlineAPI operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
createUser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
deleteUser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
deleteAccount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
updateUser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
getCoAMetrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
getDMMetrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
getCoADMMetrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
clearCoADMFailureMetrics . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
NetworkAPI operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
createDHCPServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
findDPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
createDPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
createIPAddressPool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
createNetwork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
deleteDHCPServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
deleteDPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
deleteIPAddressPool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
deleteNetwork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
getDHCPServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
getDPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
getIPAddressPool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
getNetwork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
updateDHCPServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
updateDPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
updateIPAddressPool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
updateNetwork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
1
Chapter 1
Chapter
XML interface
The XML interface to the Provisioning Server is the main interface for provisioning
the Profile Database. Client applications can be written in any language that can
support XML data exchange over HTTP using TCP/IP.
For information about using the XML interface, see Chapter 3, "Using the XML
interface".
The XML interface operations are documented in Chapter 4, "Provisioning APIs".
Programming environments
There are three requirements for using the Provisioning API XML interface:
• transport layer communication must use TCP/IP socket connections
• application layer communication must use HTTP byte-oriented messaging
protocol
• the data exchange format within the message must be XML
Suitable programming languages for application development include:
• compiled languages : Java, C++, and C
• interpreted languages : Perl, Tcl, Python, Php, Ruby, and Ajax
Development tools
This section provides information about development tools.
HTTP support An HTTP support package can be used to simplify and automate the generation of
package HTTP POST messages for API operation requests.
XML support package An XML support package can be used to simplify and manage the building and
parsing of XML data within API operation requests and responses.
Internet browser An Internet browser can be used to examine and validate the XML request and
response for an API call. Connect to the Provisioning Server by typing in the same
URL that would be used by the client application (for example, http://
localhost:32000/api/).
2
Chapter 2
Chapter
This chapter describes the data model for entities that may be provisioned by the
Provisioning API operations.
The topics are:
• Service contexts
• Service entity modelling
• Subscriber entity modelling
• Network entity modelling
• WiMAX entity modelling
Service contexts
The service and subscriber entities form a hierarchy of service context levels, as
described in Table 1. Entries in the table are listed in order of value inheritance,
from the service class (SC) context level down to the user (U) context level. Service
attributes defined at a higher context level are inherited from the top level
downwards, until overridden.
For example, a service attribute defined at the organization group (OG) level is
inherited by all organizations, account groups, accounts, user groups, and users.
An attribute defined at the user (U) level will apply only to that specific user.
Associated entity in
Context name Description
data model
RZQLQJ2UJDQL]DWLRQ
2UJDQL]DWLRQ
RZQLQJ2UJDQL]DWLRQ
3URILOH6HW
$FFRXQW3URILOH6HW
3URILOH 6HUYLFH$WWULEXWH
'RPDLQ3URILOH6HW
2UJDQL]DWLRQ3URILOH6HW SURILOHV DWWULEXWHV
8VHU3URILOH6HW
VHUYLFH
6HUYLFH 6HUYLFH$WWULEXWH
DWWULEXWHV
$WWULEXWH
'HVFULSWRU
DWWULEXWH'HVFULSWRUV
Service
The service entity models the data that describes a class of service offering to a
subscriber. A service class will contain a defined set of service attributes and may
also contain associated attribute descriptors. The ServiceAPI library provides
operations that function on the service entity.
Service attribute
The service attribute entity models the basic unit of service provisioning.
Service data is stored as named attribute/value pairs (AVPs). Service attributes are
defined at a specified context level, as described in Table 1 on page 6. The service
class (SC) context is the highest context level, and attributes defined at this level
are inherited by all other contexts unless overridden at a lower level.
There are three types of service attribute:
• Singleton attributes
A singleton attribute has a single value instance. For example, a user name
string.
• Vector attributes
A vector attribute has multiple value instances, identified by subscripts. Each
value instance can be accessed separately. For example, a list of telephone
numbers.
• Segmented vector attributes
Segmented vector attributes are used for RADIUS connection services and are
associated with a specific vendor dictionary.
A segmented vector attribute can contain either a singleton or vector attribute.
Each segment is a storage area defined by the (segmentStart segmentSize)
value defined in the vendor dictionary. All segmented attribute values are
identified by subscripts. For a singleton attribute, this is the segment address.
For a vector attribute, this is the segment address plus the vector subscript.
For information about provisioning rules for attributes, see "XML provisioning
details" on page 29.
The ProfileAPI, UserApi, AccountAPI, DomainAPI, and OrganizationAPI libraries
provide operations that function on the service attribute entity.
Attribute descriptor
An attribute descriptor is a file of metadata describing a specified service attribute
and any constraints that apply to it. The attribute metadata is used for validation of
attribute specifications in API operation calls.
Profile
The service profile entity models a specific instance of a configured service, and
represents the default (DEF) context for that service instance. Attributes defined in
the service profile override or supplement those defined for the service class.
The ProfileAPI library provides operations that function on the service profile entity.
SDUHQW
RZQLQJ2UJDQL]DWLRQ
2UJDQL]DWLRQ 'RPDLQ
2UJDQL]DWLRQ 'RPDLQ
3URILOH6HW
3URILOH6HW
$FFRXQW 8VHU
DFFRXQW XVHUV
SURILOH6HW SURILOH6HW
$FFRXQW 8VHU
3URILOH6HW 3URILOH6HW
Domain
The domain entity models an internet domain, and is used for authentication. Each
domain is owned by a single organization; however, multiple organizations or
sub-organizations may be associated with a particular domain.
The DomainAPI library provides operations that function on the domain entity.
Organization
The organization entity models a conventional organization tree structure (for
example, a company with departments). This entity is used to associate configured
services with an organization or part of an organization.
Multiple organization entity instances may be linked into a hierarchical organization
tree structure. The organization is the only entity type that allows the linking of other
entities into a tree structure. The fully qualified name for any subscriber entity
includes the path information to that entity within the organization tree structure.
Each organization is associated with (bound to) a single domain. Sub organizations
and other entities within an organization hierarchy do not need to be associated
with the same domain as the parent organization.
The OrganizationAPI library provides operations that function on the organization
entity.
Account
The account entity models a billable unit. It aggregates user entities for billing
purposes.
The AccountAPI library provides operations that function on the account entity.
User
The user entity models the point of service delivery. This entity associates service
configurations with a subscriber. The user is not necessarily a person, but is a
delivery point that requires authentication before system access is permitted. The
user is the only entity type that requires authentication.
The UserAPI library provides operations that function on the user entity.
Profile sets
Each of the four subscriber entity types has an associated profile set that bundles
together service profiles to define the service capabilities available to a subscriber.
Each of these profile sets can be associated with multiple subscriber entities of the
appropriate type. Each profile set represents the group context for that subscriber
entity type. Attributes defined for a profile set apply to all profiles of that type, unless
overridden by a specific profile.
The UserAPI, AccountAPI, OrganizationAPI, and DomainAPI libraries provide
operations that function on the associated profile set.
506&OXVWHU Q Q
1RGH*URXS $FFHVV1RGH
,'
Q
1HWZRUN Q
,3$GGUHVV 7KH506&OXVWHU,'LVDQ06(
3RRO $WWURI,3$GGUHVV3RRODQG
1RGH*URXS
6XEQHW Q
([FOXGHG,3
5DQJHV
Network
The network entity models a conventional IP network, made up of subnets. The
network is a parent entity, with multiple child subnets.
The NetworkAPI library provides operations that function on the network entity.
Subnet
The subnet entity models a set of contiguous IP addresses, comprising part of a
parent network.
The NetworkAPI library provides operations that function on the subnet entity.
IP address pool
The IP address pool entity models the IP addressing mechanism and provides a
single access point for IP address allocation.
The NetworkAPI library provides operations that function on the IP address pool
entity.
RMS cluster ID
The RMS cluster ID entity models the operations of the Resource Management
Server. It handles the translation mechanism between IP addresses and associated
user sessions.
Access node
Configure the following access node roles:
• GGSN
• GSM node
• Hotlining Application
• NAS
• PDSN
• WiMAX HA
• WiMAX ASN Gateway
:L0$;1RGH
*URXS
:L0$;'HYLFH $FFHVV1RGH
:L0$;+RPH
$JHQW*URXS
5ROH
:L0$;+$ :L0$;$61
5ROH *DWHZD\5ROH
Access node
The access node entity models the main access point to a WiMAX-accessible
network. The access node is associated with a role which can either be a WiMAX
Home Agent (WiMAX HA) or a WiMAX Access Service Network Gateway (WiMAX
ASN Gateway). A WiMAX ASN Gateway provides network access to WiMAX
subscribers.
An access node with one or both of these roles may belong to one WiMAX Node
group and any number of WiMAX Home Agent groups.
The AccessNodeAPI library provides operations that function on the access node
entity.
WiMAX device
The WiMAX device entity models a wired or wireless device connecting to the
WiMAX network.
The WiMAXAPI library provides operations that function on the WiMAX device
entity.
WiMAX HA group
The WiMAX HA group entity models a set of WiMAX nodes. Only WiMAX nodes
with the home agent role may be assigned to a WiMAX HA group. A WiMAX node
may belong to more than one WiMAX HA group.
The WiMAXAPI library provides operations that function on the WiMAX HA group
entity.
3
Chapter 3
Chapter
This chapter describes the Provisioning Server XML interface between user
applications and the Profile Database.
The topics are:
• Interface access
• Communication mechanism
• Sample PERL application
• Creating a custom application
• Application design considerations
• XML provisioning details
• Example error messages
• Application Authorization Server specific example
• Provisioning Server logs
Interface access
The Provisioning Server provides client applications with API access to the Profile
Database using a standard client/server communications model. Client applications
written in any suitable language send requests to the Provisioning Server through
XML messages sent over HTTP or HTTPS. The Provisioning Server performs the
required actions specified in the XML request, and sends a response back to the
client application.
Figure 5 illustrates sending a properly formatted XML message over HTTP to the
Provisioning Server.
For secure communication you can:
• use SSL or ARC4 encryption
• configure the Provisioning Server to allow only specified hosts to send XML
messages to the XML interface
Figure 5: Provisioning Server XML interface
$SSOLFDWLRQV
;0/
;0/RYHU+7736
;0/LQWHUIDFH
3URYLVLRQLQJ6HUYHU
3URILOH
'DWDEDVH
Communication mechanism
The message protocol used to access the API over the network is HTTP, or HTTPS
for secure communication.
Communication using HTTP involves pairs of messages – a request message from
the client to the server followed by a response message from the server to the
client.
API request and response messages always use the HTTP POST mechanism.
Message structure
A properly formatted HTTP POST message includes these components:
• header portion: identifies a network destination and controls protocol-related
aspects of the communication
• empty line
• data portion: exchange of API-related information
There are a variety of support packages available to handle the details of HTTP
message construction and message passing. Application developers need only
deal with the data portion of the message and use a support package to handle
sending and receiving messages.
Header portion The message header conforms to standard HTTP protocol requirements.
An example of a valid HTTP POST message header is:
POST 192.168.157.50:32000/api/ HTTP1.1
Host: 192.168.157.50
Content-Length: 2373
Content-type: text/xml
Connection: Close
Content-Length Integer The number of bytes in the data portion of the request
Content-type text/xml Specifies that the data portion is in plain text, in XML
format. (Mime type)
Connection Close Specifies that the connection can be closed when the
request has been completed (a response has been
received). The default connection type is persistent; if
this header is omitted, a persistent connection is
established.
The message header is followed by an empty line, and the data portion of the
request.
After the server processes a provisioning request, a response message is returned
to the client. A response message is preceded by an HTTP status code, and
contains a result or an error.
Data portion The Provisioning Server provides access to several API libraries. Each library
includes a set of related operations. For details of library operations, see "API
libraries" on page 42.
A complete API call consists of a request message from the client application to the
Provisioning Server and a response message from the Provisioning Server to the
client application.
The data portion of an API request message contains:
<response version=”2.0”>
<target name=”UserAPI” operation=”getUser”>
<result>
...
</result>
</target>
</response>
Note The XML <request> wrapper is not required when using the vip.pl PERL
script described in "Sample PERL application" on page 21.
The <request> and <response> tags enclose a <target> tag. The attributes of the
<target> tag are given in Table 4.
Attribute Description
Sample input.xml file The sample input file, user.xml, contains the following code:
<target name="UserAPI" operation="getUser">
<parameter>
<user>
<id>1</id>
</user>
</parameter>
</target>
This example retrieves user information for a user with the ID of 1.
<status><value>active</value></status>
<creation-date>2003-11-25 23:33:42
</creation-date>
<last-modified>2003-11-25 23:33:42
</last-modified>
<modified-by>creroot.sql</modified-by>
<billing>
<id>3</id>
<senior-billing-id>3</senior-billing-id>
</billing>
<profile-set>
<id>3</id>
<name>Root User Profile Set</name>
<type>user</type>
</profile-set>
</user>
</result>
</target>
</response>
Error responses
The following types of errors may occur:
• Non-compliant HTTP. This type of error is indicated by the HTTP status code
returned before the HTTP header of the response message. Any HTTP status
code other than 200 OK indicates a malformed HTTP request message. The
response message does not contain a data portion. Look for programming
errors within the client application.
• API call failure. The HTTP status code returned is 200 OK, but the response
message data portion contains an <error> element instead of a <result>
element.
The XML structure within the <error> element contains a Bridgewater Systems
error code and a user-readable error message.
For more information, see "Error categories" on page 28.
Resource management
HTTP connections are used by the XML interface for sending Provisioning API
operation calls to the Provisioning Server. For information about how HTTP
connections are specified in an HTTP request message, see "Header portion" on
page 17.
HTTP connections are a limited system resource. If the HTTP header does not
specify a value of ‘Close’ for the connection, then the HTTP connection is
persistent.
If the HTTP message object is reused for subsequent API calls, this may decrease
object initialization time, and could improve performance.
If the HTTP message object is discarded after the operation, the resource is
orphaned until such time as it can be recovered by the system. This can cause
resource contention for subsequent requests or other processes, and can decrease
performance.
A ‘Close’ connection header value should always be specified if the connection is
not required for a subsequent API call.
Efficiency
There are two ways of uniquely identifying Profile Database objects in most XML
requests:
• ID number: for example, <id>6413</id>
• name, in the qualified name format that includes organizational hierarchy
information: for example, <qualified-name>/BWS/test/user43</qualified-name>
Using an ID number is more efficient than using a qualified name, as it avoids a
lookup operation for every access.
State-full applications that cache object ID information can achieve higher
performance, particularly in large Profile Databases, by using ID values instead of
qualified name values.
Forward compatibility
Defect fixes or feature changes in future Service Controller releases may require
changes to API operations. The XML API version level determines the compatibility
of API operations. Well-designed applications of a given XML version level will
continue to function in any future release that supports that XML version.
The following API changes are considered compatible, and may be introduced
without a change in XML version number.
Errors • changes to the text string of an error message (the error code and error
function are not be changed)
• new error codes (which may appear at any point in the request processing
order)
Designing for To ensure that an application will continue to work as intended with future Service
forward Controller releases, follow these design rules:
compatibility • applications must ignore unrecognized elements or attributes in XML
responses
• applications must identify errors by the error code, and not the content of the
message text string
• applications must include a default trap condition for unrecognized errors
Error categories
There are two kinds of errors to consider in a client application:
• run-time errors
• API errors
Run-time errors Run-time errors are caused by programming errors, or unanticipated data errors. In
either case, run-time errors must be trapped and handled gracefully. Although the
operation that encounters a run-time error cannot be completed, proper error
handling keeps the application running so that subsequent operations may be
attempted.
Diagnostic logs should be maintained as part of the error-handling routine to identify
and characterize the failure situation for development team analysis and
debugging.
API errors API errors occur when the Provisioning Server cannot complete the requested
operation. For information about the format of error return messages, see "Example
error messages" on page 34.
The Provisioning Server stops processing and returns an error at the first error
condition found.
A client application should use error responses to determine an appropriate error
recovery path. This normally includes a notification to the user and, depending on
the client application logging strategy, an error message may also be logged.
For detailed descriptions of all error messages, see "Provisioning Server logs" on
page 40.
Attribute types
There are three types of attributes:
• Singleton attributes
• Vector attributes
• Segmented vector attributes
Singleton attributes A singleton attribute has a single value instance. For example, a user name string:
<attribute name=”UserNameAttr”>
<value>”Bob Smith”</value>
</attribute>
Vector attributes A vector attribute has multiple value instances, identified by subscripts. Each value
instance can be accessed separately. For example, an attribute “IDNumberAttr” can
contain a list of identification numbers. Each value (identification number) has a
unique subscript. For example:
<attribute name=”IDNumberAttr”>
<value subscript=”0”>5555551212</value>
<value subscript=”1”>5555553434</value>
<value subscript=”2”>5555555656</value>
</attribute>
Subscripts are always in continuous sequence. Values are resequenced if deletions
or additions leave gaps in the sequence. Retrieve attribute information to check
subscript identifiers before modifying specific values by subscript number.
Some entities do not support vector attributes. For example, DPIs only support
singleton attributes.
Segmented vector Segmented vector attributes are only used for RADIUS connection services and are
attributes associated with a specific vendor dictionary.
A segmented vector attribute can contain either a singleton or vector attribute. Each
segment is a storage area defined by the (segmentStart segmentSize) value
defined in the vendor dictionary. All segmented attribute values are identified by
subscripts. For a singleton attribute, this is the segment address. For a vector
attribute, this is the segment address plus the vector subscript.
For example:
<attribute name=”NAS-IP-Address>
<value segment=”NORTEL”>192.1.2.3</value>
<value segment=”CISCO”>192.4.5.6</value>
</attribute>
Attribute properties
Attributes can be added or deleted. The properties of an attribute element are:
• name: required
• delete: a flag that indicates whether or not the attribute and all of its values are
to be deleted
Attribute values can be added, updated, or deleted. The properties of an attribute
value are:
• subscript: null for a singleton attribute value; integer for a vector attribute value
• segment: identifier for the segment subscript in a segment attribute
• delete: a flag that indicates whether or not the value is to be deleted
Note A null and an empty string subscript are different. The null subscript
indicates a singleton. An empty string indicates a vector attribute that
has not yet been assigned a subscript.
Adding an attribute
To add an attribute, specify an attribute with the name field set to the new attribute
name, and the delete flag set to “false” (default). When provisioning one or more
values, the value delete flag must also be false, or not specified.
For example, to create a new vector attribute with two values provisioned:
<attribute name=”NewAttr”>
<value subscript=”0”>value1</value>
<value subscript=”1”>value2</value>
</attribute>
Do not specify a value with an empty string. An empty string causes the value to be
deleted. If the attribute containing the empty string (deleted) value is a singleton, or
if the value deletion results in an empty vector, the attribute is also be deleted.
To create a vector attribute, specify a value with a subscript. The subscript may be
an empty string for initial provisioning. If no subscript is specified, the attribute is
created as a singleton type attribute.
Note The system may assign a subscript a value that is different from the one
supplied if gaps in sequence are detected. Subscripts start at the lowest
non-empty subscript that is supplied and are incremented. Subscripts start
at 0 if all the provided subscripts are empty strings.
For example, this new attribute is a singleton, and cannot have additional values
provisioned in subsequent operations:
<attribute name=”NewAttr”>
<value>NewValue</value>
</attribute>
This new attribute is a vector, and can have further values added later:
<attribute name=”NewAttr”>
<value subscript=””>NewValue</value>
</attribute>
Deleting an attribute
To delete an attribute and all of its values, specify the attribute by name with the
delete flag set to “true”.
For example, to delete the attribute attr1:
<attribute name=”attr1” delete=”true”>
Deleting values
To delete a value, specify:
• the attribute containing the value (attribute name)
• the value to be deleted (value instance or vector subscript)
• the value delete flag set to “true”, or an empty string value
For example, the vector attribute attr2 contains four value instances:
<attribute name=”attr2>
<value subscript=”0”>value1</value>
<value subscript=”1”>value2</value>
<value subscript=”2”>value3</value>
<value subscript=”3”>value4</value>
</attribute>
<attribute name=”attr2”>
<value subscript=”2” delete=”true/>
</attribute>
<attribute name=”attr2”>
<value subscript=”2”>””</value>
</attribute>
If both subscript and value are specified, subscript takes precedence and the value
is ignored.
When deleting the value for a singleton attribute, or deleting the only value instance
in a vector attribute, the attribute is also deleted.
When deleting by subscript, it is important to remember that values in a vector
attribute may not have the same subscript that they were assigned originally. To
verify subscript numbers, first retrieve current attribute information with the
appropriate get operation.
Delete attribute actions are processed before adds and updates. This enables
updates for entire vector attributes when subscripts are not known. Send a call that
includes both a delete of the attribute and an update of the same attribute name
with the list of new values the attribute needs to take. This first deletes the attribute,
then recreates it with the new values.
Request
In this request, the organization id is 1 (which is always the root organization), and
the profile set id is 3 (the root user profile set):
<user>
<name>user1083680097</name>
<login-name>login1083680097</login-name>
<password>
<value>pwd1083680097</value>
</password>
<organization><id>1</id></organization>
<profile-set><id>3</id></profile-set>
</user>
Response
Since the Provisioning Server is not running, the following XML output is returned:
<response version=”2.0”>
<target name="UserAPI" operation="createUser">
<error>
<code>CLU-00005</code>
<message>No response from server</message>
</error>
</target>
</response>
Request
An XML request is sent to the Provisioning Server for a user that does not exist:
<user>
<id>1150000081</id>
</user>
Response
<response version="2.0">
<target name="UserAPI" operation="getUser">
<error>
<code>USR-00001</code>
<message>User `1150000081` not found</message>
</error>
</target>
</response>
Request
<user>
<name>user1084375763</name>
<login-name>login1084375763</login-name>
<password>
<value>pwd1084375763</value>
</password>
<organization>
<qualified-name>Route Organization</qualified-name>
</organization>
<profile-set>
<name>Root User Profile Set</name>
</profile-set>
</user>
Response
<response version="2.0">
<target name="UserAPI" operation="createUser">
<error>
<code>USR-00012</code>
<message>
User cannot be created in organization `Route
Organization`. Organization not found
</message>
</error>
</target>
</response>
</status>
<context-mask>
<user/>
<user-group/>
<default/>
</context-mask>
<application>
<name>PTT</name>
<authentication-required
is-inherited="false">
false
</authentication-required>
<subscribed is-inherited="false">
false
</subscribed>
</application>
<application>
<name>MMS</name>
<authentication-required
is-inherited="false">
false
</authentication-required>
<subscribed is-inherited="false">
false
</subscribed>
</application>
<available-content-categories/>
</user-authorized-profile>
</result>
</target>
</response>
3 Pull out all of the <Application> entities from the response:
<application>
<name>PTT</name>
<authentication-required is-inherited="false">
false
</authentication-required>
<subscribed is-inherited="false">
false
</subscribed>
</application>
<application>
<name>MMS</name>
<authentication-required is-inherited="false">
false
</authentication-required>
<subscribed is-inherited="false">
false
</subscribed>
</application>
These are the "services".The <name> field identifies the service:
– MMS
– PTT
4 To subscribe a user to a particular service and provision generic attributes
against that service:
<request version="2.0" principal="admin" credentials="admin">
<target name="UserAPI" operation="updateUser">
<parameter>
<user>
<login-name>userauthuser</login-name>
<domain><name>null</name></domain>
<profile-set>
<user-authorized-profile>
<qualified-name>
User Authorized Services
</qualified-name>
<application>
<name>MMS</name>
<subscribed>true</subscribed>
<authentication-required>
true
</authentication-required>
<attribute name="Attribute1">
<value>arbitrary</value>
</attribute>
</application>
<application>
<name>PTT</name>
<subscribed>true</subscribed>
<authentication-required>
true
</authentication-required>
<attribute name="Attribute1">
<value>arbitrary</value>
</attribute>
</application>
</user-authorized-profile>
</profile-set>
</user>
</parameter>
</target>
</request>
This example provisions data for the MMS and PTT services. For each service,
<subscribed> and <authentication-required> are set to ‘true’. Each service also
has a generic attribute set to an arbitrary value.
4
Chapter 4
Chapter
This chapter describes the XML interface that the Provisioning Server provides
between user applications and the Profile Database.
The topics are:
• API libraries
• XML provisioning examples
• AccessNodeAPI operations
• AccountAPI operations
• DAEAPI operations
• Send a CDMA-based DM
• HotlineAPI operations
• NetworkAPI operations
• OrganizationAPI operations
• ProfileAPI operations
• Proxy deployment APIs
• ServiceAPI operations
• SessionAPI operations
• SystemAPI operations
• TrunkGroupAPI operations
• UserAPI operations
• WiMAXAPI operations
For more information about provisioning requirements and dependencies, see:
• Service Manager: Network Access Guide for AAA
• Service Manager: Subscriber Provisioning Guide for AAA
• Service Manager Online Help
API libraries
The XML interface enables provisioning operations on the Provisioning Server.
Operations are grouped into the following XML API libraries:
• AccessNodeAPI
• AccountAPI
• DAEAPI
• DomainAPI
• HotlineAPI
• OrganizationAPI
• ProfileAPI
• Proxy Deployment APIs
• ServiceAPI
• SessionAPI
• SystemAPI
• TrunkGroupAPI
• UserAPI
• WiMAXAPI
AccessNodeAPI
The AccessNodeAPI library operations operate on the access node entity
described in "Network entity modelling" on page 11.
Supported operations are listed in Table 5.
Operation Example
"Create access node with NAS role and session expiry time" on
page 56
Operation Example
AccountAPI
The AccountAPI library operations operate on the account and account profile set
entities described in "Subscriber entity modelling" on page 9.
Supported operations are listed in Table 6.
Operation Example
DAEAPI
The DAEAPI library operations operate on the user and user profile set entities
described in "Subscriber entity modelling" on page 9.
Supported operations are listed in Table 7.
Operation Example
DomainAPI
The DomainAPI library operations operate on the domain and domain profile set
entities described in "Subscriber entity modelling" on page 9.
Supported operations are listed in Table 8.
Operation Example
HotlineAPI
The HotlineAPI library operations create and update user profiles and delete users
and accounts.
Supported operations are listed in Table 7.
Operation Example
OrganizationAPI
The OrganizationAPI library operations operate on the organization and
organization profile set entities described in "Subscriber entity modelling" on page
9.
Supported operations are listed in Table 10.
Operation Example
Operation Example
ProfileAPI
The ProfileAPI library operations operate on the profile and service attribute entities
described in "Service entity modelling" on page 7.
Supported operations are listed in Table 11.
Operation Example
createProfile "Create RADIUS QoS selection policy service profile" on page 158
deleteProfile "Delete RADIUS QoS selection policy service profile" on page 162
getProfile "Get RADIUS QoS selection policy service profile" on page 164
Operation Example
createProxyFilter —
getProxyFilterBy Name —
deleteProxyFilterBy Name —
Operation Example
createProxyOverrideAttributeGroup —
updateProxyOverrideAttributeGroup —
deleteProxyOverrideAttributeGroupBy Name —
Operation Example
createProxyRequiredAttributeGroup —
updateProxyRequiredAttributeGroup —
deleteProxyRequiredAttributeGroupBy Name —
Operation Example
createRADIUSServer —
updateRADIUSServer —
getRADIUSServerByName —
deleteRADIUSServerByName —
Operation Example
createRADIUSServerGroup —
updateRADIUSServerGroup —
getRADIUSServer GroupByName —
deleteRADIUSServerGroupByName —
ServiceAPI
The ServiceAPI library operations may be used to retrieve information about the
service entity described in "Service entity modelling" on page 7.
Supported operations are listed in Table 17.
Operation Example
getService "Get RADIUS QoS selection policy service attributes" on page 212
SessionAPI
The SessionAPI library operations retrieve session information and device records.
Supported operations are listed in Table 18.
Operation Example
SystemAPI
The SystemAPI library operations may be used to update the current system
configuration and HUP processes like the Service Controller.
Supported operations are listed in Table 19.
Operation Example
TrunkGroupAPI
The TrunkGroupAPI library operations may be used to create, delete, update, or
retrieve Trunk group entities.
Supported operations are listed in Table 20.
Operation Example
UserAPI
The UserAPI library operations operate on the user and user profile set entities
described in "Subscriber entity modelling" on page 9.
Supported operations are listed in Table 21.
Operation Example
Operation Example
WiMAXAPI
The WiMAXAPI library operations operate on the WiMAX node,
WiMAXNodeGroup, WiMAXHAGroup, and WiMAXDevice entities described in
"WiMAX entity modelling" on page 13.
Supported operations are listed in Table 22.
Operation Example
Operation Example
AccessNodeAPI operations
This section describes the following AccessNodeAPI operations:
• createAccessNode
• deleteAccessNode
• getAccessNode
• updateAccessNode
Note Changes to the system configuration are committed to the Profile Database
when the API operation completes. To notify other BWS components about
any changes to the current system configuration, execute the
applyChanges operation. For details, see "applyChanges" on page 222.
createAccessNode
Use the createAccessNode operation to create an access node. Specify a
populated access node element, including:
• the valid IP address of the access node
• at least one available protocol (RADIUS or Diameter)
• a shared secret for RADIUS (if appropriate)
• a hostname, realm, port, and transfer protocol for Diameter (if appropriate)
• at least one role (NAS, PDSN, GGSN, GSM Node, WiMAX ASN Gateway,
WiMAX HA, or Hotlining Application)
• the number of sessions for a PDSN role
• the number of sessions for a NAS role
• the protocol enable status for a WiMAX ASN role
• the skip count for a WiMAX HA role
These elements are optional:
• the caption under which the access node displays in Service Manager
• a description of the access node
• the time zone where the access node is located
• The CoA shared secret for RADIUS
• one or more node groups to which the access node belongs
• the DAE settings for the access node:
Configure:
– a primary and failover access node for CoA messages and a primary and
failover access node for DM messages, so that if a CoA/DM message times
out, the RADIUS Server can send the message to the failover node.
Note The Provisioning Server has a fixed time out. Setting up a DAE timeout
and retry, defining in aggregate the time radius takes to try the DAE
transaction, that exceeds the timeout configured in the Provisioning
Server, (and it may max at 15 or 20 seconds TOTAL), then the DAE
transactions can succeed. However, the Provisioning Server still
Create access node This example illustrates required and optional elements for the createAccessNode
operation.
Modify the example to suit the network, or see these specific examples:
• Create access node with NAS role and session expiry time
• Create access node, associate HA to multiple RMS clusters
• Create access node to enable CoA/DM failover
• Create access node to enable CoA/DM cloning
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="createAccessNode">
<parameter>
<access-node>
<ip>192.100.125.107</ip>
<caption>accessNodeCaption6</caption>
<description>accessNodeDescription</description>
<time-zone>GMT</time-zone>
<dae-enabled>true</dae-enabled>
<dae-ip-address>192.100.125.107</dae-ip-address>
<dae-port>1065</dae-port>
<dae-shared-secret>daeSecret</dae-shared-secret>
<dae-failover-ip-address>192.100.125.108</dae-failover-ip-address>
<dae-failover-port>1066</dae-failover-port>
<dae-failover-shared-secret>daeSecret2
</dae-failover-shared-secret>
<dae-dm-ip-address>1.1.1.3</dae-dm-ip-address>
<dae-dm-port>3799</dae-dm-port>
<dae-dm-shared-secret>MYSECRET
</dae-dm-shared-secret>
<dae-dm-failover-ip-address>1.1.1.4</dae-dm-failover-ip-address>
<dae-dm-failover-port>3800</dae-dm-failover-port>
<dae-dm-failover-shared-secret>MYSECRET2
</dae-dm-failover-shared-secret>
<dae-timeout>10</dae-timeout>
<dae-retries>3</dae-retries>
<dae-failover-timeout>10</dae-failover-timeout>
<dae-failover-retries>3</dae-failover-retries>
<radius-protocol>
<shared-secret>sharedSecret</shared-secret>
<coa-shared-secret>COASECRET
</coa-shared-secret>
</radius-protocol>
<diameter-protocol>
<host-name>localhost</host-name>
<realm-name>realm</realm-name>
<port>163</port>
<transport-protocol>UDP</transport-protocol>
</diameter-protocol>
<wimax-ha-role>
<skip-count>10</skip-count>
</wimax-ha-role>
<asn-gateway-role>
<enable-radius>true</enable-radius>
</asn-gateway-role>
<pdsn-role>
<sessions>10</sessions>
</pdsn-role>
<nas-role/>
<ggsn-role>
<ip-address-range>
<start-ip>10.10.10.10</start-ip>
<end-ip>10.10.10.20</end-ip>
</ip-address-range>
</ggsn-role>
<gsm-node-role/>
<hotlining-application-role/>
</access-node>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccessNodeAPI" operation="createAccessNode">
<result/>
</target>
</response>
Create access node This example shows how to create an access node with a NAS role, and how to
with NAS role and limit a user’s session by defining a session expiry time. The <expiry-time> element
session expiry time is optional.
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="createAccessNode">
<parameter>
<access-node>
<ip>192.100.125.107</ip>
<caption>accessNodeCaption6</caption>
<description>accessNodeDescription</description>
<radius-protocol>
<shared-secret>TESTSECRET</shared-secret>
</radius-protocol>
<time-zone>GMT</time-zone>
<nas-role>
<expiry-time>3600</expiry-time>
</nas-role>
</access-node>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccessNodeAPI" operation="createAccessNode">
<result/>
</target>
</response>
Create access node, For custom WiMAX deployments in which HAs are associated to multiple RMS
associate HA to clusters, the HA role must specify which RMS cluster holds HA keying information.
multiple RMS To do this, modify the <wimax-ha-role> parent element with the <rms-cluster-id>
clusters child element to specify the cluster in which HA keying information is stored.
In this example, the bold text represents the <rms-cluster-id> element and its
corresponding value.
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="createAccessNode">
<parameter>
<access-node>
…
<wimax-ha-role>
<skip-count>10</skip-count>
<rms-cluster-id>0</rms-cluster-id>
</wimax-ha-role>
…
</access-node>
</parameter>
</target>
</request>
Create access node This example shows how to create an access node to enable CoA/DM failover.
to enable CoA/DM Configure a primary and failover access node for CoA messages and a primary and
failover failover access node for DM messages, so that if a CoA or DM message times out,
the RADIUS Server can send the message to the failover node.
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="createAccessNode">
<parameter>
<access-node>
<ip>192.100.125.107</ip>
<dae-enabled>true</dae-enabled>
<dae-clone-dm>false</dae-clone-dm>
<dae-clone-coa>false</dae-clone-coa>
<dae-ip-address>192.100.125.107</dae-ip-address>
<dae-port>1065</dae-port>
<dae-shared-secret>daeSecret</dae-shared-secret>
<dae-failover-ip-address>192.100.125.108</dae-failover-ip-address>
<dae-failover-port>1066</dae-failover-port>
<dae-failover-shared-secret>daeSecret2
</dae-failover-shared-secret>
<dae-dm-ip-address>1.1.1.3</dae-dm-ip-address>
<dae-dm-port>3799</dae-dm-port>
<dae-dm-shared-secret>MYSECRET
</dae-dm-shared-secret>
<dae-dm-failover-ip-address>1.1.1.4</dae-dm-failover-ip-address>
<dae-dm-failover-port>3800</dae-dm-failover-port>
<dae-dm-failover-shared-secret>MYSECRET2
</dae-dm-failover-shared-secret>
<dae-timeout>10</dae-timeout>
<dae-retries>3</dae-retries>
<dae-failover-timeout>10</dae-failover-timeout>
<dae-failover-retries>3</dae-failover-retries>
<radius-protocol>
<shared-secret>sharedSecret</shared-secret>
<coa-shared-secret>COASECRET
</coa-shared-secret>
</radius-protocol>
<diameter-protocol>
<host-name>localhost</host-name>
<realm-name>realm</realm-name>
<port>163</port>
<transport-protocol>UDP</transport-protocol>
</diameter-protocol>
<asn-gateway-role>
<enable-radius>true</enable-radius>
</asn-gateway-role>
</access-node>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccessNodeAPI" operation="createAccessNode">
<result/>
</target>
</response>
Create access node This example shows how to create an access node to enable CoA/DM cloning.
to enable CoA/DM Configure cloning so that the Provisioning Server clones a CoA/DM message,
cloning sends the request to the RADIUS Server, and the RADIUS Server sends the
original and cloned message in parallel to two different targets.
If CoA/DM cloning is enabled, configure primary and alternate primary CoA/DM
targets. The alternate primary target is configured in the following fields:
• for CoA:
– dae-failover-ip-address
– dae-failover-port
– dae-failover-shared-secret
• for DM:
– dae-dm-failover-ip-address
– dae-dm-failover-port
– dae-dm-failover-shared-secret
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="createAccessNode">
<parameter>
<access-node>
<ip>192.100.125.107</ip>
<dae-enabled>true</dae-enabled>
<dae-clone-dm>true</dae-clone-dm>
<dae-clone-coa>true</dae-clone-coa>
<dae-ip-address>192.100.125.107</dae-ip-address>
<dae-port>1065</dae-port>
<dae-shared-secret>daeSecret</dae-shared-secret>
<dae-failover-ip-address>192.100.125.108</dae-failover-ip-address>
<dae-failover-port>1066</dae-failover-port>
<dae-failover-shared-secret>daeSecret2
</dae-failover-shared-secret>
<dae-dm-ip-address>1.1.1.3</dae-dm-ip-address>
<dae-dm-port>3799</dae-dm-port>
<dae-dm-shared-secret>MYSECRET
</dae-dm-shared-secret>
<dae-dm-failover-ip-address>1.1.1.4</dae-dm-failover-ip-address>
<dae-dm-failover-port>3800</dae-dm-failover-port>
<dae-dm-failover-shared-secret>MYSECRET2
</dae-dm-failover-shared-secret>
<dae-timeout>10</dae-timeout>
<dae-retries>3</dae-retries>
<dae-failover-timeout>10</dae-failover-timeout>
<dae-failover-retries>3</dae-failover-retries>
<radius-protocol>
<shared-secret>sharedSecret</shared-secret>
<coa-shared-secret>COASECRET
</coa-shared-secret>
</radius-protocol>
<diameter-protocol>
<host-name>localhost</host-name>
<realm-name>realm</realm-name>
<port>163</port>
<transport-protocol>UDP</transport-protocol>
</diameter-protocol>
<asn-gateway-role>
<enable-radius>true</enable-radius>
</asn-gateway-role>
</access-node>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccessNodeAPI" operation="createAccessNode">
<result/>
</target>
</response>
deleteAccessNode
Use the deleteAccessNode operation to delete an access node.These elemenst
are required:
• the name or ID (for example, IP address) of the access node
Delete access node This example shows how to delete an access node.
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="deleteAccessNode">
<parameter>
<access-node>
<ip>192.100.125.107</ip>
</access-node>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccessNodeAPI" operation="deleteAccessNode">
<result/>
</target>
</response>
getAccessNode
Use the getAccessNode operation to retrieve a fully-populated access node. These
elements are required:
• the name or ID (for example, IP address) of the access node
The response returns a fully-populated access node.
Retrieve access node This example shows how to retrieve information about an access node.
information
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="getAccessNode">
<parameter>
<access-node>
<ip>192.100.125.107</ip>
</access-node>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccessNodeAPI" operation="getAccessNode">
<result>
<access-node>
<configuration-id>1</configuration-id>
<ip>192.100.125.106</ip>
<caption>accessNodeCaption6</caption>
<description>accessNodeDescription</description>
<pdsn-role>
<sessions>10</sessions>
<delete>false</delete>
</pdsn-role>
<nas-role>
<sessions>100</sessions>
<expiry-time>3600</expiry-time>
<time-zone>GMT</time-zone>
<managed>false</managed>
<delete>false</delete>
</nas-role>
<lns-role>
<delete>false</delete>
</lns-role>
<gsm-node-role>
<delete>false</delete>
</gsm-node-role>
<ggsn-role>
<ip-address-range>
<start-ip>0.10.10.10</start-ip>
<end-ip>10.10.10.20</end-ip>
</ip-address-range>
<delete>false</delete>
</ggsn-role>
<wimax-ha-role>
<skip-count>10</skip-count>
<root-key-lifetime>86400</root-key-lifetime>
<delete>false</delete>
</wimax-ha-role>
<asn-gateway-role>
<enable-radius>true</enable-radius>
<enable-diameter>false</enable-diameter>
<delete>false</delete>
</asn-gateway-role>
<hotlining-application-role>
<delete>false</delete>
</hotlining-application-role>
<vendor>RFC2138</vendor>
<time-zone>GMT</time-zone>
<dae-enabled>true</dae-enabled>
<dae-ip-address>192.100.125.107</dae-ip-address>
<dae-port>1065</dae-port>
<dae-shared-secret>daeSecret</dae-shared-secret>
<dae-dm-ip-address>1.1.1.3</dae-dm-ip-address>
<dae-dm-port>3799</dae-dm-port>
<dae-dm-shared-secret>MYSECRET
</dae-dm-shared-secret>
<dae-timeout>10</dae-timeout>
<dae-retries>3</dae-retries>
<diameter-protocol>
<host-name>localhost</host-name>
<realm-name>bridgewater</realm-name>
<port>163</port>
<transport-protocol>UDP</transport-protocol>
</diameter-protocol>
<radius-protocol>
<shared-secret>sharedSecret</shared-secret>
<coa-shared-secret>COASECRET
</coa-shared-secret>
</radius-protocol>
</access-node>
</result>
</target>
</response>
updateAccessNode
Use the updateAccessNode operation to modify an access node. These elements
are required:
• the name or ID (for example, IP address) of the access node
These elements are optional:
• a new name, caption, or description for the access node
• a new shared secret or CoA shared secret for the RADIUS protocol
• a role to add
• a role delete flag to indicate that the role should be deleted
• a node group to which the node should be added
• a node group delete flag to indicate that the node should be removed from the
node group
• the time zone where the access node is located
• a protocol (RADIUS or Diameter) to add
• a protocol (RADIUS or Diameter) to modify
• a protocol (RADIUS or Diameter) delete flag to indicate that the protocol should
be removed from the node
• DAE settings to change or add:
Configure:
– a primary and failover access node for CoA messages and a primary and
failover access node for DM messages, so that if a CoA/DM message times
out, the RADIUS Server can send the message to the failover node.
Note The Provisioning Server has a fixed time out.Setting up a DAE timeout
and retry, defining in aggregate the time radius takes to try the DAE
transaction, that exceeds the timeout configured in the Provisioning
Server, (and it may max at 15 or 20 seconds TOTAL), then the DAE
transactions can succeed. However, the Provisioning Serverbut still
reports the transactions as a failure. The Provisioning Server may
attempt to transmit them to a secondary radius if that is configured in
the deployment. For example, a configured 15 second retry interval
and 5 retries (which means a total of 90 seconds could be consumed
before radius reports failure),the Provisioning Server considers the
transaction failed before radius is done. Bridgewater Systems
recommends keeping these values relatively small.
• the session expiry time (NAS role only)
Update access node This example shows how to modify an access node. This example changes the:
• shared secret used by the RADIUS Server
• skip count used for the WiMAX HA role
• numbers of sessions used for the PDSN role
This example also deletes a previously configured ASN Gateway role.
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="updateAccessNode">
<parameter>
<access-node>
<ip>192.100.125.107</ip>
<radius-protocol>
<shared-secret>sharedSecret</shared-secret>
<coa-shared-secret>COASECRET
</coa-shared-secret>
</radius-protocol>
<wimax-ha-role>
<skip-count>10</skip-count>
</wimax-ha-role>
<asn-gateway-role>
<delete>true</delete>
</asn-gateway-role>
<pdsn-role>
<sessions>10</sessions>
</pdsn-role>
<gsm-node-role/>
</access-node>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccessNodeAPI" operation="updateAccessNode">
<result/>
</target>
</response>
Update access node This example shows how to update an access node with a NAS role to limit users’
NAS role to limit session. Limit users’ sessions by defining a session expiry time. The <expiry-time>
session expiry time element is optional and can only be used for access nodes with a NAS role.
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="updateAccessNode">
<parameter>
<access-node>
<ip>192.100.125.107</ip>
<radius-protocol>
<shared-secret>TESTSECRET</shared-secret>
</radius-protocol>
<nas-role>
<expiry-time>10000</expiry-time>
</nas-role>
</access-node>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccessNodeAPI" operation="updateAccessNode">
<result/>
</target>
</response>
Update access node, For custom WiMAX deployments in which HAs are associated to multiple RMS
associate HA to clusters, the HA role must specify which RMS cluster holds HA keying information.
multiple RMS To update such an HA, modify the <wimax-ha-role> parent element with the
clusters <rms-cluster-id> child element to specify the cluster in which HA keying information
is stored.
Note Bridgewater Systems does not recommend changing the value of the
<rms-cluster-id>. However, to modify this value, restart the RADIUS Server,
which enables the RADIUS Server to re-create HA keys in the new RMS
cluster.
Note Bridgewater Systems recommends restarting the RADIUS Server when
network traffic is minimal and when the HA key nears its expiration date.
In This example, the bold text represents the <rms-cluster-id> element and its
corresponding value.
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="updateAccessNode">
<parameter>
<access-node>
…
<wimax-ha-role>
<skip-count>10</skip-count>
<rms-cluster-id>0</rms-cluster-id>
</wimax-ha-role>
…
</access-node>
</parameter>
</target>
</request>
Update DAE settings This example shows how to update the DAE settings for an access node.
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="updateAccessNode">
<parameter>
<access-node>
<ip>192.100.125.107</ip>
<dae-enabled>true</dae-enabled>
<dae-ip-address>192.100.125.107</dae-ip-address>
<dae-port>1065</dae-port>
<dae-shared-secret>daeSecret</dae-shared-secret>
<dae-failover-ip-address>192.100.125.108</dae-failover-ip-address>
<dae-failover-port>1066</dae-failover-port>
<dae-failover-shared-secret>daeSecret2
</dae-failover-shared-secret>
<dae-dm-ip-address>1.1.1.3</dae-dm-ip-address>
<dae-dm-port>3799</dae-dm-port>
<dae-dm-shared-secret>MYSECRET
</dae-dm-shared-secret>
<dae-dm-failover-ip-address>1.1.1.4</dae-dm-failover-ip-address>
<dae-dm-failover-port>3800</dae-dm-failover-port>
<dae-dm-failover-shared-secret>MYSECRET2
</dae-dm-failover-shared-secret>
<dae-timeout>10</dae-timeout>
<dae-retries>3</dae-retries>
<dae-failover-timeout>10</dae-failover-timeout>
<dae-failover-retries>3</dae-failover-retries>
</access-node>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccessNodeAPI" operation="updateAccessNode">
<result/>
</target>
</response>
Update DAE settings, This example shows how to update the DAE settings for an access node to enable
enable CoA/DM CoA/DM failover.
failover Configure a primary and failover access node for CoA messages and a primary and
failover access node for DM messages, so that if a CoA or DM message times out,
the RADIUS Server can send the message to the failover node.
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="updateAccessNode">
<parameter>
<access-node>
<ip>192.100.125.107</ip>
<dae-enabled>true</dae-enabled>
<dae-clone-dm>true</dae-clone-dm>
<dae-clone-coa>true</dae-clone-coa>
<dae-ip-address>192.100.125.107</dae-ip-address>
<dae-port>1065</dae-port>
<dae-shared-secret>daeSecret</dae-shared-secret>
<dae-failover-ip-address>192.100.125.108</dae-failover-ip-address>
<dae-failover-port>1066</dae-failover-port>
<dae-failover-shared-secret>daeSecret2
</dae-failover-shared-secret>
<dae-dm-ip-address>1.1.1.3</dae-dm-ip-address>
<dae-dm-port>3799</dae-dm-port>
<dae-dm-shared-secret>MYSECRET
</dae-dm-shared-secret>
<dae-dm-failover-ip-address>1.1.1.4</dae-dm-failover-ip-address>
<dae-dm-failover-port>3800</dae-dm-failover-port>
<dae-dm-failover-shared-secret>MYSECRET2
</dae-dm-failover-shared-secret>
<dae-timeout>10</dae-timeout>
<dae-retries>3</dae-retries>
<dae-failover-timeout>10</dae-failover-timeout>
<dae-failover-retries>3</dae-failover-retries>
</access-node>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccessNodeAPI" operation="updateAccessNode">
<result/>
</target>
</response>
Update DAE settings, This example shows how to update the DAE settings for an access node to enable
enable CoA/DM CoA/DM cloning.
cloning Configure cloning so that the Provisioning Server clones a CoA/DM message,
sends the request to the RADIUS Server, and the RADIUS Server sends the
original and cloned message in parallel to two different targets.
If CoA/DM cloning is enabled, configure primary and alternate primary CoA/DM
targets. The alternate primary target is configured in the following fields:
• for CoA:
– dae-failover-ip-address
– dae-failover-port
– dae-failover-shared-secret
• for DM:
– dae-dm-failover-ip-address
– dae-dm-failover-port
– dae-dm-failover-shared-secret
Request
<request credentials="root" principal="root" version="2.0">
<target name="AccessNodeAPI" operation="updateAccessNode">
<parameter>
<access-node>
<ip>192.100.125.107</ip>
<dae-enabled>true</dae-enabled>
<dae-clone-dm>true</dae-clone-dm>
<dae-clone-coa>true</dae-clone-coa>
<dae-ip-address>192.100.125.107</dae-ip-address>
<dae-port>1065</dae-port>
<dae-shared-secret>daeSecret</dae-shared-secret>
<dae-failover-ip-address>192.100.125.108</dae-failover-ip-address>
<dae-failover-port>1066</dae-failover-port>
<dae-failover-shared-secret>daeSecret2
</dae-failover-shared-secret>
<dae-dm-ip-address>1.1.1.3</dae-dm-ip-address>
<dae-dm-port>3799</dae-dm-port>
<dae-dm-shared-secret>MYSECRET
</dae-dm-shared-secret>
<dae-dm-failover-ip-address>1.1.1.4</dae-dm-failover-ip-address>
<dae-dm-failover-port>3800</dae-dm-failover-port>
<dae-dm-failover-shared-secret>MYSECRET2
</dae-dm-failover-shared-secret>
<dae-timeout>10</dae-timeout>
<dae-retries>3</dae-retries>
<dae-failover-timeout>10</dae-failover-timeout>
<dae-failover-retries>3</dae-failover-retries>
</access-node>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccessNodeAPI" operation="updateAccessNode">
<result/>
</target>
</response>
AccountAPI operations
This section describes the following AccountAPI operations:
• createAccount
• createAccountProfileSet
• deleteAccount
• findAccounts
• getAccount
• getAccountProfileSet
• updateAccount
• updateAccountProfileSet
createAccount
Use the createAccount operation ito create a user account.
These elements are required:
• the account name (unless the NAME_SAME_AS_ID provisioning flag is
specified)
– string, 1 to 64 characters
– cannot contain “/”, “.”, “*”, or “%”
• the organization in which the account is to be created (must already be present)
– specify either the organization qualified name or ID
• an account profile set or service package (must already be present)
– specify either the account profile set or service package qualified name or
ID
– service package qualified name must begin with “/” or the name of the root
organization, in the format RootOrganization/OrganizationName/
CatalogName/ServicePackageName
– service package qualified name cannot end with “/”, and cannot contain two
or more consecutive “/”
These elements are optional:
• account context (A) profile attributes
• account status
– either active or pending
Provisioned RADIUS This example shows how to create an account with provisioned account context
connection service RADIUS connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="AccountAPI" operation="createAccount">
<parameter>
<account>
<name>BWS Account</name>
<organization>
<qualified-name>/BWS</qualified-name>
</organization>
<profile-set>
<qualified-name>
BWS Account Profile Set
</qualified-name>
<profile>
<id>15</id>
<attribute name="name1">
<value segment="seg1">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</profile-set>
</account>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccountAPI" operation="createAccount">
<result/>
</target>
</response>
createAccountProfileSet
Use the createAccountProfileSet operation to create an account profile set. These
elements are required:
• the profile set name
• the organization in which the profile set is to be created (must already be
present)
These elements are optional:
• a description of the profile set
• an inheritance flag to determine whether the profile set is available to
sub-organizations (default is yes)
• account group (AG) context profile attributes
Provisioned RADIUS This example shows how to create an account profile set, with provisioned settings
connection service for account group context RADIUS connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="AccountAPI"
operation="createAccountProfileSet">
<parameter>
<account-profile-set>
<name>BWS Account Profile Set</name>
<organization><id>4</id></organization>
<profile>
<id>5</id>
<attribute name="name1">
<value segment="seg1">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</account-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccountAPI" operation="createAccountProfileSet">
<result/>
</target>
</response>
deleteAccount
Use the deleteAccount operation to delete a user account. Specify:
• the account name or ID
Specified account This example shows how to delete an account with a specified name (BWS
Account).
Request
<request version="2.0" principal="User1" credentials="password">
<target name="AccountAPI" operation="deleteAccount">
<parameter>
<account>
<name>BWS Account</name>
</account>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccountAPI" operation="deleteAccount">
<result/>
</target>
</response>
findAccounts
Use the findAccounts operation to find information about specified accounts.
Search on the following fields:
• account name <name>
• first and last name <first-name last-name>
• postal code <postal-code>
• first line of an address <address>
• phone number <phone-number>
Specify one criteria per search. All records that match the search criteria are
returned.
Specified account This example shows how to find information about accounts with the name ‘Smith’.
name
Request
<request version="2.0" principal="User1" credentials="password">
<target name="AccountAPI" operation="findAccounts">
<parameter>
<account-search>
<user>
<name>
<first-name>*</first-name>
<last-name>*Smith<last-name>
</name>
</user>
</account-search>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccountAPI" operation="findAccounts">
<result>
<account>
<account-name>Bob Smith</account-name>
<account-name>Jane Smith</account-name>
<account-name>Steve Smith</account-name>
<account-name>Tracey Smith</account-name>
</account>
</result>
</target>
</response>
getAccount
Use the getAccount operation to retrieve account information, including the account
name, ID, status, profile information, and account context (A) profile attributes.
These elements are required:
• the account name or account ID within the account
These elements are optional:
• an empty <profile-set> element to be populated with retrieved information. All
account profiles and attributes are returned. For example:
<profile-set></profile-set>
• the profile ID or qualified name that identifies a specific profile for which
attribution information is requested. Only information for that profile are
returned. For example:
<profile-set><profile><id>2</id></profile><profile-set>
Get RADIUS This example shows how to get all profile information for an account, including the
connection service account context RADIUS connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="AccountAPI" operation="getAccount">
<parameter>
<account>
<id>5</id>
<profile-set>
</profile-set>
</account>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccountAPI" operation="getAccount">
<result>
<id>5</id>
<name>BWS Account</name>
<status>active</status>
<profile-set>
<profile><id>5</id>
<name>RadiusQoSConnectionService</name>
<service>
<name>RadiusQoSConnectionService</name>
<version>1</version>
</service>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</profile-set>
</result>
</target>
</response>
getAccountProfileSet
Use the getAccountProfileSet operation to retrieve account profile set information,
including the profile set name, ID, associated accounts and profiles, and account
group context (AG) profile attributes. Specify:
• the profile set qualified name or ID
These elements are optional:
• an empty <profile> element to be populated with retrieved information. All
account profiles and attributes are returned. For example:
<profile></profile>
• the profile ID or qualified name that identifies a specific profile for which
attribution information is requested. Only information for that profile are
returned. For example:
<profile><id>2</id></profile>
• the service name that identifies a service for which all associated profiles
should be returned. For example:
<profile>
<service-name>RadiusQoSConnectionService</service-name>
</profile>
Get RADIUS This example shows how to get account group (AG) context RADIUS connection
connection service service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="AccountAPI" operation="getAccountProfileSet">
<parameter>
<account-profile-set>
<qualified-name>BWS Account Profile Set</qualified-name>
<profile>
</profile>
</account-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccountAPI" operation="getAccountProfileSet">
<result>
<account-profile-set>
<name>BWS Account Profile Set</name>
<Account><id>5</id></Account>
<profile>
<id>5</id>
<name>RadiusQoSConnectionService</name>
<service>
<name>RadiusQoSConnectionService</name>
<version>1</version>
</service>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</account-profile-set>
</result>
</target>
</response>
updateAccount
Use the updateAccount operation to modify a user account.
These elements are required:
• the account
– specify the name, qualified name, or ID
These elements are optional:
• an account profile set, to which this profile should be added or deleted
• account context (A) profile attributes to be added, modified, or deleted from the
account profile
• a new account status (active, suspended, deleted)
– to change the account status to suspended, you must provide a suspension
reason between 1 and 255 characters long
– cannot change account status to pending
– cannot change the status of a deleted account
Update RADIUS This example shows how to update account context RADIUS connection service
connection service profile attributes.
profile attributes The update-only flag indicates that the value should only be updated if it is already
in the profile. Default action is to add the attribute if it is not present.
Request
<request version="2.0" principal="User1" credentials="password">
<target name="AccountAPI" operation="updateAccount">
<parameter>
<account>
<id>5</id>
<profile-set>
<id>15</id>
<profile>
<id>25</id>
<attribute name="name1">
<value segment="seg1"
update-only="true">value1</value>
</attribute>
</profile>
</profile-set>
</account>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccountAPI" operation="updateAccount">
<result/>
</target>
</response>
Delete RADIUS This example shows how to delete account context RADIUS connection service
connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="AccountAPI" operation="updateAccount">
<parameter>
<account>
<id>5</id>
<profile-set>
<id>15</id>
<profile>
<id>25</id>
<attribute name="name1" delete="true"></attribute>
</profile>
</profile-set>
</account>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccountAPI" operation="updateAccount">
<result/>
</target>
</response>
updateAccountProfileSet
Use the updateAccountProfileSet operation to modify an account profile set.
These elements are required:
• the profile set ID or qualified name
These elements are optional:
• a new profile set description
• a new profile set inheritance flag setting
• a new profile set status (active or deleted)
• a profile to be added to, modified, or deleted from the profile set
• account group context (AG) profile attributes to be added to, modified, or
deleted from an account profile
Add or update This example shows how to add or update account group context RADIUS
RADIUS connection connection service profile attributes.
service profile
attributes Request
<request version="2.0" principal="User1" credentials="password">
<target name="AccountAPI" operation="updateAccountProfileSet">
<parameter>
<account-profile-set>
<id>15</id>
<profile>
<id>5</id>
<attribute name="name1">
<value segment="seg2">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</account-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccountAPI" operation="updateAccountProfileSet">
<result/>
</target>
</response>
Delete RADIUS This example shows how to delete account group context RADIUS connection
connection service service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="AccountAPI"operation="updateAccountProfileSet">
<parameter>
<account-profile-set>
<id>15</id>
<profile>
<id>5</id>
<attribute name="name1" delete="true">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value delete="true" subscript="3">value2
</value>
</attribute>
</profile>
</account-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="AccountAPI" operation="updateAccountProfileSet ">
<result/>
</target>
</response>
DAEAPI operations
This section describes the following DAEAPI xml operations:
• clearHotline
• sendCoA
• sendDisconnect
For SOAP interfaces, sendCoA, clearHotline, and sendDisconnect all use the same
wsdl. For information, see "DAEAPI WSDL" on page 290.
Note The sendCoA and sendDisconnect operations do not provide SNMP
statistics.
clearHotline
Use the clearHotline operation to clear a hotline session that is no longer required,
for example, after a user has completed an account action and no longer needs to
be directed to a gateway portal. This operation sends a CoA message from the
Provisioning Server to RADIUS, without including the Hotline-Indication attribute,
Filter IDs and Hotline Attributes. To send a CoA with the Hotline-Indication attribute,
see "sendCoA" on page 84. This operation is used for WiMAX RADIUS CoA
hotlining feature.
These elements are required:
• the subscriber name (contains domain for Profile Database, does not contain
domain for LDAP deployments)
These elemenst are optional:
• whether to send request information to the Home Agent
• whether to send the request information to the Foreign Agent
Note <send-ha-info> has a default value of false if not specified in the xml
request. <send-fa-info> has a default value of true if not specified in the xml
request.
Clear hotline session This example shows how to clear a user hotline session.
Request
<request version="2.0" principal="user" credentials="password">
<target name="DAEAPI" operation="clearHotline">
<parameter>
<wimax-hotlining>
<subscriber-name>test@dss-test.com</subscriber-name>
<send-ha-info>true</send-ha-info>
<send-fa-info>true</send-fa-info>
</wimax-hotlining>
</parameter>
</target>
</request>
Successful response
<response version="2.0">
<target name="DAEAPI" operation="clearHotline">
<result>
<wimax-hotlining>
<ha-node>
<sent>true</sent>
<pseudo-identifier>YTI4J2AYO2
</pseudo-identifier>
<rms-cluster-id>0</rms-cluster-id>
</ha-node>
<fa-node>
<sent>true</sent>
<user-identifier>YTI4J2AYO2
</user-identifier>
<rms-cluster-id>0</rms-cluster-id>
</fa-node>
</wimax-hotlining>
</result>
</target>
</response>
sendCoA
Use the sendCoA operation to hotline a user by sending a CoA message from the
Provisioning Server to RADIUS.
Optionally use the sendCoA operation to specify which RADIUS attributes to
include in the CoA message.
Considerations:
• If a user has multiple active sessions a CoA is sent for each active session.
• To clear a hotline session, see "clearHotline" on page 82. This operation is used
for RADIUS CoA hotlining.
• To send an empty attribute value, specify #Null as the value. The #Null value is
case-sensitive. For example:
<attribute name="RB-Forward-Policy">
<value context="default"
segment="REDBACK">#Null</value>
These elements are required:
• the subscriber name (contains domain for Profile Database, does not contain
domain for LDAP deployments)
These elements are optional:
• whether to send request information to the Home Agent
• whether to send the request information to the Foreign Agent
Note <send-ha-info> has a default value of false if not specified in the xml
request. <send-fa-info> has a default value of true if not specified in the xml
request.
Send a CoA request This example shows how to create a WiMAX hotlining profile for sending CoA
requests.
Note sendCoA requests are also supported in CDMA and GSM environments.
Request
<request version="2.0" principal="user" credentials="password">
<target name="DAEAPI" operation="sendCoA">
<parameter>
<wimax-hotlining>
<subscriber-name>test@dss-test.com</subscriber-name>
<send-ha-info>true</send-ha-info>
<send-fa-info>true</send-fa-info>
</wimax-hotlining>
</parameter>
</target>
</request>
`bob@d.com`.`
</message>
</error>
</fa-node>
</wimax-hotlining>
</result>
</target>
</response>
Successful response
<response version="2.0">
<target name="DAEAPI" operation="sendCoA">
<result>
<wimax-hotlining>
<ha-node>
<sent>true</sent>
<user-identifier>YTI4J2AYO2
</user-identifier>
<rms-cluster-id>0</rms-cluster-id>
</ha-node>
<fa-node>
<sent>true</sent>
<user-identifier>YTI4J2AYO2
</user-identifier>
<rms-cluster-id>0</rms-cluster-id>
</fa-node>
</wimax-hotlining>
</result>
</target>
</response>
Send a CoA request This example shows a CoA request and response, with RADIUS attributes
with RADIUS specified.
attributes
Request
<request version="2.0" principal="user" credentials="password">
<target name="DAEAPI" operation="sendCoA">
<parameter>
<wimax-hotlining>
<subscriber-name>test@dss-test.com</subscriber-name>
<radius-attribute-list>
<attribute name="Filter-Id">
<value>id1</value>
<value>id2</value>
</attribute>
</radius-attribute-list>
</wimax-hotlining>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="DAEAPI" operation="sendCoA">
<result>
<wimax-hotlining>
<subscriber-name>
0000000000A0@domain.net
</subscriber-name>
<send-ha-info>false</send-ha-info>
<send-fa-info>true</send-fa-info>
<fa-node>
<sent>true</sent>
<user-identifier>YTI4J2AYO2
</user-identifier>
<rms-cluster-id>0</rms-cluster-id>
</fa-node>
</wimax-hotlining>
</result>
</target>
</response>
sendDisconnect
Use the sendDisconnect (DM) operation to disconnect a user by providing an
interface for an external application, such as an HLA to send a DM message to the
Provisioning Server, which sends the message to RADIUS. RADIUS proxies the
DM message to a third party such as an HLD.
If the Provisioning Server detects that the HLD protocol is Diameter, it complies with
the DM message by sending an ASR message to disconnect the subscriber.
Also specify RADIUS attributes to include in the Disconnect message. Specify the
attributes in the dae-service.xml file and in the sendDisconnect message.
Note If attributes are specified in dae-service.xml and in the sendDisconnect
message, the values specified in the sendDisconnect message override
the values specified in dae-service.xml.
These elements are required:
• the subscriber name (contains domain for Profile Database, does not contain
domain for LDAP deployments)
Note <send-ha-info> has a default value of false if not specified in the xml
request. <send-fa-info> has a default value of true if not specified in the xml
request.
Request
<request version="2.0" principal="user" credentials="password">
<target name="DAEAPI" operation="sendDisconnect">
<parameter>
<wimax-hotlining>
<subscriber-name>test@dss-test.com</subscriber-name>
<send-ha-info>true</send-ha-info>
<send-fa-info>true</send-fa-info>
</wimax-hotlining>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="DAEAPI" operation="sendDisconnect">
<result>
<wimax-hotlining>
<fa-node>
<sent>true</sent>
<user-identifier>YTI4J2AYO2
</user-identifier>
<rms-cluster-id>0</rms-cluster-id>
</fa-node>
</wimax-hotlining>
</result>
</target>
</response>
Send a WiMAX-based This example shows a WiMAX-based DM request and response, with RADIUS
DM request with attributes specified.
RADIUS attributes
Request
<request version="2.0" principal="user" credentials="password">
<target name="DAEAPI" operation="sendDisconnect">
<parameter>
<wimax-hotlining>
<subscriber-name>test@dss-test.com</subscriber-name>
<radius-attribute-list>
<attribute name="Filter-Id">
<value>000000000003</value>
</attribute>
</radius-attribute-list>
</wimax-hotlining>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="DAEAPI" operation="sendDisconnect">
<result>
<wimax-hotlining>
<subscriber-name>
0000000000A0@domain.net
</subscriber-name>
<send-ha-info>false</send-ha-info>
<send-fa-info>true</send-fa-info>
<fa-node>
<sent>true</sent>
<user-identifier>YTI4J2AYO2
</user-identifier>
<rms-cluster-id>0</rms-cluster-id>
</fa-node>
</wimax-hotlining>
</result>
</target>
</response>
Request
<request version="2.0" principal="root" credentials="root">
<target name="DAEAPI" operation="sendDisconnect">
<parameter>
<cdma-hotlining>
<subscriber-name>login-name@domain</subscriber-name>
</cdma-hotlining>
</parameter>
</target>
</request>
Send a synchronous Set the value of the <send-asynchronously> element to “false” to process the
CDMA-based DM disconnect request and include the processing results in the response.
By default, the value of <send-asynchronously> is set to “true”, which only validates
the <subscriber-name> value and does not include the processing results in the
response.
Note Make sure to configure the RADIUS server as a DAE Server target in the
dae-service.xml file, which is located in /WideSpan/config/provserver
directory. Also, make sure to enable DAE on all PDSNs modeled in the
Service Manager.
Request
<request version="2.0" principal="root" credentials="root">
<target name="DAEAPI" operation="sendDisconnect">
<parameter>
<cdma-hotlining>
<subscriber-name>login-name@domain</subscriber-name>
<send-asynchronously>false</send-asynchronously>
</cdma-hotlining>
</parameter>
</target>
</request>
<subscriber-name>1123456666@aptg.com.tw</subscriber-name>
<send-ha-info>false</send-ha-info>
<send-pdsn-info>true</send-pdsn-info>
<send-asynchronously>false</send-asynchronously>
<pdsn-node>
<sent>true</sent>
<user-identifier>1123456666</user-identifier>
<rms-cluster-id>0</rms-cluster-id>
</pdsn-node>
</cdma-hotlining>
</result>
</target>
</response>
DomainAPI operations
This section describes the following DomainAPI operations:
• createDomain
• createDomainProfileSet
• getDomain
• getDomainProfileSet
• updateDomain
• updateDomainProfileSet
createDomain
Use the createDomain operation to create a domain.
These elements are required:
• the domain name, which must be unique within the system (1 to 80 characters)
• the organization that owns this domain (must already be present)
• a domain profile set (must already be present)
These elements are optional:
• domain context (D) profile attributes
• one or more aliases for the domain
Provisioned RADIUS This example shows how to create a domain with provisioned domain context
connection service RADIUS connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="DomainAPI" operation="createDomain">
<parameter>
<domain>
<name>bws.com</name>
<owning-organization>
<id>4</id>
</owning-organization>
<profile-set>
<id>5</id>
<profile>
<id>5</id>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</profile-set>
</domain>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="DomainAPI" operation="createDomain">
<result/>
</target>
</response>
createDomainProfileSet
Use the createDomainProfileSet operation to create a domain profile set.
These elements are required:
• the profile set name
• the organization in which the profile set is to be created (must already be
present)
These elements are optional:
• a description of the profile set
• an inheritance flag to determine whether the profile set is available to
sub-organizations (default is yes)
• domain group context (DG) profile attributes
Create RADIUS This example shows how to create domain group context RADIUS connection
connection service service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="DomainAPI" operation="createDomainProfileSet">
<parameter>
<domain-profile-set>
<name>BWS Domain Profile Set</name>
<organization><id>4</id></organization>
<profile>
<id>5</id>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</domain-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="DomainAPI" operation="createDomainProfileSet">
<result/>
</target>
</response>
getDomain
Use the getDomain operation used to retrieve domain information and, optionally,
domain context (D) profile attributes.
These elements are required:
• the domain name or ID
These elements are optional:
• an empty <profile-set> element to be populated with retrieved profile
information. All account profiles and attributes are returned. For example:
<profile-set></profile-set>
• the profile ID or qualified name that identifies a specific profile for which
attribution information is requested. Only information for that profile is returned.
For example:
<profile-set><profile><id>2</id></profile><profile-set>
• an empty <alias> element to be populated with retrieved alias information. All of
the aliases for the domain are returned.
Get RADIUS This example shows how to get domain context RADIUS connection service profile
connection service attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="DomainAPI" operation="getDomain">
<parameter>
<domain>
<id>5</id>
<profile-set>
</profile-set>
</domain>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="DomainAPI" operation="getDomain">
<result>
<id>5</id>
<name>bws.com</name>
<status>active</status>
<profile-set>
<profile>
<id>6</id>
<name>RadiusQoSConnectionService</name>
<service>
<name>RadiusQoSConnectionService</name>
<version>1</version>
</service>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
</profile>
</profile-set>
</result>
</target>
</response>
getDomainProfileSet
Use the getDomainProfileSet operation to retrieve domain profile set information
and, optionally, domain group context (DG) profile attributes.
These elements are required:
• the profile set qualified name or ID
These elements are optional:
• an empty <profile-set> element to be populated with domain group context
(DG) RADIUS connection services profile information. All user profiles and
attributes are returned. For example:
<profile></profile>
• a <profile-set> element with the profile ID or qualified name that identifies a
specific profile for which RADIUS connection services attribution information is
requested. Only information for that profile is returned. For example:
<profile><id>2</id></profile>
Get RADIUS This example shows how to get the domain group context RADIUS connection
connection service service profile attributes.
profile attributes
Request
<request version="2.0" principal="user" credentials="password">
<target name="DomainAPI" operation="getDomainProfileSet ">
<parameter>
<domain-profile-set>
<id>5</id>
<profile>
</profile>
<domain-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="DomainAPI" operation="getDomainProfileSet">
<result>
<domain-profile-set>
<name>BWS Domain Profile Set</name>
<organization><id>4</id></organization>
<profile>
<id>5</id>
<name>RadiusQoSConnectionService</name>
<service>
<name>RadiusQoSConnectionService</name>
<version>1</version>
</service>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</domain-profile-set>
</result>
</target>
</response>
updateDomain
Use the updateDomain operation to modify a domain.
These elements are required:
• the domain name or ID
These elements are optional:
• a domain profile set, to which this profile should be added or deleted
• domain context (D) profile attributes to be added, modified, or deleted from the
domain profile
• a new domain status (active, suspended, deleted)
• one or more aliases, to be added or updated
Add or update This example shows how to add or update domain context RADIUS connection
RADIUS connection service profile attributes.
service profile
attributes Request
<request version="2.0" principal="User1" credentials="password">
<target name="DomainAPI" operation="updateDomain">
<parameter>
<domain>
<id>5</id>
<profile-set>
<id>5</id>
<profile>
<id>5</id>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</profile-set>
</domain>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="DomainAPI" operation="updateDomain">
<result/>
</target>
</response>
Delete RADIUS This example shows how to delete domain context RADIUS connection service
connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="DomainAPI" operation="updateDomain">
<parameter>
<domain>
<id>5</id>
<profile-set>
<id>5</id>
<profile>
<id>5</id>
<attribute name="name1" delete="true">
<value segment="segment">value1</value>
</attribute>
</profile>
</profile-set>
</domain>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="DomainAPI" operation="updateDomain">
<result/>
</target>
</response>
updateDomainProfileSet
Use the updateDomainProfileSet operation to modify a domain profile set.
These elements are required:
• the profile set ID or qualified name
These elements are optional:
• a new profile set description
• a new profile set inheritance flag setting
• a new profile set status (active or deleted)
• a profile to be added to, modified, or deleted from the profile set
Update RADIUS This example shows how to update the domain group context RADIUS connection
connection service service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="DomainAPI" operation="updateDomainProfileSet">
<parameter>
<domain-profile-set>
<id>15</id>
<profile>
<id>5</id>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</domain-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="DomainAPI" operation="updateDomainProfileSet">
<result/>
</target>
</response>
Delete RADIUS This example shows how to delete the domain group context RADIUS connection
connection service service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="DomainAPI" operation="updateDomainProfileSet">
<parameter>
<domain-profile-set>
<id>15</id>
<profile>
<id>5</id>
Response
<response version="2.0">
<target name="DomainAPI" operation="updateDomainProfileSet">
<result/>
</target>
</response>
HotlineAPI operations
Use the following HotlineAPI operations to create, delete, and update a user:
• createUser
• deleteUser
• deleteAccount
• updateUser
You can also get metrics for CoA and/or DM messages using the following
operations:
• getCoAMetrics
• getDMMetrics
• getCoADMMetrics
• clearCoADMFailureMetrics
createUser
Use the createUser operation to create a user with a hotlineReason, and when the
user is created, to trigger a sendCoA API. For details about the sendCoA API, see
"sendCoA" on page 84.
createUser includes an optional operation attribute which you can use to specify the
hotlineReason. The operation attribute can have one of the following values:
• bitmaskSet:
– changes the hotlineReason attribute by changing specified bits to a value
of “1”.
– accepts a string of “0” and “1” values. For example:
hotlineReason=00000001
<value operation=”bitmaskSet”>00000010</value>
new hotlineReason=00000011
• bitmaskClear:
– changes the hotlineReason attribute by changing specified bits to a value
of “0”.
– accepts a string of “0” and “1” values.For example:
hotlineReason=00000011
<value operation=”bitmaskClear”>00000010</value>
new hotlineReason=00000001
Note The Provisioning Server applies bitmaskSet and bitmaskClear operations
from right to left when updating the hotlineReason.
Note If the bitmaskSet or bitmaskClear value is longer than the hotlineReason
being modified, the Provisioning Server ignores the bitmask for the extra
bits.
Create a WiMAX user This examples create a user with a hotlineReason and trigger the sendCoA.
Response
<response version="2.0">
<target name="HotlineAPI" operation="createUser">
<result/>
</target>
</response>
<password>1234567</password>
<domain>
<name>NAME.net</name>
</domain>
<organization>2</organization>
<profile-set>
<qualified-name>NAME.net</qualified-name>
<profile>
<qualified-name>Wimax71</qualified-name>
<attribute name="#ActiveStateFlag">
<value>ON</value>
</attribute>
</profile>
</profile-set>
<user-attributes>
<user-attribute name="hotlineReason" type="string">
<value operation="bitmaskClear">0000000000001000
</value>
</user-attribute>
</user-attributes>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="HotlineAPI" operation="createUser">
<result/>
</target>
</response>
deleteUser
Use the deleteUser operation to delete a user from the Profile Database, and
optionally to send a CoA or DM message for the user. For information about the
sendCoA API, see "sendCoA" on page 84. For information about the
sendDisconnect API, see "sendDisconnect" on page 87.
The CoA and DM message are specified using the following elements:
• send-coa: when set to true a CoA message is sent for the deleted user. The
default is false.
• send-disconnect: when set to true a DM message is sent for the deleted user.
The default is false
Delete a user This example requests to delete a user. A CoA or DM message is not triggered
because send-coa and send-disconnect are both set to false.
Request
<request version="2.0" principal="user" credentials="password">
<target name="HotlineAPI" operation="deleteUser">
<parameter>
<hotline-user>
<login-name>111111111111</login-name>
<domain>
<name>testdomain</name>
</domain>
<send-coa>false</send-coa>
<send-disconnect>false</send-disconnect>
</hotline-user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="HotlineAPI" operation="deleteUser">
<result/>
</target>
</response>
Delete a user and This example requests to delete a user and trigger a DM message, which includes
specify RADIUS the specified RADIUS attributes.
attributes
Request
<request version="2.0" principal="user" credentials="password">
<target name="HotlineAPI" operation="deleteUser">
<parameter>
<hotline-user>
<login-name>111111111111</login-name>
<domain>
<name>testdomain</name>
</domain>
<send-coa>true</send-coa>
<send-disconnect>true</send-disconnect>
<radius-attribute-list>
<attribute name="Filter-Id">
<value>000000000003</value>
</attribute>
</radius-attribute-list>
</hotline-user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="HotlineAPI" operation="deleteUser">
<result/>
</target>
</response>
deleteAccount
Use the deleteAccount operation to delete an account from the Profile Database,
and optionally to send a CoA or DM message for users associated with the account.
For information about the sendCoA API, see "sendCoA" on page 84. For
information about the sendDisconnect API, see "sendDisconnect" on page 87.
Also specify RADIUS attributes to include in the Disconnect message. Specify the
attributes in the dae-service.xml file and in the deleteAccount message.
Note If attributes are specified in dae-service.xml and in the deleteAccount
message, the values specified in the deleteAccount message override the
values specified in dae-service.xml.
The CoA and DM message are specified using the following elements:
• send-coa: when set to true a CoA message is sent for users associated with the
deleted account. The default is false.
• send-disconnect: when set to true a DM message is sent for users associated
with the deleted account. The default is false.
Delete an account This example requests to delete an account. A CoA or DM message is not triggered
because send-coa and send-disconnect are both set to false.
Request
<request version="2.0" principal="user" credentials="password">
<target name="HotlineAPI" operation="deleteAccount">
<parameter>
<hotline-account>
<name>account1</name>
<send-coa>false</send-coa>
<send-disconnect>false</send-disconnect>
</hotline-account>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="HotlineAPI" operation="deleteAccount">
<result/>
</target>
</response>
Delete an account This example requests to delete an account and trigger a DM message, which
and specify RADIUS includes the specified RADIUS attributes.
attributes
Request
<request version="2.0" principal="user" credentials="password">
<target name="HotlineAPI" operation="deleteAccount">
<parameter>
<hotline-account>
<name>account1</name>
<send-coa>true</send-coa>
<send-disconnect>true</send-disconnect>
<radius-attribute-list>
<attribute name="Filter-Id">
<value>000000000003</value>
</attribute>
</radius-attribute-list>
</hotline-account>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="HotlineAPI" operation="deleteAccount">
<result/>
</target>
</response>
updateUser
Use the updateUser operation to update a hotlineReason, and when the
hotlineReason is updated, to trigger a CoA and/or DM. For details about the
sendCoA and sendDisconnect APIs, see "sendCoA" on page 84, and
"sendDisconnect" on page 87.
Updating hotlineReason
updateUser includes an optional operation attribute used to modify the
hotlineReason. The operation attribute can have one of the following values:
• bitmaskSet:
– changes the hotlineReason attribute by changing specified bits to a value
of “1”.
– accepts a string of “0” and “1” values. For example:
hotlineReason=00000001
<value operation=”bitmaskSet”>00000010</value>
new hotlineReason=00000011
• bitmaskClear:
– changes the hotlineReason attribute by changing specified bits to a value
of “0”.
Update WiMAX user The first two examples update the hotlineReason to update a specified bit and
attribute trigger the sendCoA.
The third example updates the hotlineReason and is configured to send a CoA and
DM.
Response
<response version="2.0">
<target name="HotlineAPI" operation="updateUser">
<result/>
</target>
</response>
This example updates the hotlineReason to clear a specified bit and triggers the
sendCoA.
Response
<response version="2.0">
<target name="HotlineAPI" operation="updateUser">
<result/>
</target>
</response>
Request to update a bit in the hotlineReason and send a CoA and DM:
<request version="2.0" principal="APIUSER" credentials="APIPASSWORD">
<target name="HotlineAPI" operation="updateUser">
<parameter>
<hotline-user>
<login-name>001122AABBCC</login-name>
<domain>
<name>NAME.net</name>
</domain>
<profile-set>
<qualified-name>NAME.net</qualified-name>
<profile>
<qualified-name>Wimax71</qualified-name>
<attribute name="#ActiveStateFlag">
<value>ON</value>
</attribute>
</profile>
<profile>
<qualified-name>Wimax70</qualified-name>
<attribute delete="true" name="#ActiveStateFlag"/>
</profile>
</profile-set>
<user-attributes>
<user-attribute name="hotlineReason" type="string">
<value operation="bitmaskSet">0000000000010000
</value>
</user-attribute>
</user-attributes>
<send-coa>true</send-coa>
<send-disconnect>true</send-disconnect>
</hotline-user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="HotlineAPI" operation="updateUser">
<result/>
</target>
</response>
getCoAMetrics
Use the getCoAMetrics operation to track the number of queued and failed CoA
messages for HotlineAPI operations where the CoA occurs after the operation
completes.
Use getCoAMetrics to track CoA metrics for the following HotlineAPI operations:
• createUser
• updateUser
• deleteUser
Get CoA metrics This example requests to retrieve the number of queued and failed CoA requests.
Request
<request version="2.0" principal="admin" credentials="password">
<target name="HotlineAPI" operation="getCoAMetrics">
</target>
</request>
Response
<response version="2.0">
<target name="HotlineAPI" operation="getCoAMetrics">
<result class="com.bridgewatersystems.dae.entity.HotlineCoaMetrics">
<hotline-coa-metrics>
<queued-coa>0</queued-coa>
<failed-coa>0</failed-coa>
</hotline-coa-metrics>
</result>
</target>
</response>
getDMMetrics
Use the getDMMetrics operation to track the number of queued and failed DM
messages for HotlineAPI operations where the DM occurs after the operation
completes.
Use getDMMetrics to track DM metrics for the following HotlineAPI operations:
• createUser
• updateUser
• deleteUser
Get DM metrics This example requests to retrieve the number of queued and failed DM requests.
Request
<request version="2.0" principal="admin" credentials="password">
<target name="HotlineAPI" operation="getDMMetrics">
</target>
</request>
Response
<response version="2.0">
<target name="HotlineAPI" operation="getDMMetrics">
<result class="com.bridgewatersystems.dae.entity.HotlineDmMetrics">
<hotline-dm-metrics>
<queued-dm>1</queued-dm>
<failed-dm>1</failed-dm>
</hotline-dm-metrics>
</result>
</target>
</response>
getCoADMMetrics
Use the getCoADMMetrics operation to track the number of queued and failed CoA
and DM messages for HotlineAPI operations where the CoA and/or DM occur after
the operation completes.
Use getCoADMMetrics to track CoA and DM metrics for the following HotlineAPI
operations:
• createUser
• updateUser
• deleteUser
Get CoA and DM This example requests to retrieve the number of queued and failed CoA and DM
metrics requests.
Request
<request version="2.0" principal="admin" credentials="password">
<target name="HotlineAPI" operation="getCoADMMetrics">
</target>
</request>
Response
<response version="2.0">
<target name="HotlineAPI" operation="getCoADMMetrics">
<result class="com.bridgewatersystems.dae.entity.HotlineCoaDmMetrics">
<hotline-coa-dm-metrics>
<queued-coa>0</queued-coa>
<failed-coa>0</failed-coa>
<queued-dm>1</queued-dm>
<failed-dm>1</failed-dm>
</hotline-coa-dm-metrics>
</result>
</target>
</response>
clearCoADMFailureMetrics
Use the clearCoADMFailureMetrics operation to clear CoA and DM metrics for the
following HotlineAPI operations:
• createUser
• updateUser
• deleteUser
Clear CoA and DM This example requests to clear the metrics for CoA and DM requests.
metrics
Request
<request version="2.0" principal="admin" credentials="password">
<target name="HotlineAPI" operation="clearCoADMFailureMetrics">
</target>
</request>
Response
<response version="2.0">
<target name="HotlineAPI" operation="clearCoADMFailureMetrics">
<result />
</target>
</response>
NetworkAPI operations
This section describes the following NetworkAPI operations:
• createDHCPServer
• findDPI
• createDPI
• createIPAddressPool
• createNetwork
• deleteDHCPServer
• deleteDPI
• deleteIPAddressPool
• deleteNetwork
• getDHCPServer
• getDPI
• getIPAddressPool
• getNetwork
• updateDPI
• updateIPAddressPool
• updateNetwork
createDHCPServer
Specified name and This example shows how to create a DHCP Server with a specified name and
description description.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="createDHCPServer">
<parameter>
<dhcp-server>
<name>P301_TestDHCPServer1</name>
<description>
P301_TestDHCPServerdescription 1
</description>
</dhcp-server>
</parameter>
</target>
</request>
Response
<response version="2.0">
findDPI
Specified login name This example shows how to find information about a DPI with a specified login
name. All records that match the specified login name arereturned.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="findDPI">
<parameter>
<dpi-search>
<user>
<login-name>00:20:40:dc:80:03</login-name>
</user>
<rms-cluster-id>1</rms-cluster-id>
</dpi-search>
</parameter>
</target>
</request>
Specified MAC This example shows how to find information about a DPI with a MAC address. You
address can search by MAC address or by user name in the form of a MAC address.
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="findDPI">
<parameter>
<dpi-search>
<mac-address>00:20:40:dc:80:03</mac-address>
<rms-cluster-id>1</rms-cluster-id>
</dpi-search>
</parameter>
</target>
</request>
The rms-cluster-id element is optional. If it is not provided, all RMS clusters are
queried to perform MAC Address to IP Address translation.
Response
<response version="2.0">
<target name="NetworkAPI" operation="findDPI">
<result>
<dpi>
<id>1545</id>
<configuration-id>1</configuration-id>
<name>test_DPI</name>
<hostname>dpiHost</hostname>
<port>7890</port>
<timeout>50</timeout>
<login-name>dpiLogin</login-name>
<password>dpiPasswd</password>
</dpi>
</result>
</target>
</response>
createDPI
Specified name and This example shows how to create a DPI with a specified name and description.
description The request does not include DPI attributes or IP Address Pools.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="createDPI">
<parameter>
<dpi>
<name>DPI Name</name>
<description>DPI Description</description>
</dpi>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="createDPI">
<result>
<string>303418</string>
</result>
</target>
</response>
The number contained within the <string></string> tags is the ID of the created
object.
IP Address Pools This example shows how to create a DPI using IP Address Pools. The request
includes no DPI attributes but includes some IP Address Pools. The IP Address
Pools are created by the system if they are not present since
create-ip-address-pools="true" is provided.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="createDPI">
<parameter>
<dpi create-ip-address-pools="true">
<name>DPI Name</name>
<description>DPI Description</description>
<ip-address-pool>
<qualified-name>
IP Pool Name 1
</qualified-name>
</ip-address-pool>
<ip-address-pool>
<qualified-name>
IP Pool Name 2
</qualified-name>
</ip-address-pool>
</dpi>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="createDPI">
<result>
<string>303419</string>
</result>
</target>
</response>
The number contained within the <string></string> tags is the ID of the created
object.
IP Address Pools and This example shows how to create a DPI using IP Address Pools and DPI
DPI attributes attributes. The IP Address Pools are created by the system if they are not present
since create-ip-address-pools="true" is provided.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="createDPI">
<parameter>
<dpi create-ip-address-pools="true">
<name>DPI Name</name>
<description>DPI Description</description>
<attribute name="Attribute1">
<value segment="segment">value1</value>
</attribute>
<attribute name="Another Attribute">
<value>Another Value</value>
</attribute>
<ip-address-pool>
<qualified-name>
IP Pool Name 1
</qualified-name>
</ip-address-pool>
<ip-address-pool>
<qualified-name>
IP Pool Name 2
</qualified-name>
</ip-address-pool>
</dpi>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="createDPI">
<result>
<string>303422</string>
</result>
</target>
</response>
The number contained within the <string></string> tags is the ID of the created
object.
createIPAddressPool
Specified name and This example shows how to create an IP Address Pool.
description
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="createIPAddressPool">
<parameter>
<ip-address-pool>
<name>IP Pool Name</name>
<description>IP Pool Description</description>
</ip-address-pool>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="createIPAddressPool">
<result>
<string>303417</string>
</result>
</target>
</response>
The number contained within the <string></string> tags is the ID of the created
object.
createNetwork
Network with This example shows how to create a network with subnets. Four subnets are
subnets specified by using number-of-subnets="4". An IP Address Pool is also specified.
The IP Address Pool is created by the system if it is not present since
create-ip-address-pools="true". DHCP options are defined.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="createNetwork">
<parameter>
<network create-ip-address-pools="true"
number-of-subnets="4">
<name>P301_TestNet</name>
<public>true</public>
<starting-address>192.167.1.0</starting-address>
<network-mask>255.255.255.0</network-mask>
<rms-cluster-id>10</rms-cluster-id>
<ip-address-pool>
<qualified-name>IP Pool 1</qualified-name>
</ip-address-pool>
<dhcp-option name="option1">
<value>1.1.1.1</value>
</dhcp-option>
<dhcp-option name="option2">
<value>2.2.2.1</value>
<value>2.2.2.2</value>
</dhcp-option>
</network>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="createNetwork">
<result>
<string>303426</string>
</result>
</target>
</response>
The number contained within the <string></string> tags is the ID of the created
object.
IP Address Pools for This example shows how to create IP Address Pools for a subnet. Subnets are
subnets created based on the supplied subnet with the template="true" attribute. The
template subnet specifies an IP Address Pool which is created by the system if it is
not present (create-ip-address-pools="true"). The template subnet specifies four IP
Address ranges. The DHCP Server used by the dynamic address range is created
by the system if it is not present (create-ip-address-pools="true"). DHCP options
are defined for the subnet and network.
Request
<request version="2.0" principal="User1"
credentials="password">
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.58</start-ip>
<end-ip>192.168.1.86</end-ip>
<range-type>DYNAMIC</range-type>
<dhcp-server>
<qualified-name>
DHCPServer1
</qualified-name>
</dhcp-server>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.87</start-ip>
<end-ip>192.168.1.115</end-ip>
<range-type>RESERVED</range-type>
</ip-address-range>
</subnet>
</network>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="createNetwork">
<result>
<string>303437</string>
</result>
</target>
</response>
The number contained within the <string></string> tags is the ID of the created
object.
Two subnets This example shows how to create a network with two subnets. Subnets are
individually defined. The subnet specifies an IP Address Pool. The IP Address Pool
is created by the system if it is not present (create-ip-address-pools="true"). The
subnet specifies four IP Address ranges. The DHCP Server used by the dynamic
address range is created by the system if it is not present
(create-ip-address-pools="true"). DHCP options are defined for the subnet.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="createNetwork">
<parameter>
<network>
<name>Network name</name>
<public>false</public>
<starting-address>192.168.1.0</starting-address>
<network-mask>255.255.255.0</network-mask>
<rms-cluster-id>10</rms-cluster-id>
<subnet create-dhcp-servers="true"
create-ip-address-pools="true">
<starting-address>
192.168.1.0
</starting-address>
<subnet-mask>255.255.255.128</subnet-mask>
<rms-cluster-id>20</rms-cluster-id>
<ip-address-pool>
<qualified-name>
IPAddressPool1
</qualified-name>
</ip-address-pool>
<dhcp-option name="option1">
<value>3.3.3.3</value>
</dhcp-option>
<dhcp-option name="option2">
<value>2.2.2.1</value>
<value>2.2.2.2</value>
</dhcp-option>
<ip-address-range>
<start-ip>192.168.1.0</start-ip>
<end-ip>192.168.1.31</end-ip>
<range-type>RESERVED</range-type>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.32</start-ip>
<end-ip>192.168.1.63</end-ip>
<range-type>STATIC</range-type>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.64</start-ip>
<end-ip>192.168.1.95</end-ip>
<range-type>DYNAMIC</range-type>
<dhcp-server>
<qualified-name>
DHCPServer1
</qualified-name>
</dhcp-server>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.96</start-ip>
<end-ip>192.168.1.127</end-ip>
<range-type>RESERVED</range-type>
</ip-address-range>
</subnet>
<subnet create-dhcp-servers="true"
create-ip-address-pools="true">
<starting-address>
192.168.1.128
</starting-address>
<subnet-mask>255.255.255.128</subnet-mask>
<rms-cluster-id>20</rms-cluster-id>
<ip-address-pool>
<qualified-name>
IPAddressPool1
</qualified-name>
</ip-address-pool>
<dhcp-option name="option1">
<value>3.3.3.3</value>
</dhcp-option>
<dhcp-option name="option2">
<value>2.2.2.1</value>
<value>2.2.2.2</value>
</dhcp-option>
<ip-address-range>
<start-ip>192.168.1.128</start-ip>
<end-ip>192.168.1.159</end-ip>
<range-type>RESERVED</range-type>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.160</start-ip>
<end-ip>192.168.1.191</end-ip>
<range-type>STATIC</range-type>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.192</start-ip>
<end-ip>192.168.1.223</end-ip>
<range-type>DYNAMIC</range-type>
<dhcp-server>
<qualified-name>
DHCPServer1
</qualified-name>
</dhcp-server>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.224</start-ip>
<end-ip>192.168.1.255</end-ip>
<range-type>RESERVED</range-type>
</ip-address-range>
</subnet>
</network>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="createNetwork">
<result>
<string>303445</string>
</result>
</target>
</response>
The number contained within the <string></string> tags is the ID of the created
object.
deleteDHCPServer
Specified name This example shows how to delete a DHCP Server by specifying its name.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="deleteDHCPServer">
<parameter>
<dhcp-server>
<qualified-name>P301_TestDHCPServer2
</qualified-name>
</dhcp-server>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="deleteDHCPServer">
<result/>
</target>
</response>
deleteDPI
Specified name This example shows how to delete a DPI. The DPI to delete is identified by
providing its name in the "qualified-name" element.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="deleteDPI">
<parameter>
<dpi>
<qualified-name>DPI Name2</qualified-name>
</dpi>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="deleteDPI">
<result/>
</target>
</response>
deleteIPAddressPool
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="deleteIPAddressPool">
<parameter>
<ip-address-pool>
<id>1234</id>
</ip-address-pool>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="deleteIPAddressPool">
<result/>
</target>
</response>
Specified name This example shows how to delete an IP Address Pool by name.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="deleteIPAddressPool">
<parameter>
<ip-address-pool>
<qualified-name>IP Pool Name</qualified-name>
</ip-address-pool>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="deleteIPAddressPool">
<result/>
</target>
</response>
deleteNetwork
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="deleteNetwork">
<parameter>
<network>
<qualified-name>new name</qualified-name>
</network>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="deleteNetwork">
<result/>
</target>
</response>
getDHCPServer
Specified name This example shows how to get a DHCP Server by name.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="getDHCPServer">
<parameter>
<dhcp-server>
<qualified-name>P301_TestDHCPServer1
</qualified-name>
</dhcp-server>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="getDHCPServer">
<result>
<dhcp-server>
<id>303416</id>
<configuration-id>1</configuration-id>
<name>P301_TestDHCPServer1</name>
<description>P301_TestDHCPServerdescription 1
</description>
<last-modified>2005-12-12 11:39:49
</last-modified>
<modified-by>admin</modified-by>
</dhcp-server>
</result>
</target>
</response>
getDPI
Specified name This example shows how to get a DPI by name. The returned DPI includes its basic
properties only. The DPI's attributes and IP Address Pools are not included
because include-attributes="false" and include-ip-address-pools="false".
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="getDPI">
<parameter>
<dpi include-attributes="false"
include-ip-address-pools="false">
<qualified-name>DPI Name3</qualified-name>
</dpi>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="getDPI">
<result>
<dpi include-ip-address-pools="false"
include-attributes="false">
<id>303422</id>
<configuration-id>1</configuration-id>
<name>DPI Name3</name>
<caption>DPI Name3</caption>
<description>DPI Description</description>
<hostname>DPI Name3</hostname>
<last-modified>2005-12-12 12:07:57
</last-modified>
<modified-by>admin</modified-by>
</dpi>
</result>
</target>
</response>
Basic properties and This example shows how to get a DPI by name and also retrieve it’s basic
IP Address Pools properties and associated IP Address Pools. The IP Address Pools are included
because include-ip-address-pools="true".
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="getDPI">
<parameter>
<dpi include-ip-address-pools="true">
<qualified-name>DPI Name3</qualified-name>
</dpi>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="getDPI">
<result>
<dpi include-ip-address-pools="true"
include-attributes="false">
<id>303422</id>
<configuration-id>1</configuration-id>
<name>DPI Name3</name>
<caption>DPI Name3</caption>
<description>DPI Description</description>
<hostname>DPI Name3</hostname>
<last-modified>2005-12-12 12:07:57
</last-modified>
<modified-by>admin</modified-by>
<ip-address-pool>
<id>303420</id>
<configuration-id>1</configuration-id>
<name>IP Pool Name 1</name>
<last-modified>2005-12-12 12:05:02
</last-modified>
<modified-by>admin</modified-by>
</ip-address-pool>
<ip-address-pool>
<id>303421</id>
<configuration-id>1</configuration-id>
<name>IP Pool Name 2</name>
<last-modified>2005-12-12 12:05:02
</last-modified>
<modified-by>admin</modified-by>
</ip-address-pool>
</dpi>
</result>
</target>
</response>
Basic properties, This example shows how to get a DPI by name and also retrieve it’s basic
attributes, and IP properties, attributes, and associated IP Address Pools. The DPI's Attributes and IP
Address Pools Address Pools are included because include-attributes="true" and
include-ip-address-pools="true".
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="getDPI">
<parameter>
<dpi include-attributes="true"
include-ip-address-pools="true">
<qualified-name>DPI Name3</qualified-name>
</dpi>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="getDPI">
<result>
<dpi include-ip-address-pools="true"
include-attributes="true">
<id>303422</id>
<configuration-id>1</configuration-id>
<name>DPI Name3</name>
<caption>DPI Name3</caption>
<description>DPI Description</description>
<hostname>DPI Name3</hostname>
<last-modified>2005-12-12 12:07:57
</last-modified>
<modified-by>admin</modified-by>
<attribute name="Another Attribute">
<value id="1058947">Another Value</value>
</attribute>
<attribute name="Attribute1">
<value id="1058946">value1</value>
</attribute>
<ip-address-pool>
<id>303420</id>
<configuration-id>1</configuration-id>
<name>IP Pool Name 1</name>
<last-modified>2005-12-12 12:05:02
</last-modified>
<modified-by>admin</modified-by>
</ip-address-pool>
<ip-address-pool>
<id>303421</id>
<configuration-id>1</configuration-id>
<name>IP Pool Name 2</name>
<last-modified>2005-12-12 12:05:02
</last-modified>
<modified-by>admin</modified-by>
</ip-address-pool>
</dpi>
</result>
</target>
</response>
getIPAddressPool
Request
To get an IP Address Pool, send the Provisioning Server the following request:
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="getIPAddressPool">
<parameter>
<ip-address-pool>
<qualified-name>IP Pool Name</qualified-name>
</ip-address-pool>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="getIPAddressPool">
<result>
<ip-address-pool>
<id>303417</id>
<configuration-id>1</configuration-id>
<name>IP Pool Name</name>
<description>IP Pool Description</description>
<last-modified>2005-12-12 11:47:56
</last-modified>
<modified-by>admin</modified-by>
</ip-address-pool>
</result>
</target>
</response>
getNetwork
Basic information This example shows how to get basic information about a network. Only the basic
network information is retrieved since none of the "include-" attributes are supplied.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="getNetwork">
<parameter>
<network>
<qualified-name>Network name</qualified-name>
</network>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="getNetwork">
<result>
<network include-dhcp-servers="false"
include-ip-address-pools="false"
include-dhcp-options="false"
include-ip-address-ranges="false"
include-subnets="false">
<id>303445</id>
<configuration-id>1</configuration-id>
<name>Network name</name>
<public>false</public>
<subnets-equal-size>true</subnets-equal-size>
<starting-address>192.168.1.0</starting-address>
<network-mask>255.255.255.0</network-mask>
<rms-cluster-id>10</rms-cluster-id>
<last-modified>2005-12-12 13:20:44
</last-modified>
<modified-by>admin</modified-by>
</network>
</result>
</target>
</response>
Full information This example shows how to get full information about a network, including all DHCP
options and Servers, IP address ranges, subnets and IP Address Pools. The
network components to include is controlled by setting the appropriate "include-"
attributes.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="getNetwork">
<parameter>
<network include-dhcp-options="true"
include-dhcp-servers="true"
include-ip-address-pools="true"
include-ip-address-ranges="true"
include-subnets="true">
<qualified-name>Network name</qualified-name>
</network>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="getNetwork">
<result>
<network include-dhcp-servers="true"
include-ip-address-pools="true"
include-dhcp-options="true"
include-ip-address-ranges="true"
include-subnets="true">
<id>303445</id>
<configuration-id>1</configuration-id>
<name>Network name</name>
<public>false</public>
<subnets-equal-size>true</subnets-equal-size>
<starting-address>192.168.1.0</starting-address>
<network-mask>255.255.255.0</network-mask>
<rms-cluster-id>10</rms-cluster-id>
<last-modified>2005-12-12 13:20:44
</last-modified>
<modified-by>admin</modified-by>
<subnet>
<id>303446</id>
<configuration-id>1</configuration-id>
<caption>Subnet 0 (192.168.1.0/25)</caption>
<name>Subnet 0 (192.168.1.0/25):303446-1
</name>
<starting-address>192.168.1.0
</starting-address>
<subnet-mask>255.255.255.128</subnet-mask>
<rms-cluster-id>20</rms-cluster-id>
<subnet-boundary>25</subnet-boundary>
<last-modified>2005-12-12 13:20:44
</last-modified>
<modified-by>admin</modified-by>
<ip-address-pool>
<id>303441</id>
<configuration-id>1</configuration-id>
<name>IPAddressPool1</name>
<last-modified>2005-12-12 13:18:55
</last-modified>
<modified-by>admin</modified-by>
</ip-address-pool>
<dhcp-option name="option1">
<value id="1059007"
subscript="393216">3.3.3.3</value>
</dhcp-option>
<dhcp-option name="option2">
<value id="1059008"
subscript="393216">2.2.2.1</value>
<value id="1059009"
subscript="393217">2.2.2.2</value>
</dhcp-option>
<ip-address-range>
<start-ip>192.168.1.0</start-ip>
<end-ip>192.168.1.31</end-ip>
<range-type>RESERVED</range-type>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.96</start-ip>
<end-ip>192.168.1.127</end-ip>
<range-type>RESERVED</range-type>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.32</start-ip>
<end-ip>192.168.1.63</end-ip>
<range-type>STATIC</range-type>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.64</start-ip>
<end-ip>192.168.1.95</end-ip>
<range-type>DYNAMIC</range-type>
<dhcp-server>
<id>303439</id>
<configuration-id>1</configuration-id>
<name>DHCPServer1</name>
<last-modified>2005-12-12 13:18:55
</last-modified>
<modified-by>admin</modified-by>
</dhcp-server>
</ip-address-range>
</subnet>
<subnet>
<id>303448</id>
<configuration-id>1</configuration-id>
<caption>Subnet 1 (192.168.1.128/25)</caption>
<name>Subnet 1 (192.168.1.128/25):303448-1
</name>
<starting-address>192.168.1.128
</starting-address>
<subnet-mask>255.255.255.128</subnet-mask>
<rms-cluster-id>20</rms-cluster-id>
<subnet-boundary>25</subnet-boundary>
<last-modified>2005-12-12 13:20:44
</last-modified>
<modified-by>admin</modified-by>
<ip-address-pool>
<id>303441</id>
<configuration-id>1</configuration-id>
<name>IPAddressPool1</name>
<last-modified>2005-12-12 13:18:55
</last-modified>
<modified-by>admin</modified-by>
</ip-address-pool>
<dhcp-option name="option1">
<value id="1059016"
subscript="393216">3.3.3.3</value>
</dhcp-option>
<dhcp-option name="option2">
<value id="1059017"
subscript="393216">2.2.2.1</value>
<value id="1059018"
subscript="393217">2.2.2.2</value>
</dhcp-option>
<ip-address-range>
<start-ip>192.168.1.128</start-ip>
<end-ip>192.168.1.159</end-ip>
<range-type>RESERVED</range-type>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.224</start-ip>
<end-ip>192.168.1.255</end-ip>
<range-type>RESERVED</range-type>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.160</start-ip>
<end-ip>192.168.1.191</end-ip>
<range-type>STATIC</range-type>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.192</start-ip>
<end-ip>192.168.1.223</end-ip>
<range-type>DYNAMIC</range-type>
<dhcp-server>
<id>303439</id>
<configuration-id>1</configuration-id>
<name>DHCPServer1</name>
<last-modified>2005-12-12 13:18:55
</last-modified>
<modified-by>admin</modified-by>
</dhcp-server>
</ip-address-range>
</subnet>
</network>
</result>
</target>
</response>
updateDHCPServer
Name and This example shows how to update a DHCP Server name and description.
description
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="updateDHCPServer">
<parameter>
<dhcp-server>
<qualified-name>
P301_TestDHCPServer1
</qualified-name>
<name>P301_TestDHCPServer2</name>
<description>P301_TestDHCPServerdescription 2
</description>
</dhcp-server>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="updateDHCPServer">
<result/>
</target>
</response>
updateDPI
Name and This example shows how to update a DPI name and description. The DPI to update
description is identified by providing its current name in the "qualified-name" element.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="updateDPI">
<parameter>
<dpi>
<qualified-name>DPI Name</qualified-name>
<name>New DPI Name</name>
<description>New DPI Description</description>
</dpi>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="updateDPI">
<result/>
</target>
</response>
Name, description, This example shows how to update a DPI name, description, and IP Address Pools.
and IP Address Pools The DPI to update is identified by providing its name in the "qualified-name"
element. "IP Pool 3" and "IP Pool 4" are added to the DPI. "IP Pool 1" is removed
from the DPI since "delete=true" is provided.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="updateDPI">
<parameter>
<dpi create-ip-address-pools="true">
<qualified-name>DPI Name2</qualified-name>
<ip-address-pool>
<qualified-name>Name of IP Pool 3
</qualified-name>
</ip-address-pool>
<ip-address-pool>
<qualified-name>Name of IP Pool 4
</qualified-name>
</ip-address-pool>
<ip-address-pool delete="true">
<qualified-name>Name of IP Pool 1
</qualified-name>
</ip-address-pool>
</dpi>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="updateDPI">
<result/>
</target>
</response>
Attributes This example shows how to update a DPI’s attributes. The DPI to update is
identified by providing its name in the "qualified-name" element. Attribute 3 is
added. Attribute 1 is deleted.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="updateDPI">
<parameter>
<dpi include-attributes="false"
include-ip-address-pools="false">
<qualified-name>DPI Name2</qualified-name>
<attribute name="Attribute3">
<value segment="segment">value1</value>
</attribute>
<attribute delete="true" name="Attribute1"/>
</dpi>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="updateDPI">
<result/>
</target>
</response>
updateIPAddressPool
Specified name This example shows how to update an IP Address Pool by name.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="updateIPAddressPool">
<parameter>
<ip-address-pool>
<qualified-name>IP Pool Name</qualified-name>
<name>New IP Pool Name</name>
<description>New IP Pool Description
</description>
</ip-address-pool>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="updateIPAddressPool">
<result/>
</target>
</response>
updateNetwork
Name, RMS cluster This example shows how to update a network name, RMS cluster ID, and add a
ID, and DHCP option DHCP option.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="updateNetwork">
<parameter>
<network>
<qualified-name>Network name</qualified-name>
<name>new name</name>
<rms-cluster-id>31</rms-cluster-id>
<dhcp-option name="new option">
<value>2344</value>
</dhcp-option>
</network>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="updateNetwork">
<result/>
</target>
</response>
IP Address Pool This example shows how to update a network IP Address Pool assignment. IP
assignment 192.168.1.0 to 192.168.1.4 are unassigned. IP 192.168.1.5 to 192.168.1.15 are
configured as dynamic
Note The DHCP Server assigned to the dynamic range must alreay be present
since the create dhcp server option is not enabled (the
create-dhcp-servers="true" attribute is not present).
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="updateNetwork">
<parameter>
<network>
<qualified-name>new name</qualified-name>
<subnet>
<starting-address>192.168.1.0
</starting-address>
<ip-address-range>
<start-ip>192.168.1.0</start-ip>
<end-ip>192.168.1.4</end-ip>
<range-type>UNASSIGNED</range-type>
</ip-address-range>
<ip-address-range>
<start-ip>192.168.1.5</start-ip>
<end-ip>192.168.1.15</end-ip>
<range-type>DYNAMIC</range-type>
<dhcp-server>
<qualified-name>DHCPServer1
</qualified-name>
</dhcp-server>
</ip-address-range>
</subnet>
</network>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="updateNetwork">
<result/>
</target>
</response>
Subnet split This example shows how to split a subnet. The network to update is identified in the
qualified-name element. The affected subnet is identified by matching the
starting-address of the subnets provided in the update with the starting-address of
the subnets already in the database.
A subnet split occurs if the subnet with start address 192.168.1.0 has a mask of
255.255.255.128. A split is assumed because the subnet mask included in the
update is narrower then the subnet's mask.
The subnet split requires that all addresses covered by the subnet are valid. As
such, two subnets are included in the update: the first subnet covers addresses
0-63, the second covers address 64-127. The subnet update also configures some
addresses of each subnet.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="updateNetwork">
<parameter>
<network>
<qualified-name>new name</qualified-name>
<subnet>
<starting-address>192.168.1.0
</starting-address>
<subnet-mask>255.255.255.192</subnet-mask>
<ip-address-range>
<start-ip>192.168.1.0</start-ip>
<end-ip>192.168.1.20</end-ip>
<range-type>DYNAMIC</range-type>
<dhcp-server><qualified-name>DHCPServer1
</qualified-name>
</dhcp-server>
</ip-address-range>
</subnet>
<subnet>
<starting-address>192.168.1.64
</starting-address>
<subnet-mask>255.255.255.192</subnet-mask>
<ip-address-range>
<start-ip>192.168.1.80</start-ip>
<end-ip>192.168.1.100</end-ip>
<range-type>DYNAMIC</range-type>
<dhcp-server>
<qualified-name>DHCPServer1
</qualified-name>
</dhcp-server>
</ip-address-range>
</subnet>
</network>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="updateNetwork">
<result/>
</target>
</response>
Combining subnets This example shows how to combine subnets. The network to update is identified in
the qualified-name element. The affected subnet is identified by matching the
starting-address of the subnets provided in the update with the starting-address of
the subnets already in the database. A subnet combine occurs if the subnet with
start address 192.168.1.0 has a mask narrower than 255.255.255.0. A combine is
assumed because the subnet mask included in the update covers more addresses
than the subnet's mask. The subnet update also configures some of the addresses
of each subnet.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="NetworkAPI" operation="updateNetwork">
<parameter>
<network>
<qualified-name>new name</qualified-name>
<subnet>
<starting-address>192.168.1.0
</starting-address>
<subnet-mask>255.255.255.0</subnet-mask>
<ip-address-range>
<start-ip>192.168.1.0</start-ip>
<end-ip>192.168.1.130</end-ip>
<range-type>RESERVED</range-type>
</ip-address-range>
</subnet>
</network>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="NetworkAPI" operation="updateNetwork">
<result/>
</target>
</response>
OrganizationAPI operations
This section describes the following OrganizationAPI operations:
• createOrganization
• deleteOrganization
• createOrganizationProfileSet
• getOrganization
• getOrganizationProfileSet
• updateOrganization
• updateOrganizationProfileSet
createOrganization
Use the createOrganization operation to create an organization. Organizations may
be created at any level in the organization hierarchy.
These elements are required:
• the fully qualified organization name, which must be unique within the parent
organization (1 to 80 characters)
• an organization profile set (must already be present)
These elements are optional:
• an unbound domain to bind to this organization (if not specified, the domain is
inherited from the parent organization)
• organization context (O) profile attributes
Provision RADIUS This example shows how to create an organization with provisioned organization
connection service context RADIUS connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="user" credentials="password">
<target name="OrganizationAPI" operation="createOrganization">
<parameter>
<organization>
<qualified-name>/BWS</qualified-name>
<profile-set>
<id>5</id>
<profile>
<id>15</id>
<attribute name="name1">
<value segment="seg1">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</profile-set>
</organization>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="OrganizationAPI" operation="createOrganization">
<result/>
</target>
</response>
deleteOrganization
Use the deleteOrganization operation to delete an organization.
Request
<request credentials="root" principal="root" version="2.0">
<target name="OrganizationAPI" operation="deleteOrganization">
<parameter>
<organization>
<qualified-name>/BWS</qualified-name>
</organization>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="OrganizationAPI" operation="deleteOrganization">
<result/>
</target>
</response>
createOrganizationProfileSet
Use the createOrganizationProfileSet operation to create an organization profile
set.
These elements are required:
• the profile set name
Provision RADIUS This example shows how to create an organization profile set with organization
connection service group context RADIUS connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="OrganizationAPI"
operation="createOrganizationProfileSet">
<parameter>
<organization-profile-set>
<name>BWS Organization Profile Set</name>
<organization>
<id>4</id>
</organization>
<profile>
<id>5</id>
<attribute name="name1">
<value segment="seg1">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</organization-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="OrganizationAPI" operation="createOrganizationProfileSet">
<result/>
</target>
</response>
getOrganization
Use the getOrganization operation to retrieve organization information and,
optionally, organization context (O) profile attributes.
These elements are required:
• the organization ID or qualified name
These elements are optional:
• an empty <profile> element to be populated with organization context (O)
RADIUS connection services attribute information. All user profiles and
attributes are returned. For example:
<profile-set></profile-set>
• a <profile> element with the profile ID or qualified name that identifies a specific
profile for which RADIUS connection services attribution information is
requested. Only information for that profileare returned. For example:
<profile-set><profile><id>2</id></profile></profile-set>
Get RADIUS This example shows how to get organization context RADIUS connection service
connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="OrganizationAPI" operation="getOrganization">
<parameter>
<organization>
<id>5</id>
<profile-set>
</profile-set>
</organization>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="OrganizationAPI" operation="getOrganization">
<result>
<id>5</id>
<name>/BWS</name>
<status>active</status>
<profile-set>
<profile>
<id>6</id>
<name>RadiusQoSConnectionService</name>
<service>
<name>RadiusQoSConnectionService</name>
<version>1</version>
</service>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
</profile>
</profile-set>
</result>
</target>
</response>
getOrganizationProfileSet
Use the getOrganizationProfileSet operation to retrieve organization profile set
information and, optionally, organization group context (OG) profile attributes.
These elements are required:
• the profile set qualified name or ID
These elements are optional:
• an empty <profile-set> element to be populated with organization group context
(OG) RADIUS connection services profile information. All user profiles and
attributes are returned. For example:
<profile-set></profile-set>
• a <profile-set> element with the profile ID or qualified name that identifies a
specific profile for which RADIUS connection services attribution information is
requested. Only information for that profile is returned. For example:
<profile-set><profile><id>2</id></profile><profile-set>
Get RADIUS This example shows how to get organization group context RADIUS connection
connection service service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="OrganizationAPI" operation="getOrganizationProfileSet ">
<parameter>
<organization-profile-set>
<id>5</id>
<profile>
</profile>
</organization-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="OrganizationAPI" operation="getOrganizationProfileSet">
<result>
<organization-profile-set>
<name>BWS Organization Profile Set</name>
<organization><id>5</id></organization>
<profile>
<id>5</id>
<name>RadiusQoSConnectionService</name>
<service>
<name>RadiusQoSConnectionService</name>
<version>1</version>
</service>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</organization-profile-set>
</result>
</target>
</response>
updateOrganization
Use the updateOrganization operation to modify an organization.
These elements are required:
• the qualified name or ID of the organization
These elements are optional:
• an organization profile set, to which this profile should be added or deleted
• organization context (O) profile attributes to be added, modified, or deleted from
the domain profile
• a new organization status (active or deleted)
• multiple IP address pools to associate with a single access node group, such as
a GGSN group
Update RADIUS This example shows how to update organization context RADIUS connection
connection service service profile attributes.
profile attributes The update-only flag indicates that the value should only be updated if it is already
present in the profile. Default action is to add the attribute if itis not already present.
Request
<request version="2.0" principal="User1" credentials="password">
<target name="OrganizationAPI"
operation="updateOrganization">
<parameter>
<organization>
<id>5</id>
<profile-set>
<id>5</id>
<profile>
<id>5</id>
<attribute name="name1">
<value segment="seg1"
update-only="true">value1</value>
</attribute>
</profile>
</profile-set>
</organization>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="OrganizationAPI" operation="updateOrganization">
<result/>
</target>
</response>
Update Access This example shows how to update the Access Control service profile to associate
Control service multiple IP address pools with a single GGSN node group.
This association is necessary for IP Address Management deployments that
configure the Service Controller to choose from multiple IP address pools when
allocating IP addresses.
For more information, see the appendix “IP Address Manager” in the Service
Controller: Resource Management Server Guide.
Request
<request version="2.0" principal="provclient" credentials="rds32k2894l1k">
<target name="OrganizationAPI"
operation="updateOrganization">
<parameter>
<organization>
<id>2123</id>
<profile-set>
<id>165</id>
<access-control-profile>
<id>151</id>
<ggsn-groups>
<ggsn-group>
<group><id>245</id></group>
<association-type>RMS_IP_POOL
</ association-type>
<session-duration>1800</session-duration>
<failure-action>REJECT</failure-action>
<ip-pool-name>DefaultIPPool</ip-pool-name>
<ip-pool-association>
<assigned-ip-pools>
<name>IPPool1</name>
</assigned-ip-pools>
<assigned-ip-pools>
<name>IPPool02</name>
</assigned-ip-pools>
</ip-pool-association>
</ggsn-group>
</ggsn-groups>
</access-control-profile>
</profile-set>
</organization>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="OrganizationAPI" operation="updateOrganization">
<result/>
</target>
</response>
Delete RADIUS This example shows how to delete organization context RADIUS connection
connection service service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="OrganizationAPI" operation="updateOrganization">
<parameter>
<organization>
<id>5</id>
<profile-set>
<id>5</id>
<profile>
<id>5</id>
<attribute name="name1" delete="true">
<value segment="segment">value1</value>
</attribute>
</profile>
</profile-set>
</organization>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="OrganizationAPI"
operation="updateOrganization">
<result/>
</target>
</response>
updateOrganizationProfileSet
Use the updateOrganizationProfileSet operation to modify an organization profile
set.
These elements are required:
• the profile set ID or qualified name
These elements are optional:
• a new profile set description
• a new profile set inheritance flag setting
• a new profile set status (active or deleted)
• a profile to be added to, modified, or deleted from the profile set
Update RADIUS This example shows how to update organization group context RADIUS connection
connection service service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="OrganizationAPI"
operation="updateOrganizationProfileSet">
<parameter>
<organization-profile-set>
<id>15</id>
<profile>
<id>5</id>
<attribute name="name1">
<value segment="seg2">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</organization-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="OrganizationAPI" operation="updateOrganizationProfileSet">
<result/>
</target>
</response>
Update Access This example shows how to update the Access Control service profile to associate
Control service multiple IP address pools with a single GGSN node group.
This association is necessary for IP Address Management deployments that
configure the Service Controller to choose from multiple IP address pools when
allocating IP addresses.
For more information, see the appendix “IP Address Manager” in the Service
Controller: Resource Management Server Guide.
Request
<request version="2.0" principal="provclient" credentials="rds32k2894l1k">
<target name="OrganizationAPI"
operation="updateOrganizationProfileSet">
<parameter>
<organization-profile-set>
<id>165</id>
<access-control-profile>
<id>151</id>
<ggsn-groups>
<ggsn-group>
<group><id>44</id></group>
<association-type>RMS_IP_POOL</association-type>
<session-duration>1800</session-duration>
<failure-action>REJECT</failure-action>
<ip-pool-name>DefaultIPPool</ip-pool-name>
<ip-pool-association>
<assigned-ip-pools>
<name>IPPool1</name>
</assigned-ip-pools>
<assigned-ip-pools>
<name>IPPool02</name>
</assigned-ip-pools>
</ip-pool-association>
</ggsn-group>
</ggsn-groups>
</access-control-profile>
</organization-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="OrganizationAPI" operation="updateOrganizationProfileSet">
<result/>
</target>
</response>
Delete RADIUS This example shows how to delete organization group context RADIUS connection
connection service service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="OrganizationAPI"
operation="updateOrganizationProfileSet">
<parameter>
<organization-profile-set>
<id>15</id>
<profile>
<id>5</id>
<attribute name="name1" delete="true">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value delete="true" subscript="3">
value2
</value>
</attribute>
</profile>
</organization-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="OrganizationAPI" operation="updateOrganizationProfileSet">
<result/>
</target>
</response>
ProfileAPI operations
This section describes the following ProfileAPI operations:
• createProfile
• deleteProfile
• getProfile
• updateProfile
• findProfiles
createProfile
Use the createProfile operation to create a service profile.
These elements are required:
• the profile name, which must be unique within the owning organization (1 to 40
characters)
• the service associated with the profile (must already be present)
• the organization that owns the profile (must already be present)
• an organization profile set (must already be present)
These elements are optional:
• a description of the profile (1 to 80 characters)
• an inheritance flag to determine whether the profile is available to
sub-organizations (default is yes)
• the status of the profile at the time of creation (active or pending)
• profile attributes
• For a RADIUS DAE Service profile, to send an empty attribute value, specify
#Null as the value. The #Null value is case-sensitive. For example:
<attribute name="RB-Forward-Policy">
<value context="default"
segment="REDBACK">#Null</value>
Create RADIUS QoS This example shows how to create a RADIUS QoS selection policy service profile.
selection policy Possible values for QoS selection policy are:
service profile • access
• static
Request
<request version="2.0" principal="User1" credentials="password">
<target name="ProfileAPI" operation="createProfile">
<parameter>
<radius-qos-selection-profile>
<name>Radius QoS Selection Policy Profile</name>
<service>
Response
<response version="2.0">
<target name="ProfileAPI" operation="createProfile">
<result>
<profile>
<id>1198</id>
</profile>
</result>
</target>
</response>
Create RADIUS This example shows how to create a RADIUS connection service profile (Radius
connection service QoS Profile) with specified QoS attributes.
profile
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="ProfileAPI" operation="createProfile">
<parameter>
<profile>
<name>Radius QoS Profile</name>
<service>
<name>RADIUS ConnectionService</name>
</service>
<organization>
<qualified-name>/BWS</qualified-name>
</organization>
<description>Radius QoS Profile</description>
<inheritance>yes</inheritance>
<status>active</status>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
<attribute name="#ActiveStateFlag">
<value>on</value>
</attribute>
</profile>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProfileAPI" operation="createProfile">
<result/>
</target>
</response>
.Create a RADIUS In some deployments, define RADIUS grouped or nested attributes within a
Connection service RADIUS Connection service profile. This example shows how to define a RADIUS
profile with grouped grouped attribute.
attributes
Request
<target name="ProfileAPI" operation="createProfile"...>
......
<attribute name="WiMAX-Packet-Flow-Descriptor">
<value segment="COMMON">
<attribute name="Packet-Data-Flow-ID">
<value segment="COMMON">362</value>
</attribute>
<attribute name="Service-Profile-ID">
<value segment="COMMON">123</value>
</attribute>
</value>
</attribute>
.......
</target>
Create a Diameter This example shows how to create a Diameter connection service profile.
connection service Note Use at least API version 2.0 or greater when provisioning a Diameter
profile connection service profile. Versions prior to version 2.0 may not be
compatible with Diameter group attributes.
Request
<request credentials="password" principal="username" version="2.0">
<target name="ProfileAPI" operation="createProfile">
<parameter>
<diameter-connection-profile>
<name>Diameter Connection Service Profile</name>
<organization>
<qualified-name>/BWS</qualified-name>
</organization>
<segment>
<name>COMMON</name>
<enabled>true</enabled>
</segment>
<segment>
<name>RFC3588</name>
<enabled>true</enabled>
</segment>
<attribute name="Session-Timeout">
<value segment="COMMON">60</value>
</attribute>
<attribute name="QoS-Descriptor">
<value segment="COMMON">
<attribute name="QoS-ID">
<value segment="COMMON">120</value>
</attribute>
<attribute name="Service-Class-Name">
<value segment="COMMON">bronze</value>
</attribute>
</value>
</attribute>
<attribute name="User-Name">
<value segment="RFC3588">user@domain</value>
</attribute>
</diameter-connection-profile>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProfileAPI" operation="createProfile">
<result>
<diameter-connection-profile>
<id>2404</id>
</diameter-connection-profile>
</result>
</target>
</response>
deleteProfile
This section provides examples for the deleteProfile operation.
Delete RADIUS QoS This example shows how to delete a RADIUS QoS selection policy profile.
selection policy
service profile Request
<request version="2.0" principal="User1" credentials="password">
<target name="ProfileAPI" operation="deleteProfile">
<parameter>
<radius-qos-selection-profile>
<qualified-name>
/Radius QoS Selection Policy Profile
</qualified-name>
</radius-qos-selection-profile>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProfileAPI" operation="deleteProfile">
<result/>
</target>
</response>
Delete RADIUS This example shows how to delete a RADIUS connection service profile (/Radius
connection service QoS Profile).
profile
Request
<request version="2.0" principal="User1" credentials="password">
<target name="ProfileAPI" operation="deleteProfile">
<parameter>
<profile>
<qualified-name>
/Radius QoS Profile
</qualified-name>
</profile>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProfileAPI" operation="deleteProfile">
<result/>
</target>
</response>
Delete a Diameter This example shows how to delete a Diameter connection service profile.
connection service Note Use API version 2.0 or greater when provisioning a Diameter connection
profile service profile. Versions prior to version 2.0 may not be compatible with
Diameter group attributes.
Request
<request version="2.0" principal="user" credentials="password">
<target name="ProfileAPI" operation="deleteProfile">
<parameter>
<diameter-connection-profile>
<qualified-name>
/Diameter Connection Service Profile
</qualified-name>
</ diameter-connection-profile>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProfileAPI" operation="deleteProfile">
<result />
</target>
</response>
getProfile
Use the getProfile operation to retrieve profile information and default (DEF) context
service attributes. These elements are required:
• the profile ID or qualified name
Get RADIUS QoS This example shows how to get a RADIUS QoS selection policy service profile.
selection policy
service profile Request
<request version="2.0" principal="User1" credentials="password">
<target name="ProfileAPI" operation="getProfile">
<parameter>
<radius-qos-selection-profile>
<qualified-name>/Radius QoS Selection Policy
Profile</qualified-name>
</radius-qos-selection-profile>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProfileAPI" operation="getProfile">
<result>
<radius-qos-selection-profile>
<id>1198</id>
<name>Radius QoS Selection Policy Profile</name>
<organization>
<id>1</id>
</organization>
<service>
<id>18</id>
<name>RADIUS QoS Selection Policy</name>
<status><value>active</value></status>
<version>1</version>
</service>
<inheritance>yes</inheritance>
<description>Radius QoS Selection Policy Profile
describes the selected policy</description>
<qualified-name>/Radius QoS Selection Policy
Service</qualified-name>
<status><value>active</value></status>
<qos-selection-policy>access
</qos-selection-policy>
</radius-qos-selection-profile>
</result>
</target>
</response>
Get RADIUS This example shows how to get a RADIUS connection service profile
connection service (/Radius QoS Profile).
profile
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="ProfileAPI" operation="getProfile">
<parameter>
<profile>
<qualified-name>/Radius QoS Profile</qualified-name>
</profile>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProfileAPI" operation=" getProfile">
<result>
<profile>
<id>5</id>
<name>Radius QoS Profile</name>
<service>
<name>RADIUS ConnectionService</name>
<version>1</version>
</service>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</result>
</target>
</response>
Get a Diameter This example shows how to retrieve a Diameter connection service profile.
connection service Note Use API version 2.0 or greater when provisioning a Diameter connection
profile service profile. Versions prior to version 2.0 may not be compatible with
Diameter group attributes.
Request
<request credentials="password" principal="username" version="2.0">
<target name="ProfileAPI" operation="getProfile">
<parameter>
<diameter-connection-profile>
<qualified-name>
/BWS/Diameter Connection Service Profile
</qualified-name>
</diameter-connection-profile>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProfileAPI" operation="getProfile">
<result>
<diameter-connection-profile>
<id>2404</id>
<name>Diameter Connection Service Profile</name>
<organization>
<id>1436</id>
</organization>
<service>
<id>1000</id>
<name>DIAMETER ConnectionService</name>
<status>
<value>active</value>
</status>
<version>2</version>
</service>
<inheritance>yes</inheritance>
<status>
<value>active</value>
</status>
<context-mask>
<user/>
<user-group/>
<account/>
<account-group/>
<organization/>
<organization-group/>
<domain/>
<domain-group/>
<default/>
</context-mask>
<last-modified>2008-10-27 18:41:39</last-modified>
<modified-by>admin</modified-by>
<segment>
<name>RFC3588</name>
<enabled>true</enabled>
</segment>
<segment>
<name>COMMON</name>
<enabled>true</enabled>
</segment>
<attribute name="Session-Timeout">
<value context="default" segment="COMMON"
subscript="2147418112">60</value>
</attribute>
<attribute name="QoS-Descriptor">
<value context="default" segment="COMMON"
subscript="2147418112">
<attribute name="QoS-ID">
<value context="default" segment="COMMON"
subscript="2147418112">120</value>
</attribute>
<attribute name="Service-Class-Name">
<value context="default" segment="COMMON"
subscript="2147418112">bronze</value>
</attribute>
</value>
</attribute>
<attribute name="User-Name">
updateProfile
Use the updateProfile operation to modify an organization.
These elements are required:
• the qualified name or ID of the service profile
These elements are optional:
• a new profile description
• a new profile inheritance flag setting
• a new profile status (active or deleted)
• default context (DEF) profile attributes to be modified, added to, or deleted from
the service profile
Update RADIUS This example shows how to update a RADIUS connection service profile.
connection service
profile Request
<request version="2.0" principal="user" credentials="password">
<target name="ProfileAPI" operation="updateProfile">
<parameter>
<profile>
<id>5</id>
<description>Radius QoS Profile</description>
<status>active</status>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
<attribute name="#ActiveStateFlag">
<value>ON</value>
</attribute>
</profile>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProfileAPI" operation=" updateProfile">
<result/>
</target>
</response>
Modify values of a To modify an attribute value, specify the attribute name and segment, and a delete
Diameter attribute flag to delete the old value. Then, specify the new attribute, segment, and values.
Note Use API version 2.0 or greater when provisioning a Diameter connection
service profile. Versions prior to version 2.0 may not be compatible with
Diameter group attributes.
Request
<request version="2.0" principal="user" credentials="password">
<target name="ProfileAPI" operation="updateProfile">
<parameter>
<diameter-connection-profile>
<qualified-name>
/BWS/Diameter Connection Service Profile
</qualified-name>
<segment>
<name>COMMON</name>
<enabled>true</enabled>
</segment>
<segment>
<name>RFC3588</name>
<enabled>true</enabled>
</segment>
<!-- Update Session-Timeout to 120 seconds -->
<attribute delete="true" name="Session-Timeout"/>
<attribute name="Session-Timeout">
<value segment="COMMON">120</value>
</attribute>
<!-- update Add a group attribute -->
<attribute delete="true" name="QoS-Descriptor"/>
<attribute name="QoS-Descriptor">
<value segment="COMMON">
<attribute name="QoS-ID">
<value segment="COMMON">123</value>
</attribute>
<attribute name="Service-Class-Name">
<value segment="COMMON">bronze</value>
</attribute>
</value>
</attribute>
<attribute name="User-Name">
<value segment="RFC3588">user@domain</value>
</attribute>
</diameter-connection-profile>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProfileAPI" operation="updateProfile">
<result/>
</target>
</response>
findProfiles
Use the findProfiles operation to find service profiles.
One of these elemenst is required:
• the service profile name
• the qualified name or ID of the organization that owns the service profile(s)
• the name or ID of the service class associated with the service profile(s)
These elements are optional:
• a flag to search sub-organizations
Find all profiles in the To find all profiles in the Root organization, specify "/" as the organization qualified
Root organization name.
Request
<request version="2.0" principal="user" credentials="password">
<target name="ProfileAPI" operation="findProfiles">
<parameter>
<profile-search>
<organization>
<qualified-name>/</qualified-name>
</organization>
<include-sub-organizations>true</include-sub-organizations>
</profile-search>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProfileAPI" operation="findProfiles">
<result>
<profile-search-result>
<next-index>-1</next-index>
<results>
<id>1</id>
<name>Root Privileges</name>
<organization>
<id>1</id>
</organization>
<service>
<id>1</id>
<name>Privileges</name>
<status>
<value>active</value>
</status>
<version>1</version>
</service>
<inheritance>no</inheritance>
<description>Service profile for root privileges</description>
<qualified-name>/Privileges</qualified-name>
<status>
<value>active</value>
</status>
<last-modified>2009-09-22 19:50:14</last-modified>
<modified-by>creroot.sql</modified-by>
<context-mask>
<user/>
<user-group/>
<default/>
</context-mask>
</results>
<results>
<id>2</id>
<name>User Information</name>
<organization>
<id>1</id>
</organization>
<service>
<id>2</id>
<name>UserInformation</name>
<status>
<value>active</value>
</status>
<version>1</version>
</service>
<inheritance>yes</inheritance>
<qualified-name>/User Information</qualified-name>
<status>
<value>active</value>
</status>
<last-modified>2009-09-22 19:50:14</last-modified>
<modified-by>root</modified-by>
<context-mask>
<user/>
<user-group/>
<organization/>
<organization-group/>
<default/>
</context-mask>
</results>
<results>
<id>3</id>
<name>Organization Information</name>
<organization>
<id>1</id>
</organization>
<service>
<id>3</id>
<name>OrganizationInformation</name>
<status>
<value>active</value>
</status>
<version>1</version>
</service>
<inheritance>yes</inheritance>
<qualified-name>/Organization Information</qualified-name>
<status>
<value>active</value>
</status>
<last-modified>2009-09-22 19:50:14</last-modified>
<modified-by>root</modified-by>
<context-mask>
<organization/>
<organization-group/>
</context-mask>
</results>
<results>
<id>4</id>
<name>Domain Information</name>
<organization>
<id>1</id>
</organization>
<service>
<id>4</id>
<name>DomainInformation</name>
<status>
<value>active</value>
</status>
<version>1</version>
</service>
<inheritance>yes</inheritance>
<status>
<value>active</value>
</status>
<last-modified>2009-09-22 19:50:14</last-modified>
<modified-by>root</modified-by>
<context-mask>
<domain/>
<domain-group/>
</context-mask>
</results>
<results>
<id>5</id>
<name>Privileges</name>
<organization>
<id>1</id>
</organization>
<service>
<id>1</id>
<name>Privileges</name>
<status>
<value>active</value>
</status>
<version>1</version>
</service>
<inheritance>yes</inheritance>
<qualified-name>/Privileges</qualified-name>
<status>
<value>active</value>
</status>
<last-modified>2009-09-22 19:50:14</last-modified>
<modified-by>root</modified-by>
<context-mask>
<user/>
<user-group/>
<default/>
</context-mask>
</results>
<results>
<id>6</id>
<name>IP Reachability Profile</name>
<organization>
<id>1</id>
</organization>
<service>
<id>5</id>
<name>IPReachabilityService</name>
<status>
<value>active</value>
</status>
<version>1</version>
</service>
<inheritance>yes</inheritance>
<qualified-name>/IP Reachability Profile</qualified-name>
<status>
<value>active</value>
</status>
<last-modified>2009-09-22 19:50:14</last-modified>
<modified-by>root</modified-by>
<context-mask>
<user/>
<user-group/>
<account/>
<account-group/>
<organization/>
<organization-group/>
<domain/>
<domain-group/>
<default/>
</context-mask>
</results>
<results>
<id>7</id>
<name>Account Information</name>
<organization>
<id>1</id>
</organization>
<service>
<id>6</id>
<name>AccountInformation</name>
<status>
<value>active</value>
</status>
<version>1</version>
</service>
<inheritance>yes</inheritance>
<qualified-name>/Account Information</qualified-name>
<status>
<value>active</value>
</status>
<last-modified>2009-09-22 19:50:14</last-modified>
<modified-by>root</modified-by>
<context-mask>
<user/>
<user-group/>
<account/>
<account-group/>
<default/>
</context-mask>
</results>
<results>
<id>8</id>
<name>DEFAULTDHCP</name>
<organization>
<id>1</id>
</organization>
<service>
<id>8</id>
<name>DHCP</name>
<status>
<value>active</value>
</status>
<version>2</version>
</service>
<inheritance>yes</inheritance>
<status>
<value>active</value>
</status>
<last-modified>2009-09-22 19:50:16</last-modified>
<modified-by>cresvc.sql</modified-by>
<context-mask>
<user/>
<user-group/>
<organization/>
<organization-group/>
<domain/>
<domain-group/>
<default/>
</context-mask>
</results>
</profile-search-result>
</result>
</target>
</response>
ProxyFilter APIs
This section describes the following ProxyFilter operations:
• createProxyFilter
• getProxyFilterBy Name
• deleteProxyFilterBy Name
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="ProxyFilterAPI" operation="createProxyFilter">
<parameter>
<proxy-filter>
<name>Proxy Filter 1</name>
<action>Allow</action>
<proxy-filter-avps>
<proxy-filter-avp>
<attribute-name>Frame-Id</attribute-name>
<action>Deny</action>
<exception-values>
<exception-val>
<value>123</value>
</exception-val>
</exception-values>
<exception-ranges>
<exception-range>
<value>1-10</value>
</exception-range>
</exception-ranges>
</proxy-filter-avp>
<proxy-filter-avp>
<attribute-name>User-Name</attribute-name>
<action>Allow</action>
<vendor-name>STARENT</vendor-name>
<exception-reg-exes>
<exception-reg-exp>
<value>^123</value>
</exception-reg-exp>
</exception-reg-exes>
</proxy-filter-avp>
</proxy-filter-avps>
</proxy-filter>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProxyFilterAPI" operation="updateProxyFilter">
<result/>
</target>
</response>
getProxyFilterBy Use the getProxyFilterByName operation to retrieve proxy filters. Only use this API
Name operation after installing the Proxy Database Configuration optionality package.
These elements are required:
• parent element for the proxy filter name <proxy-filter>
• name of the proxy filter <name>
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="ProxyFilterAPI" operation="getProxyFilterByName">
<parameter>
<proxy-filter>
<name>Proxy Filter 1</name>
</proxy-filter>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProxyFilterAPI" operation="getProxyFilterByName">
<result>
<proxy-filter>
<id>1067</id>
<configuration-id>1</configuration-id>
<name>Proxy Filter 1</name>
<action>Allow</action>
<proxy-filter-avps>
<proxy-filter-avp>
<id>1068</id>
<configuration-id>1</configuration-id>
<name>1067|RFC2138|Frame-Id</name>
<attribute-name>Frame-Id</attribute-name>
<action>Allow</action>
<vendor-name>RFC2138</vendor-name>
<exception-values>
<exception-val>
<value>456</value>
</exception-val>
</exception-values>
<exception-ranges>
<exception-range>
<value>1-10</value>
</exception-range>
</exception-ranges>
<last-modified>2009-03-23 21:01:34</last-modified>
<modified-by>admin</modified-by>
</proxy-filter-avp>
<proxy-filter-avp>
<id>1069</id>
<configuration-id>1</configuration-id>
<name>1067|STARENT|User-Id</name>
<attribute-name>User-Id</attribute-name>
<action>Allow</action>
<vendor-name>STARENT</vendor-name>
<exception-reg-exes>
<exception-reg-exp>
<value>^123</value>
</exception-reg-exp>
</exception-reg-exes>
<last-modified>2009-03-23 23:03:41</last-modified>
<modified-by>admin</modified-by>
</proxy-filter-avp>
</proxy-filter-avps>
<last-modified>2009-03-23 23:03:39</last-modified>
<modified-by>admin</modified-by>
</proxy-filter>
</result>
</target>
</response>
deleteProxyFilterBy Use the deleteProxyFilterByName operation to delete proxy filters. Only use this
Name API operatioafter installing the Proxy Database Configuration optionality package.
These elements are required:
• <proxy-filter>Parent element for the proxy filter name
• <name>Name of the proxy filter</name>
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
Response
<response version="2.0">
<target name="ProxyFilterAPI" operation="deleteProxyFilterByName">
<result/>
</target>
</response>
<proxy-override-attribute> Proxy override attribute for the proxy override attribute group.
Required.
<mandatory>Y</mandatory> Whether or not the RADIUS Server should insert the override
attribute described in <proxy-override-attribute> into the
message.
• Y ( default)
• N
Optional.
<type>type of attribute, such as Integer</type> Define the attribute type for the proxy override attribute
value.
• Integer
• String
• IPv4
• IPv6
• Binary
Optional.
<pattern>pattern for proxy override reg ex value</pattern> Pattern for the proxy override reg ex value.
Required.
<value>value for the proxy override reg ex </value> Value for the proxy override reg ex value.
Required.
<string format> String format for the proxy override match condition.
• Integer
• String
• IPv4
• IPv6
• BinaryHex.
Required: if proxy override match condition is provided).
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="ProxyOverrideAttributeGroupAPI"
operation="createProxyOverrideAttributeGroup">
<parameter>
<proxy-override-attribute-group>
<name>POAG1</name>
<proxy-override-attributes>
<proxy-override-attribute>
<attribute-name>Idle-Timeout</attribute-name>
<proxy-override-attribute-components>
<proxy-override-attribute-value>
<attribute-name>Framed-IP</attribute-name>
</proxy-override-attribute-value>
<proxy-override-data-value>
<type>Integer</type>
<value>1</value>
</proxy-override-data-value>
<proxy-override-reg-ex-value>
<attribute-name>User-Name</attribute-name>
<type>String</type>
<pattern>^abc</pattern>
<value>testing</value>
</proxy-override-reg-ex-value>
<proxy-override-condition-group>
<proxy-override-match-condition>
<attribute-name>3GPP2-IP</attribute-name>
<type>IPv4</type>
<pattern>(\d)+.(\d)+.(\d)+.(\d)+</pattern>
<proxy-override-attribute-components>
<proxy-override-data-value>
<type>Integer</type>
<value>100</value>
</proxy-override-data-value>
<proxy-override-attribute-value>
<attribute-name>Framed-IP
</attribute-name>
<vendor-name>STARENT</vendor-name>
</proxy-override-attribute-value>
</proxy-override-attribute-components>
</proxy-override-match-condition>
<proxy-override-match-condition>
<attribute-name>Reply-Message
</attribute-name>
<type>String</type>
<pattern>^test$</pattern>
<proxy-override-attribute-components>
<proxy-override-reg-ex-value>
<attribute-name>Calling-Station-Id
</attribute-name>
<type>Integer</type>
<pattern>(\d)+</pattern>
<value>testagain</value>
</proxy-override-reg-ex-value>
</proxy-override-attribute-components>
</proxy-override-match-condition>
</proxy-override-condition-group>
</proxy-override-attribute-components>
</proxy-override-attribute>
</proxy-override-attributes>
</proxy-override-attribute-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProxyOverrideAttributeGroupAPI"
operation="createProxyOverrideAttributeGroup">
<result>
<proxy-override-attribute-group>
<id>1074</id>
</proxy-override-attribute-group>
</result>
</target>
</response>
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="ProxyOverrideAttributeGroupAPI"
operation="updateProxyOverrideAttributeGroup">
<parameter>
<proxy-override-attribute-group>
<qualified-name>POAG50</qualified-name>
<proxy-override-attributes>
<proxy-override-attribute>
<qualified-name>RFC2138|Idle-Timeout</qualified-name>
<mandatory>true</mandatory>
<proxy-override-attribute-components>
<proxy-override-data-value delete="true">
<id>1182</id>
</proxy-override-data-value>
<proxy-override-attribute-value>
<attribute-name>User-Name</attribute-name>
</proxy-override-attribute-value>
</proxy-override-attribute-components>
</proxy-override-attribute>
</proxy-override-attributes>
</proxy-override-attribute-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProxyOverrideAttributeGroupAPI"
operation="updateProxyOverrideAttributeGroup">
<result/>
</target>
</response>
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="ProxyOverrideAttributeGroupAPI"
operation="getProxyOverrideAttributeGroupByName">
<parameter>
<proxy-override-attribute-group>
<name>POAG1</name>
</proxy-override-attribute-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProxyOverrideAttributeGroupAPI"
operation="getProxyOverrideAttributeGroupByName">
<result>
<proxy-override-attribute-group>
<id>1074</id>
<configuration-id>1</configuration-id>
<name>POAG1</name>
<proxy-override-attributes>
<proxy-override-attribute>
<id>1075</id>
<configuration-id>1</configuration-id>
<name>1075|RFC2138|Idle-Timeout</name>
<attribute-name>Idle-Timeout</attribute-name>
<vendor-name>RFC2138</vendor-name>
<precedence>Packet</precedence>
<mandatory>true</mandatory>
<proxy-override-attribute-components>
<proxy-override-attribute-value order="3">
<id>1195</id>
<configuration-id>1</configuration-id>
<name>1195|attribute_value|RFC2138
|User-Name </name>
<attribute-name>User-Name</attribute-name>
</proxy-override-attribute-value>
<proxy-override-data-value order="0">
<id>1189</id>
<configuration-id>1</configuration-id>
<name>1189|data_value|Integer</name>
<type>Integer</type>
<value>1</value>
</proxy-override-data-value>
<proxy-override-reg-ex-value order="1">
<id>1190</id>
<configuration-id>1</configuration-id>
<name>1190|regex_value|RFC2138|User-Name
</name>
<attribute-name>User-Name</attribute-name>
<vendor-name>RFC2138</vendor-name>
<type>String</type>
<pattern>^abc</pattern>
<value>testing</value>
</proxy-override-reg-ex-value>
<proxy-override-condition-group order="2">
<id>1191</id>
<configuration-id>1</configuration-id>
<name>1191|condition_group</name>
<proxy-override-match-condition order="0">
<id>1192</id>
<configuration-id>1</configuration-id>
<name>1192|match_condition|RFC2138|
3GPP2-IP</name>
<attribute-name>3GPP2-IP</attribute-name>
<vendor-name>RFC2138</vendor-name>
<type>IPv4</type>
<pattern>(\d)+.(\d)+.(\d)+.(\d)+</pattern>
<proxy-override-attribute-components>
<proxy-override-attribute-value order="0">
<id>1193</id>
<configuration-id>1</configuration-id>
<name>1193|attribute_value|STARENT|
Framed-IP</name>
<attribute-name>Framed-IP
</attribute-name>
<vendor-name>STARENT
</vendor-name>
</proxy-override-attribute-value>
<proxy-override-data-value order="1">
<id>1194</id>
<configuration-id>1</configuration-id>
<name>1194|data_value|Integer
</name>
<type>Integer</type>
<value>100</value>
</proxy-override-data-value>
</proxy-override-attribute-components>
</proxy-override-match-condition>
</proxy-override-condition-group>
</proxy-override-attribute-components>
</proxy-override-attribute>
</proxy-override-attributes>
<last-modified>2009-03-24 15:27:38</last-modified>
<modified-by>dbmportal</modified-by>
</proxy-override-attribute-group>
</result>
</target>
</response>
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="ProxyOverrideAttributeGroupAPI"
operation="deleteProxyOverrideAttributeGroupByName">
<parameter>
<proxy-override-attribute-group>
<name>POAG1</name>
</proxy-override-attribute-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProxyOverrideAttributeGroupAPI"
operation="deleteProxyOverrideAttributeGroupByName">
<result/>
</target>
</response>
Request
<request version="2.0" principal="dbmportal" credentials="dbmportal">
<target name="ProxyRequiredAttributeGroupAPI"
operation="createProxyRequiredAttributeGroup">
<parameter>
<proxy-required-attribute-group>
<name>PRAG1</name>
<description>prag1</description>
<proxy-required-attributes>
<proxy-required-attribute>
<attribute-name>Class</attribute-name>
<vendor-name>RFC2138</vendor-name>
</proxy-required-attribute>
<proxy-required-attribute>
<attribute-name>AAA</attribute-name>
<vendor-name>STARENT</vendor-name>
</proxy-required-attribute>
</proxy-required-attributes>
</proxy-required-attribute-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProxyRequiredAttributeGroupAPI"
operation="createProxyRequiredAttributeGroup">
<result>
<proxy-required-attribute-group>
<id>781</id>
</proxy-required-attribute-group>
</result>
</target>
</response>
Request
<request version="2.0" principal="dbmportal" credentials="dbmportal">
<target name="ProxyRequiredAttributeGroupAPI"
operation="updateProxyRequiredAttributeGroup">
<parameter>
<proxy-required-attribute-group>
<qualified-name>PRAG1</qualified-name>
<name>PRAG1new</name>
<description>prag1new</description>
<proxy-required-attributes>
<proxy-required-attribute delete="true">
<attribute-name>Class</attribute-name>
</proxy-required-attribute>
<proxy-required-attribute delete="true">
<attribute-name>AAA</attribute-name>
<vendor-name>STARENT</vendor-name>
</proxy-required-attribute>
<proxy-required-attribute>
<attribute-name>Framed-Id</attribute-name>
</proxy-required-attribute>
<proxy-required-attribute>
<attribute-name>Framed-IP-Address</attribute-name>
<vendor-name>ACC</vendor-name>
</proxy-required-attribute>
</proxy-required-attributes>
</proxy-required-attribute-group>
</parameter>
</target>
</request>
Request
<request version="2.0" principal="dbmportal" credentials="dbmportal">
<target name="ProxyRequiredAttributeGroupAPI"
operation="getProxyRequiredAttributeGroupByName">
<parameter>
<proxy-required-attribute-group>
<name>PRAG1new</name>
</proxy-required-attribute-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProxyRequiredAttributeGroupAPI"
operation="getProxyRequiredAttributeGroupByName">
<result>
<proxy-required-attribute-group>
<id>781</id>
<configuration-id>1</configuration-id>
<name>PRAG1new</name>
<description>prag1new</description>
<proxy-required-attributes>
<proxy-required-attribute>
<attribute-name>Framed-Id</attribute-name>
<vendor-name>RFC2138</vendor-name>
</proxy-required-attribute>
<proxy-required-attribute>
<attribute-name>Framed-IP-Address</attribute-name>
<vendor-name> ACC </vendor-name>
</proxy-required-attribute>
</proxy-required-attributes>
<last-modified>2009-03-17 15:03:52</last-modified>
<modified-by>dbmportal</modified-by>
</proxy-required-attribute-group>
</result>
</target>
</response>
Request
<request version="2.0" principal="dbmportal" credentials="dbmportal">
<target name="ProxyRequiredAttributeGroupAPI"
operation="deleteProxyRequiredAttributeGroupByName">
<parameter>
<proxy-required-attribute-group>
<name>PRAG1new</name>
</proxy-required-attribute-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ProxyRequiredAttributeGroupAPI"
operation="deleteProxyRequiredAttributeGroupByName">
<result/>
</target>
</response>
<secret>mysecret</secret> Shared secret used when communicating with the target server.
Required.
<authentication-port>1234</authentication-port> The UDP port that the RADIUS proxy target listens on for RADIUS
authentication messages.
Default = 1812
Optional.
<accounting-port>2345</accounting-port> The UDP port that the RADIUS proxy target listens on for RADIUS
accounting messages.
Default = 1813
Optional.
<dae-port> The UDP port that the RADIUS proxy target listens on for DAE
messages.
Optional.
Table 24: Elements used in the create, update, get, and delete RADIUSServer operations (continued)
<strip-domain> Y — the RADIUS Server removes the domain from the login name when
forwarding an Access-Request.
This removes any domain, including a domain appended or replaced by
a RADIUS policy rule.
The domain is still used for local authorization and is stored in local
accounting records.
N — do not strip the domain (default).
Optional.
<max-retries> Maximum number of times the RADIUS Server attempts to contact the
proxy target before the request is dropped.
Default = 0
Optional.
<consecutive-failure-lockout-duration> The length of time, in seconds, that a proxy target is locked out due to
consecutive retry cycle failures.
Default = 900.
Optional.
<intermittent-failure-lockout-duration> The time, in seconds, during which the proxy is not available due to
consecutive retry failures.
Default = 900.
Optional.
Table 24: Elements used in the create, update, get, and delete RADIUSServer operations (continued)
<intermittent-failure-successive-failed-intervals> The number of successive failed intervals before a proxy target lockout
occurs.
Default = 1.
Optional.
<attribute-encryption> Y — all RADIUS attributes in the messages sent to the proxy target are
encrypted.
N — encryption is disabled.
Optional.
Table 24: Elements used in the create, update, get, and delete RADIUSServer operations (continued)
createRADIUSServer Use the createRADIUSServer operation to create a RADIUS Server (proxy target).
Only use this API operation after installing the Proxy Database Configuration
optionality package. Before using proxy APIs, set the ReadProxyConfigFromDB
attribute in the proxies.xml file to ‘Y’.
For required and optional attributes that can be used in this operation, see Table 24
on page 195.
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="RADIUSServerAPI" operation="createRADIUSServer">
<parameter>
<radius-server>
<name>RADIUS Server 1</name>
<host>RADIUSServer1</host>
<secret>mysecret</secret>
<authentication-port>1234</authentication-port>
<accounting-port>2345</accounting-port>
<request-timeout>10</request-timeout>
</radius-server>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="RADIUSServerAPI" operation="createRADIUSServer">
<result>
<radius-server>
<id>1070</id>
</radius-server>
</result>
</target>
</response>
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="RADIUSServerAPI" operation="updateRADIUSServer">
<parameter>
<radius-server>
<qualified-name>RADIUS Server 1</qualified-name>
<proxy-in-action>
<proxy-filter>
<name>Proxy Filter 1</name>
</proxy-filter>
</proxy-in-action>
</radius-server>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="RADIUSServerAPI" operation="updateRADIUSServer">
<result/>
</target>
</response>
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="RADIUSServerAPI" operation="getRADIUSServerByName">
<parameter>
<radius-server include-actions="true">
<name>RADIUS Server 1</name>
</radius-server>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="RADIUSServerAPI" operation="getRADIUSServerByName">
<result>
<radius-server>
<id>1070</id>
<configuration-id>1</configuration-id>
<name>RADIUS Server 1</name>
<host>RADIUSServer1</host>
<secret>mysecret</secret>
<authentication-port>1234</authentication-port>
<accounting-port>2345</accounting-port>
<request-timeout>10</request-timeout>
<proxy-in-action>
<id>1071</id>
<configuration-id>1</configuration-id>
<proxy-filter>
<id>847</id>
<configuration-id>1</configuration-id>
<name>Proxy Filter 1</name>
<description>testing</description>
<last-modified>2009-03-23 22:51:44</last-modified>
<modified-by>admin</modified-by>
</proxy-filter>
</proxy-in-action>
<last-modified>2009-03-24 10:16:40</last-modified>
<modified-by>admin</modified-by>
</radius-server>
</result>
</target>
</response>
Response
<response version="2.0">
<target name="RADIUSServerAPI"
operation="deleteRADIUSServerByName">
<result/>
</target>
</response>
<max-concurrent-lockout> The number of proxy targets that can be locked out per proxy group.
If this parameter is set to less than the number of proxy targets in the
group, when the network reaches the assigned maximum, any proxy
targets that are candidates for lockout remain unlocked.
Optional.
<dynamic-unlock> Y (default) — the RADIUS Server dynamically unlocks a proxy target if all
proxy targets within a proxy target group are locked.
When all targets are locked, a single thread sends a message to the next
RADIUS target following the standard loadshare and failover rules for the
group. If a target is responsive, it is unlocked and used by all threads.
N — the proxy target is unlocked when the Consecutive Failure Lockout
Duration and/or Intermittent Failure Lockout Duration interval expires.
Proxy targets can also be manually unlocked.
Optional.
Table 25: Elements used in the create, update, get, and delete RADIUSServerGroup operations (continued)
Table 25: Elements used in the create, update, get, and delete RADIUSServerGroup operations (continued)
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="RADIUSServerGroupAPI"
operation="createRADIUSServerGroup">
<parameter>
<radius-server-group>
<name>RADIUS Server Group 1</name>
<radius-servers>
<radius-server>
<name>RADIUS Server 1</name>
</radius-server>
</radius-servers>
</radius-server-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="RADIUSServerGroupAPI"
operation="createRADIUSServerGroup">
<result>
<radius-server-group>
<id>1072</id>
</radius-server-group>
</result>
</target>
</response>
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="RADIUSServerGroupAPI"
operation="updateRADIUSServerGroup">
<parameter>
<radius-server-group>
<qualified-name>RADIUS Server Group 1</qualified-name>
<radius-servers>
<radius-server>
<name>RADIUS Server 2</name>
</radius-server>
</radius-servers>
<proxy-out-actions>
<proxy-out-action>
<type>Auth</type>
<proxy-filter>
<name>Proxy Filter 1</name>
</proxy-filter>
</proxy-out-action>
</proxy-out-actions>
</radius-server-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="RADIUSServerGroupAPI"
operation="updateRADIUSServerGroup">
<result/>
</target>
</response>
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="RADIUSServerGroupAPI"
operation="getRADIUSServerGroupByName">
<parameter>
<radius-server-group include-radius-servers="true"
include-actions="true">
<name>RADIUS Server Group 1</name>
</radius-server-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="RADIUSServerGroupAPI"
operation="getRADIUSServerGroupByName">
<result>
<radius-server-group>
<id>1072</id>
<configuration-id>1</configuration-id>
<name>RADIUS Server Group 50</name>
<radius-servers>
<radius-server order="0">
<id>104</id>
<configuration-id>1</configuration-id>
<name>RADIUS Server 1</name>
<description>RADIUS Server 1</description>
<last-modified>2009-02-06 13:23:28</last-modified>
<modified-by>admin</modified-by>
</radius-server>
<radius-server order="1">
<id>105</id>
<configuration-id>1</configuration-id>
Request
<request version="2.0" principal="<principal>" credentials="<credentials>">
<target name="RADIUSServerGroupAPI"
operation="deleteRADIUSServerGroupByName">
<parameter>
<radius-server-group>
Response
<response version="2.0">
<target name="RADIUSServerGroupAPI"
operation="deleteRADIUSServerGroupByName">
<result/>
</target>
</response>
Table 26: Elements used to assign a RADIUS proxy service to a service entity
Table 26: Elements used to assign a RADIUS proxy service to a service entity (continued)
Table 26: Elements used to assign a RADIUS proxy service to a service entity (continued)
Add RADIUS proxy This example inserts RADIUS proxy service XML elements into the operation
service using updateUser. The RADIUS proxy service XML is in bold.
updateUser Only use this API operation after installing the Proxy Database Configuration
operation optionality package. Before using proxy APIs, set the ReadProxyConfigFromDB
attribute in the proxies.xml file to ‘Y’.
Request
<request version="2.0" principal="dbmportal" credentials="dbmportal">
<target name="UserAPI" operation="updateUser">
<parameter>
<user>
<login-name>user1</login-name>
<name>user1</name>
<password><value>user1</value></password>
<organization><qualified-name>/</qualified-name></organization>
<domain><name>null</name></domain>
<profile-set>
<qualified-name>/UPS1</qualified-name>
<radius-proxy-profile>
<qualified-name>/RPSP1</qualified-name>
<default-proxy-target-group>
<proxy-target-group>RadiusServerGroup1
</proxy-target-group>
<proxy-target-level>full local</proxy-target-level>
</default-proxy-target-group>
<access-proxy-target-group>
<proxy-target-group>RadiusServerGroup3
</proxy-target-group>
</access-proxy-target-group>
<accounting-proxy-target-group delete="true">
</accounting-proxy-target-group>
</radius-proxy-profile>
</profile-set>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="updateUser">
<result/>
</target>
</response>
ServiceAPI operations
This section describes the getService ServiceAPI operation.
getService
Use the getService operation to retrieve service information and, optionally, service
class context (SC) profile attributes.
These elements are required:
• the service id or service name to identify the service
These elements are optional:
• a get-attributes flag to indicate that profile attributes should be returned
Get RADIUS QoS This example shows how to get service class context profile attributes for the
selection policy RADIUS QoS selection policy service class.
service attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="ServiceAPI" operation="getService">
<parameter>
<service get-attributes="true">
<name>RADIUS QoS Selection Policy</name>
</service>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="ServiceAPI" operation="getService">
<result>
<service>
<id>18</id>
createUser
Request
<request version="1.0" principal="root" credentials="nirav">
<target name="ServiceAPI" operation="createUser">
<parameter>
<user>
<name>abcdef</name>
<login-name>abcdef</login-name>
<organization>
<qualified-name>Root Organization</qualified-name>
</organization>
<password>
<value>cricket</value>
</password>
<mobile>
<id-number>9899101267</id-number>
</mobile>
<status>
<value>active</value>
</status>
<profile-set>
<qualified-name>/niravtest</qualified-name>
<profile>
<qualified-name>/niravtest</qualified-name>
<service>
<name>RADIUS ConnectionService</name>
</service>
<user-authorized-profile>
<application>
<name>SMS</name>
<authentication-required>
false
</authentication-required>
<subscribed>true</subscribed>
<attribute name="CoS">
<value>21</value>
</attribute>
<attribute name="Unlimited">
<value>No</value>
</attribute>
</application>
</user-authorized-profile>
</profile>
</profile-set>
</user>
</parameter>
</target>
</request>
deleteUser
Request
<request version="1.0" principal="root" credentials="nirav">
<target name="ServiceAPI" operation="deleteUser">
<parameter>
<user>
<name>abcdef</name>
<login-name>abcdef</login-name>
<organization>
<qualified-name>Root Organization</qualified-name>
</organization>
<mobile>
<id-number>9899101277</id-number>
</mobile>
<status>
<value>active</value>
</status>
<profile-set>
<qualified-name>/niravtest</qualified-name>
<profile>
<qualified-name>/niravtest</qualified-name>
<service>
<name>RADIUS ConnectionService</name>
</service>
<user-authorized-profile>
<application>
<name>SMS</name>
<authentication-required>
false
</authentication-required>
<subscribed>true</subscribed>
<attribute name="CoS">
<value>21</value>
</attribute>
<attribute name="Unlimited">
<value>No</value>
</attribute>
</application>
</user-authorized-profile>
</profile>
</profile-set>
</user>
</parameter>
</target>
</request>
updateUser
Request
<request version="1.0" principal="root" credentials="nirav">
<target name="ServiceAPI" operation="updateUser">
<parameter>
<user>
<name>abcdef</name>
<login-name>abcdef</login-name>
<organization>
<qualified-name>Root Organization</qualified-name>
</organization>
<mobile>
<id-number>9899101277</id-number>
</mobile>
<status>
<value>active</value>
</status>
<profile-set>
<qualified-name>/niravtest</qualified-name>
<profile>
<qualified-name>/niravtest</qualified-name>
<service>
<name>RADIUS ConnectionService</name>
</service>
<user-authorized-profile>
<application>
<name>SMS</name>
<authentication-required>
false
</authentication-required>
<subscribed>true</subscribed>
<attribute name="CoS">
<value>21</value>
</attribute>
<attribute name="Unlimited">
<value>No</value>
</attribute>
</application>
</user-authorized-profile>
</profile>
</profile-set>
</user>
</parameter>
</target>
</request>
SessionAPI operations
The SessionAPI operations enable the Provisioning Server to retrieve a device’s
session information from RMS and a device’s record from the Profile Database.
This section describes the following SessionAPI operations:
• getSessionStatusByLoginName
• getSessionStatusByIP
The SessionAPI operations can return the following elements:
• mac-address: the device's MAC address as specified in the CreateDevice
operation. The MAC address is always returned in upper case.
• domain: the realm value the device used for network entry.
• address: if a device is online, this element returns the device’s current IP
address.
• nas-ip-address: if a device is online, this element returns the IP address of the
access node the device is connected to.
• nas-id: the NAS-ID attribute from the access node.
• calling-station-id: the Calling-Station-ID attribute from the access node.
• ems-service-ip: if a device is online, this element returns the IP address of the
EMS server the access node is assigned to.
If the EMS Server IP is not provisioned against a NAS-Group or WiMAX Node
Group the ems-service-ip element is returned empty.
• bsid: the BSID attribute from the access node. If the BSID attribute is not found
in RMS, the Provisioning Server uses the value of the Called-Station-ID in
RMS. If Called-Station-ID is not present, the BSID is returned empty.
getSessionStatusByLoginName
The getSessionStatusByLoginName operation enables the Provisioning Server to
retrieve a device’s session information from RMS and a device’s record from the
Profile Database.
The getSessionStatusByLoginName uses the login-name and domain to query for
session information and a device record.
Get session status by This example shows a request for session information and a device record using
login name the login-name and domain.
This example also provides a successful response for a device online, a device not
online, and an error response when a device is not found.
Request
<request version="2.0" principal="APIUSER" credentials="APIPASSWORD">
<target name="SessionAPI" operation="getSessionStatusByLoginName">
<parameter>
<device>
<mac-address>001122AABBCC</mac-address>
<domain>
<name>DOMAIN</name>
</domain>
</device>
</parameter>
</target>
</request>
<nas-id>CAPC-1</nas-id>
<calling-station-id>001122AABBCC</calling-station-id>
<ems-service-ip></ems-service-ip>
<bsid>01abf1</bsid>
</device>
</result>
</target>
</response>
getSessionStatusByIP
The getSessionStatusByIP operation enables the Provisioning Server to retrieve a
device’s session information from RMS and a device’s record from the Profile
Database.
The getSessionStatusByIP uses a device’s IP address to query for session
information and a device record.
Get session status by This example shows a request for session information and a device record using
IP the device’s IP address.
This example also provides a successful response for a device online, a device not
online, and an error response when a device is not found.
Request
<request version="2.0" principal="APIUSER" credentials="APIPASSWORD">
<target name="SessionAPI" operation="getSessionStatusByIP">
<parameter>
<device>
<ip-address>IPADDRESS</ip-address>
</device>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="SessionAPI" operation="getSessionStatusByIP">
<result>
<device>
<mac-address>MAC</mac-address>
<domain>
<name>DOMAIN</name>
</domain>
<address>
<value>IPADDRESS</value>
</address>
<nas-ip-address>NASIPADDRESS</nas-ip-address>
<nas-id>NASID</nas-id>
<calling-station-id>CALLINGSTATIONID</calling-station-id>
<ems-service-ip>EMSIPADDRESS</ems-service-ip>
<bsid>BSID</bsid>
</device>
</result>
</target>
</response>
SystemAPI operations
This section describes the applyChanges SystemAPI operation.
applyChanges
Use the applyChanges operation to notify other BWS components about changes
to the system configuration by signalling the network to reload the configuration.
Note Append the applyChanges operation after a system operation in the same
API request.
Update system This example shows how to commit the session changes to the system
configuration configuration.
Request
<request version="2.0" principal="user" credentials="password">
<target name="SystemAPI" operation="applyChanges">
<parameter>
<system-configuration/>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="SystemAPI" operation="applyChanges">
<result/>
</target>
</response>
TrunkGroupAPI operations
This section describes the following TrunkGroupAPI operations:
• createTrunkGroup
• deleteTrunkGroup
• getTrunkGroup
• updateTrunkGroup
• updateTrunkGroups
Note Changes to the system configuration are committed to the Profile Database
when the API operation completes. To notify other BWS components about
any changes to the current system configuration, execute the
applyChanges operation. For details, see "applyChanges" on page 222.
createTrunkGroup
Use the createTrunkGroup operation to create a Trunk group.
These elements are required:
• the name of the Trunk group (1 to 50 characters)
• the total number of circuits, or capacity, that is available on the Trunk group
These elements are optional:
• the ID of the RMS that tracks login sessions on the Trunk group
• directory numbers for the Trunk group
• a range of directory numbers assigned to the Trunk group
The response returns the Trunk group with a Profile Database identifier.
Request
<request version="2.0" principal="user" credentials="password">
<target name="TrunkGroupAPI" operation="createTrunkGroup">
<parameter>
<trunk-group>
<name>trunkGroupName</name>
<capacity>100</capacity>
<rms-cluster-id>RMSID#</rms-cluster-id>
<directory-number-ranges>
<directory-number-range>
<range-start>DNR1start</range-start>
<range-end>DNR1end</range-end>
</directory-number-range>
<directory-number-range>
<range-start>DNR2start</range-start>
<range-end>DNR2end</range-end>
</directory-number-range>
</directory-number-ranges>
<directory-numbers>
<directory-number>DN1</directory-number>
<directory-number>DN2</directory-number>
</directory-numbers>
</trunk-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="TrunkGroupAPI" operation="createTrunkGroup">
<result>
<trunk-group>
<id>62</id>
<system-element-class>
<name>Trunk Group</name>
</system-element-class>
</trunk-group>
</result>
</target>
</response>
deleteTrunkGroup
Use the deleteTrunkGroup operation to delete a Trunk group.
These elements are required:
• the name or ID of the Trunk group
Note A Trunk group that is assigned to a service entity, such as an Organization,
cannot be deleted.
Request
<request version="2.0" principal="user" credentials="password">
<target name="TrunkGroupAPI" operation="deleteTrunkGroup">
<parameter>
<trunk-group>
<name>trunkGroupName</name>
</trunk-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="TrunkGroupAPI" operation="deleteTrunkGroup">
<result/>
</target>
</response>
getTrunkGroup
Use the getTrunkGroup operation to retrieve a fully-populated Trunk group.
These elements are required:
• the name or ID of the Trunk group
The response returns a fully-populated Trunk group.
Retrieve Trunk group This example shows how to retrieve information for a Trunk Group.
information
Request
<request version="2.0" principal="user" credentials="password">
<target name="TrunkGroupAPI" operation="getTrunkGroup">
<parameter>
<trunk-group>
<name>trunkGroupName</name>
</trunk-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="TrunkGroupAPI" operation="getTrunkGroup">
<result>
<trunk-group>
<id>62</id>
<configuration-id>1</configuration-id>
<system-element-class>
<id>6</id>
<configuration-id>1</configuration-id>
<name>Trunk Group</name>
</system-element-class>
<name>trunkGroupName</name>
<caption>trunkGroupName</caption>
<status>
<value>active</value>
</status>
<last-modified>2008-11-27 15:50:22</last-modified>
<modified-by>admin</modified-by>
<rms-cluster-id>100</rms-cluster-id>
<capacity>100</capacity>
<maximum-public-sessions>100</maximum-public-sessions>
<directory-number-ranges>
<directory-number-range>
<range-start>1</range-start>
<range-end>3</range-end>
</directory-number-range>
<directory-number-range>
<range-start>4</range-start>
<range-end>7</range-end>
</directory-number-range>
</directory-number-ranges>
</trunk-group>
</result>
</target>
</response>
updateTrunkGroup
Use the updateTrunkGroup operation to modify a Trunk group.
These elements are required:
• the name or ID of the Trunk group
These elements are optional:
• the qualified name of the Trunk group (if renaming the Trunk group)
• the total number of circuits, or capacity, that is available on the Trunk group
• the ID of the RMS that tracks login sessions on the Trunk group
• directory numbers for the Trunk group
• a range of directory numbers assigned to the Trunk group
Change name This example shows how to modify the name of a Trunk group.
Request
<request version="2.0" principal="user" credentials="password">
<target name="TrunkGroupAPI" operation="updateTrunkGroup">
<parameter>
<trunk-group>
<qualified-name>
currentTrunkGroupName
</qualified-name>
<name>newTrunkGroupName</name>
<caption>newTrunkGroupName</caption>
</trunk-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="TrunkGroupAPI" operation="updateTrunkGroup">
<result/>
</target>
</response>
Change RMS cluster This example shows how to modify the RMS cluster tracks login sessions on the
Trunk group.
Request
<request version="2.0" principal="user" credentials="password">
<target name="TrunkGroupAPI" operation="updateTrunkGroup">
<parameter>
<trunk-group>
<name>trunkGroupName</name>
<rms-cluster-id>RMSID#</rms-cluster-id>
</trunk-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="TrunkGroupAPI" operation="updateTrunkGroup">
<result/>
</target>
</response>
updateTrunkGroups
Use the updateTrunkGroups operation to modify a set of Trunk groups.
These elements are required:
• the name or ID of the Trunk group
These elements are optional:
• the total number of circuits, or capacity, that is available on the Trunk group
• the ID of the RMS that tracks login sessions on the Trunk group
• directory numbers for the Trunk group
• a range of directory numbers assigned to the Trunk group
Change DNs and DN This example shows how to change the DN ranges of multiple Trunk groups.
ranges This operation replaces all number ranges for each trunk group specified with the
new number ranges, which:
• makes sure that the number ranges for each trunk group do not accumulate
• reduces the probability of failure for the updateTrunkGroups call because there
is less chance that number ranges overlap
Request
<request version="2.0" principal="user" credentials="password">
<target name="TrunkGroupAPI" operation="updateTrunkGroups">
<parameter>
<trunk-groups>
<trunk-group>
<name>trunkGroup1Name</name>
<directory-number-ranges>
<directory-number-range>
<range-start>TG1DNR1start</range-start>
<range-end>TG1DNR1end</range-end>
</directory-number-range>
...
<directory-number-range>
<range-start>TG1DNR2start</range-start>
<range-end>TG1DNR2end</range-end>
</directory-number-range>
</directory-number-ranges>
</trunk-group>
<trunk-group>
<name>trunkGroup2Name</name>
<directory-number-ranges>
<directory-number-range>
<range-start>TG2DNR1start</range-start>
<range-end>TG2DNR1end</range-end>
</directory-number-range>
...
<directory-number-range>
<range-start>TG2DNR2start</range-start>
<range-end>TG2DNR2end</range-end>
</directory-number-range>
</directory-number-ranges>
</trunk-group>
</trunk-groups>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="TrunkGroupAPI" operation="updateTrunkGroups">
<result/>
</target>
</response>
UserAPI operations
This section describes the following UserAPI operations:
• createUser
• createUserProfileSet
• deleteUser
• findUsers
• getUser
• getUserWithActiveServices
• getUserProfileSet
• updateUser
• updateUserProfileSet
createUser
Use the createUser operation to insert a subscriber record into the Profile
Database. To change a user name, the account must be deleted with the
deleteUser operation, and then recreated with a new createUser call.
These elements are required:
• the user name
– string, 1 to 80 characters
• the login name
– string, 1 to 80 characters
• the password
– string, 1 to 80 characters
• the organization to which the new user will belong (must already be present)
– specify either the organization qualified name or ID
– ID, if used, must be a positive integer
• a user profile set (must already be present)
– specify either the profile set qualified name and type (“user”), or the ID and
type
These elements are optional:
• the domain to which the user is assigned (must already be present)
– specify either the domain name or ID
• the account to which the user is assigned (must already be present)
– specify either the account name or ID
– account name must be 1 to 64 characters
• the status of the user at time of creation
– either active (default) or pending
• user context (U) profile attributes
About password To define the password encryption <type> parameter, use one of the following
encryption options.
To encrypt a cleartext password using:
• North American UNIX, use the value “cleartext2unixna”
• BSD MD5, use the value “cleartext2bsdmd5 “
• 2-way MD5, use the value “cleartext2md5x”
Example:
<password>
<type>cleartext2md5x</type>
<value>mypassword</value>
</password>
Note If no value is given for the password <type> parameter, the password is
saved in the clear text format.
Prevent the creation This example shows how to prevent the creation of a user with the same name/
of a user with the login name as a user already present in the database.
same user/login
name Request
<request version="2.0" principal="provclient" credentials="MYSECRET">
<target name="ServiceAPI" operation="createUser">
<parameter>
<user xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.bridgewatersystems.com/schema/
bsr6/createUser.xsd">
<name>123456789012</name>
<login-name>123456789012</login-name>
<password >
<value>123456789012</value>
<type>cleartext</type>
<learn-password>false</learn-password>
<suspend-on-collision>true</suspend-on-collision>
</password>
<organization>
<qualified-name>Root Organization/</qualified-name>
</organization>
<status>
<value>active</value>
</status>
<modified-by>root@null</modified-by>
<billing>
<id>45</id>
<date>2012-07-26 10:03:56</date>
<unit>month</unit>
<period>1</period>
</billing>
<profile-set>
<name>3040_ps</name>
</profile-set>
</user>
</parameter>
</target>
</request>
Response
This response is returned if a user is present in the database with the same user/
login name. The user status is set to suspended.
<response version="2.0">
<target name="ServiceAPI" operation="createUser">
<error>
<code>USR-00020</code>
<message>
A user with the same login name and password already exists.
Existing user account has been suspended due to potential security breach.
Change the password for user ‘15’ before reactivating the account.
</message>
</error>
</target>
</response>
If <suspend-on-collision> is set to false, the following response is returned. The
user status is not changed.
<response version="2.0">
<target name="ServiceAPI" operation="createUser">
<error>
<code>USR-00021</code>
<message>
A user with the same login name and password already exists.
</message>
</error>
</target>
</response>
Specified domain and This example shows how to create a user in a specified organization (org1) and
organization with a specified domain name (domain1.com).
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="createUser">
<parameter>
<user>
<name>user1084374221</name>
<login-name>login1084374221</login-name>
<password>
<value>pwd1084374221</value>
</password>
<organization>
<qualified-name>/BWS</qualified-name>
</organization>
<domain><name>domain1.com</name></domain>
<profile-set>
<qualified-name>/Root User Profile Set
</qualified-name>
</profile-set>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="createUser">
<result>
<user><id>6413</id></user>
</result>
</target>
</response>
The user ID returned within the <id></id> tags is the internal identifier of the created
object.
Generate a random This example shows how to generate a password for the user upon creation. When
password the <generate-password> element is set to true, the Service Controller generates a
password according to the rules defined for the user or the user’s service profile.
A password can also be generated with the updateUser operation.
Request
<request version="2.0" principal="admin" credentials="rds32k2894l1k">
<target name="UserAPI" operation="createUser">
<parameter>
<user>
<name>exampleName</name>
<login-name>exampleLogin</login-name>
<password>
<generate-password>true</generate-password>
</password>
<organization>
<id>1</id>
</organization>
<profile-set>
<id>3</id>
</profile-set>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="createUser">
<result>
<user>
<id>111</id>
</user>
</result>
</target>
</response>
Provisioned RADIUS This example shows how to create a user with provisioned user context RADIUS
connection service connection service and user information profile attributes.
profile attributes In this example, the profiles “User Information” and “Radius QoS Profile” must
already be present in the profile set psu1.
User provisioning may require setting multiple user context attributes. A quick
method to determine the required parameters for a new user is to call the getUser
operation for a user in the organization, then use the return values as a template to
create a new user.
Request
<request version="2.0" principal="User1" credentials="password">
Response
<response version="2.0">
<target name="UserAPI" operation="createUser">
<result>
<user>
<id>6414</id>
</user>
</result>
</target>
</response>
The user ID returned within the <id></id> tags is the internal identifier of the created
object.
Add WiMAX user This example shows how to add a user’s hotlineReason attribute for WiMAX
attributes hotlining configuration. The hotlineReason value corresponds to a bit action map
configured in hotlineConfig.xml and must be a 16 byte hex string.
Request
<request credentials="rds32k2894l1k" principal="admin" version="2.0">
<target name="UserAPI" operation="createUser">
<parameter>
<user>
<name>user1</name>
<login-name>user1</login-name>
<domain>
<name>null</name>
</domain>
<password>
<value>user1</value>
</password>
<organization>
<qualified-name>/</qualified-name>
</organization>
<profile-set>
<qualified-name>/Root User Profile Set</qualified-name>
</profile-set>
<user-attributes>
<user-attribute name="hotlineReason" type="string">
<value>0000000000000004</value>
</user-attribute>
</user-attributes>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="createUser">
<result/>
</target>
</response>
Provisioning a billing Use This example to set the billing day at the User context.
day for a user <target name="UserAPI" operation="createUser">"
<parameter>
<user>
<login-name>lname</login-name>
<name>name</name>
<password>
<value>password</value>
</password>
<account-name>account</account-name>
<organization>
<qualified-name>qname</qualified-name>
</organization>
<profile-set>
<qualified-name>qname</qualified-name>
<user-information-profile>
<qualified-name>User Information</qualified-name>
<attribute name="BillingDay">
<value context="user">10</value>
</attribute>
</user-information-profile>
</profile-set>
</user>
</parameter>
</target>
createUserProfileSet
Use the createUserProfileSet operation to create a user profile set.
These elements are required:
• the profile set name
• the organization in which the profile set is to be created (must already be
present)
These elements are optional:
• a description of the profile set
• an inheritance flag to determine whether the profile set is available to
sub-organizations (default is yes)
• user group context (UG) profile attributes
Provisioned RADIUS This example shows how to create a user profile set with provisioned user group
connection service context RADIUS connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="UserAPI" operation="createUserProfileSet">
<parameter>
<user-profile-set>
<name>BWS User Profile Set</name>
<organization><id>4</id></organization>
<profile>
<id>5</id>
<attribute name="name1">
<value segment="seg1">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</user-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="createUserProfileSet">
<result/>
</target>
</response>
deleteUser
Use the deleteUser operation removes a user and all of its associated attributes.
Specify one of:
• the user name and domain
• the user ID
• the login name (if login uniqueness is enabled)
• the login name and domain or password
Specified user This example shows how to delete a user with a specified login name (login1) and
domain name (domain1.com).
Request
<request version="2.0" principal="User1" credentials="password">
Response
<response version="2.0">
<target name="UserAPI" operation="deleteUser">
<result/>
</target>
</response>
findUsers
The findUsers operation requests the Provisioning Server to return subscriber
information.
Find specified This example shows how search for subscriber information.
subscriber
Request
<request credentials="root" principal="root" version="2.0">
<target name="UserAPI" operation="findUsers">
<parameter>
<user-search>
<next-index>1</next-index>
<max-results>30</max-results>
<order-by>loginname</order-by>
<include-sub-organizations>false</include-sub-organizations>
<query-deleted-organizations>false</query-deleted-organizations>
<name>r*</name>
<organization>
<id>1</id>
<name>Root Organization</name>
</organization>
</user-search>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="findUsers">
<result>
<user-search>
<next-index>-1</next-index>
<max-results>30</max-results>
<order-by>loginname</order-by>
<query-deleted>false</query-deleted>
<include-sub-organizations>false</include-sub-organizations>
<query-deleted-organizations>false</query-deleted-organizations>
<name>r*</name>
<user>
<id>1</id>
<name>root</name>
<login-name>root</login-name>
<organization>
<id>1</id>
<name>Root Organization</name>
<status>
<value>active</value>
</status>
<implicit-status>
<value>active</value>
</implicit-status>
</organization>
<domain>
<id>1</id>
<name>null</name>
<status>
<value>active</value>
</status>
</domain>
<password>
<type>cleartext</type>
<value>root</value>
<learn-password>false</learn-password>
</password>
<status>
<value>active</value>
</status>
<implicit-status>
<value>active</value>
</implicit-status>
<creation-date>2009-04-29 18:16:33</creation-date>
<last-modified>2009-04-29 18:16:33</last-modified>
<modified-by>creroot.sql</modified-by>
<billing>
<id>3</id>
<senior-billing-id>3</senior-billing-id>
</billing>
<profile-set>
<id>3</id>
<name>Root User Profile Set</name>
<type>user</type>
</profile-set>
</user>
</user-search>
</result>
</target>
</response>
getUser
Use the getUser operation to retrieve user profile information and, optionally, user
context (U) profile attributes.
These elements are required:
• the user name and domain
• the user ID
• the login name (if login uniqueness is enabled)
• the login name and domain or password
These elements are optional:
• an empty <profile> element to be populated with user context (U) attribute
information. All user profiles and attributes are returned. For example:
<profile-set></profile-set>
• a <profile> element with the profile ID or qualified name that identifies a specific
profile for which attribution information is requested. Only information for that
profile is returned. For example:
<profile-set><profile><id>2</id></profile></profile-set>
Specified user name This example shows how to retrieve user information for a specific user name
and domain (user1) and domain (‘null’).
Request
<request version="2.0" principal="User1"
credentials="password">
Response
<response version="2.0">
<target name="UserAPI" operation="getUser">
<result>
<user>
<id>6413</id>
<name>user1</name>
<login-name>login1</login-name>
<organization>
<id>1</id>
<name>/BWS</name>
<status>
<value>active</value>
</status>
<implicit-status>
<value>active</value>
</implicit-status>
</organization>
<domain>
<id>1</id>
<name>null</name>
<status>
<value>active</value>
</status>
</domain>
<password>
<type>cleartext</type>
<value>pwd1</value>
</password>
<status>
<value>active</value>
</status>
<creation-date>2004-04-23 15:40:44
</creation-date>
<last-modified>
2004-04-23 15:40:44
</last-modified>
<modified-by>User1</modified-by>
<billing>
<id>8754</id>
<senior-billing-id>8754</senior-billing-id>
</billing>
<profile-set>
<id>3</id>
<name>Root User Profile Set</name>
<type>user</type>
</profile-set>
</user>
</result>
</target>
</response>
Specified login name This example shows how to retrieve user information for a user with a specified
and password login name (login1) and password (pwd1).
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="getUser">
<parameter>
<user>
<login-name>login1</login-name>
<domain><name>null</name></domain>
<password>
<value>pwd1</value>
</password>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="getUser">
<result>
<user>
<id>6413</id>
<name>user1</name>
<login-name>login1</login-name>
<organization>
<id>1</id>
<name>/BWS</name>
<status>
<value>active</value>
</status>
<implicit-status>
<value>active</value>
</implicit-status>
</organization>
<domain>
<id>1</id>
<name>null</name>
<status><value>active</value></status>
</domain>
<password>
<type>cleartext</type>
<value>pwd1</value>
</password>
<status>
<value>active</value>
</status>
<creation-date>2004-04-23 15:40:44</creation-date>
<last-modified>2004-04-23 15:40:44</last-modified>
<modified-by>User1</modified-by>
<billing>
<id>8754</id>
<senior-billing-id>8754</senior-billing-id>
</billing>
<profile-set>
<id>3</id>
<name>Root User Profile Set</name>
<type>user</type>
</profile-set>
</user>
</result>
</target>
</response>
RADIUS connection This example shows how to retrieve user information, including user context profile
service profile attributes, for a user with a specified login name (login1) and domain
attributes (domain1.com).
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="getUser">
<parameter>
<user>
<login-name>dlogin1</login-name>
<domain>
<name>domain1.com</name>
</domain>
<profile-set></profile-set>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="getUser">
<result>
<user>
<name>duser1</name>
<login-name>dlogin1</login-name>
<password>
<value>pswd1084374221</value>
</password>
<organization>
<qualified-name>/BWS
</qualified-name>
</organization>
<profile-set>
<qualified-name>/BWS/psu1
</qualified-name>
<user-information-profile>
<qualified-name>User Information
</qualified-name>
<attribute name="foo">
<value context="user">bar</value>
</attribute>
<attribute name="foo2">
<value context="user">bar</value>
</attribute>
<attribute name="foo3">
<value context="user">bar</value>
</attribute>
<attribute name="foo4">
<value context="user" subscript="0">
shouldbechanged
</value>
<value context="user" subscript="1">
shouldnotbechanged
</value>
<value context="user" subscript="2">
valueshouldbedeleted
</value>
</attribute>
<attribute name="shouldbedeleted">
<value context="user">%d</value>
</attribute>
</user-information-profile>
<profile>
<qualified-name>/Radius QoS Profile
</qualified-name>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</profile-set>
</user>
</result>
</target>
</response>
getUserWithActiveServices
Use the getUserWithActiveServices operation to retrieve a list of active RADIUS
connection service profiles.
The following elements are not required in the request message:
• profile-set
• user-attributes
Get list of active This example shows how to retrieve a list of active RADIUS connection service
RADIUS connection profiles.
service profiles
Request
<request version="2.0" principal="admin" credentials="CREDENTIALS">
<target name="UserAPI" operation="getUserWithActiveServices">
<parameter>
<user>
<name/>
<login-name>6135551234</login-name>
<domain>
<name>marktestdomain</name>
</domain>
<profile-set/>
<user-attributes/>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="getUserWithActiveServices">
<result>
<user include-associations="false">
<id>6</id>
<name>6135551234</name>
<login-name>6135551234</login-name>
<organization>
<id>1</id>
<name>Root Organization</name>
<status>
<value>active</value>
</status>
<implicit-status>
<value>active</value>
</implicit-status>
</organization>
<domain>
<id>2</id>
<name>testdomain</name>
<status>
<value>active</value>
</status>
</domain>
<password>
<type>cleartext</type>
<value>password</value>
</password>
<status>
<value>active</value>
</status>
<creation-date>2009-06-16 15:48:42</creation-date>
<last-modified>2009-09-15 19:57:19</last-modified>
<modified-by>root@null</modified-by>
<billing>
<id>9</id>
<senior-billing-id>9</senior-billing-id>
</billing>
<profile-set>
<type>user</type>
<profile>
<name>CONNECTION PROFILE</name>
</profile>
</profile-set>
<user-attributes>
<user-attribute name="001122334455" type="string">
<value id="21">0000000000000004</value>
</user-attribute>
<user-attribute name="hotlineReason" type="string">
<value id="3">7777777777777777</value>
</user-attribute>
</user-attributes>
</user>
</result>
</target>
</response>
getUserProfileSet
Use the getUserProfileSet operation to retrieve user profile set information and,
optionally, user group context (UG) profile attributes.
These elements are required:
• the profile set qualified name or ID
These elements are optional:
• an empty <profile> element to be populated with user group context (UG)
profile information. All user profiles and attributes are returned. For example:
<profile></profile>
• a <profile> element with the profile ID or qualified name that identifies a specific
profile for which attribute information is requested. Only information for that
profile is returned. For example:
<profile><id>2</id></profile>
• an empty <radius-qos-selection-profile> element to be populated with user
group context (UG) and default context (DEF) RADIUS QoS selection policy
profile information. All user profiles and attributes are returned. For example:
<radius-qos-selectionprofile>
</radius-qos-selection-profile>
• a <radius-qos-selection-profile> element with the profile ID or qualified name
that identifies a specific profile for which RADIUS QoS selection policy
attribution information is requested. Only information for that profile is returned.
For example:
<radius-qos-selectionprofile>
<id>2</id>
</radius-qos-selection-profile>
Get RADIUS QoS This example shows how to get user group and default context RADIUS QoS
Selection Policy Selection Policy Profile attributes.
Profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="getUserProfileSet">
<parameter>
<user-profile-set>
<qualified-name>/testUPS1</qualified-name>
<radius-qos-selection-profile><id>1198</id>
</radius-qos-selection-profile>
</user-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="getUserProfileSet">
<result>
<user-profile-set>
<id>1712</id>
<name>testUPS1</name>
<organization><id>1</id></organization>
<inheritance>yes</inheritance>
<status><value>active</value></status>
<radius-qos-selection-profile>
<id>1198</id>
<name>Radius QoS Selection Policy Profile
</name>
<service>
<name>RADIUS QoS Selection Policy</name>
<version>1</version>
</service>
<qos-selection-policy>access
</qos-selection-policy>
<assignment>
<policy-name>local</policy-name>
<qos-profile>
<id>1200</id>
</qos-profile>
</assignment>
<assignment>
<policy-name>roaming</policy-name>
<qos-profile>
<id>1199</id>
</qos-profile>
</assignment>
</radius-qos-selection-profile>
</user-profile-set>
<result/>
</target>
</response>
Get RADIUS This example shows how to get user group context RADIUS connection service
connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="getUserProfileSet">
<parameter>
<user-profile-set>
<id>5</id>
<profile>
</profile>
</user-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="getUserProfileSet">
<result>
<user-profile-set>
<name>BWS User Profile Set</name>
<Account><id>5</id></Account>
<profile>
<id>5</id>
<name>RadiusQoSConnectionService</name>
<service>
<name>RadiusQoSConnectionService </name>
<version>1</version>
</service>
<attribute name="name1">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</user-profile-set>
</result>
</target>
</response>
updateUser
Use the updateUser operation to modify a subscriber record.
One or more of these elements are required:
• the user name and domain
• the user ID
• the login name (if login uniqueness is enabled)
• the login name and domain or password
Note If login uniqueness if disabled (loginUnique=false, set in the Profile
Database during the BWSwsdbs installation prompts) the domain is
required in the updateUser request.
These elements are optional:
• a new login name for the user specified
• a new password for the user specified
• a new user status (active, pending, suspended, or deleted)
• an account name (1 to 64 characters)
• a user profile set, to which this user should be added or deleted
• user context (U) profile attributes to be added, modified, or deleted from the
domain profile
If the user name changes, then the account must be deleted with the deleteUser
operation, and then recreated with a new createUser call.
Change password This example shows how to change the password for a user with a specified login
name (dlogin1).
To define the password encryption <type> parameter, use one of the following
options.
To encrypt a cleartext password using:
• North American UNIX, use the value “cleartext2unixna”
• BSD MD5, use the value “cleartext2bsdmd5 “
• 2-way MD5, use the value “cleartext2md5x”
Example:
<password>
<type>cleartext2md5x</type>
<value>mypassword</value>
</password>
Note If no value is given for the password <type> parameter, the password is
saved in the clear text format.
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="updateUser">
<parameter>
<user>
<login-name>dlogin1</login-name>
<domain>
<name>domain1.com</name>
</domain>
<password>
<value>newdpwd1</value>
</password>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="updateUser">
<result/>
</target>
</response>
Generate password A password can be generated for the user with the updateUser or createUser
operations. For an example, see "Generate a random password" on page 233.
Change attributes This example shows how to change user information attributes for a user with a
specified login name (dlogin1) and domain (domain1.com).
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="updateUser">
<parameter>
<user>
<login-name>dlogin1</login-name>
<domain>
<name>domain1.com</name>
</domain>
<profile-set>
<qualified-name>/BWS/psu1</qualified-name>
<user-information-profile>
<qualified-name>User Information</qualified-name>
<attribute name="foo4">
<value context="user" subscript="0">changed</value>
<value context="user" subscript="2"
delete="true">
</value>
</attribute>
<attribute name="shouldbedeleted" delete="true"/>
</user-information-profile>
</profile-set>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="updateUser">
<result/>
</target>
</response>
Add or update This example shows how to add or update a user’s hotlineReason attribute for
WiMAX user WiMAX hotlining configuration. The hotlineReason value corresponds to a bit action
attributes map configured in hotlineConfig.xml and must be a 16 byte hex string.
updateUser includes an optional operation attribute which can be used to modify
any User-Attribute that is a string, including hotlineReason. The operation attribute
can have one of the following values:
• bitmaskSet:
– accepts a string of “0” and “1” values
– changes the hotlineReason attribute by changing specified bits to a value
of “1”. For example:
hotlineReason=00000001
<value operation=”bitmaskSet”>00000010</value>
new hotlineReason=00000011
• bitmaskClear:
– accepts a string of “0” and “1” values
Response
<response version="2.0">
<target name="UserAPI" operation="updateUser">
<result/>
</target>
</response>
<domain>
<name>DOMAIN</name>
</domain>
<user-attributes>
<user-attribute name="hotlineReason" type="string">
<value operation="bitmaskClear">BITMASK</value>
</user-attribute>
</user-attributes>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="updateUser">
<result/>
</target>
</response>
Response
<response version="2.0">
<target name="UserAPI" operation="updateUser">
<result/>
</target>
</response>
Change user status This example shows how to change the status to ‘suspended’ for a user with a
specified login name (dlogin1) and domain (domain1.com). To suspend a user, you
must provide a suspension reason.
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="updateUser">
<parameter>
<user>
<login-name>dlogin1</login-name>
<domain>
<name>domain1.com</name>
</domain>
<status>
<value>suspended</value>
<suspension-reason>
Suspended by Provisioning System
</suspension-reason>
</status>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="updateUser">
<result/>
</target>
</response>
Change login name This example shows how to change the login name for a user (from login1 to login2)
without having to delete and recreate the account.
Note Login names can only be changed if the LoginUpdatesAllowed flag has
been enabled in the Profile Database.
Note If login uniqueness if disabled (loginUnique=false, set in the Profile
Database during the BWSwsdbs installation prompts) the domain is
required in the updateUser request.
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="updateUser">
<parameter>
<user>
<login-name>login1</login-name>
<new-login-name>login2</new-login-name>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="updateUser">
<result/>
</target>
</response>
Update RADIUS This example shows how to update user context RADIUS connection service profile
connection service attributes.
profile attributes The update-only flag indicates that the value should only be updated if it is already
present in the profile. Default action is to add the attribute if it is not already present.
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="updateUser">
<parameter>
<user>
<login-name>bob</login-name>
<profile-set>
<qualified-name>/BWS/bobprofileset</qualified-name>
<profile>
<id>25</id>
<attribute name="name1">
Response
<response version="2.0">
<target name="UserAPI" operation="updateUser">
<result/>
</target>
</response>
Delete RADIUS This example shows how to delete user context RADIUS connection service profile
connection service attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="updateUser">
<parameter>
<user>
<id>5</id>
<profile-set>
<id>15</id>
<profile>
<id>25</id>
<attribute name="name1" delete="true">
<value segment="segment">value1</value>
</attribute>
</profile>
</profile-set>
</user>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="updateUser">
<result/>
</target>
</response>
updateUserProfileSet
Use the updateUserProfileSet operation to modify a user profile set.
These elements are required:
• the profile set ID or qualified name
These elements are optional:
• a new profile set description
• a new profile set inheritance flag setting
• a new profile set status (active or deleted)
• a profile to be added to, modified, or deleted from the profile set
• user group context (UG) profile attributes to be added to, modified, or deleted
from an account profile
Create RADIUS QoS This example shows how to create user group context RADIUS QoS Selection
Selection Policy Policy Profile attributes.
Profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="updateUserProfileSet">
<parameter>
<user-profile-set>
<qualified-name>/testUPS1</qualified-name>
<type>user</type>
<radius-qos-selection-profile>
<id>1198</id>
<assignment>
<policy-name>local</policy-name>
<qos-profile>
<id>1199</id>
</qos-profile>
</assignment>
<assignment>
<policy-name>roaming</policy-name>
<qos-profile>
<id>1200</id>
</qos-profile>
</assignment>
</radius-qos-selection-profile>
</user-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="updateUserProfileSet">
<result/>
</target>
</response>
Update RADIUS QoS This example shows how to update user group context RADIUS QoS Selection
Selection Policy Policy Profile attributes.
Profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="updateUserProfileSet">
<parameter>
<user-profile-set><qualified-name>/testUPS1
</qualified-name>
<radius-qos-selection-profile>
<id>1198</id>
<assignment><policy-name>local</policy-name>
<qos-profile>
<id>1200</id>
</qos-profile>
</assignment>
<assignment>
<policy-name>roaming</policy-name>
<qos-profile>
<id>1199</id>
</qos-profile>
</assignment>
</radius-qos-selection-profile>
</user-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="updateUserProfileSet">
<result/>
</target>
</response>
Delete RADIUS QoS This example shows how to delete user group context RADIUS QoS Selection
Selection Policy Policy Profile attributes.
Profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="updateUserProfileSet">
<parameter>
<user-profile-set>
<qualified-name>/testUPS1</qualified-name>
<radius-qos-selection-profile>
<id>1198</id>
<assignment delete="true">
<policy-name>local</policy-name>
<qos-profile>
<id>1200</id>
</qos-profile>
</assignment>
</radius-qos-selection-profile>
</user-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="updateUserProfileSet">
<result/>
</target>
</response>
Update RADIUS This example shows how to update user group context RADIUS connection service
connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="updateUserProfileSet">
<parameter>
<user-profile-set>
<id>15</id>
<profile>
<id>5</id>
<attribute name="name1">
<value segment="seg2">value1</value>
</attribute>
<attribute name="name2">
<value segment="segment">value2</value>
</attribute>
</profile>
</user-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation="updateUserProfileSet">
<result/>
</target>
</response>
Delete RADIUS This example shows how to delete user group context RADIUS connection service
connection service profile attributes.
profile attributes
Request
<request version="2.0" principal="User1" credentials="password">
<target name="UserAPI" operation="updateUserProfileSet">
<parameter>
<user-profile-set>
<id>15</id>
<profile>
<id>5</id>
<attribute name="name1" delete="true">
<value segment="segment">value1</value>
</attribute>
<attribute name="name2">
<value delete="true" subscript="3">value2
</value>
</attribute>
</profile>
</user-profile-set>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="UserAPI" operation=" updateUserProfileSet ">
<result/>
</target>
</response>
WiMAXAPI operations
This section describes the following WiMAXAPI operations:
• createWiMAXDevice
• createWiMAXHAGroup
• createWiMAXNodeGroup
• deleteWiMAXDevice
• deleteWiMAXHAGroup
• deleteWiMAXNodeGroup
• getWiMAXDevice
• getWiMAXHAGroup
• getWiMAXNodeGroup
• updateWiMAXDevice
• updateWiMAXHAGroup
• updateWiMAXNodeGroup
createWiMAXDevice
Use the createWiMAXDevice operation to create a WiMAX device instance.
These elements are required:
• the WiMAX device identifier, for example a MAC address
• a pre-shared key
These elements are optional:
• the caption under which the device is displayed in Service Manager (if not
supplied, the name field is used)
• a description of the device
The response provides the ID of the created WiMAX device.
WiMAX device This example shows how to create a WiMAX device using the MAC address as the
device name (identifier).
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="WiMAXAPI" operation="createWiMAXDevice">
<parameter>
<wimax-device>
<name>00-a3-b4-c5-d6-e7</name>
<pre-shared-key>PSK_value</pre-shared-key>
<wimax-device>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="createWiMAXDevice">
<result>
<wimax-device>
<id>47</id>
</wimax-device>
</result>
</target>
</response>
createWiMAXHAGroup
Use the createWiMAXHAGroup operation to create a WiMAX home agent group
instance.
These elements are required:
• the WiMAX home agent group name
These elements are optional:
• the caption under which the HA group displays in Service Manager (if not
supplied, the name field is used)
• a description of the node
• one or more WiMAX nodes to assign to the HA group
Empty WiMAX HA This example shows how to create a WiMAX home agent group with no nodes
group initially assigned.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="WiMAXAPI" operation="createWiMAXHAGroup">
<parameter>
<wimax-ha-group>
<name>HA Group 1</name>
<description>The description</description>
</wimax-ha-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="createWiMAXHAGroup">
<result>
<wimax-ha-group>
<id>124</id>
</wimax-ha-group>
</result>
</target>
</response>
HA group with two This example shows how to create a WiMAX home agent group with two WiMAX
WiMAX nodes nodes initially assigned. Nodes may be identified either by ID or by qualified name.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="WiMAXAPI" operation="createWiMAXHAGroup">
<parameter>
<wimax-ha-group>
<name>HA Group 2</name>
<description>The description</description>
<wimax-node>
<id>123</id>
</wimax-node>
<wimax-node>
<qualified-name>172.17.0.100</qualified-name>
</wimax-node>
</wimax-ha-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="createWiMAXHAGroup">
<result>
<wimax-ha-group>
<id>125</id>
</wimax-ha-group>
</result>
</target>
</response>
createWiMAXNodeGroup
Use the createWiMAXNodeGroup operation to create a WiMAX node group
instance.
These elements are required:
• the WiMAX node group name
• the RMS cluster ID
These elements are optional:
• the caption under which the node group displays in Service Manager (if not
supplied, the name field is used)
• a description of the node
• one or more WiMAX nodes to assign to the node group
The response provides the ID of the created WiMAX node group.
Empty WiMAX node This example shows how to create a WiMAX node group with no nodes initially
group assigned.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="WiMAXAPI" operation="createWiMAXNodeGroup">
<parameter>
<wimax-node-group>
<name>Node Group 1</name>
<description>The description</description>
<rms-cluster-id>3</rms-cluster-id>
</wimax-node-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="createWiMAXNodeGroup">
<result>
<wimax-node-group>
<id>46</id>
</wimax-node-group>
</result>
</target>
</response>
Node group with two This example shows how to create a WiMAX node group with two WiMAX nodes
WiMAX nodes initially assigned. Nodes may be identified either by ID or by qualified name.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="WiMAXAPI" operation="createWiMAXNodeGroup">
<parameter>
<wimax-node-group>
<name>Node Group 2</name>
<description>The description</description>
<rms-cluster-id>2</rms-cluster-id>
<wimax-node>
<id>123</id>
</wimax-node>
<wimax-node>
<qualified-name>172.17.0.100</qualified-name>
</wimax-node>
</wimax-node-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="createWiMAXNodeGroup">
<result>
<wimax-node-group>
<id>47</id>
</wimax-node-group>
</result>
</target>
</response>
deleteWiMAXDevice
Use the deleteWiMAXDevice operation removes a WiMAX device.
These elements are required:
• the WiMAX device ID or qualified name
Specified device This example shows how to delete a WiMAX device with a specified ID.
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="deleteWiMAXDevice">
<parameter>
<wimax-device>
<id>49</id>
</wimax-device>
</parameter>
/target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="deleteWiMAXDevice">
<result/>
</target>
</response>
deleteWiMAXHAGroup
Use the deleteWiMAXNodeGroup operation removes a WiMAX home agent group.
These elements are required:
• the WiMAX home agent group ID or qualified name
Specified HA group This example shows how to delete a WiMAX home agent group with a specified ID.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="WiMAXAPI" operation="deleteWiMAXHAGroup">
<parameter>
<wimax-ha-group>
<id>125</id>
</wimax-ha-group>
</parameter>
/target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="deleteWiMAXHAGroup">
<result/>
</target>
</response>
deleteWiMAXNodeGroup
Use the deleteWiMAXNodeGroup operation removes a WiMAX node group.
These elements are required:
• the WiMAX node group ID or qualified name
Specified node group This example shows how to delete a WiMAX node group with a specified ID.
Request
<request version="2.0" principal="User1"
credentials="password">
<target name="WiMAXAPI" operation="deleteWiMAXNodeGroup">
<parameter>
<wimax-node-group>
<id>46</id>
</wimax-node-group>
</parameter>
/target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="deleteWiMAXNodeGroup">
<result/>
</target>
</response>
getWiMAXDevice
Use the getWiMAXDevice operation to retrieve WiMAX device information and,
optionally, WiMAX device attributes.
These elements are required:
• the WiMAX node ID or qualified name
These elements are optional:
• the include-attributes attribute, requesting retrieval of WiMAX device
provisioned attribute information
Retrieve WiMAX This example shows how to retrieve WiMAX node information for a specified
device information WiMAX device (00-a3-b4-c5-d6-e7).
only
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="getWiMAXDevice">
<parameter>
<wimax-device>
<qualified-name>
00-a3-b4-c5-d6-e7
</qualified-name>
</wimax-device>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="getWiMAXDevice">
<result>
<wimax-device include-attributes="false">
<id>49</id>
<configuration-id>1</configuration-id>
<name>00-a3-b4-c5-d6-e7</name>
<caption>00-a3-b4-c5-d6-e7</caption>
<pre-shared-key>PSK_value</pre-shared-key>
<status>
<value>active</value>
</status>
<last-modified>
2006-08-14 11:43:17
</last-modified>
<modified-by>User1</modified-by>
</wimax-device>
</result>
</target>
</response>
getWiMAXHAGroup
Use the getWiMAXHAGroup operation to retrieve WiMAX home agent group
information and, optionally, provisioned attributes of the home agent group and a
list of WiMAX nodes that are members of the group.
These elements are required:
• the WiMAX home agent group ID or qualified name
These elements are optional:
• the include-nodes attribute, requesting retrieval of WiMAX home agent group
member information
• the include-attributes attribute, requesting retrieval of WiMAX home agent
group provisioned attribute information
Retrieve WiMAX HA This example shows how to retrieve WiMAX home agent group information for a
group information specified WiMAX HA group (HA Group 2).
only
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="getWiMAXHAGroup">
<parameter>
<wimax-ha-group>
<qualified-name>HA Group 1</qualified-name>
</wimax-ha-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="getWiMAXHAGroup">
<result>
<wimax-ha-group include-nodes="false"
include-attributes="false">
<id>124</id>
<configuration-id>1</configuration-id>
<name>HA Group 1</name>
<caption>HA Group 1</caption>
<description>The description</description>
<last-modified>
2006-08-14 11:37:58
</last-modified>
<modified-by>User1</modified-by>
</wimax-ha-group>
</result>
</target>
</response>
Retrieve WiMAX HA This example shows how to retrieve home agent group information, including node
group, nodes, and assignments, and provisioned group attribute information for a specified WiMAX
attribute information home agent group. The response shows that there are two WiMAX nodes in the
group, but no provisioned HA group attributes.
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="getWiMAXHAGroup">
<parameter>
<wimax-ha-group include-nodes="true"
include-attributes="true">
<qualified-name>HA Group 2</qualified-name>
</wimax-ha-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="getWiMAXHAGroup">
<result>
<wimax-ha-group include-nodes="true"
include-attributes="true">
<id>125</id>
<configuration-id>1</configuration-id>
<name>HA Group 2</name>
<caption>HA Group 2</caption>
<description>The description</description>
<wimax-node include-attributes="false"
include-group="false"
include-ha-groups="false">
<id>29</id>
<configuration-id>1</configuration-id>
<name>172.17.0.100</name>
<caption>172.17.0.100</caption>
<protocols>
<radius>
<shared-secret>SECRET</shared-secret>
</radius>
</protocols>
<roles>
<home-agent-role>
<protocols>
<radius>
<skip-count>0</skip-count>
<root-key-lifetime>
86400
</root-key-lifetime>
</radius>
</protocols>
</home-agent-role>
</roles>
<vendor>RFC2138</vendor>
<time-zone>GMT</time-zone>
<last-modified>
2006-08-14 11:18:50
</last-modified>
<modified-by>User1</modified-by>
</wimax-node>
<wimax-node include-attributes="false"
include-group="false"
include-ha-groups="false">
<id>31</id>
<configuration-id>1</configuration-id>
<name>172.17.0.101</name>
<caption>172.17.0.101</caption>
<protocols>
<radius>
<shared-secret>SECRET</shared-secret>
</radius>
</protocols>
<roles>
<home-agent-role>
<protocols>
<radius>
<skip-count>0</skip-count>
<root-key-lifetime>
86400
</root-key-lifetime>
</radius>
</protocols>
</home-agent-role>
</roles>
<vendor>RFC2138</vendor>
<time-zone>GMT</time-zone>
<last-modified>
2006-08-14 11:18:54
</last-modified>
<modified-by>User1</modified-by>
</wimax-node>
<last-modified>
2006-08-14 11:37:58
</last-modified>
<modified-by>User1</modified-by>
</wimax-ha-group>
</result>
</target>
</response>
getWiMAXNodeGroup
Use the getWiMAXNodeGroup operation to retrieve WiMAX node group information
and, optionally, provisioned attributes of the node group and a list of WiMAX nodes
that are members of the group.
These elements are required:
• the WiMAX node group ID or qualified name
These elements are optional:
• the include-nodes flag to retrieve WiMAX node group member information
Retrieve WiMAX This example shows how to retrieve WiMAX node group information for a specified
node group WiMAX node group (Node Group 2).
information only
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="getWiMAXNodeGroup">
<parameter>
<wimax-node-group>
<qualified-name>Node Group 2</qualified-name>
</wimax-node-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="getWiMAXNodeGroup">
<result>
<wimax-node-group include-nodes="false"
include-attributes="false">
<id>47</id>
<configuration-id>1</configuration-id>
<name>Node Group 2</name>
<caption>Node Group 2</caption>
<description>The description</description>
<rms-cluster-id>2</rms-cluster-id>
<last-modified>
2006-08-14 11:19:00
</last-modified>
<modified-by>User1</modified-by>
</wimax-node-group>
</result>
</target>
</response>
Retrieve information This example shows how to retrieve WiMAX node group information for WiMAX
about nodes (including ASN Gateways) that use the Diameter protocol.
Diameter-enabled
WiMAX node groups Request
<request version="2.0" principal="user" credentials="password">
<target name="WiMAXAPI" operation="getWiMAXNodeGroup">
<parameter>
<wimax-node-group>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="getWiMAXNodeGroup">
<result>
<wimax-node-group include-attributes="false" include-nodes="false">
<id>33</id>
<configuration-id>1</configuration-id>
<name>Node Group 2</name>
<caption>Node Group 2</caption>
<description>The description</description>
<rms-cluster-id>2</rms-cluster-id>
<last-modified>2006-08-14 11:19:00</last-modified>
<modified-by>user</modified-by>
</wimax-node-group>
</result>
</target>
</response>
Retrieve WiMAX This example shows how to retrieve node group information, including node
group, nodes, and assignments, and provisioned group attribute information for a specified WiMAX
attribute information node group (id 38).
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="getWiMAXNodeGroup">
<parameter>
<wimax-node-group include-nodes="true"
include-attributes="true">
<qualified-name>Node Group 2</qualified-name>
</wimax-node-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="getWiMAXNodeGroup">
<result>
<wimax-node-group include-nodes="true"
include-attributes="true">
<id>47</id>
<configuration-id>1</configuration-id>
<name>Node Group 2</name>
<caption>Node Group 2</caption>
<description>The description</description>
<rms-cluster-id>2</rms-cluster-id>
<wimax-node include-attributes="false"
include-group="false"
include-ha-groups="false">
<id>29</id>
<configuration-id>1</configuration-id>
<name>172.17.0.100</name>
<caption>172.17.0.100</caption>
<protocols>
<radius>
<shared-secret>SECRET</shared-secret>
</radius>
</protocols>
<roles>
<home-agent-role>
<protocols>
<radius>
<skip-count>0</skip-count>
<root-key-lifetime>
86400
</root-key-lifetime>
</radius>
</protocols>
</home-agent-role>
</roles>
<vendor>RFC2138</vendor>
<time-zone>GMT</time-zone>
<last-modified>
2006-08-14 11:18:50
</last-modified>
<modified-by>User1</modified-by>
</wimax-node>
<wimax-node include-attributes="false"
include-group="false"
include-ha-groups="false">
<id>31</id>
<configuration-id>1</configuration-id>
<name>172.17.0.101</name>
<caption>172.17.0.101</caption>
<protocols>
<radius>
<shared-secret>SECRET</shared-secret>
</radius>
</protocols>
<roles>
<home-agent-role>
<protocols>
<radius>
<skip-count>0</skip-count>
<root-key-lifetime>
86400
</root-key-lifetime>
</radius>
</protocols>
</home-agent-role>
</roles>
<vendor>RFC2138</vendor>
<time-zone>GMT</time-zone>
<last-modified>
2006-08-14 11:18:54
</last-modified>
<modified-by>User1</modified-by>
</wimax-node>
<attribute name="my-group-attribute">
<value id="84">my_value</value>
</attribute>
<last-modified>
2006-08-14 11:19:00
</last-modified>
<modified-by>User1</modified-by>
</wimax-node-group>
</result>
</target>
</response>
updateWiMAXDevice
Use the updateWiMAXDevice operation to modify a WiMAX device.
Suspend service for a This example shows how to update the device status for a WiMAX device, setting it
device to ‘suspended’. All other properties remain the same
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="updateWiMAXDevice">
<parameter>
<wimax-device>
<qualified-name>
00-a3-b4-c5-d6-e7
</qualified-name>
<status>
<value>suspended</value>
</status>
</wimax-device>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="updateWiMAXDevice">
<result/>
</target>
</response>
updateWiMAXHAGroup
Use the updateWiMAXHAGroup operation to modify a WiMAX home agent group.
These elements are required:
• the WiMAX home agent group ID or qualified name
These elements are optional:
• a new name, caption, or description for the home agent group
• one or more WiMAX nodes to add to the group
• one or more WiMAX nodes and delete flags to indicate that the nodes should
be removed from the group
Change name and This example shows how to change the name and caption for a WiMAX home
caption agent group. All other properties remain the same.
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="updateWiMAXHAGroup">
<parameter>
<wimax-ha-group>
<qualified-name>HA Group 1</qualified-name>
<name>New Name</name>
<caption>New Caption</caption>
</wimax-ha-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="updateWiMAXHAGroup">
<result/>
</target>
</response>
Add nodes to a This example shows how to add multiple nodes to a WiMAX home agent group.
WiMAX HA group
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="updateWiMAXHAGroup">
<parameter>
<wimax-ha-group>
<qualified-name>HA Group 1</qualified-name>
<wimax-node>
<qualified-name>172.17.0.100</qualified-name>
</wimax-node>
<wimax-node>
<qualified-name>172.17.0.101</qualified-name>
</wimax-node>
</wimax-ha-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="updateWiMAXHAGroup">
<result/>
</target>
</response>
Remove nodes from This example shows how to remove WiMAX nodes from a WiMAX home agent
a WiMAX HA group group.
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="updateWiMAXHAGroup">
<parameter>
<wimax-ha-group>
<qualified-name>HA Group 1</qualified-name>
<wimax-node delete="true">
<qualified-name>172.17.0.100</qualified-name>
</wimax-node>
<wimax-node delete="true">
<qualified-name>172.17.0.101</qualified-name>
</wimax-node>
</wimax-ha-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="updateWiMAXHAGroup">
<result/>
</target>
</response>
updateWiMAXNodeGroup
Use the updateWiMAXNodeGroup operation to modify a WiMAX node group.
These elements are required:
• the WiMAX node group ID or qualified name
These elements are optional:
• a new name, caption, or description for the node group
• one or more WiMAX nodes to add to the group
• one or more WiMAX nodes and delete flags to indicate that the nodes should
be removed from the group
Change name and This example shows how to change the name and caption for a WiMAX node
caption group. All other properties remain the same.
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="updateWiMAXNodeGroup">
<parameter>
<wimax-node-group>
<qualified-name>Node Group 2</qualified-name>
<name>New Name</name>
<caption>New Caption</caption>
</wimax-node-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="updateWiMAXNodeGroup">
<result/>
</target>
</response>
Add nodes to a This example shows how to add multiple nodes to a WiMAX node group.
WiMAX node group
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="updateWiMAXNodeGroup">
<parameter>
<wimax-node-group>
<qualified-name>Node Group 2</qualified-name>
<wimax-node>
<qualified-name>172.17.0.100</qualified-name>
</wimax-node>
<wimax-node>
<qualified-name>172.17.0.101</qualified-name>
</wimax-node>
</wimax-node-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="updateWiMAXNodeGroup">
<result/>
</target>
</response>
Remove nodes from This example shows how to remove WiMAX nodes from a WiMAX node group.
a WiMAX node group
Request
<request version="2.0" principal="User1" credentials="password">
<target name="WiMAXAPI" operation="updateWiMAXNodeGroup">
<parameter>
<wimax-node-group>
<qualified-name>Node Group 2</qualified-name>
<wimax-node delete="true">
<qualified-name>172.17.0.100</qualified-name>
</wimax-node>
<wimax-node delete="true">
<qualified-name>172.17.0.101</qualified-name>
</wimax-node>
</wimax-node-group>
</parameter>
</target>
</request>
Response
<response version="2.0">
<target name="WiMAXAPI" operation="updateWiMAXNodeGroup">
<result/>
</target>
</response>
5
Chapter 5
Chapter
WSDLs overview
WDSL is an XML-based language that is used to model network-based services.
The WSDL file for a service describes supported operations, including applicable
parameters and attributes, and the format of request and response messages.
Developers can use the WSDL description to design third-party applications that
interface with the Provisioning Server.
Note Only APIs that are implemented using SOAP have an associated WSDL.
For APIs not implemented using SOAP there is no associated WSDL and
the procedures in this chapter for obtaining WSDLs and sending SOAP
requests do not apply.
Obtaining WSDLs
Use a SOAP tool to load the WSDL.
To obtain a WSDL
In the SOAP tool, type the location of the WSDL:
http://<hostname>:<port>/soap/services/<ServiceName>?wsdl
where:
hostname is the hostname of the SOAP server
port is the port on the SOAP server
ServiceName is the name of the WSDL to load
DAEAPI example
For example, to load the DAEAPI WSDL, type:
http://hostname1234:32000/soap/services/dae-service?wsdl
DAEAPI example
The DAEAPI endpoint is:
http:/hostname:port/soap/services/dae-service
An example request for the DAEAPI sendCoA operation would be:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soap="http://bridgewatersystems.com/dae/entity/soap/">
<soapenv:Header/>
<soapenv:Body>
<soap:sendCoARequest principal="admin"
credentials="TESTSECRET">
<wimax-hotlining>
<subscriber-name>abc3@null</subscriber-name>
</wimax-hotlining>
</soap:sendCoARequest>
</soapenv:Body>
</soapenv:Envelope>
The endpoint would return this response:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/
envelope/">
<soapenv:Body>
<ns1:sendCoAResponse xmlns:ns1="http:/
bridgewatersystems.com/dae/entity/soap/">
<query-failed>false</query-failed>
<wimax-hotlining>
<fa-node>
<sent>true</sent>
</fa-node>
</wimax-hotlining>
</ns1:sendCoAResponse>
</soapenv:Body>
</soapenv:Envelope>
WSDL examples
This section provides these complete WSDL examples:
• DAEAPI WSDL
• provisionComplete API and WSDL
• abortsession.wsdl
DAEAPI WSDL
Use the sendCoA, clearHotline, and sendDisconnect DAEAPI operations to trigger
the Provisioning Server to create and send a CoA or DM request. The sendCoA,
clearHotline, and sendDisconnect operations all use the WSDL described below.
For more information on these operations, see "DAEAPI operations" on page 82.
<definitions xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://
schemas.xmlsoap.org/wsdl/" xmlns:tns="http://bridgewatersystems.com/dae/entity/
soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xsd="http://
www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/
soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" name="DAEService"
targetNamespace="http://bridgewatersystems.com/dae/entity/soap/">
<types>
<xsd:schema xmlns="http://www.w3.org/2000/10/XMLSchema"
targetNamespace="http://bridgewatersystems.com/dae/entity/soap/">
<xsd:complexType name="node">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="sent"
type="xsd:boolean"/>
<xsd:element maxOccurs="1" minOccurs="0"
name="pseudo-identifier" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0"
name="rms-cluster-id" type="xsd:int"/>
<xsd:element maxOccurs="1" minOccurs="0"
name="failed-reason" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="wimaxHotliningInForCoA">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:sequence>
<xsd:element default="true" maxOccurs="1" minOccurs="0"
name="send-fa-info" type="xsd:boolean"/>
<xsd:element default="false" maxOccurs="1" minOccurs="0"
name="send-ha-info" type="xsd:boolean"/>
<xsd:element maxOccurs="1" minOccurs="1"
name="subscriber-name" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="wimaxHotliningInForDM">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1"
name="subscriber-name" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="wimaxHotliningOut">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0"
name="fa-node" type="tns:node"/>
<xsd:element maxOccurs="unbounded" minOccurs="0"
name="ha-node" type="tns:node"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="request">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:attribute maxOccurs="1" minOccurs="1" name="principal"
type="xsd:string"/>
<xsd:attribute maxOccurs="1" minOccurs="1" name="credentials"
type="xsd:string"/>
</xsd:complexType>
<xsd:element name="sendCoARequest">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="tns:request">
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1"
name="wimax-hotlining"
type="tns:wimaxHotliningInForCoA"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="clearHotlineRequest">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="tns:request">
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1"
name="wimax-hotlining"
type="tns:wimaxHotliningInForCoA"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="sendDisconnectRequest">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="tns:request">
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1"
name="wimax-hotlining"
type="tns:wimaxHotliningInForDM"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="sendCoAResponse">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1"
name="query-failed" type="xsd:boolean"/>
<xsd:element maxOccurs="1" minOccurs="0"
name="failed-reason" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0"
name="wimax-hotlining" type="tns:wimaxHotliningOut"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="clearHotlineResponse">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1"
name="query-failed" type="xsd:boolean"/>
<xsd:element maxOccurs="1" minOccurs="0"
name="failed-reason" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0"
name="wimax-hotlining" type="tns:wimaxHotliningOut"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="sendDisconnectResponse">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1"
name="query-failed" type="xsd:boolean"/>
<xsd:element maxOccurs="1" minOccurs="0"
name="failed-reason" type="xsd:string"/>
<xsd:element maxOccurs="1" minOccurs="0"
name="wimax-hotlining" type="tns:wimaxHotliningOut"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
<message name="sendCoARequest">
<part name="parameter" element="tns:sendCoARequest"/>
</message>
<message name="sendCoAResponse">
<part name="parameter" element="tns:sendCoAResponse"/>
</message>
<message name="sendDisconnectResponse">
<part name="parameter" element="tns:sendDisconnectResponse"/>
</message>
<message name="clearHotlineResponse">
<part name="parameter" element="tns:clearHotlineResponse"/>
</message>
<message name="clearHotlineRequest">
<part name="parameter" element="tns:clearHotlineRequest"/>
</message>
<message name="sendDisconnectRequest">
<part name="parameter" element="tns:sendDisconnectRequest"/>
</message>
<portType name="DAEServicePortType">
<operation name="clearHotlineReasonOperation">
<input message="tns:clearHotlineRequest"/>
<output message="tns:clearHotlineResponse"/>
</operation>
<operation name="sendCoAOperation">
<input message="tns:sendCoARequest"/>
<output message="tns:sendCoAResponse"/>
</operation>
<operation name="sendDisconnectOperation">
<input message="tns:sendDisconnectRequest"/>
<output message="tns:sendDisconnectResponse"/>
</operation>
</portType>
<binding name="DAESOAPBinding" type="tns:DAEServicePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org
soap/http"/>
<operation name="clearHotlineReasonOperation">
<soap:operation soapAction="http://bridgewatersystems.com/entity/soap
DAEService/clearHotlineReasonOperation"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="sendCoAOperation">
<soap:operation soapAction="http://bridgewatersystems.com/entity/soap
DAEService/sendCoAOperation"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="sendDisconnectOperation">
<soap:operation soapAction="http://bridgewatersystems.com/entity/soap
DAEService/sendDisconnectOperation"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="dae-service">
<port name="DAEService" binding="tns:DAESOAPBinding">
<soap:address location="http://192.168.151.22:32000/soap/services
dae-service"/>
</port>
</service>
</definitions>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/
2001/XMLSchema-instance">
<soapenv:Body>
<ns1:provisionComplete xmlns:ns1="http://services.mformation.com
MFServices/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap
encoding/">
<provisionData href="#id0"/>
</ns1:provisionComplete>
<multiRef xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns2="http://services.mformation.com/MFServices/" id="id0"
soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org
soap/encoding/" xsi:type="ns2:ProvisionData">
<macAddress xsi:type="xsd:string">FFFFFFFFFFFF</macAddress>
<ipAddress xsi:type="xsd:string">0.0.0.11</ipAddress>
<commandStatus href="#id1"/>
</multiRef>
<multiRef xmlns:ns3="http://services.mformation.com/MFServices/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" id="id1"
soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org
soap/encoding/" xsi:type="ns3:CommandStatusCode">1</multiRef>
</soapenv:Body>
</soapenv:Envelope>
<xsd:complexType name="MacIpAddr"><xsd:sequence><xsd:element
maxOccurs="1" minOccurs="1" name="macAddress" nillable="false"
type="xsd:string"/><xsd:element maxOccurs="1" minOccurs="1"
name="ipAddress" nillable="true" type="xsd:string"/></xsd:sequence></
xsd:complexType><xsd:simpleType
name="CommandStatusCode"><xsd:restriction base="xsd:int"><xsd:enumeration
value="1"/><!-- Success --><xsd:enumeration value="2"/><!-- Failed --></
xsd:restriction></xsd:simpleType><xsd:complexType
name="ProvisionData"><xsd:sequence><xsd:element maxOccurs="1"
minOccurs="1" name="macAddress" nillable="false" type="xsd:string"/
><xsd:element maxOccurs="1" minOccurs="1" name="ipAddress" nillable="false"
type="xsd:string"/><xsd:element maxOccurs="1" minOccurs="1"
name="commandStatus" nillable="false" type="tns:CommandStatusCode"/></
xsd:sequence></xsd:complexType>
<xsd:element
name="provisionComplete"><xsd:complexType><xsd:sequence><xsd:element
form="unqualified" name="provisionData" type="ns0:ProvisionData"/></
xsd:sequence></xsd:complexType></xsd:element><xsd:element
name="registerIPNotification"><xsd:complexType><xsd:sequence><xsd:element
form="unqualified" name="registerIPNotification" type="ns1:RegisterIPNotification"/
></xsd:sequence></xsd:complexType></xsd:element><xsd:element
name="provisionCompleteResponse"><xsd:complexType><xsd:sequence/></
xsd:complexType></xsd:element><xsd:element
name="registerIPNotificationResponse"><xsd:complexType><xsd:sequence><xsd
:element form="unqualified" name="macIpAddr" type="ns2:MacIpAddr"/></
xsd:sequence></xsd:complexType></xsd:element></xsd:schema>
</types>
<message name="provisionCompleteResponse">
</message>
<message name="provisionComplete">
<part name="provisionData" type="tns:ProvisionData">
</part>
</message>
<message name="registerIPNotificationResponse">
<part name="macIpAddr" type="tns:MacIpAddr">
</part>
</message>
<message name="registerIPNotification">
<part name="registerIPNotification" type="tns:RegisterIPNotification">
</part>
</message>
<portType name="OmadmToAaaPort">
<operation name="registerIPNotification">
<input message="tns:registerIPNotification">
</input>
<output message="tns:registerIPNotificationResponse">
</output>
</operation>
<operation name="provisionComplete">
<input message="tns:provisionComplete">
</input>
<output message="tns:provisionCompleteResponse">
</output>
</operation>
</portType>
<binding name="OmadmToAaaBinding" type="tns:OmadmToAaaPort">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/
http"/>
<operation name="registerIPNotification">
<soap:operation soapAction="http://services.mformation.com/
MFServices/registerIPNotification"/>
<input>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/
encoding/" namespace="http://services.mformation.com/MFServices/"/>
</input>
<output>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/
encoding/" namespace="http://services.mformation.com/MFServices/"/>
</output>
</operation>
<operation name="provisionComplete">
<soap:operation soapAction="http://services.mformation.com/
MFServices/provisionComplete"/>
<input>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/
encoding/" namespace="http://services.mformation.com/MFServices/"/>
</input>
<output>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/
encoding/" namespace="http://services.mformation.com/MFServices/"/>
</output>
</operation>
</binding>
<service name="OmadmToAaaService">
<port name="OmadmToAaa" binding="tns:OmadmToAaaBinding">
<soap:address location="http://localhost:8080/services/OmadmToAaa"/>
</port>
</service>
</definitions>
abortsession.wsdl
This section provides an example of the WSDL used in communication between a
Hotlining Application and the Provisioning Server for Diameter mid-session
hotlining.
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ns0="http://
api.abortsession.bridgewatersystems.com" xmlns:soap12="http://
schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/
http/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:wsaw="http://www.w3.org/
2006/05/addressing/wsdl" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://
api.abortsession.bridgewatersystems.com">
<wsdl:types>
<xs:schema xmlns:ns="http://api.abortsession.bridgewatersystems.com"
attributeFormDefault="qualified" elementFormDefault="qualified"
targetNamespace="http://api.abortsession.bridgewatersystems.com">
<xs:element name="getUserByIp">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="param0" nillable="true"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getUserByIpResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="return" nillable="true"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getUserByName">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="param0" nillable="true"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getUserByNameResponse">
<xs:complexType>
<xs:sequence>
<wsdl:portType name="sess-term-servicesPortType">
<wsdl:operation name="getUserByNameIp">
<wsdl:input message="ns0:getUserByNameIpRequest"
wsaw:Action="urn:getUserByNameIp"/>
<wsdl:output message="ns0:getUserByNameIpResponse"
wsaw:Action="urn:getUserByNameIpResponse"/>
</wsdl:operation>
<wsdl:operation name="getUserByIp">
<wsdl:input message="ns0:getUserByIpRequest"
wsaw:Action="urn:getUserByIp"/>
<wsdl:output message="ns0:getUserByIpResponse"
wsaw:Action="urn:getUserByIpResponse"/>
</wsdl:operation>
<wsdl:operation name="getUserByName">
<wsdl:input message="ns0:getUserByNameRequest"
wsaw:Action="urn:getUserByName"/>
<wsdl:output message="ns0:getUserByNameResponse"
wsaw:Action="urn:getUserByNameResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="sess-term-servicesSOAP11Binding"
type="ns0:sess-term-servicesPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<wsdl:operation name="getUserByNameIp">
<soap:operation soapAction="urn:getUserByNameIp" style="document"/
>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getUserByIp">
<soap:operation soapAction="urn:getUserByIp" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getUserByName">
<wsdl:binding name="sess-term-servicesHttpBinding"
type="ns0:sess-term-servicesPortType">
<http:binding verb="POST"/>
<wsdl:operation name="getUserByNameIp">
<http:operation location="sess-term-services/getUserByNameIp"/>
<wsdl:input>
<mime:content type="text/xml" part="getUserByNameIp"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="getUserByNameIp"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getUserByIp">
<http:operation location="sess-term-services/getUserByIp"/>
<wsdl:input>
<mime:content type="text/xml" part="getUserByIp"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="getUserByIp"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getUserByName">
<http:operation location="sess-term-services/getUserByName"/>
<wsdl:input>
<mime:content type="text/xml" part="getUserByName"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="getUserByName"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="sess-term-services">
<wsdl:port name="sess-term-servicesSOAP11port_http"
binding="ns0:sess-term-servicesSOAP11Binding">
<soap:address location="http://localhost:8080/axis/services"/>
</wsdl:port>
<wsdl:port name="sess-term-servicesSOAP12port_http"
binding="ns0:sess-term-servicesSOAP12Binding">
<soap12:address location="http://localhost:8080/axis/services"/>
</wsdl:port>
<wsdl:port name="sess-term-servicesHttpport"
binding="ns0:sess-term-servicesHttpBinding">
<http:address location="http://localhost:8080/axis/services"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
6
Chapter 6
Chapter
This chapter describes the Service Controller command line utilities used to view or
change Profile Database records.
The topics are:
• About the utilities
• Utility details
Utility Description
reactivateuser Sets the status of the user record to active, based on login name
and domain.
When an execution fails, it results in a simple error message. The detailed error
message is sent to the /var/adm/messages file. Table 28 lists return codes.
Code Description
00003 No attributes found. Ensure that all required dependencies are supplied.
3 Invalid password
4 Privilege violation
8 Version mismatch between the Provisioning Server and the utility client
Utility details
This section describes the command line utilities.
Note When the config_id value is set to -1, the currently active configuration is
referenced.
changeprofile
Changes the user profile set for the specified user. The new user profile set must
exist already.
Output If successful, changeprofile exits with a success code and no message displays.
On error, changeprofile exits with a non-zero exit status and a message line in the
format:
Failed | <message>
deluser
Marks the specified user as deleted.
insuser
Creates a new user record. A user profile set and an organization must exist to
create a user.
Note In an attempt to create a user with the same login name and password as
another user, the command is rejected and the existing user’s account is
suspended. This is done for security reasons, to prevent a user from
guessing the login name and password of an existing user. Change the
user’s password (see "setpassword" on page 315) and then reactivate the
user account (see "reactivateuser" on page 313).
where:
config_file is the full path to the vipclient.conf file
loginname is the user's login name
username is the user's username
password is the password to assign to the user
If entered as clear text, limit the length according to the encrypt parameter
supplied (-2, -1, or 0)
If entering as encrypted (1 or 2), then limit the length to 255
encrypt is the type of encryption to use when storing the password., 0 = clear
text, 1 = UNIX encryption (password already UNIX encrypted), 2 = BSD
encryption (password already BSD encrypted), -1 = UNIX encryption (password
in clear text; encrypt before storing), -2 = BSD encryption (password in clear
text; encrypt before storing)
org_name is the fully qualified organization name (delimited by ’/’) to which this
user belongs
profile is the user profile set to assign to this user
status is the initial status of the user.
A = active
P = pending
Using -P along with a date deactivates the user until the specified date.
When that date arrives the user is set to active.
authtype (optional) is the authentication type to be applied when this user
connects:
1 = PAP/CHAP
2 = SecureId (future)
billingid (optional) is a billing ID for the new user; enter an empty string ('' '') to
generate an ID
paidby (optional) is the fully qualified organization name (delimited by ’/’) that
identifies the organization that pays this user’s bill. Enter an empty string ('' '') if
the user pays their own bill
modby (optional) is the user who issues this request
account_name (optional) is the account name to assign to this credential
listuser
Lists all users that match the given search criteria.
If an error occurs, the utility exists with a non-zero exit status and a message line in
the format:
Failed | <message>
moveuser
Moves a user to a new organization.
reactivateuser
Changes the status of the specified user record to active, based on login name and
domain. It is used to reactivate a deleted or suspended user.
Output If successful, reactivateuser exits with a success code and no message displays. If
there is a suspended user matching the specified loginname/domain combination, it
is made active. If there is no suspended user matching the loginname/domain but
there is a single deleted user record found, it is made active.
If several deleted user records are found that match the specified loginname/
domain, a list of deleted user records displays in the following format:
OK|userid|username|loginname|domain|org|billingId|modby|cr
eated
where:
userid is the unique user identifier.
username is the user's username
loginname is the user's loginname
domain is the user's domain name
org is the organization to which this user belongs
billingId is the user's billing identifier
modby is the administrator who created or last modified this record
created is the creation date and time of the record
Use the reactivateuserid utility to reactivate the appropriate record, specifying the
unique user ID.
If an error occurs, reactivateuser exits with a non-zero exit status and displays a
message line in the format:
Failed | <message>
readuser
Reads and returns one or more user records.
Output If successful, the user records are displayed on standard output, one per line, in the
following format
OK|status|username|loginname|domain|org|profile|billingid|
modby|created|lastmod
where:
status is the status of this record (A=active, D=deleted, S=suspended
P=pending). Using -P along with a date deactivates the user until the specified
date. When that date arrives the user is set to active.
username is the username of this user
loginname is the loginname of this user
domain is the domain name to which this user belongs
org is the organization to which this user belongs
profile is the profile set assigned to this user
billingid is the user's billing ID
modby is the administrator who created or last modified this user record
created is the date this user record was created
lastmod is the date this user record was last modified
If an error occurs, readuser exits with a non-zero exit status and a message line in
the format:
Failed | <message>
setpassword
Assigns a password to a user.
Output If successful, setpassword exits with a success code and no message displays.
If an error occurs, setpassword exits with a non-zero exit status and a message line
in the format:
Failed | <message>
suspenduser
Marks an active user record as suspended.
Output If successful, suspenduser exits with a success code and no message displays.
If an error occurs, suspenduser exits with a non-zero exit status and displays a
message line in the format:
Failed | <message>
unsuspenduser
Reactivates a suspended user. It does not reactivate a deleted or pending user. To
reactivate a deleted or pending user, use the reactivateuser or reactivateuserid
utilities.
Output If successful, unsuspenduser exits with a success code and no message displays.
If an error occurs, unsuspenduser exits with a non-zero exit status and displays a
message line in the format:
Failed | <message>
updattribs
Updates or inserts an attribute for a user. The login name and domain of the user
must be specified to uniquely identify the user. The service name defines the
service class to which the attribute belongs. The context defines the attribute
context.
If the specified attribute currently exists in the Profile Database at this context, its
value is overwritten with the supplied value. If the attribute does not exist, it is
created.
To delete an attribute, update it with a null value (“”). To delete an array of attributes,
update it with a null value and a subscript of -2.