Documente Academic
Documente Profesional
Documente Cultură
Abstract
This document describes the provisioning and subscriber
administration facilities of VxOneTM.
Release Version
Document Version
Date
Pages
6.0
1.3
15 May 2006
93
Page 1 of 93
Commercial in Confidence
Table of Contents
1
1.1
Scope ............................................................................................................................5
1.2
Related Documents.......................................................................................................5
1.3
1.4
PROVISIONING................................................................................................................6
3.1
Overview .......................................................................................................................7
3.2
3.3
3.3.1
3.3.2
3.3.3
3.3.4
Page 2
INTRODUCTION ..............................................................................................................5
4.1
Overview .....................................................................................................................13
4.2
4.3
4.3.2
4.3.3
4.3.4
4.3.5
4.3.6
4.3.7
4.3.8
4.3.9
Commercial in Confidence
4.3.10
4.4
5
PROVISIONING ON DEMAND.......................................................................................22
5.1
Overview .....................................................................................................................22
5.2
Provisioning Service....................................................................................................22
6.1
Overview .....................................................................................................................23
6.2
6.3
Methods Overview.......................................................................................................25
6.4
Response Codes.........................................................................................................28
6.5
6.5.1
6.5.2
6.5.3
RetrieveUsers service..............................................................................................37
6.5.4
RetrieveUserDetails service.....................................................................................41
6.5.5
RetrieveUserDetailsByLogin ....................................................................................45
6.5.6
6.5.7
6.5.8
6.5.9
UpdateCWUserMSISDN..........................................................................................56
6.5.10
6.5.11
6.5.12
6.5.13
RetrieveEmailAccounts service................................................................................63
6.5.14
RetrieveEmailAccountDetails service.......................................................................64
6.5.15
6.5.16
6.5.17
6.5.18
Page 3
Commercial in Confidence
6.6
6.6.1
Request message....................................................................................................76
6.6.2
6.7
6.7.1
Any trademarks or service marks referred to within this document are the property of
their respective owners.
Page 4
Commercial in Confidence
1 Introduction
1.1 Scope
This document provides configuration and operational information relating to the
automatic user provisioning and administration interfaces of VxOneTM.
Document Description
[1]
Configuration Guide
[1]
Operations Guide
Document Reference
Value
[VOXSURF_HOME]
[VOXSURF_PROPERTIES]
Page 5
Commercial in Confidence
2 Provisioning
VxOneTM provides three mechanisms for the automatic provisioning of users:
LDAP auto-provisioning
All mechanisms allow deployment operators to specify a few essential parameters within
the bulk load files or LDAP directories while a more blanket definition of the other
values can be provided with default properties files.
The VoxSurf LDAP Connector is just one implementation of an automatic provisioning
APD. Alternative solutions can be implemented by created new automatic provisioning
plug in modules.
Please Note: All configuration changes should be made to the property files located
within the system shadow level ONLY. Please refer to the VxOneTM Configuration
Guide for more information relating to shadow property files.
Page 6
Commercial in Confidence
The bulk load tool does not create the account on the mail store, although this feature
can be added for specific email stores on a custom basis.
The high-level steps required to provision subscribers using this mechanism are as
follows:
Provision email accounts on the mail store (unless they already exist)
Create one XML file, which contains the <user> elements for each of the
subscribers. Each <user> element defines:
o
User Details
Application Details
Some of the elements within the <user> element are mandatory and some are
optional. The optional elements are denoted within the DTD by an asterisk (*).
If these elements are not included within the XML, the default values are
configured from the following configuration files:
o
[VOXSURF_PROPERTIES]/system/VxsProvisioningDefaultUser.propert
ies
[VOXSURF_PROPERTIES]/system/VxsProvisioningDefaultEmailAccou
nt.properties
Review the log file to ensure all subscribers have been provisioned successfully.
The log file should be located in the directory where the bulk load is run from.
XML file creation - Create one XML file, which contains the <user> elements for
each of the subscribers.
Page 7
Commercial in Confidence
3.3.1
Configure the default values specified within the following configuration files:
o
[VOXSURF_PROPERTIES]/system/VxsProvisioningDefaultUser.propert
ies
[VOXSURF_PROPERTIES]/system/VxsProvisioningDefaultEmailAccou
nt.properties
The following table contains information about all the items that the Bulk Load tool
requires in order to provision a subscriber.
Refer to section Appendix 2: Bulk Load XML Example for an example file, or
alternatively, locate the example.xml file within the directory [VOXSURF-HOME]\WEBINF\bin\provisioning\VoxSurf
Fields in bold are mandatory. All others are optional and may be left unmapped so that
default values are picked up from property files.
[1] Fields may be pre encrypted. See the corresponding boolean in
VxsProvisoning.properties.
3.3.1.1
Page 8
Domain Element
Element
Attribute(s)
Description
Domain
Value
Value Example
0000
Commercial in Confidence
3.3.1.2
UserDetails Element
Element
Attribute(s)
Description
UserId
Value
56484511
AccountNumber
Value
12345678
AccountPin [1]
Value
1234
Question
Value
Mothers Name
Answer [1]
Value
RegisteredEmailAddre
ss
Value
a.smith@company.
com
FirstName
Value
Alan
LastName
Value
Smith
Title
Value
Employee
Organisation
Value
Company
Industry
Value
The industry
Telecoms
Administrator
Value
MobilePhoneNumber
CountryCode
phoneNumber
LandLine1PhoneNumber
CountryCode
phoneNumber
LandLine2PhoneNumber
Unified
CountryCode
Value Example
Smith
True
44
7855 360915
44
207 759 9250
44
phoneNumber
Value
True
CountryCode
44
PhoneNumber
SMSNotification
Page 9
Commercial in Confidence
3.3.1.3
ApplicationDetails Element
Element
Attribute(s)
Description
Value Example
FaxEnabled
Value
Language
Value
VoiceDetails
StartPoint
True
En
T
E for email
V for voicemail
T for the top (main) menu
emailAccStartPoint
SendOnHangUp
True
135
Volume
MessageHeaderDetails
EmsgNum
ErcvdDate
True
True
Eorig
VMMsgNum
VMRcvdDate
True
True
VMOrig
Page 10
True
True
Commercial in Confidence
3.3.1.4
EmailAccountDetails Element
Element
Attribute(s)
Description
Value Example
AccountName
Value
EmailDisplayName
Value
EmailAddress
Value
Locked
Value
False
MailServer
Name
10.0.0.1
protocol
port
143
secure
false
Work
A Smith
a.smith@company.com
IMAP
Username
Value
Password [1]
Value
1234
SMTPRelay
Name
10.0.0.2
port
secure
EnableSentItems
Value
False
EnableDeletedItems
Value
False
RootFolderName
Value
3.3.2
a.smith
25
False
Bulk provisioning retrieves user information from the xml files containing data for each
specific user. If a value is not specified in the XML file (non mandatory values), the bulk
provisioning mechanism looks for a default value in the shadow properties location.
The property files relating to the defaults for both bulk load and LDAP auto provisioning
can be found within the following directory:
Page 11
Commercial in Confidence
[VOXSURF_PROPERTIES]\system\
3.3.3
By default bulk provisioning assumes that the sensitive fields being passed in
(AccountPIN, Answer and Password) are loaded unencrypted and then encrypted
internally by VxOneTM. If however the data is pre encrypted, the provisioning mechanism
must be set to not encrypt the relevant values. This is done by setting the relevant
property to false, in the file:
[VOXSURF_PROPERTIES]\system\
3.3.4
Before proceeding with the actual bulk load, it is imperative that property files and the
XML file have been configured properly and no mandatory information is left unspecified.
The bulk upload tool should be executed from the console in command-line mode. The
file can be found in the following location
[VOXSURF-HOME]\WEB-INF\bin\provisioning\provision.bat.
The batch file requires 1 parameter, which is the full path details and filename of the
XML file, for example
C:\voxsurf\WEB-INF\bin\provisioning\provision.bat c:/temp/xmlimport.xml
Once the process is complete, please review the log file for the transaction details of
the upload. The log file should be located in the directory where the bulk load is run
from.
Page 12
Commercial in Confidence
The LDAP Connector API can be called from external java applications to trigger the
provisioning of users in bulks if required.
The bulk load tool does not create the account on the mail store, although this feature
can be added for specific email stores on a custom basis.
Users can be provisioned on the fly within VxOneTM without the need for any
preliminary provisioning activity.
Since provisioning is done on the fly only the first time the user access the
application, there are no performance implications.
Page 13
Commercial in Confidence
that the user has an account on, this value will be obtained from the default properties
file.
The order of precedence is therefore:
1. Data on the LDAP server;
2. Default values from the default properties files (described in the remainder of the
chapter).
The Provisioning procedure is therefore as specified in the following diagram:
NO
Is the user
provisioned on the
VoxSurf system?
YES
Is the user
provisioned on the
system (LDAP
bind)?
Provisioning Data
NO
Notify User and Exit
First name
Last name
Registered Mobile Number
Language
Is VoxSurf Email enabled?
Is VoxSurf UM enabled?
Is VoxSurf Fax enabled?
Email address
Email Server
Email Account Type (IMAP/POP)
Email acct ID
Timestamp
Domain
Registered CLI1, CLI2, CLI3, CLI4
Is Admin of Domain, X, Y, Z
Is Root Admin
YES
Profile Data is retrieved
from the CPOC LDAP
server
Start Application
Page 14
Commercial in Confidence
4.3.1.1
User Information
The following table contains all the items that the VxOneTM LDAP Connector looks for in
the LDAP schema for specific user information.
Each of the names of the properties can be configured to make it compatible with the
particular schema. The table column Tag Example contains example values, but these
could change for each schema. E.g. the last name is sometimes assigned to an object
called sn, and sometimes (e.g. in Microsoft Exchange) to an object called surname.
Fields in bold are mandatory. All others are optional and may be left unmapped so that
default values are picked up from property files.
[1] Fields may be pre encrypted. See the corresponding boolean in
VxsProvisoning.properties.
Page 15
Commercial in Confidence
Tag ID
Tag Example
Description
Value Example
uid
56484511
DOMAIN_ID
DOMAIN_ID
0000
USER_ID
LOGIN_ID
UserId
02077599250
PIN [1]
PIN
23453266
FIRST_NAME
cn
John
LAST_NAME
Gn
Doe
FORGOTTEN_QUESTION
FORGOTTEN_QUESTION
Franklin
TITLE
TITLE
ORGANISATION
Organisation
Organisation
VoxSurf
INDUSTRY
INDUSTRY
Industry
Telecommunications
REGISTERED_EMAIL
SUBSCRIBER_NUMBER
SUBSCRIBER_NUMBER
IS_VOICEMAIL_ENABLED
IS_VOICEMAIL_ENABLED
IS_EMAIL_MESSAGING_EN IS_EMAIL_MESSAGING_ENABLED
ABLED
IS_FAX_SERVICE_ENABLE IS_FAX_SERVICE_ENABLED
D
IS_ADMINISTRATOR
ADMINISTRATOR
PHONE_MOBILE_COUNTR PHONE_MOBILE_COUNTRY_CODE
Y_CODE
CEO
false
44
44
PHONE_LAND2_REST_OF_ PHONE_LAND2_REST_OF_NUMBER
NUMBER
2077599250
Page 16
777983421
true
true
44
2077599250
true
Commercial in Confidence
4.3.1.2
2073425453
The following table contains all the items that the VxOneTM LDAP Connector looks for in
the LDAP schema for the email account of a specific user.
Each of the names of the properties can be configured to make it compatible with the
particular schema. The table column Tag Example contains example values, but these
could change for each schema. E.g. the last name is sometimes assigned to an object
called sn, and sometimes (e.g. in Microsoft Exchange) to an object called surname.
Fields in bold are mandatory. All others are optional and may be left unmapped so that
default values are picked up from property files.
[1] Fields may be pre encrypted. See the corresponding boolean in
VxsProvisoning.properties.
Tag ID
Tag Example
Description
Value Example
EMAIL_ACCT_TYPE
EMAIL_ACCT_TYPE
EMAIL_ACCT_STORE_ADDR EMAIL_ACCT_STORE_ADDRESS
ESS
EMAIL_ACCT_STORE_USER EMAIL_ACCT_STORE_USER_ID
_ID
EMAIL_ACCT_STORE_PASS EMAIL_ACCT_STORE_PASSWORD
WORD [1]
imap.voxsurf.com
Page 17
Commercial in Confidence
EMAIL_ACCT_STORE_PORT EMAIL_ACCT_STORE_PORT
EMAIL_ACCT_STORE_SSL
false
EMAIL_ACCT_EMAIL_ADDR Mail
ESS
john.doe@voxsurf.co
m
EMAIL_ACCT_NAME
EMAIL_ACCT_NAME
demo
EMAIL_ACCT_LOCKED
EMAIL_ACCT_LOCKED
true
EMAIL_ACCT_STORE_SSL
EMAIL_ACCT_ROOT_FOLDE EMAIL_ACCT_ROOT_FOLDER
R
Page 18
Commercial in Confidence
4.3.2
The VxOneTM LDAP Connector does not provide this functionality currently. The
functionality can be added by customising the user creation strategy as specified in
chapter: 4.4 Creating new Automatic Provisioning plug-in
4.3.3
4.3.4
The context must be set to adapt the LDAP connector to the specific LDAP schema.
Please consult your LDAP administrator to obtain the right context for the section in the
schema containing context information.
Page 19
Commercial in Confidence
The example that follows represents the context in a typical Microsoft Exchange 5.5.
active directory deployment. The name of the property is context and the search
string is the whole argument to the right of the first =, that is
ou=DOMAIN,o=Voxsurf,co=UK in the example.
# Context (i.e. ou=DOMAIN,o=Voxsurf,co=UK)
context=ou=DOMAIN,o=Voxsurf,co=UK
If you are unsure about the particular directory schema, a standard LDAP browser can
be used to analyse the directory structure (a powerful, easy to use LDAP browser can be
downloaded from http://www.ldapbrowser.com/). Just open the directories in the sub
tree until you localise the directory containing all the user records. The right context is
the full ID of that node.
For example, dealing with the following type of schema:
4.3.5
4.3.6
Page 20
Commercial in Confidence
Make sure that the mandatory fields for both users and email accounts (as described in
the user information and email account information tables above) are defined for all
users in the directory server.
4.3.7
By default provisioning assumes that the sensitive fields being passed in (AccountPIN,
Answer and Password) are loaded unencrypted and then encrypted internally by
VxOneTM. If however the data is pre encrypted, the provisioning mechanism must be set
to not encrypt the relevant values. This is done by setting the relevant property to false,
in the file:
[VOXSURF_PROPERTIES]\system\
4.3.8
Verify that all necessary information has been specified correctly in the files for defaults
for user accounts and email accounts. A complete guide to the default value available
can be found in section(s) Appendix 3: VxsProvisioningDefaultEmailAccount.properties
and Appendix 4: VxsProvisioningDefaultUser.properties
For example, if the system will provision users that are allowed to send faxes, a default
value
of
true
for
the
faxServiceEnabled
property
in
the
VxsProvisioningDefaultUser.properties configuration file, or, to provision users that all
have their email account on a server called, for example, imap.voxsurf.com the
property mailServerAddress, in the VxsProvisioningDefaultEmailAccount.properties
class can be modified accordingly.
4.3.9
Page 21
Commercial in Confidence
To make it point to the new strategy, place the new class in a location contained in the
application server class path and the application will use the alternative provisioning
mechanism).
5 Provisioning on Demand
5.1 Overview
As well as provisioning users automatically, VxOneTM provides a web service
interface to provision users on demand. This allows a call to be made via a SOAP
interface to the provisioning service to force a user with a given subscriber id to be
provisioned immediately.
The Web Services Description Language definition for the service can be found in
Appendix 6: Provision-on-Demand WSDL Definition.
The load method takes in a long value which represents the id of the user to be
provisioned via LDAP. This corresponds to the USER_ID tag defined in 4.3 Planning
LDAP provisioning. When the load method is called, the user is provisioned
immediately, using the same mechanism used for auto-provisioning, and the user
details are stored in the database.
If the user does not exist in the database, it will be created, and the email account
will be added. If the user already exists in the database, it will be updated. If the user
has an existing email account with the same name as the provisioned account, it will
be updated, otherwise a new account will be created.
The status code returned by the load method may be one of:
1. The user has been successfully provisioned.
2. The user has not been provisioned due to an error.
3. An exception was raised initializing the LDAP context.
Page 22
Commercial in Confidence
User Administration
o
The Web Services Description Language definition for the administration service can be
found in Appendix 7.
The SOAP Interface also has an XML schema, the VoxSurf.xsd that defines valid
requests and responses, and can be found in Appendix 8.
Attribute
User
ID
LoginID
FirstName
LastName
primaryEmailAddress
Description
A synthetic user account ID that is unique across all users and domains.
If this is not specified in the create method, VxOne will generate one
internally.
This is the VoxSurf account login ID. It is unique to the user and used, by
the user, to log in to the VoxSurf Email application. In the edit mode the
administrator cannot modify this field, as it must remain unique to the user.
This is the users first name,
This is the users last name.
This is the users primary email address. It is the address that the login
details will be sent to when the user has answered their security question
Page 23
Commercial in Confidence
Attribute
AccountLocked
Administrator
AuthenticationAccountId
ClassOfService
domainID
ForgottenAnswer
ForgottenQuestion
Locale
NumberOfVisits
PIN
PinChangeRequired
PinProtection
SubscriberNumber
TimeZone
VoiceboxCountryCode
VoiceboxNumber
EmailDestinations
HtmlLookAndFeel
FaxEnabled
MessagesPerPage
Speed
Volume
Persona
voicemailMmsDirect
VoicemailEnabled 1
emailEnabled
StartPoints
Title
Organisation
Industry
Description
correctly.
This is a flag to indicate whether the users account is locked. After a
configurable number of failed login attempts, a users account will be
locked for security
This sets Administrator status for the user.
This is a secondary authentication account identifier for the user. If VxOne
is configured to use an external authentication mechanism, this is the
identifier that will be passed through.
This defines the users class of service, which defines a logical grouping of
users for which application attributes can be configured.
This is the ID of the domain that a user belongs to.
This is the answer to the users security question.
This is the security question that will be asked on the Forgotten Personal
Identification Number screen in the HTML Email application if the user
forgets their login details.
This is the users choice of language for the VoxSurf Email application (this
is not applicable to the Voice application). The options within this drop
down are taken from the VxsLanguages.properties file, which lists the
supported languages. This overwrites the machine locale when the user
logs in.
This is the number of times the user has accessed the VoxSurf application.
This is the users login password. It is used in association with the users
Account Number to log in to the Voxsurf Email application.
This defines whether this account is protected by a PIN.
This defines whether a user can disable PIN authentication for login when
using a registered device.
This is the users WAP registration number. It is automatically added when
the user accesses the WAP application.
This is the users local time zone, which is used to localise time stamps on
messages within VxOne. The options within this drop down are taken from
the VxsTimeZones.properties file, which lists the supported time zones.
This is the country code of the DDI voicebox number
This is the DDI number that a call must be diverted to or called directly to
leave the user a voicemail message.
This sets where the user is taken to after saying the global command go
to email in the Voice application.
This specifies which look and feel should be used for the html interface.
This sets whether the fax service is enabled for the user.
This sets the number of messages displayed per page on the HTML Email
application folder view page.
This is the words spoken per minute by the Voice application. It ranges
between 20 and 300 and has a default value of 135.
This is the volume setting for the Voice application. It ranges between 1
and 10 and has a default value of 8.
This sets the style of the Voice application. Changing the persona
changes the voice of the application, and the commands the user can give
the application.
This checkbox determines whether the user requires their voicemails to be
sent to them as MMS attachments directly to their mobile phone rather
than being sent as audio files to their email account.
This defines whether the user has access to the Voicemail service. If the
voicemail service is disabled through shadow properties this value cannot
be set on a per user basis.
This defines whether the user has access to the Email service.
This sets where the user is taken to after logging in successfully to the
Voice application.
This is the users title e.g. Mr., Mrs.
This is the organisation that the user works for.
This is the industry that the user works in.
Page 24
The email account ID. This is created by VxOne, but required for the other
operations on this profile (such as updating and deleting).
Commercial in Confidence
Attribute
Description
emailAccountName
This is the name of the email account. This name may not be the same as
that for another email account for the selected user.
Flag to set this account as primary. There must always be one and only
one primary email account.
This is the users email name. It is the name that will be displayed when
someone receives an email sent from the selected account.
This is the email address for the selected account. Reply to This is the
email address for replies to emails sent from the selected account..
Flag to indicate the selected account as locked. The user in the HTML
Email application cannot edit any account that is locked. The administrator,
however, can always edit an email account through the administration tool
Enables the selected account as the voice mail account.
This is the selected email accounts mail server, e.g. pop.mail.yahoo.com
These define what type of server protocol the account uses. Valid types
are either POP3, IMAP4, or Exchange.
This is the server port number. This is defaulted to 143 for IMAP 4
accounts and 110 for POP3 accounts.
This defines whether the mail protocol is encrypted over SSL.
The name of the SMTP server
The port of the SMTP server. IMAP email settings
This is the users user name for the selected email account
This is the users password for the selected email account.
This is the users reply to email address.
The name of the folder used to store sent messages.
The name of the folder used to store deleted messages
The name of the folder used to store draft messages
Enables the deleted mail folder.
Enables the drafts mail folder.
Enables the sent mail folder.
This should be specified if the users personal folders exist below a folder
other than the default root folder. Usually inbox
This is the name of the NT Domain which the Exchange server is in.
This specifies whether the Exchange account should be used as the
source for contacts within VxOne
This specifies whether the Exchange account should be used as the
source for calendaring within VxOne
This specifies whether the Exchange account should be used as the
source for tasks within VxOne
PrimaryAccount
EmailName
EmailAddress
Locked
VoiceMail
ServerAddress
ServerType
ServerPort
SslRequired
SmtpServerAddress
SmtpServerPort
UserName.
Password
ReplyTo
SentMailFolder 2
DeletedMailFolder 2
DraftsMailFolder 2
EnableDeletedMail 2,4
EnableDraftsMail 2,4
EnableSentMail 2,4
RootFolder 2
NTDomain 3
ContactsSource. 3
CalendarSource. 3
TasksSource. 3
Page 25
Commercial in Confidence
Each SOAP administration method requires a different set of required and optional and
attributes. The method can return either an XML document with the attributes listed
below, or an error response with an error code and message detailed in the following
section.
Method
Required Attributes
Optional Attributes
Returned Attributes
createUser
LoginID
FirstName
LastName
PrimaryEmailAddress
Id
AccountLocked
Administrator
AuthenticationAccountId
ClassOfService
DomainId
ForgottenAnswer
ForgottenQuestion
Locale
NumberOfVisits
Pin
PinChangeRequired
PinProtection
SubscriberNumber
TimeZone
VoiceboxCountryCode
VoiceboxNumber
EmailDestinations
HtmlLookAndFeel
MessagesPerPage
Persona
Speed
StartPoints
VoicemailMmsDirect
Industry
Organisation
Title
FirstName
LastName
AccountNumber
DomainID
EmailAddress
MatchCase
MatchWholeWord
UserID
retrieveUsers
retrieveUserDetails
Page 26
userID
List of
UserID
accountNumber
FirstName
LastName
EmailAddress
DomainID
DomainID
ClassOfService
accountNumber
PINChangeRequired
AuthenticationAccountID
AccountLocked
Question
Answer
PrimaryEmailAddress
FirstName
LastName
Title
Organisation
Industry
NumberOfVisits
FaxService
Speed
Volume
Language
TimeZone
Administrator
HtmlLookAndFeel
Persona
PinProtection
VoicemailEnabled
EmailEnabled
Voicebox Number
Commercial in Confidence
Method
Required Attributes
Optional Attributes
Returned Attributes
VoicemailMmsDirect
VoicemailNotificationOption
StartPoint
EmailDestination
updateUserDetails
UserID
AccountLocked
Administrator
AuthenticationAccountId
ClassOfService
DomainId
ForgottenAnswer
ForgottenQuestion
Locale
NumberOfVisits
Pin
PinChangeRequired
PinProtection
SubscriberNumber
TimeZone
VoiceboxCountryCode
VoiceboxNumber
EmailDestination
HtmlLookAndFeel
MessagesPerPage
Persona
Speed
StartPoint
Volume
VoicemailMmsDirect
FirstName
Industry
LastName
Organisation
PrimaryEmailAddress
Title
deleteUser
userID
createEmailAccount
EmailAccountName
EmailAddress
EmailName
Locked
Password
PrimaryAccount
ServerAddress
ServerType
UserName
Voicemail
retrieveEmailAccounts
userID
CalendarSource
ContactsSource
DeletedMailFolder
DraftsMailFolder
EnableDeletedMail
EnableDraftsMail
EnableSentMail
NTDomain
ReplyTo
RootFolder
SentMailFolder
ServerAddress
ServerPort
SMTPServerAddress
SMTPServerPort
SSLRequired
TasksSource
emailAccountID
List of
retrieveEmailAccountDetails
emailAccountID
emailAccountID
CalendarSource
ContactsSource
DeletedMailFolder
DraftsMailFolder
EmailAccountName
EmailAddress
EmailName
EnableDeletedMail
EnableDraftsMail
EnableSentMail
Locked
NTDomain
Page 27
Commercial in Confidence
Method
Required Attributes
Optional Attributes
Returned Attributes
Password
PrimaryAccount
ReplyTo
RootFolder
SentMailFolder
ServerAddress
ServerPort
ServerType
SMTPServerAddress
SMTPServerPort
SSLRequired
TasksSource
UserName
Voicemail
updateEmailAccountDetails
emailAccountID
deleteEmailAccount
emailAccountID
retrieveRegisteredDevices
userID
CalendarSource
ContactsSource
DeletedMailFolder
DraftsMailFolder
EmailAccountName
EmailAddress
EmailName
EnableDeletedMail
EnableDraftsMail
EnableSentMail
Locked
NTDomain
Password
PrimaryAccount
ReplyTo
RootFolder
SentMailFolder
ServerAddress
ServerPort
ServerType
SMTPServerAddress
SMTPServerPort
SSLRequired
TasksSource
UserName
Voicemail
AdvancedNotificationEnabled
AdvancedNotificationMethod
BasicNotificationEnabled
List of
CountryCode
DeviceType
MessageDepositEnabled
NationalCode
PinRequired
updateRegisteredDeviceDetails UserID
AdvancedNotificationEnabled
AdvancedNotificationMethod
List of
BasicNotificationEnabled
CountryCode
DeviceType
MessageDepositEna
bled
NationalCode
PinRequired
Page 28
Commercial in Confidence
Once a request has been made to the administration SOAP interface, a response XML
document is generated that contains a status code indicating whether the request was
successful or not.
The caller of the service will receive a XML document as a response. It can contain a number
of status messages, each of which has a code and value, which can be broken down into
three groups, success, exception and failure.
Success
Code 0 in the response means the response was carried out successfully.
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service>UpdateEmailAccount</Service>
<Status>
<StatusMessage>
<Code>0</Code>
</StatusMessage>
</Status>
</VoxSurf>
Exception
Code 2 in the response means that an exception has occurred whilst processing the
request. If the exception has a message associated it becomes the Value.
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service>UpdateEmailAccount</Service>
<Status>
<StatusMessage>
<Code>2</Code>
<Value>Values Missing during mapping</Value>
</StatusMessage>
</Status>
</VoxSurf>
Failure
Before the response is carried out a number of validation checks are done on the
information contained within the response. If any problems are found during the
validation a specific code and value are produced for each error. Only after all the
values are deemed to be valid will the requested service be fulfilled.
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service>CreateEmailAccount</Service>
<Status>
<StatusMessage>
<Code>5006</Code>
<Value>missing email address</Value>
</StatusMessage>
<StatusMessage>
<Code>5008</Code>
<Value>missing pop server</Value>
</StatusMessage>
</Status>
</VoxSurf>
Value
1
3
1001
1002
1003
1004
1005
Page 29
Commercial in Confidence
1006
1007
1007
1008
1008
1009
1009
2001
2002
2006
2007
2008
2009
2011
2012
2013
2014
2017
2018
2019
2020
2021
2024
2025
2026
2027
2028
2033
2039
2040
2041
2042
2043
2044
2045
2046
3001
3002
3003
3004
3005
3006
3007
3008
4018
4019
4020
4044
4045
5001
5002
5003
5005
5006
5008
5009
5011
5017
5018
5020
5021
5024
Page 30
{order number device appers in request} number has already been used
{order number device appers in request} number has already been used Message desposit field
must be a boolean
Device {order number device appears in request} Message desposit field must be a boolean
{order number device appears in request} number has already been used Pin required field must be
a boolean
Device {order number device appears in request} Pin required field must be a boolean
{order number device appears in request} number has already been used has invalid device type.
Device {order number device appears in request} has invalid device type.
Invalid PIN number
No PIN has been entered
The account number must be between $1 and $2 digits
Invalid account number
No first name has been entered
No last name has been entered
No question has been entered
No answer has been entered
No title has been entered
No email address has been entered
Number of visits is invalid
Number of messages per HTML page is invalid
Speed must be between 20 and 300
Volume must be between 1 and 100
Number of messages per HTML page is not within range
No more users can be added to this domain
That domain does not exist
Invalid domain Id
Invalid registered email address
No account number has been entered
Invalid Administrator Boolean
Account number already taken
Invalid password change required field
Invalid PIN protection value
User Id already in use
User not found
Email destination must be of specified enum value
Start point must be of specified enum value
Invalid User Id
Invalid subscriber number
Voice box number in use
Invalid voice box number
Invalid voice box number country code
voice box number not allowed
Missing voice box number
Missing voice box country code
Invalid Voice MMS Direct Field
boolean value must be entered for advanced notification enabled
boolean value must be entered for basic notification enabled
Advanced notification method must be of enum value.
Email destination must be of specified enum value
Start point must be of specified enum value
email account exists
missing account name
No user name has been entered
missing user name
No email address has been entered
missing pop server
missing pop server port
missing smtp server port
The sent mail folder name entered is too long.
The deleted items folder name entered is too long.
Invalid registered email address
Invalid reply email address
Invalid sent mail folder name
Commercial in Confidence
5025
5026
5027
5028
5032
5033
5034
5035
5036
5037
5038
5039
5040
6.5.1
CreateUser service
This method creates a new user using the information provided in the parameters.
The userID of the new account is returned.
Page 31
Commercial in Confidence
6.5.1.1
Request Schema
Page 32
Commercial in Confidence
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PersonalSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:FirstName" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:Industry" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:LastName" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:Organisation" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:PrimaryEmailAddress" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:Title" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="EmailDestinations">
<xs:annotation>
<xs:documentation>The place the voice app should go after saying "go to email". P=Primary
Account, M=Main Menu</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="M"/>
<xs:enumeration value="P"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="StartPoints">
<xs:annotation>
<xs:documentation>The voice app entry point. E=Email, T=Top, V=Voicemail</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="E"/>
<xs:enumeration value="T"/>
<xs:enumeration value="V"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="AccountLocked" type="xs:boolean"/>
<xs:element name="Administrator" type="xs:boolean"/>
<xs:element name="AuthenticationAccountId" type="xs:string"/>
<xs:element name="ClassOfService" type="xs:string"/>
<xs:element name="DomainId" type="xs:string"/>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="ForgottenAnswer" type="xs:string"/>
<xs:element name="ForgottenQuestion" type="xs:string"/>
<xs:element name="HtmlLookAndFeel" type="xs:string"/>
<xs:element name="Industry" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
<xs:element name="Locale" type="xs:string"/>
<xs:element name="LoginId" type="xs:string"/>
<xs:element name="MessagesPerPage" type="xs:int"/>
<xs:element name="NumberOfVisits" type="xs:int"/>
<xs:element name="Organisation" type="xs:string"/>
<xs:element name="PrimaryEmailAddress" type="xs:string"/>
<xs:element name="Persona" type="xs:string"/>
<xs:element name="Pin" type="xs:string"/>
<xs:element name="PinChangeRequired" type="xs:boolean"/>
<xs:element name="PinProtection" type="xs:boolean"/>
<xs:element name="Speed" type="xs:int"/>
<xs:element name="StatusCode" type="xs:int"/>
<xs:element name="SubscriberNumber" type="xs:string"/>
<xs:element name="TimeZone" type="xs:string"/>
<xs:element name="Title" type="xs:string"/>
<xs:element name="VoiceboxCountryCode" type="xs:string"/>
<xs:element name="VoiceboxNumber" type="xs:string"/>
<xs:element name="VoicemailMmsDirect" type="xs:boolean"/>
<xs:element name="Volume" type="xs:int"/>
</xs:schema>
Page 33
Commercial in Confidence
6.5.1.2
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.voxsurf.com/provisioning/messaging createUserRequest.xsd">
<Service>CreateUser</Service>
<User id="999">
<AccountSettings>
<AccountLocked>false</AccountLocked>
<Administrator>true</Administrator>
<AuthenticationAccountId>authId</AuthenticationAccountId>
<ClassOfService>Gold</ClassOfService>
<DomainId>0000</DomainId>
<ForgottenAnswer>answer</ForgottenAnswer>
<ForgottenQuestion>question</ForgottenQuestion>
<Locale>en_GB</Locale>
<LoginId>99775533</LoginId>
<NumberOfVisits>0</NumberOfVisits>
<Pin>1234</Pin>
<PinChangeRequired>false</PinChangeRequired>
<PinProtection>false</PinProtection>
<SubscriberNumber>192837465</SubscriberNumber>
<TimeZone>Europe/London</TimeZone>
<VoiceboxCountryCode>44</VoiceboxCountryCode>
<VoiceboxNumber>8833774466</VoiceboxNumber>
</AccountSettings>
<InterfaceSettings>
<EmailDestination>M</EmailDestination>
<HtmlLookAndFeel>Mercier</HtmlLookAndFeel>
<MessagesPerPage>25</MessagesPerPage>
<Persona>Paula</Persona>
<Speed>10</Speed>
<StartPoint>T</StartPoint>
<Volume>10</Volume>
</InterfaceSettings>
<NotificationSettings>
<VoicemailMmsDirect>false</VoicemailMmsDirect>
</NotificationSettings>
<PersonalSettings>
<FirstName>FirstName</FirstName>
<Industry>Telecom</Industry>
<LastName>LastName</LastName>
<Organisation>Organisation</Organisation>
<PrimaryEmailAddress>tester1@voxsurf.com</PrimaryEmailAddress>
<Title>CEO</Title>
</PersonalSettings>
</User>
</VoxSurf>
6.5.1.3
Response schema
Page 34
Commercial in Confidence
</xs:complexType>
</xs:element>
<xs:element name="Service" type="xs:string"/>
<xs:element name="Status">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:StatusMessage" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="StatusMessage">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:Code" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Value" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Code" type="xs:int"/>
<xs:element name="Value" type="xs:string"/>
<xs:element name="User">
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
6.5.1.4
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service>CreateUser</Service>
<Status>
<StatusMessage>
<Code>0</Code>
</StatusMessage>
</Status>
<User id="533"/>
</VoxSurf>
6.5.2
CreateCompleteCWUser Service
LoginId
6.5.2.1
Request Schema
Page 35
Commercial in Confidence
6.5.2.2
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.voxsurf.com/provisioning/messaging createCompleteUserRequest.xsd">
<Service>CreateCompleteCWUserr</Service>
<User>
<AccountSettings>
<LoginId>0812345678</LoginId>
<ClassOfService>AdvancedVoicemailWithContacts</ClassOfService>
<Locale>th</Locale>
<Pin>7531</Pin>
</AccountSettings>
<NotificationSettings>
<ECCEnabled>false</ECCEnabled>
</NotificationSettings>
</User>
</VoxSurf>
6.5.2.3
Response Schema
Page 36
Commercial in Confidence
</xs:complexType>
</xs:element>
<xs:element name="Service" type="xs:string"/>
<xs:element name="Status">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:StatusMessage" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="StatusMessage">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:Code" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Value" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Code" type="xs:int"/>
<xs:element name="Value" type="xs:string"/>
</xs:schema>
6.5.2.4
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service>CreateCompleteUser</Service>
<Status>
<StatusMessage>
<Code>0</Code>
</StatusMessage>
</Status>
</VoxSurf>
6.5.3
RetrieveUsers service
This method retrieves the userIDs of subscribers for a given set of criteria.
6.5.3.1
Request Schema
<xs:schema targetNamespace="http://www.voxsurf.com/provisioning/messaging"
xmlns:vxp="http://www.voxsurf.com/provisioning/messaging" xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="VoxSurf">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:Service" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:User" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="User">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:AccountSettings" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:PersonalSettings" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="AccountSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:DomainId" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:LoginId" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
Page 37
Commercial in Confidence
</xs:complexType>
</xs:element>
<xs:element name="PersonalSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:FirstName" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:LastName" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:PrimaryEmailAddress" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DomainId">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="FirstName">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="LastName">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="LoginId">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="PrimaryEmailAddress">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Service" type="xs:string"/>
</xs:schema>
6.5.3.2
Page 38
Commercial in Confidence
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.voxsurf.com/provisioning/messaging retrieveUsersRequest.xsd">
<Service>RetrieveUsers</Service>
<User>
<AccountSettings>
<DomainId matchCase="false" matchWholeWord="false">0000</DomainId>
<LoginId matchCase="false" matchWholeWord="false"></LoginId>
</AccountSettings>
<PersonalSettings>
<FirstName matchCase="false" matchWholeWord="false"></FirstName>
<LastName matchCase="false" matchWholeWord="false"></LastName>
<PrimaryEmailAddress matchCase="false" matchWholeWord="false"></PrimaryEmailAddress>
</PersonalSettings>
</User>
</VoxSurf>
6.5.3.3
Response schema
Page 39
Commercial in Confidence
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PersonalSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:FirstName"/>
<xs:element ref="vxp:LastName"/>
<xs:element ref="vxp:PrimaryEmailAddress"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DomainId">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="FirstName">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="LastName">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="LoginId">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="PrimaryEmailAddress">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
Page 40
Commercial in Confidence
6.5.3.4
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service>RetrieveUsers</Service>
<Status>
<StatusMessage>
<Code>0</Code>
</StatusMessage>
</Status>
<User id="1">
<AccountSettings>
<DomainId>0000</DomainId>
<LoginId>99999999</LoginId>
</AccountSettings>
<PersonalSettings>
<FirstName>Root Administrator</FirstName>
<LastName>Root Administrator</LastName>
<PrimaryEmailAddress>support@voxsurf.com</PrimaryEmailAddress>
</PersonalSettings>
</User>
<User id="2">
<AccountSettings>
<DomainId>0000</DomainId>
<LoginId>11335577</LoginId>
</AccountSettings>
<PersonalSettings>
<FirstName>Timo</FirstName>
<LastName>Ahokas</LastName>
<PrimaryEmailAddress>timo.ahokas@voxsurf.com</PrimaryEmailAddress>
</PersonalSettings>
</User>
<User id="533">
<AccountSettings>
<DomainId>0000</DomainId>
<LoginId>99775533</LoginId>
</AccountSettings>
<PersonalSettings>
<FirstName>FirstName</FirstName>
<LastName>LastName</LastName>
<PrimaryEmailAddress>tester1@voxsurf.com</PrimaryEmailAddress>
</PersonalSettings>
</User>
</VoxSurf>
6.5.4
RetrieveUserDetails service
This method retrieves the complete user details for a given userID.
6.5.4.1
Request schema
Page 41
Commercial in Confidence
</xs:element>
</xs:schema>
6.5.4.2
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.voxsurf.com/provisioning/messaging retrieveUserDetailsRequest.xsd">
<Service>RetrieveUserDetails</Service>
<User id="533"/>
</VoxSurf>
6.5.4.3
Response schema
Page 42
Commercial in Confidence
Page 43
Commercial in Confidence
<xs:enumeration value="V"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="AccountLocked" type="xs:boolean"/>
<xs:element name="Administrator" type="xs:boolean"/>
<xs:element name="AuthenticationAccountId" type="xs:string"/>
<xs:element name="ClassOfService" type="xs:string"/>
<xs:element name="DomainId" type="xs:string"/>
<xs:element name="EmailEnabled" type="xs:boolean"/>
<xs:element name="FaxEnabled" type="xs:boolean"/>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="ForgottenAnswer" type="xs:string"/>
<xs:element name="ForgottenQuestion" type="xs:string"/>
<xs:element name="HtmlLookAndFeel" type="xs:string"/>
<xs:element name="Industry" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
<xs:element name="Locale" type="xs:string"/>
<xs:element name="LoginId" type="xs:string"/>
<xs:element name="MessagesPerPage" type="xs:int"/>
<xs:element name="NumberOfVisits" type="xs:int"/>
<xs:element name="Organisation" type="xs:string"/>
<xs:element name="PrimaryEmailAddress" type="xs:string"/>
<xs:element name="Persona" type="xs:string"/>
<xs:element name="Pin" type="xs:string"/>
<xs:element name="PinChangeRequired" type="xs:boolean"/>
<xs:element name="PinProtection" type="xs:boolean"/>
<xs:element name="Speed" type="xs:int"/>
<xs:element name="StatusCode" type="xs:int"/>
<xs:element name="SubscriberNumber" type="xs:string"/>
<xs:element name="TimeZone" type="xs:string"/>
<xs:element name="Title" type="xs:string"/>
<xs:element name="VoiceboxCountryCode" type="xs:string"/>
<xs:element name="VoiceboxNumber" type="xs:string"/>
<xs:element name="VoicemailEnabled" type="xs:boolean"/>
<xs:element name="VoicemailMmsDirect" type="xs:boolean"/>
<xs:element name="Volume" type="xs:int"/>
</xs:schema>
6.5.4.4
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service>RetrieveUserDetails</Service>
<Status>
<StatusMessage>
<Code>0</Code>
</StatusMessage>
</Status>
<User id="533">
<AccountSettings>
<AccountLocked>false</AccountLocked>
<Administrator>true</Administrator>
<AuthenticationAccountId>authId</AuthenticationAccountId>
<ClassOfService>Gold</ClassOfService>
<DomainID>0000</ DomainID >
<ForgottenAnswer>answer</ForgottenAnswer>
<ForgottenQuestion>question</ForgottenQuestion>
<Locale>en_GB</Locale>
<LoginId>99775533</LoginId>
<NumberOfVisits>0</NumberOfVisits>
<Pin>1234</Pin>
<PinChangeRequired>false</PinChangeRequired>
<PinProtection>false</PinProtection>
<SubscriberNumber>192837465</SubscriberNumber>
<TimeZone>Europe/London</TimeZone>
<VoiceboxCountryCode>44</VoiceboxCountryCode>
<VoiceboxNumber>8833774466</VoiceboxNumber>
Page 44
Commercial in Confidence
</AccountSettings>
<InterfaceSettings>
<EmailDestination>M</EmailDestination>
<HtmlLookAndFeel>Mercier</HtmlLookAndFeel>
<MessagesPerPage>25</MessagesPerPage>
<Persona>Paula</Persona>
<Speed>10</Speed>
<StartPoint>T</StartPoint>
<Volume>10</Volume>
</InterfaceSettings>
<NotificationSettings>
<VoicemailMmsDirect>false</VoicemailMmsDirect>
<VoicemailNotificationType>S</VoicemailNotificationType>
</NotificationSettings>
<PersonalSettings>
<FirstName>FirstName</FirstName>
<Industry>Telecom</Industry>
<LastName>LastName</LastName>
<Organisation>Organisation</Organisation>
<PrimaryEmailAddress>tester1@voxsurf.com</PrimaryEmailAddress>
<Title>CEO</Title>
</PersonalSettings>
</User>
</VoxSurf>
6.5.5
RetrieveUserDetailsByLogin
Request Schema
6.5.5.2
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.voxsurf.com/provisioning/messaging RetrieveSpecificUserDetails.xsd">
<Service>RetrieveUserDetailsByLogin</Service>
<User LoginId="0812457863">
</User>
</VoxSurf>
6.5.5.3
Response schema
Page 45
Commercial in Confidence
<xs:schema targetNamespace="http://www.voxsurf.com/provisioning/messaging"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vxp="http://www.voxsurf.com/provisioning/messaging"
elementFormDefault="qualified">
<xs:element name="VoxSurf">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:Service" minOccurs="1" maxOccurs="1"/>
<xs:sequence>
<xs:element ref="vxp:Status" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:element ref="vxp:User" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Service" type="xs:string"/>
<xs:element name="Status">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:StatusMessage" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="StatusMessage">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:Code" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Value" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Code" type="xs:int"/>
<xs:element name="Value" type="xs:string"/>
<xs:element name="User">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:AccountSettings" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:InterfaceSettings" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:NotificationSettings" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:PersonalSettings" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="AccountSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:AccountLocked" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Administrator" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:AuthenticationAccountId" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:ClassOfService" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:DomainId" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:EmailEnabled" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:FaxEnabled" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:ForgottenAnswer" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:ForgottenQuestion" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Locale" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:LoginId" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:NumberOfVisits" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Pin" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:PinChangeRequired" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:PinProtection" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:SubscriberNumber" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:TimeZone" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:VoiceboxCountryCode" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:VoiceboxNumber" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:VoicemailEnabled" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
Page 46
Commercial in Confidence
</xs:complexType>
</xs:element>
<xs:element name="InterfaceSettings">
<xs:complexType>
<xs:sequence>
<xs:element name="EmailDestination" type="vxp:EmailDestinations" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="vxp:HtmlLookAndFeel" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:MessagesPerPage" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Persona" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Speed" minOccurs="0" maxOccurs="1"/>
<xs:element name="StartPoint" type="vxp:StartPoints" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Volume" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="NotificationSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:VoicemailMmsDirect" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PersonalSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:FirstName" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:Industry" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:LastName" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:Organisation" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:PrimaryEmailAddress" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:Title" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="EmailDestinations">
<xs:annotation>
<xs:documentation>The place the voice app should go after saying "go to email". P=Primary
Account, M=Main Menu</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="M"/>
<xs:enumeration value="P"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="StartPoints">
<xs:annotation>
<xs:documentation>The voice app entry point. E=Email, T=Top, V=Voicemail</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="E"/>
<xs:enumeration value="T"/>
<xs:enumeration value="V"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="AccountLocked" type="xs:boolean"/>
<xs:element name="Administrator" type="xs:boolean"/>
<xs:element name="AuthenticationAccountId" type="xs:string"/>
<xs:element name="ClassOfService" type="xs:string"/>
<xs:element name="DomainId" type="xs:string"/>
<xs:element name="EmailEnabled" type="xs:boolean"/>
<xs:element name="FaxEnabled" type="xs:boolean"/>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="ForgottenAnswer" type="xs:string"/>
<xs:element name="ForgottenQuestion" type="xs:string"/>
<xs:element name="HtmlLookAndFeel" type="xs:string"/>
<xs:element name="Industry" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
Page 47
Commercial in Confidence
6.5.5.4
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service>RetrieveUserDetailsByLogin</Service>
<Status>
<StatusMessage>
<Code>0</Code>
</StatusMessage>
</Status>
<User id="899223389">
<AccountSettings>
<AccountLocked>false</AccountLocked>
<Administrator>false</Administrator>
<ClassOfService>Everything</ClassOfService>
<DomainId>0000</DomainId>
<ForgottenAnswer>42</ForgottenAnswer>
<ForgottenQuestion>What is the answer?</ForgottenQuestion>
<Locale>en_GB</Locale>
<LoginId>0812457863</LoginId>
<NumberOfVisits>0</NumberOfVisits>
<Pin>1357</Pin>
<PinChangeRequired>false</PinChangeRequired>
<TimeZone>GMT-05:00</TimeZone>
</AccountSettings>
<InterfaceSettings>
<EmailDestination>M</EmailDestination>
<HtmlLookAndFeel>styled</HtmlLookAndFeel>
<MessagesPerPage>5</MessagesPerPage>
<Speed>135</Speed>
<StartPoint>T</StartPoint>
<Volume>50</Volume>
</InterfaceSettings>
<NotificationSettings>
<VoicemailMmsDirect>false</VoicemailMmsDirect>
</NotificationSettings>
<PersonalSettings>
<FirstName>0812457863</FirstName>
<Industry/>
<LastName>0812457863</LastName>
<Organisation/>
<PrimaryEmailAddress>899223389@voxsurfdev.com</PrimaryEmailAddress>
<Title>title</Title>
</PersonalSettings>
</User>
</VoxSurf>
Page 48
Commercial in Confidence
6.5.6
RetrieveSpecificUserDetails service
Request Schema
6.5.6.2
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.voxsurf.com/provisioning/messaging createUserRequest.xsd">
<Service>RetrieveUserDetailsByLogin</Service>
<User LoginId="0812457863">
</User>
</VoxSurf>
6.5.6.3
Response schema
Page 49
Commercial in Confidence
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="StatusMessage">
<xs:complexType>
<xs:sequence>
<xs:element ref="Code"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="User">
<xs:complexType>
<xs:sequence>
<xs:element ref="AccountSettings"/>
<xs:element ref="NotificationSettings"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="VoxSurf">
<xs:complexType>
<xs:sequence>
<xs:element ref="Service"/>
<xs:element ref="Status"/>
<xs:element ref="User"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
6.5.6.4
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.voxsurf.com/provisioning/messaging
retrieveSpecificUserDetailsResponse.xsd">
<Service>RetrieveSpecificUserDetails</Service>
<Status>
<StatusMessage>
<Code>0</Code>
</StatusMessage>
</Status>
<User>
<AccountSettings>
<ClassOfService>AdvancedVoicemailWithContacts</ClassOfService>
<Locale>th</Locale>
<LoginId>0812345678</LoginId>
</AccountSettings>
<NotificationSettings>
<ECCEnabled>true</ECCEnabled>
</NotificationSettings>
</User>
</VoxSurf>
6.5.7
UpdateUser service
Request Schema
Page 50
Commercial in Confidence
<xs:sequence>
<xs:element ref="vxp:Service" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:User" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="User">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:AccountSettings" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:InterfaceSettings" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:NotificationSettings" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:PersonalSettings" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="AccountSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:AccountLocked" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Administrator" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:AuthenticationAccountId" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:ClassOfService" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:DomainId" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:ForgottenAnswer" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:ForgottenQuestion" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Locale" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:LoginId" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:NumberOfVisits" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Pin" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:PinChangeRequired" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:PinProtection" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:SubscriberNumber" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:TimeZone" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:VoiceboxCountryCode" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:VoiceboxNumber" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InterfaceSettings">
<xs:complexType>
<xs:sequence>
<xs:element name="EmailDestination" type="vxp:EmailDestinations" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="vxp:HtmlLookAndFeel" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:MessagesPerPage" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Persona" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Speed" minOccurs="0" maxOccurs="1"/>
<xs:element name="StartPoint" type="vxp:StartPoints" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Volume" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="NotificationSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:VoicemailMmsDirect" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PersonalSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:FirstName" minOccurs="0" maxOccurs="1"/>
Page 51
Commercial in Confidence
6.5.7.2
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.voxsurf.com/provisioning/messaging updateUserRequest.xsd">
<Service>UpdateUser</Service>
Page 52
Commercial in Confidence
<User id="99775533">
<AccountSettings>
<AccountLocked>false</AccountLocked>
<Administrator>false</Administrator>
<AuthenticationAccountId>authId</AuthenticationAccountId>
<ClassOfService>Gold</ClassOfService>
<DomainId>0000</DomainId>
<ForgottenAnswer>answer</ForgottenAnswer>
<ForgottenQuestion>question</ForgottenQuestion>
<Locale>en_GB</Locale>
<NumberOfVisits>0</NumberOfVisits>
<Pin>1234</Pin>
<PinChangeRequired>false</PinChangeRequired>
<PinProtection>false</PinProtection>
<SubscriberNumber>192837465</SubscriberNumber>
<TimeZone>Europe/London</TimeZone>
<VoiceboxCountryCode>44</VoiceboxCountryCode>
<VoiceboxNumber>8833774455</VoiceboxNumber>
</AccountSettings>
<InterfaceSettings>
<EmailDestination>P</EmailDestination>
<HtmlLookAndFeel>Mercier</HtmlLookAndFeel>
<MessagesPerPage>20</MessagesPerPage>
<Persona>Paula</Persona>
<Speed>10</Speed>
<StartPoint>T</StartPoint>
<Volume>10</Volume>
</InterfaceSettings>
<NotificationSettings>
<VoicemailMmsDirect>false</VoicemailMmsDirect>
</NotificationSettings>
<PersonalSettings>
<FirstName>First</FirstName>
<Industry>Finance</Industry>
<LastName>Last</LastName>
<Organisation>Organisation</Organisation>
<PrimaryEmailAddress>test@voxsurf.com</PrimaryEmailAddress>
<Title>CEO</Title>
</PersonalSettings>
</User>
</VoxSurf>
6.5.7.3
Response schema
Page 53
Commercial in Confidence
</xs:element>
<xs:element name="StatusMessage">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:Code" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Value" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Code" type="xs:int"/>
<xs:element name="Value" type="xs:string"/>
</xs:schema>
6.5.7.4
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service>UpdateUser</Service>
<Status>
<StatusMessage>
<Code>0</Code>
</StatusMessage>
</Status>
</VoxSurf>
6.5.8
UpdateCWUserIdentifiedByLogin service
This method updates PIN, ClassOfService, Locale and ECC notification settings.
6.5.8.1
Request schema
Page 54
Commercial in Confidence
</xs:complexType>
</xs:element>
<xs:element name="VoxSurf">
<xs:complexType>
<xs:sequence>
<xs:element ref="Service"/>
<xs:element ref="User"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
6.5.8.2
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.voxsurf.com/provisioning/messaging
updateUserIdentifiedByLoginRequest.xsd">
<Service> UpdateCWUserIdentifiedByLogin </Service>
<User LoginId="0812345678">
<AccountSettings>
<ClassOfService>AdvancedVoicemailWithContacts</ClassOfService>
<Locale>en</Locale>
<Pin>1357</Pin>
</AccountSettings>
<NotificationSettings>
<ECCEnabled>false</ECCEnabled>
</NotificationSettings>
</User>
</VoxSurf>
6.5.8.3
Response Schema
Page 55
Commercial in Confidence
6.5.8.4
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service>UpdateCWUserIdentifiedByLogin </Service>
<Status>
<StatusMessage>
<Code>0</Code>
</StatusMessage>
</Status>
</VoxSurf>
6.5.9
UpdateCWUserMSISDN
Request schema
<xs:schema targetNamespace="http://www.voxsurf.com/provisioning/messaging"
xmlns:vxp="http://www.voxsurf.com/provisioning/messaging" xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="AccountSettings">
<xs:complexType>
<xs:sequence>
<xs:element ref="NewLoginId"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="NewLoginId" type="xs:string"/>
<xs:element name="Service" type="xs:string"/>
<xs:element name="User">
<xs:complexType>
<xs:sequence>
<xs:element ref="AccountSettings"/>
</xs:sequence>
<xs:attribute name="LoginId" type="xs:int" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="VoxSurf">
<xs:complexType>
<xs:sequence>
<xs:element ref="Service"/>
<xs:element ref="User"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
6.5.9.2
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.voxsurf.com/provisioning/messaging updateCWUserMSISDN.xsd">
<Service>UpdateCWUserMSISDN</Service>
<User LoginId="0812457863">
<AccountSettings>
<NewLoginId>081299999</NewLoginId>
</AccountSettings>
</User>
</VoxSurf>
Page 56
Commercial in Confidence
6.5.9.3
Response schema
6.5.9.4
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service>UpdateCWUserMSISDN </Service>
<Status>
<StatusMessage>
<Code>0</Code>
</StatusMessage>
</Status>
</VoxSurf>
Page 57
Commercial in Confidence
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Service" type="xs:string"/>
</xs:schema>
Page 58
Commercial in Confidence
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.voxsurf.com/provisioning/messaging
deleteUserOnAppAndMailStoreRequest.xsd">
<Service>DeleteUserOnAppAndMailStore</Service>
<User LoginId="0812345678"/>
</VoxSurf>
Page 59
Commercial in Confidence
<xs:element name="StatusMessage">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:Code" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Value" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Code" type="xs:int"/>
<xs:element name="Value" type="xs:string"/>
</xs:schema>
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service> DeleteUserOnAppAndMailStore</Service>
<Status>
<StatusMessage>
<Code>0</Code>
</StatusMessage>
</Status>
</VoxSurf>
Page 60
Commercial in Confidence
Page 61
Commercial in Confidence
Page 62
Commercial in Confidence
<xs:element name="EmailAccount">
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
Page 63
Commercial in Confidence
<xs:schema targetNamespace="http://www.voxsurf.com/provisioning/messaging"
xmlns:vxp="http://www.voxsurf.com/provisioning/messaging" xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="VoxSurf">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:Service"/>
<xs:sequence>
<xs:element ref="vxp:Status" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:element ref="vxp:User" minOccurs="0"/>
<xs:element ref="vxp:EmailAccount" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Service" type="xs:string"/>
<xs:element name="Status">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:StatusMessage" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="StatusMessage">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:Code" minOccurs="0" maxOccurs="1"/>
<xs:element ref="vxp:Value" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Code" type="xs:int"/>
<xs:element name="Value" type="xs:string"/>
<xs:element name="User">
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="EmailAccount">
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
Page 64
Commercial in Confidence
Page 65
Commercial in Confidence
Page 66
Commercial in Confidence
Page 67
Commercial in Confidence
Page 68
Commercial in Confidence
Page 69
Commercial in Confidence
Page 70
Commercial in Confidence
Page 71
Commercial in Confidence
<xs:schema targetNamespace="http://www.voxsurf.com/provisioning/messaging"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vxp="http://www.voxsurf.com/provisioning/messaging"
elementFormDefault="qualified">
<xs:element name="VoxSurf">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:Service" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:User" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="User">
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Service" type="xs:string"/>
</xs:schema>
Page 72
Commercial in Confidence
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Devices">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:RegisteredDevice" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="AdvancedNotificationEnabled" type="xs:boolean"/>
<xs:attribute name="AdvancedNotificationMethod" type="vxp:AdvancedNotificationMethods"/>
<xs:attribute name="BasicNotificationEnabled" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="AdvancedNotificationMethods">
<xs:annotation>
<xs:documentation>Available advanced notification methods: MMS or SMS.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="MMS"/>
<xs:enumeration value="SMS"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="RegisteredDevice">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:CountryCode" minOccurs="1" maxOccurs="1"/>
<xs:element name="DeviceType" type="vxp:DeviceTypes" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:MessageDepositEnabled" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:NationalCode" minOccurs="1" maxOccurs="1"/>
<xs:element ref="vxp:PinRequired" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="DeviceTypes">
<xs:annotation>
<xs:documentation>The registered device types: PHONE_MOBILE (M), PHONE_FIXED (F),
PAGER (P)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="M"/>
<xs:enumeration value="F"/>
<xs:enumeration value="P"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="CountryCode" type="xs:string"/>
<xs:element name="MessageDepositEnabled" type="xs:boolean"/>
<xs:element name="NationalCode" type="xs:string"/>
<xs:element name="PinRequired" type="xs:boolean"/>
</xs:schema>
Page 73
Commercial in Confidence
Page 74
Commercial in Confidence
Page 75
Commercial in Confidence
</VoxSurf>
6.6.1
Request message
6.6.2
Response message
HTTP/1.1 200 OK
Content-Type: text/xml;charset=utf-8
Date: Tue, 22 Feb 2005 12:01:44 GMT
Server: Apache-Coyote/1.1
Connection: close
<?xml version="1.0" encoding="UTF-8"?>
<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/XMLSchemainstance">
<soapenv:Body>
<service xmlns="http://www.voxsurf.com/provisioning/messaging">
<VoxSurf xmlns="http://www.voxsurf.com/provisioning/messaging">
<Service>RetrieveUsers</Service>
<Status>
Page 76
Commercial in Confidence
<StatusMessage>
<Code>0</Code>
</StatusMessage>
</Status>
<User id="99777053">
<AccountSettings>
<DomainId>0000</DomainId>
<LoginId>99887733</LoginId>
</AccountSettings>
<PersonalSettings>
<FirstName>FirstName</FirstName>
<LastName>LastName</LastName>
<PrimaryEmailAddress>tester1@voxsurf.com</PrimaryEmailAddress>
</PersonalSettings>
</User>
</VoxSurf>
</service>
</soapenv:Body>
</soapenv:Envelope>
6.7.1
Validation
SOAPAdminValidator property controls if validation occurs on the request values before the
service is carried out e.g. checking that values are booleans. By default, validation is turned
on by setting the property to true. Validation can be quite expensive. If SOAP Admin is being
used for Bulk provisioning, it may be wise to consider turning off the validation, by setting the
property to false.
Page 77
Commercial in Confidence
<!--==================================================================================-->
<!-- VoxSurfProvisionining
-->
<!--==================================================================================-->
<!ELEMENT VoxSurfProvisioning (DomainID, Subscribers)>
<!ELEMENT DomainID EMPTY>
<!ATTLIST DomainID
value CDATA #REQUIRED
>
<!--==================================================================================-->
<!-- Subscribers
-->
<!--==================================================================================-->
<!ELEMENT Subscribers (User+)>
<!--==================================================================================-->
<!-- User
-->
<!--==================================================================================-->
<!ELEMENT User (
UserDetails,
ApplicationDetails*,
EmailAccountDetails
)>
<!--==================================================================================-->
<!-- UserDetails
-->
<!--==================================================================================-->
<!ELEMENT UserDetails (
UserId,
AccountNumber,
AccountPin,
Question,
Answer,
RegisteredEmailAddress,
FirstName,
LastName,
Title,
Organisation*,
Industry*,
Administrator*,
MobilePhoneNumber*,
LandLine1PhoneNumber*,
LandLine2PhoneNumber*,
Unified,
ClassOfService,
TimeZone)>
<!--==================================================================================-->
<!-- ApplicationDetails
-->
<!--==================================================================================-->
<!ELEMENT ApplicationDetails (
Fax*,
Locale*,
VoiceDetails*,
MessageHeaderDetails*)>
<!--==================================================================================-->
Page 78
Commercial in Confidence
<!-- EmailAccountDetails
-->
<!--==================================================================================-->
<!ELEMENT EmailAccountDetails (
AccountName*,
EmailDisplayName,
EmailAddress,
Locked*,
MailServer*,
UserName,
Password*,
SMTPRelay*,
EnableSentItems*,
EnableDeletedItems*,
RootFolderName*
)>
<!--==================================================================================-->
<!UserDetails
-->
<!--==================================================================================-->
<!ELEMENT UserId
<!ATTLIST UserId
EMPTY>
value CDATA #IMPLIED>
<!ELEMENT AccountNumber
<!ATTLIST AccountNumber
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT AccountPin
<!ATTLIST AccountPin
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT Question
<!ATTLIST Question
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT Answer
<!ATTLIST Answer
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT RegisteredEmailAddress
<!ATTLIST RegisteredEmailAddress
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT FirstName
<!ATTLIST FirstName
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT LastName
<!ATTLIST LastName
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT Title
<!ATTLIST Title
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT Organisation
<!ATTLIST Organisation
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT Industry
<!ATTLIST Industry
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT Administrator
<!ATTLIST Administrator
EMPTY>
value (True|False) #REQUIRED>
<!ELEMENT MobilePhoneNumber
<!ATTLIST MobilePhoneNumber
EMPTY>
countryCode CDATA #REQUIRED
phoneNumber CDATA #REQUIRED>
<!ELEMENT LandLine1PhoneNumber
<!ATTLIST LandLine1PhoneNumber
EMPTY>
countryCode CDATA #REQUIRED
phoneNumber CDATA #REQUIRED>
<!ELEMENT LandLine2PhoneNumber
<!ATTLIST LandLine2PhoneNumber
EMPTY>
countryCode CDATA #REQUIRED
phoneNumber CDATA #REQUIRED>
<!ELEMENT Unified
<!ATTLIST Unified
EMPTY>
value (True|False) #REQUIRED
countryCode CDATA #REQUIRED
Page 79
Commercial in Confidence
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT TimeZone
<!ATTLIST TimeZone
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT Fax
<!ATTLIST Fax
EMPTY>
enabled (True|False) #REQUIRED>
<!ELEMENT Language
<!ATTLIST Language
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT VoiceDetails
<!ATTLIST VoiceDetails
EMPTY>
startPoint (E|V|T) #REQUIRED
emailAccStartPoint (P|M) #REQUIRED
sendOnHangUp (True|False) #REQUIRED
speed CDATA #REQUIRED
volume CDATA #REQUIRED>
<!ELEMENT HTMLMessagesPerPage
<!ATTLIST HTMLMessagesPerPage
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT MessageHeaderDetails
<!ATTLIST MessageHeaderDetails
EMPTY>
EMsgNum (True|False) #REQUIRED
ERcvdDate (True|False) #REQUIRED
EOrig (True|False) #REQUIRED
VMMsNum (True|False) #REQUIRED
VMRcvdDate (True|False) #REQUIRED
VMOrig (True|False) #REQUIRED>
<!--==================================================================================-->
<!-- EmailAccountCredentials
-->
<!--==================================================================================-->
<!ELEMENT AccountName
EMPTY>
<!ATTLIST AccountName
value CDATA #REQUIRED>
Page 80
<!ELEMENT EmailDisplayName
<!ATTLIST EmailDisplayName
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT EmailAddress
<!ATTLIST EmailAddress
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT Locked
<!ATTLIST Locked
EMPTY>
value (True|False) #REQUIRED>
<!ELEMENT MailServer
<!ATTLIST MailServer
EMPTY>
name CDATA #REQUIRED
protocol (IMAP|POP) #REQUIRED
port CDATA #REQUIRED
secure (True|False) #REQUIRED>
<!ELEMENT UserName
<!ATTLIST UserName
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT Password
<!ATTLIST Password
EMPTY>
value CDATA #REQUIRED>
<!ELEMENT SMTPRelay
<!ATTLIST SMTPRelay
EMPTY>
name CDATA #REQUIRED
port CDATA #REQUIRED
secure (True|False) #REQUIRED>
<!ELEMENT EnableSentItems
<!ATTLIST EnableSentItems
EMPTY>
value (True|False) #REQUIRED>
<!ELEMENT EnableDeletedItems
<!ATTLIST EnableDeletedItems
EMPTY>
value (True|False) #REQUIRED>
Commercial in Confidence
<!ELEMENT RootFolderName
<!ATTLIST RootFolderName
EMPTY>
value CDATA #REQUIRED>
<!--====================================================================================-->
Page 81
Commercial in Confidence
Page 82
Commercial in Confidence
Appendix 3: VxsProvisioningDefaultEmailAccount.pr
operties
Please refer to the Configuration Guide for more details on this property file.
Field
Description
Possible
Values
Example
accountName
accountType
enableDeletedItems
TRUE
enableSentItems
TRUE
VoxSurf
IMAP,POP
IMAP
locked
TRUE
mailServerAddress
10.0.0.1
mailServerPort
mailServerSecure
password
rootFolderName
smtpRelayName
smtpRelayPort
25,465
25
smtpRelaySecure
True/False
FALSE
143
FALSE
INBOX
INBOX
1234
10.0.0.1
Page 83
Commercial in Confidence
Appendix 4: VxsProvisioningDefaultUser.properties
Please refer to the Configuration Guide for more details on this property file.
Field
Description
domainID
accountPin
title
Employee
organisation
VoxSurf
industry
IT
umEnabled
FALSE
administrator
faxServiceEnabled
language
Possible Values
0000
1357
FALSE
FALSE
en
Europe/London
TimeZone
Page 84
Example
True, False
TRUE
10
TRUE
V,E,T
P,M
True, False
FALSE
True, False
FALSE
True, False
FALSE
True, False
FALSE
True, False
FALSE
True, False
FALSE
Commercial in Confidence
Appendix 5: VxsProvisionUserStrategy
package com.voxsurf.provisioning;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchResult;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attribute;
import com.voxsurf.core.entities.VxsUser;
import com.voxsurf.core.VxsException;
import com.voxsurf.core.entities.VxsUserId;
import com.voxsurf.util.VxsLogger;
import com.voxsurf.ldap.VxsLdapContext;
/*
* Copyright VoxSurf Software, All rights reserved.
*/
/**
* Retrieves a user from a provisioning mechanism and provisions it in the voxsurf system. This class
* can be implemented by the particular provisioning mechanism.
*
* @author: VoxSurf Ltd
*/
public interface VxsProvisionUserStrategy {
/**
* If a user can be authenticated against a directory server, auto-provision one.
*
* @param browserNumber the browser number.
* @return true if the user was created correctly.
* @exception VxsException if there was a problem retrieving the user.
*/
public boolean provisionUserByBrowserNumberIfAvailable(String browserNumber) throws VxsException;
/**
* If a user can be authenticated against a directory server, auto-provision one.
*
* @param callingNumber the caller id.
* @return true if the user was created correctly.
* @exception VxsException if there was a problem retrieving the user.
*/
public boolean provisionUserByPhoneIfAvailable(String domainId, String callingNumber) throws VxsException;
/**
* If a user can be authenticated against a directory server, auto-provision one.
*
Page 85
Commercial in Confidence
Page 86
Commercial in Confidence
Page 87
Commercial in Confidence
Page 88
Commercial in Confidence
Page 89
Commercial in Confidence
Page 90
Commercial in Confidence
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="ForgottenAnswer" type="xs:string"/>
<xs:element name="ForgottenQuestion" type="xs:string"/>
<xs:element name="HtmlLookAndFeel" type="xs:string"/>
<xs:element name="Industry" type="xs:string"/>
<xs:element name="LastName">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Locale" type="xs:string"/>
<xs:element name="LoginId">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="MessagesPerPage" type="xs:int"/>
<xs:element name="NumberOfVisits" type="xs:int"/>
<xs:element name="Organisation" type="xs:string"/>
<xs:element name="PrimaryEmailAddress">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="matchCase" type="xs:boolean" use="optional"/>
<xs:attribute name="matchWholeWord" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Persona" type="xs:string"/>
<xs:element name="Pin" type="xs:string"/>
<xs:element name="PinChangeRequired" type="xs:boolean"/>
<xs:element name="PinProtection" type="xs:boolean"/>
<xs:element name="Speed" type="xs:int"/>
<xs:element name="StartPoint" type="xs:string"/>
<xs:element name="SubscriberNumber" type="xs:string"/>
<xs:element name="TimeZone" type="xs:string"/>
<xs:element name="Title" type="xs:string"/>
<xs:element name="VoiceboxCountryCode" type="xs:string"/>
<xs:element name="VoiceboxNumber" type="xs:string"/>
<xs:element name="VoicemailEnabled" type="xs:boolean"/>
<xs:element name="VoicemailMmsDirect" type="xs:boolean"/>
<xs:element name="Volume" type="xs:int"/>
<!-- Domain definition -->
<xs:element name="Domain">
<xs:complexType>
<xs:sequence>
<xs:element ref="vxp:DomainName" minOccurs="0"/>
<xs:element ref="vxp:GlobalAccessCountryCode" minOccurs="0"/>
<xs:element ref="vxp:GlobalAccessNumber" minOccurs="0"/>
<xs:element ref="vxp:GlobalGuestCountryCode" minOccurs="0"/>
<xs:element ref="vxp:GlobalGuestNumber" minOccurs="0"/>
<xs:element ref="vxp:OutdialCLICountryCode" minOccurs="0"/>
<xs:element ref="vxp:OutdialCLINumber" minOccurs="0"/>
Page 91
Commercial in Confidence
Page 92
Commercial in Confidence
Page 93