Parallels Business Automation Standard 4.3 Software Development Kit PBAS 43 SDK
User Manual: parallels Business Automation Standard - 4.3 - Software Development Kit Free User Guide for Parallels Business Automation Software, Manual
Open the PDF directly: View PDF
.
Page Count: 391
| Download | |
| Open PDF In Browser | View PDF |
Parallels
Parallels Business
Automation Standard
Software Development Kit
Release 4.3. Revision 1.9
(c) 1999-2013
Copyright Notice
Parallels IP Holdings GmbH
Vordergasse 59
8200 Schaffhausen
Switzerland
Tel: + 41 52 632 0411
Fax: + 41 52 672 2010
Copyright © 1999-2013 Parallels IP Holdings GmbH. and its affiliates. All rights reserved.
This product is protected by United States and international copyright laws. The product's underlying
technology, patents, and trademarks are listed at http://www.parallels.com/trademarks
Microsoft, Windows, Windows Server, Windows NT, Windows Vista, and MS-DOS are registered
trademarks of Microsoft Corporation.
Linux is a registered trademark of Linus Torvalds.
Mac is a registered trademark of Apple, Inc.
All other marks and names mentioned herein may be trademarks of their respective owners.
Contents
Preface
7
Typographical Conventions .......................................................................................................................... 7
Feedback ....................................................................................................................................................... 8
Shell Prompts in Command Examples.......................................................................................................... 8
General Conventions..................................................................................................................................... 9
XML API
10
Introduction to Parallels Business Automation - Standard XML API ........................................................ 11
HSPC/API ................................................................................................................................................... 16
session_open .................................................................................................................................... 16
session_close ................................................................................................................................... 17
HSPC/API/HP............................................................................................................................................. 18
check_app_compat .......................................................................................................................... 18
check_license_compat ..................................................................................................................... 19
get_categorized_plan_list ................................................................................................................ 20
get_extended_plan_info................................................................................................................... 21
get_full_extended_plan_info ........................................................................................................... 29
get_plan_promotion_list .................................................................................................................. 30
get_promotion.................................................................................................................................. 30
get_sellable_plan_list ...................................................................................................................... 31
validate_plesk_login ........................................................................................................................ 32
HSPC/API/Billing....................................................................................................................................... 33
calculate_order ................................................................................................................................ 33
get_hosting_target_list..................................................................................................................... 47
place_order ...................................................................................................................................... 48
create_offline_payment ................................................................................................................... 54
get_order_details ............................................................................................................................. 56
get_extended_attr_list ...................................................................................................................... 56
get_account_subscr .......................................................................................................................... 57
subscr_auth ...................................................................................................................................... 57
get_subscr_info................................................................................................................................ 58
create_custom_invoice .................................................................................................................... 95
get_account_campaigns ................................................................................................................... 96
HSPC/API/Account .................................................................................................................................... 97
create_customer ............................................................................................................................... 97
create_domain_contact .................................................................................................................... 99
create_reseller ................................................................................................................................ 100
get_account_info ........................................................................................................................... 101
get_domain_contact_list ................................................................................................................ 104
get_reseller_terms.......................................................................................................................... 104
validate_password ......................................................................................................................... 104
get_extended_attr_list .................................................................................................................... 105
get_person_list ............................................................................................................................... 106
HSPC/API/Person ..................................................................................................................................... 108
auth_person.................................................................................................................................... 108
get_person_info ............................................................................................................................. 111
HSPC/API/Domain ................................................................................................................................... 112
check_domain_list ......................................................................................................................... 112
check_domain_name_syntax ......................................................................................................... 113
get_domain_list ............................................................................................................................. 113
validate_ns_list .............................................................................................................................. 114
save_contact .................................................................................................................................. 115
validate_domain_data .................................................................................................................... 116
HSPC/API/Mailer ..................................................................................................................................... 117
send ................................................................................................................................................ 117
HSPC/API/PP ........................................................................................................................................... 118
get_saved_paymethod_list............................................................................................................. 118
get_plugin_list ............................................................................................................................... 119
get_layout_hash ............................................................................................................................. 119
get_redirect_hash ........................................................................................................................... 120
pay ................................................................................................................................................. 121
get_status ....................................................................................................................................... 122
HSPC/API/Fraud ...................................................................................................................................... 122
get_warning_newpaymethod ......................................................................................................... 122
get_resume_newpaymethod .......................................................................................................... 123
get_safe_description ...................................................................................................................... 123
HSPC/API/Config..................................................................................................................................... 124
get_provider_config....................................................................................................................... 124
HSPC/API/Campaign ............................................................................................................................... 128
get_campaign ................................................................................................................................. 128
get_account_campaigns ................................................................................................................. 129
HSPC/API/SSL ......................................................................................................................................... 129
get_cert_form ................................................................................................................................ 129
validate_cert_form ......................................................................................................................... 130
get_parsed_csr_data....................................................................................................................... 131
Online Store Integration and Customization
132
Online Store Structure .............................................................................................................................. 132
Deploying Online Store ............................................................................................................................ 133
Store Installation on Remote Server .............................................................................................. 133
Open Store, Switch between Old and New Stores .................................................................................... 137
Configuring Redirect URLs to Integrate the Store with Existing Website ............................................... 138
Example 1. Redirect URL to the Store Tab ................................................................................... 140
Example 2. Pass Domain Lookup Results to the Store with Redirect URL .................................. 140
Store Customization .................................................................................................................................. 143
Changing Store Layout, Styles and Images ................................................................................... 143
Customizing Store by Means of Configuration Parameters........................................................... 145
Integrating with 3rd Party Applications. Kayako Chat .................................................................. 147
Customizing Store Localization .................................................................................................... 150
Updating Third-Party Libraries................................................................................................................. 151
Updating jQuery ............................................................................................................................ 151
Updating Symfony Components.................................................................................................... 152
User Interface Customization
154
Screens Customization Overview ............................................................................................................. 154
Template Based Customization ................................................................................................................ 159
Customizing Vendor Control Center (PCC/RCC) .................................................................................... 159
Components Repository ................................................................................................................ 159
Screen Aliases Based Customization in Control Centers .............................................................. 166
Customizing Customer Control Panel....................................................................................................... 168
Control Panel Screen Structure...................................................................................................... 168
Control Panel Top Frame and Tabs Customization ....................................................................... 172
Customizing Main Frame .............................................................................................................. 173
Customizing Control Panel Dashboard.......................................................................................... 174
Control Panel Screens Customization Using Screen IDs .............................................................. 186
Customizing Help Bar in Control Panel ........................................................................................ 195
Adding New Fields to Accounts Registration Form ................................................................................. 196
Extended Attributes Objects .......................................................................................................... 196
Custom Extended Attribute Code Samples ................................................................................... 197
Extending E-Mail Notification Templates ................................................................................................ 200
Placeholder Creation Tools ........................................................................................................... 201
Custom Placeholders Samples ....................................................................................................... 208
Creating Placeholders for Custom Extended Attributes ................................................................ 211
Customizing Language Packs ................................................................................................................... 212
Language Pack Customization Tools ............................................................................................ 212
Language Pack Customization Sample.......................................................................................... 216
Integration with External Helpdesk
219
External Helpdesk API ............................................................................................................................. 219
Adding New Language Pack
222
Parallels Business Automation - Standard Translation Capabilities ......................................................... 223
Preparing Directories and Files for New Language Pack ......................................................................... 224
Translating Interface ................................................................................................................................. 225
Translating General Labels and Messages..................................................................................... 226
Translating ToolTips for Menu Items............................................................................................ 230
Translating the On-Screen Hints ................................................................................................... 230
Translating Help Files ................................................................................................................... 231
Plug-Ins Development
233
Plug-Ins Toolkit Methods ......................................................................................................................... 234
Anti-Fraud Plug-ins .................................................................................................................................. 235
Graphical Representation .............................................................................................................. 237
Middle Tier Module....................................................................................................................... 241
Post-Installation Configuration Script ........................................................................................... 247
Anti-Fraud Manager Value Structure ............................................................................................ 248
Component repository configuration files ..................................................................................... 249
Anti-Fraud Plug-In Package Structure ........................................................................................... 249
Payment Plug-Ins Development ............................................................................................................... 250
Payment Plug-Ins Types ................................................................................................................ 250
Payment Plug-In Packaging........................................................................................................... 252
Payment Plug-In Modules and Their Name Spaces ...................................................................... 255
Implementation Details.................................................................................................................. 257
Payment Method Plug-Ins ............................................................................................................. 258
Payment Processing Plug-Ins ........................................................................................................ 264
Creating a New Promotion Plug-In........................................................................................................... 283
Introductory Notes About Promotion Plug-Ins .............................................................................. 284
Promotion Plug-Ins Objects and Their Naming Conventions ....................................................... 286
Web Interface Module ................................................................................................................... 287
Middle Tier Module....................................................................................................................... 288
Registering a Promotion Plug-In ................................................................................................... 293
Domain Registration Plug-In Development Tools .................................................................................... 295
Domain Plug-In Namespaces ........................................................................................................ 295
HSPC::MT::Plugin::DM Methods ................................................................................................. 295
HSPC::Plugin::DM Methods ......................................................................................................... 313
Required Toolkit Methods ............................................................................................................. 319
Creating a New DNS Plug-In ................................................................................................................... 322
Introductory Notes About DNS Plug-In ........................................................................................ 322
Registering a DNS Plug-In ............................................................................................................ 324
Web Interface Module ................................................................................................................... 325
Middle Tier Module....................................................................................................................... 333
SSL Certificate Plug-In Developmet Tools .............................................................................................. 336
SSL Certificate Plug-In Namespaces............................................................................................. 336
Middle Tier Module....................................................................................................................... 337
Graphical Presentation Module ..................................................................................................... 345
Building New Plug-In ............................................................................................................................... 351
Tools
354
Bulk Domain Registration / Transfer ........................................................................................................ 354
Credit Card Import .................................................................................................................................... 354
Bank Accounts Import .............................................................................................................................. 355
Migration from Parallels Plesk Billing ..................................................................................................... 355
Bulk Parallels Plesk Domains / Clients Resolving ................................................................................... 355
Script Checking Domain Renewal Date Using WHOIS Information ....................................................... 355
Cleaning Tool ........................................................................................................................................... 356
DNS Synchronization Tool ....................................................................................................................... 357
Parallels Virtuozzo Containers Integration ............................................................................................... 357
Virtuozzo Templates Installing Tool ............................................................................................. 358
Tools for Actions Execution over/in Container ............................................................................. 360
Using Data Import and Export Command Line Tools .............................................................................. 361
Exporting Data into XML Files ..................................................................................................... 362
Importing Billing Data in the Form of XML File .......................................................................... 368
Importing Subscriptions Using XML API ..................................................................................... 370
Examples of XML Files Used for Billing Data Import ................................................................. 371
Example of XML File for Traffic Classes Import ......................................................................... 378
Example of XML File for Traffic Statistics Import ....................................................................... 380
Import-Data Script ......................................................................................................................... 383
Changes Description
386
Index
387
7
CHAPTER 1
Preface
In This Chapter
Typographical Conventions .................................................................................................. 7
Feedback ............................................................................................................................... 8
Shell Prompts in Command Examples .................................................................................. 8
General Conventions ............................................................................................................. 9
Typographical Conventions
Before you start using this guide, it is important to understand the documentation conventions
used in it.
The following kinds of formatting in the text identify special information.
Formatting convention
Type of Information
Example
Special Bold
Items you must select, such Go to the System tab.
as menu options, command
buttons, or items in a list.
Titles of chapters, sections, Read the Basic Administration
and subsections.
chapter.
Italics
Used to emphasize the The system supports the so
importance of a point, to called wildcard character
introduce a term or to search.
designate a command line
placeholder, which is to be
replaced with a real name or
value.
Monospace
The names of commands, The license file is located in
files, directories, and domain the
http://docs/common/
names.
licenses directory.
Preface
Preformatted
On-screen computer output in # ls –al /files
total 14470
your command-line sessions;
source code in XML, C++, or
other
programming
languages.
Preformatted Bold
What you type, contrasted # cd /root/rpms/php
with on-screen computer
output.
CAPITALS
Names of
keyboard.
KEY+KEY
Key combinations for which CTRL+P, ALT+F4
the user must press and hold
down one key and then press
another.
keys
on
8
the SHIFT, CTRL, ALT
Feedback
If you have found a mistake in this guide, or if you have suggestions or ideas on how to improve
this
guide,
please
send
your
feedback
using
the
online
form
at
http://www.parallels.com/en/support/usersdoc/. Please include in your report the guide's title,
chapter and section titles, and the fragment of text in which you have found an error.
Shell Prompts in Command
Examples
Command line examples throughout this guide presume that you are using the Bourne-again
shell (bash). Whenever a command can be run as a regular user, we will display it with a dollar
sign prompt. When a command is meant to be run as root, we will display it with a hash mark
prompt:
Bourne-again shell prompt
$
Bourne-again shell root prompt
#
Preface
9
General Conventions
Be aware of the following conventions used in this book.
Chapters in this guide are divided into sections, which, in turn, are subdivided into
subsections. For example, Documentation Conventions is a section, and General Conventions
is a subsection.
When following steps or using examples, be sure to type double-quotes ("), left singlequotes (`), and right single-quotes (') exactly as shown.
The key referred to as RETURN is labeled ENTER on some keyboards.
The root path usually includes the /bin, /sbin, /usr/bin and /usr/sbin directories, so
the steps in this book show the commands in these directories without absolute path names.
Steps that use commands in other, less common, directories show the absolute paths in the
examples.
10
CHAPTER 2
XML API
XML API has been developed to become primary point of integration with external shopping
carts, billing, and accounting systems and other third-party components.
In This Chapter
Introduction to Parallels Business Automation - Standard XML API .................................. 11
HSPC/API ............................................................................................................................. 16
HSPC/API/HP ....................................................................................................................... 18
HSPC/API/Billing ................................................................................................................. 33
HSPC/API/Account .............................................................................................................. 97
HSPC/API/Person ................................................................................................................. 108
HSPC/API/Domain ............................................................................................................... 112
HSPC/API/Mailer ................................................................................................................. 117
HSPC/API/PP........................................................................................................................ 118
HSPC/API/Fraud................................................................................................................... 122
HSPC/API/Config ................................................................................................................. 124
HSPC/API/Campaign............................................................................................................ 128
HSPC/API/SSL ..................................................................................................................... 129
XML API
11
Introduction to Parallels Business
Automation - Standard XML API
Parallels Business Automation - Standard XML API Gate is based on SOAP protocol, currently
maintained by World Wide Web Consortium at http://www.w3c.org and supported by most of
modern programming languages as framework for messages exchange and remote method calls.
Parallels Business Automation - Standard XML API Gate is implemented as mod_perl handler
and inherits from SOAP::Transport::HTTP::Apache, i.e. is based on the functionality
provided by SOAP::Lite module available from CPAN. Please, refer to SOAP::Lite
documentation for general information and this section provides implementation details and
examples.
Module namespaces are package names with '::' included are replaced with '/' - see examples
below.
Security
There are two different strategies used by Parallels Business Automation - Standard XML API
Gate in defining security requirements:
For requests coming from a local machine (directly to backend server without involving
frontend, i.e. originating from the same address space and using http://localhost:8080 or
https://localhost:8443 as Parallels Business Automation - Standard XML API Gate proxy
URL).
For requests coming from remote machines (using frontend for proxying requests to
backend).
Safe packages and methods:
local requests: all packages are considered safe and all their methods are public
remote requests: only packages with namespace starting with HSPC/API are considered as
safe
Authentication and sessions handling:
local requests: authentication by password is possible, but not required, authentication is
possible by account number only,
remote requests: authentication by password is required.
Authentication is done with call to session_open() interface in HSPC/API (on page 16)
namespace and relies on functionality provided by Security Manager.
Interfaces in HSPC/API namespace:
session_open()
Parameters: account_no, e-mail, password
Performs authentication with given parameters (required for remote requests and optional
for local, except for account_no or server_name) and initializes session.
XML API
12
If account_no is set to 0, first account which user has roles in is chosen automatically,
but in this case e-mail and password must be set as well.
If server_name is passed and account_no is empty or missing, account_no is
located by vendor's server name located in server_name parameter.
Returns either unique value to be used as HSPC-SID in next requests (see examples of
clients) or SOAP fault envelope with error message.
session_close()
Performs cleanup of session identified by HSPC-SID header.
Returns undef or SOAP fault envelope with error message.
Configuration
Parallels Business Automation - Standard XML API Gate intended for requests from both
local and remote machines is pre-configured at /hspc/xml-api location.
backend
/etc/hspcd/conf/hspc_xml-api.conf
SetHandler perl-script
PerlHandler HSPC::XMLAPI
Order Allow,Deny
Allow from all
frontend
/etc/httpd/conf/hspc_frontend.conf:
XML API
13
...
SSLEngine on
...
Order Deny,Allow
Allow from all
Order Deny,Allow
Deny from all
Security limitation is set by explicitly allowing /hspc/xml-api location for HTTPS
connections and denying for HTTP connections, so that plain text SOAP envelopes couldn't be
read by intruders.
Parallels Business Automation - Standard XML API Gate could be opened at another locations
as well by configuring backend and frontend server in the same way as described above, i.e. by
adding more Location blocks to backend and frontend servers' configurations.
Servers
Exported methods of packages providing API through Parallels Business Automation - Standard
XML API Gate should rely on the following rules:
in order to be available for remote requests, a package name should start from
HSPC::API:: prefix and have its version set:
our $VERSION = 1.0;
first parameter of each call to exported method is always package name, not reference or
whatever;
$ENV{session} is valid only for requests including session ID returned by
session_open() call, i.e. could be valid for local and always valid for remote requests;
$ENV{security_obj} is valid only for requests including session ID and contains valid
account and user IDs identified by call to session_open() (on page 16);
die with error message to immediately return it in SOAP fault envelope with message as
description, using the call like this:
## return fault with:
## - error code 'ErrorCode'
## - error message
die HSPC::API->fault('ErrorCode', 'Error description.');
Notes for HSPstore:
If error code starts with the User prefix, its description is shown to PHP Store visitor, so it
must be localized:
die HSPC::API->fault('UserPassword', string('passwords_do_not_match'));
If error code does not start with the User prefix, its description is not shown to PHP Store
visitor and is only logged to vendor's local log file, so it must not be localized:
XML API
14
die HSPC::API->fault('AuthenRequired', 'Authentication required.');
feel free to return any data structures that you can theoretically serialize to XML - and do not
expect an object to arrive at remote side by just returning its blessed reference (guess why it's
just ridiculous).
Examples
HSPC/Test.pm (local requests):
package HSPC::Test;
use strict;
use Data::Dumper;
## returns dump of parameters list, including class name
sub method {
return Dumper(\@_);
}
1;
HSPC/API/Test.pm (remote requests):
package HSPC::API::Test;
use strict;
our $VERSION = 1.0;
## gets/sets parameter with key passed as a parameter
sub param {
my (undef, $key, $value) = @_;
return defined $value
? $ENV{session}->{$key} = $value
: $ENV{session}->{$key};
}
1;
Clients
In order to initialize stable communication with Parallels Business Automation - Standard XML
API Gate, first call session_open() in HSPC/API (on page 16) namespace to receive
HSPC-SID value and then add HSPC-SID to either HTTP or SOAP headers to each request
before sending SOAP envelope.
Examples
local.pl:
use SOAP::Lite;
use strict;
my $result = SOAP::Lite
->proxy('http://127.0.0.1:8080/hspc/xml-api') ## Gate URL
->ns('HSPC/Test') ## package namespace
->method ## method name
('param1', {param2 => 'test', param3 => [1, 2, 3]}, 0); ## parameters
print $result->fault
? 'Fault: ' . $result->faultstring
: 'Result: ' . $result->result;
local.php:
require_once('nusoap.php');
$client = new soap_client('http://127.0.0.1:8080/hspc/xml-api'); // Gate URL
$result = $client->call(
'method', // method name
array ("param1", array ("param2" => "test", "param3" => array (1, 2, 3)),
0), // parameters
'HSPC/Test' // package namespace
XML API
);
if ($client->fault)
die("Fault: {$client->faultstring}");
echo $result;
?>
remote.pl:
use strict;
use SOAP::Lite;
my $client = SOAP::Lite
->proxy('https://192.168.0.100/hspc/xml-api')
->on_fault(sub {die 'Fault: ' . $_[1]->faultstring});
## pass authentication and receive session ID
my $sid = $client->ns('HSPC/API/1.0')->session_open({
email => 'email@provider.com', password => 'password'
})->result->{session_id};
## put session ID to outgoing requests' HTTP headers
$client->transport->http_request->header('HSPC-SID' => $sid);
## make session-dependent calls
$client->ns('HSPC/API/Test/1.0');
$client->param('key' => 'value');
print $client->param('key')->result;
$client->ns('HSPC/API/1.0')->session_close;
remote.php
require_once('nusoap.php');
$client = new soap_client('https://192.168.0.100/hspc/xml-api'); // Gate URL
## pass authentication and receive session ID
$sid_result = $client->call('session_open', array (
array ('email' => 'root@provider.com', 'password' => '1q2w3e')
), 'HSPC/API/1.0');
$sid = $sid_result['session_id'];
if ($client->fault)
die("Fault: {$client->faultstring}");
## put session ID to outgoing requests' SOAP headers $client>setHeaders("$sid ");
## make session-dependent calls
$client->call('param', array ('key', 'value'), 'HSPC/API/Test/1.0');
if ($client->fault)
die("Fault: {$client->faultstring}");
echo $client->call('param', array ('key'), 'HSPC/API/Test/1.0') . "\n";
if ($client->fault)
die("Fault: {$client->faultstring}");
$client->call('session_close', undef, 'HSPC/API/1.0');
if ($client->fault)
die("Fault: {$client->faultstring}"); ?>
15
XML API
16
HSPC/API
session_open
The function opens session with Parallels Business Automation - Standard XML API server.
The input parameters composition depends on the store installation: (local, i.e. Store is installed
on the same server as Parallels Business Automation - Standard or remote, i.e., the Store
installed on a remote server).
In the function call the namespace must be followed by API version number, e.g. HSPC/API/1.0
Note: Session ID returned by session_open must be included in HTTP Headers or SOAP
Headers for all the other methods called in the frame of each session.
Parameters:
account_id
ID of a vendor account a session is to be
opened for. This parameter is to be passed in
case of a local Store installation. Optional
parameter in case server_name is specified.
server_name
Vendor server name used for authentication.
This parameter is to be passed in case of a local
Store installation. Optional parameter in case
account_id is specified.
email
Registered person e-mail. Parameter is to be
specified in case of the Store remote
installation together with the password
parameter.
password
Registered person password. Parameter is to be
specified in case of the Store remote
installation together with the email parameter.
Returns: {
account_id
=>
session_id
=> }
Parameter
Means
account_id
The numerical identifier of an account a
session has been opened for. Account ID is
returned in any case, a vendor account ID is
then used by the other Store API functions.
session_id
The identifier of the opened session.
XML API
17
Common SOAP Faults codes:
UserError
Mandatory parameter missing from SOAP
method call
WrongParams
Invalid method parameters
No specific SOAP Faults codes.
session_close
The function closes session.
In the method call the namespace must be followed by API version number, e.g. HSPC/API/1.0
The function usage is not necessary but recommended.
No parameters.
No return value.
Common SOAP Faults codes:
UserError
Mandatory parameter missing from SOAP
method call
WrongParams
Invalid method parameters
No specific codes.
XML API
18
HSPC/API/HP
check_app_compat
The function checks applications compatibility in Plesk and Virtuozzo Container hosting plans.
Parameters:
hp_sid
Hosting plan series key
app_list
The list of application templates IDs.
os_tmpl
Optional parameter: ID of OS template
selected for a hosing plan. If not passed, then
the method will return the result as if OS
template with the lowest ID (from OSes
included in hosting plan) was passed as
os_tmpl.
Returns: result => 1 on success or Fault
SOAP Faults codes:
HPNoApplicationSupport
Hosting plan passed as an argument does not
support an application.
UserAppIncompat
Application(s) passed are incompatible with
each other.
XML API
check_license_compat
The function checks licenses compatibility in hosting plans.
Parameters:
hp_sid
Hosting plan series key
lic_list
The list of licenses IDs
Returns: result => 1 on success or Fault
SOAP Faults codes:
HPNoLicClassSupport
Hosting plan does not support at least one
license
HPBaseLicConflict
Base licenses specified are incompatible.
HPNoBaseForAddon
No base license has been specified for an addon license.
19
XML API
20
get_categorized_plan_list
The method returns the list of hosting plans grouped by categories. Only the basic information is
returned.
The method is similar to get_sellable_plan_list (on page 31). Input parameters are
the same, but output parameters differ: the list of returned hosting plans is grouped by
categories.
Parameters:
type_id
Optional parameter: The ID of hosting plan
type. Only hosting plans of the type specified
will be returned.
promo_id
Optional parameter: ID of promotion to be
applied to hosting plans prices.
account_id
Optional parameter: ID of account the prices
are to be calculated for.
sb_sid
Optional parameter: Trial site ID. The
parameter is predefined on redirect from
Sitebuilder.
sb_node
Optional parameter:Sitebuilder node numeric
ID assigned in PBAS.
Returns: plan_list => HP list
SOAP Faults codes:
HPProviderNotAllowed
Provider account ID is used to get hosting
plan details. Only customer or reseller account
ID is allowed as parameter.
XML API
21
get_extended_plan_info
The function returns extended information about a hosting plan. Extended information is all the
data not shown in hosting plans listing.
Parameters:
hp_sid
Optional parameter: Hosting plan series key. If
not specified, the information about default
domain hosting plan will be returned.
promo_id
Optional parameter: The ID of promotion to be
applied to hosting plan prices.
account_id
Optional parameter: ID of account the prices
are to be calculated for.
period
Optional parameter: Subscription period the
discounts are to be calculated for.
for_trial
Optional parameter: If this parameter is
specified then zero prices for add-ons (custom
attributes, applications, etc.) will be returned.
os_tmpl
Optional parameter: ID of OS template
selected for a hosing plan. If not passed, then
the method will return the result as if OS
template with the lowest ID (from OSes
included in hosting plan) was passed as
os_tmpl.
Returns: EXTENDED_HP_INFO (on page 22)
SOAP Faults codes:
HPNoTrial
The for_trial parameter has been specified, but
a hosting plan does not support trial periods.
HPNotFound
The hosting plan specified is not found.
HPNoDefaultDMPlan
Hosting plan series key is not specified and
default domain hosting plan does exist.
HPProviderNotAllowed
Provider account ID is used to get hosting plan
details. Only customer or reseller account ID is
allowed as parameter.
XML API
22
Example of EXTENDED_HP_INFO Hash
$VAR1 = {
'dns_hosting' => {
'is_unlim' => '0',
'included_value' => '5',
'max_value' => '10',
'overuse_rate' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' =>
'1.00',
'is_complimentary' => '0'
},
'price' => '439182056',
'full_discount_period' => undef,
'promo_name' => undef
}
},
'assigned_dm_plan' => '2',
'is_trial' => '0',
'vendor_id' => '1',
'name' => 'Domain Registration Support',
'provider_id' => '1',
'description' => '',
'question_list' => [
{
'question' => 'How do you like services
included in your subscription?',
'answer' => undef,
'id' => '1'
}
],
'custom_attribute_list' => [
{
'is_exclusive' => '1',
'cat_name' => 'Support'
'description' => 'Attribute
description'
'cat_id' => '1'
'cat_sort_order' => '1'
'option_list' => [
{
'is_default' => '0',
'sort_order' =>
'17',
'name' => 'Support
by phone',
'is_included' =>
'0',
'upgrade_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
XML API
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' => '50.0000',
'is_complimentary' => '0'
},
'price' => '437640876',
'full_discount_period' => undef,
'promo_name' => undef
},
'setup_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' => '20.0000',
'is_complimentary' => '0'
},
'price' => '382151368',
'full_discount_period' => undef,
'promo_name' => undef
},
'subscr_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
23
XML API
24
'price_original' => {
'price' => '50.0000',
'is_complimentary' => '0'
},
'price' => '440264964',
'full_discount_period' => undef,
'promo_name' => undef
},
'id' => '17'
},
{
'is_default' => '0',
'sort_order' =>
'18',
'name' => 'ICQ
Consultant',
'is_included' =>
'0',
'upgrade_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' => '30.0000',
'is_complimentary' => '0'
},
'price' => '438862184',
'full_discount_period' => undef,
'promo_name' => undef
},
'setup_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
XML API
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' => '20.0000',
'is_complimentary' => '0'
},
'price' => '440650072',
'full_discount_period' => undef,
'promo_name' => undef
},
'subscr_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' => '30.0000',
'is_complimentary' => '0'
},
'price' => '439183520',
'full_discount_period' => undef,
'promo_name' => undef
},
'id' => '18'
}
],
'sort_order' => '0',
'is_required' => '0',
'name' => 'Miscellaneous',
'id' => '6'
}
],
'summary' => '',
'fee_list' => [
{
'setup_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
25
XML API
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' =>
'10.0000',
'is_complimentary' => '0'
},
'price' => '440550508',
'full_discount_period' => undef,
'promo_name' => undef
},
'subscr_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' =>
'5.0000',
'is_complimentary' => '0'
},
'price' => '440553148',
'full_discount_period' => undef,
'promo_name' => undef
},
'period' => '2592000'
},
{
'setup_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' =>
'20.0000',
'is_complimentary' => '0'
},
'price' => '439338076',
'full_discount_period' => undef,
'promo_name' => undef
},
'subscr_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' =>
'10.0000',
'is_complimentary' => '0'
},
'price' => '440307792',
'full_discount_period' => undef,
26
XML API
'promo_name' => undef
},
'period' => '7776000'
},
{
'setup_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' =>
'30.0000',
'is_complimentary' => '0'
},
'price' => '439238836',
'full_discount_period' => undef,
'promo_name' => undef
},
'subscr_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' =>
'15.0000',
'is_complimentary' => '0'
},
'price' => '440439372',
'full_discount_period' => undef,
'promo_name' => undef
},
'period' => '15552000'
},
{
'setup_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' =>
'40.0000',
'is_complimentary' => '0'
},
'price' => '438988552',
'full_discount_period' => undef,
'promo_name' => undef
},
'subscr_fee' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
27
XML API
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' =>
'20.0000',
'is_complimentary' => '0'
},
'price' => '440380584',
'full_discount_period' => undef,
'promo_name' => undef
},
'period' => '31104000'
}
],
'id' => '21',
'category' => undef,
'type' => {
'summary' => 'Miscellaneous hosting plans designed for
selling any arbitrary services. It gives highest flexibility together with
Custom Attributes and Questionnaire.',
'name' => 'Miscellaneous',
'id' => '7',
'description' => ''
},
'qos_list' => [
{
'is_unlim' => '0',
'incl_amount' => '5',
'max_amount' => '10',
'overuse_rate' => {
'is_discount' => '0',
'promo_period' => undef,
'promo_percent' => undef,
'is_promo' => '0',
'discount_percent' => undef,
'discount_amount' => undef,
'promo_amount' => undef,
'price_original' => {
'price' =>
'1.00',
'is_complimentary' => '0'
},
'price' => '439020192',
'full_discount_period' => undef,
'promo_name' => undef
},
'id' => '4000',
'name' => 'Number of domains with DNS hosting
provided',
'is_metered' => '0',
'short_name' => 'numdnshosting',
'units' => 'domain(s)',
'is_rateable' => '1',
'multiplier' => '1'
}
],
'series_key' => '3'
};
28
XML API
29
get_full_extended_plan_info
The method returns extended information about a hosting plan. Extended information is all the
data not shown in hosting plans listing.
The method is similar to the get_extended_plan_info (on page 21).
The difference between these methods is: the get_extended_plan_info method returns
resources and applications for a specified OS. The get_full_extended_plan_info
method returns resources and applications for all OSes enabled for a hosting plan.
Parameters:
hp_sid
Optional parameter: Hosting plan series key. If
not specified, the information about default
domain hosting plan will be returned.
promo_id
Optional parameter: The ID of promotion to be
applied to hosting plan prices.
account_id
Optional parameter: ID of account the prices
are to be calculated for.
period
Optional parameter: Subscription period the
discounts are to be calculated for.
for_trial
Optional parameter: If this parameter is
specified then zero prices for add-ons (custom
attributes, applications, etc.) will be returned.
os_tmpl
Optional parameter: ID of OS template
selected for a hosing plan. If not passed, then
the method will return the result as if OS
template with the lowest ID (from OSes
included in hosting plan) was passed as
os_tmpl.
Returns: EXTENDED_HP_INFO (on page 22)
SOAP Faults codes:
HPNoTrial
The for_trial parameter has been specified, but
a hosting plan does not support trial periods.
HPNotFound
The hosting plan specified is not found.
HPNoDefaultDMPlan
Hosting plan series key is not specified and
default domain hosting plan does exist.
HPProviderNotAllowed
Provider account ID is used to get hosting plan
details. Only customer or reseller account ID is
allowed as parameter.
XML API
get_plan_promotion_list
The function returns the list of promotions applicable to a hosting plan.
Parameters:
hp_sid
Hosting plan series key.
Returns: PROMOTION list
SOAP Faults codes:
HPNoPromoFound
No promotions are applied to a hosting plan.
get_promotion
The function returns information about a promotion by a promotion ID.
Parameters:
promo_id
Promotion ID.
Returns: PROMOTION:
SOAP Faults codes:
HPNoPromoSeriesFound
No promotion with ID specified exists.
30
XML API
get_sellable_plan_list
The function returns the list of hosting plans for sale. The base information only is returned.
Parameters:
type_id
Optional parameter: The ID of hosting plan
type. Only hosting plans of the type specified
will be returned.
promo_id
Optional parameter: ID of promotion to be
applied to hosting plans prices.
account_id
Optional parameter: ID of account the prices
are to be calculated for.
sb_sid
Optional parameter: Trial site ID. The
parameter is predefined on redirect from
Sitebuilder.
sb_node
Optional parameter: Sitebuilder
numeric ID assigned in PBAS.
node
Returns: plan_list => HP list
SOAP Faults codes:
HPProviderNotAllowed
Provider account ID is used to get hosting
plan details. Only customer or reseller account
ID is allowed as parameter.
31
XML API
validate_plesk_login
The function checks Plesk Administrator login, password, and forward URL.
Parameters:
login
Optional parameter: Plesk Administrator
login.
password
Optional parameter: Plesk Administrator
password.
forward_url
Optional parameter: Plesk forwarding URL.
Returns: result => 1 on success, Fault otherwise
SOAP Faults codes:
PleskLoginInvalid
Plesk Administrator login invalid.
PleskPasswordInvalid
Plesk Administrator password invalid.
UserPleskForwardURLInvalid
Plesk forwarding URL invalid.
32
XML API
HSPC/API/Billing
calculate_order
The function calculates prices in an order.
Parameters:
account_id
ID of account the prices are to be calculated for.
hp_sid
Optional parameter: Hosting plan series key.
hp_id
Optional parameter: Hosting plan ID.
period
Optional parameter in case a period is trial (for_trial
parameter is specified) or if a domain hosting plan is
purchased. Subscription period.
promo_id
Optional parameter: The ID of promotion to be applied to
hosting plan prices.
domain_hash
Optional parameter: The list of domains.
app_list
Optional parameter: The list of application templates IDs.
attribute_list
The list of custom attributes.
sb_plan
Optional parameter: The parameter is to be used only if
Sitebuilder service is included in a hosting plan.
If a Sitebuilder site already exists, the Sitebuilder site alias
must be passed. If a new Sitebuilder site is to be created,
the 'new' value must be passed.
33
XML API
license_list
Optional parameter: List of licenses included in a hosting
plan. The list of licences is presented as the following
hash:
'license_list' => {
'plugin_1' => {
'SITEBUILDER' => {
'feature_list' => [
'500_SITES',
'1YR_PREMIUM_SUPPORT_PACK',
'MULTI_SERVER_CAPABILITY',
'1YR_EMAIL_SUPPORT_PACK'
]
},
'PLESK_75_RELOADED' => {
'addon_list' => {
'PLESK_BATTLEFIELD' => {
'feature_list' => [
'5_BATTLEFIELD_SERVERS'
]
},
'PLESK_CS_GAMESERVER' => {
'feature_list' => []
}
},
'feature_list' => [
'100_DOMAINS',
'TROUBLE_TICKETING_SYSTEM',
'1YR_PREMIUM_SUPPORT_PACK',
'COLDFUSION',
'INEXPENSIVE_SERVER',
'EXPENSIVE_SERVER'
]
}
}
}
login
Optional parameter: The list can include three parameters:
password
login
forwarding URL
The parameters composition depends upon hosting plan
type.
answer_list
The list of answers on a hosting plan questionnaire. Each
answer is a list consisting of a question ID and an answer
string.
qos_list
Optional parameter. The list of billable resources
presented as the following hash:
{
'res_id_1003'
=>
{'res_id'
=>
'1003','value' => '2','multiplier' => '1'},
'res_id_1012'
=>
{'res_id'
=>
'1012','value' => '1','multiplier' => '1'},
...
34
XML API
}
Where:
res_id - is a resource numerical identifier assigned in the
Parallels Business Automation - Standard database
multiplier - is a resource units
value - is an additional resource value ordered over the
included value.
Returns: ORDER (on page 37).
SOAP Faults codes:
AFMdenied
Anti-Fraud Manager has stopped an order.
AuthzError
Authorization error.
DomainRequired
Hosting plan requires a domain registration, but no
domains were registered.
HPNoApps
Applications specified are not supported by a hosting
plan.
HPNoDomainAction
A domain operation specified is not supported.
HPNoDomainAvailable
A domain name is not available for registration.
HPNoDomainReg
Hosting plan does not support domain registration.
HPNoDomainSubscrAllowed
No more domains allowed for a hosting plan. Allowed
limit for domains registration is used up.
HPNoLicClasses
Licenses specified are not supported by a hosting plan.
HPNoSB
Sitebuilder service specified is not supported by a hosting
plan.
HPNoSecureWhois
A domain hosting plan does not support secure whois
service.
HPNoTransferDomainAvailab A domain specified is not available for transfer in a
le
particular hosting plan.
HPNoTrial
Hosting plan does not support trial periods.
HPSBErrors
Errors connected with Sitebuilder site have occurred
during order processing.
InvalidDomain
Invalid domain name was specified.
NoOrderForProvider
Provider tries to place order for themselves.
35
XML API
NoPointerAllowed
Domain pointer operation is not available for a domain
specified.
NoQuestion
No question exists in a hosting plan for an answer
specified.
NoSubdomain
Subdomain creation is not available for a domain
specified.
OrderFailed
Order creation error.
SubscrNotFound
A subscription a domain registration is to be added to
does not exist.
TLDNoSuchPeriod
A domain registration period specified does not
supported for a TLD.
UserNoVPSPasswd
No password specified for Container.
UserVPSPasswdWeak
Container password does not meet the password strength
requirements.
NoHPSidOrID
Hosting plan sid or id is not set.
NOPersonId
Require person_id but not set in request
36
XML API
37
Examples of ORDER Hash
Example 1:
$VAR1 = {
'time_stamp' => '2006-08-07 10:34:59',
'doc_balance_print' => '15.0000',
'detail_list' => [
{
'count' => undef,
'period' => '0',
'taxfree_amount' => '10.0000',
'quantity' => undef,
'taxfree_gross_amount'
=>
'10.0000',
'duration' => '0',
'discount' => '0.00',
'rate' => '10.000001',
'amount' => '10.0000',
'unit' => '0',
'comment'
=>
'Dedicated
Server
hosting plan setup fee',
'gross_amount' => '10.0000',
'multiplier' => undef
},
{
'count' => '1.000000',
'period' => '2592000',
'taxfree_amount' => '5.0000',
'quantity' => undef,
'taxfree_gross_amount' => '5.0000',
XML API
38
'duration' => '0',
'discount' => '0.00',
'rate' => '5.000001',
'amount' => '5.0000',
'unit' => '0',
'comment'
hosting plan subscription fee',
=>
'Dedicated
Server
'gross_amount' => '5.0000',
'multiplier' => undef
}
],
'rperiod' => '2592000',
'order_type' => '100',
'doc_status_txt' => 'open',
'plan_type' => '3',
'added_by_account' => '3',
'bhp_id' => '1',
'doc_total' => '15.0000',
'id' => '354057',
'doc_balance' => '15.0000',
'doc_subtotal_print' => '15.0000',
'subscr_end_date' => undef,
'period' => '2592000',
'is_tax_included' => undef,
'name' => 'order',
'doc_subscr_prices' => undef,
'description'
=>
Hosting',
'plan_id' => '1',
'Order
on
purchase
Dedicated
XML API
'doc_type' => 'OR'
};
Example 2:
39
XML API
40
$VAR1 = {
'doc_balance_print' => '0.0000',
'time_stamp' => '2007-12-14 16:04:12',
'detail_list' => [
{
'count' => undef,
'period' => '0',
'taxfree_amount' => '5.0000',
'quantity' => '',
'taxfree_gross_amount' => '5.0000',
'duration' => '',
'discount' => '0.00',
'rate' => '4.240000',
'amount' => '4.2400',
'unit' => '',
'comment' => 'Virtuozzo Container with lics hosting plan setup
fee',
'gross_amount' => '4.2400',
'multiplier' => undef
},
{
'count' => '1.000000',
'period' => '2592000',
'taxfree_amount' => '5.0000',
'quantity' => '',
'taxfree_gross_amount' => '5.0000',
'duration' => '1 month(s)',
'discount' => '0.00',
'rate' => '4.240000',
'amount' => '4.2300',
'unit' => '',
'comment' => 'Virtuozzo Container with lics hosting plan
subscription fee',
'gross_amount' => '4.2400',
'multiplier' => undef
},
{
'count' => '1.000000',
'period' => '31104000',
'taxfree_amount' => '10.0000',
'quantity' => '',
'taxfree_gross_amount' => '10.0000',
'duration' => '1 year(s)',
'discount' => '0.00',
'rate' => '8.470000',
'amount' => '8.4800',
'unit' => '',
'comment' => 'Domain testdomain.com registration for 1 year',
'gross_amount' => '8.4700',
'multiplier' => undef
},
{
'count' => '1.000000',
'period' => '0',
XML API
41
'taxfree_amount' => '123.0000',
'quantity' => '',
'taxfree_gross_amount' => '123.0000',
'duration' => '',
'discount' => '0.00',
'rate' => '104.240000',
'amount' => '104.2400',
'unit' => '',
'comment' => 'Workgroup Administrator Control Panel setup fee',
'gross_amount' => '104.2400',
'multiplier' => undef
},
{
'count' => '1.000000',
'period' => '2592000',
'taxfree_amount' => '11.0000',
'quantity' => '',
'taxfree_gross_amount' => '11.0000',
'duration' => '1 month(s)',
'discount' => '0.00',
'rate' => '9.320000',
'amount' => '9.3200',
'unit' => '',
'comment' => 'Workgroup Administrator Control Panel monthly
fee',
'gross_amount' => '9.3200',
'multiplier' => undef
},
{
'count' => '1.000000',
'period' => '0',
'taxfree_amount' => '33.0000',
'quantity' => '',
'taxfree_gross_amount' => '33.0000',
'duration' => '',
'discount' => '0.00',
'rate' => '27.970000',
'amount' => '27.9600',
'unit' => '',
'comment' => 'Php As3 setup fee',
'gross_amount' => '27.9700',
'multiplier' => undef
},
{
'count' => '1.000000',
'period' => '2592000',
'taxfree_amount' => '21.0000',
'quantity' => '',
'taxfree_gross_amount' => '21.0000',
'duration' => '1 month(s)',
'discount' => '0.00',
'rate' => '17.800000',
'amount' => '17.8000',
'unit' => '',
'comment' => 'Php As3 monthly fee',
XML API
'gross_amount' => '17.8000',
'multiplier' => undef
},
{
'count' => '1.000000',
'period' => '0',
'taxfree_amount' => '23.0000',
'quantity' => '',
'taxfree_gross_amount' => '23.0000',
'duration' => '',
'discount' => '0.00',
'rate' => '19.490000',
'amount' => '19.4900',
'unit' => '',
'comment' => 'Psa Sb Publish As3 setup fee',
'gross_amount' => '19.4900',
'multiplier' => undef
},
{
'count' => '1.000000',
'period' => '2592000',
'taxfree_amount' => '3.0000',
'quantity' => '',
'taxfree_gross_amount' => '3.0000',
'duration' => '1 month(s)',
'discount' => '0.00',
'rate' => '2.540000',
'amount' => '2.5500',
'unit' => '',
'comment' => 'Psa Sb Publish As3 monthly fee',
'gross_amount' => '2.5400',
'multiplier' => undef
},
{
'count' => undef,
'period' => '0',
'taxfree_amount' => '5.0000',
'quantity' => '',
'taxfree_gross_amount' => '5.0000',
'duration' => '',
'discount' => '0.00',
'rate' => '4.240000',
'amount' => '4.2300',
'unit' => '',
'comment' => '512 MB DDR setup fee',
'gross_amount' => '4.2400',
'multiplier' => undef
},
{
'count' => '1.000000',
'period' => '2592000',
'taxfree_amount' => '6.0000',
'quantity' => '',
'taxfree_gross_amount' => '6.0000',
'duration' => '1 month(s)',
42
XML API
'discount' => '0.00',
'rate' => '5.080000',
'amount' => '5.0900',
'unit' => '',
'comment' => '512 MB DDR monthly fee',
'gross_amount' => '5.0800',
'multiplier' => undef
},
{
'count' => undef,
'period' => '0',
'taxfree_amount' => '2.0000',
'quantity' => '',
'taxfree_gross_amount' => '2.0000',
'duration' => '',
'discount' => '0.00',
'rate' => '1.690000',
'amount' => '1.6900',
'unit' => '',
'comment' => '80 GB setup fee',
'gross_amount' => '1.6900',
'multiplier' => undef
},
{
'count' => '1.000000',
'period' => '2592000',
'taxfree_amount' => '2.0000',
'quantity' => '',
'taxfree_gross_amount' => '2.0000',
'duration' => '1 month(s)',
'discount' => '0.00',
'rate' => '1.690000',
'amount' => '1.7000',
'unit' => '',
'comment' => '80 GB monthly fee',
'gross_amount' => '1.6900',
'multiplier' => undef
},
{
'count' => undef,
'period' => '2592000',
'taxfree_amount' => '8.0000',
'quantity' => '2',
'taxfree_gross_amount' => '8.0000',
'duration' => '1 month(s)',
'discount' => '0.00',
'rate' => '3.390000',
'amount' => '6.7800',
'unit' => 'domain',
'comment' => 'Number of domains with
monthly fee',
'gross_amount' => '6.7800',
'multiplier' => '1.000000'
},
{
DNS
hosting
43
provided
XML API
'count' => undef,
'period' => '2592000',
'taxfree_amount' => '2.0000',
'quantity' => '1',
'taxfree_gross_amount' => '2.0000',
'duration' => '1 month(s)',
'discount' => '0.00',
'rate' => '1.690000',
'amount' => '1.6900',
'unit' => 'ip(s)',
'comment' => 'Number of Static IP addresses monthly fee',
'gross_amount' => '1.6900',
'multiplier' => '1.000000'
},
{
'count' => undef,
'period' => '0',
'taxfree_amount' => '2.0000',
'quantity' => '',
'taxfree_gross_amount' => '2.0000',
'duration' => '',
'discount' => '0.00',
'rate' => '1.690000',
'amount' => '1.7000',
'unit' => '',
'comment' => 'Plesk 7.5 Plus setup fee',
'gross_amount' => '1.6900',
'multiplier' => undef
},
{
'count' => undef,
'period' => '2592000',
'taxfree_amount' => '3.0000',
'quantity' => '1',
'taxfree_gross_amount' => '3.0000',
'duration' => '1 month(s)',
'discount' => '0.00',
'rate' => '2.540000',
'amount' => '2.5400',
'unit' => '',
'comment' => 'Plesk 7.5 Plus monthly fee',
'gross_amount' => '2.5400',
'multiplier' => undef
},
{
'count' => undef,
'period' => '0',
'taxfree_amount' => '2.0000',
'quantity' => '',
'taxfree_gross_amount' => '2.0000',
'duration' => '',
'discount' => '0.00',
'rate' => '1.690000',
'amount' => '1.6900',
'unit' => '',
44
XML API
'comment' => 'Unlimited Domains w/1 yr SUS (Plesk 7.5
setup fee',
'gross_amount' => '1.6900',
'multiplier' => undef
},
{
'count' => undef,
'period' => '2592000',
'taxfree_amount' => '3.0000',
'quantity' => '1',
'taxfree_gross_amount' => '3.0000',
'duration' => '1 month(s)',
'discount' => '0.00',
'rate' => '2.540000',
'amount' => '2.5500',
'unit' => '',
'comment' => 'Unlimited Domains w/1 yr SUS (Plesk 7.5
monthly fee',
'gross_amount' => '2.5400',
'multiplier' => undef
},
{
'count' => undef,
'period' => '0',
'taxfree_amount' => '5.0000',
'quantity' => '',
'taxfree_gross_amount' => '5.0000',
'duration' => '',
'discount' => '0.00',
'rate' => '4.240000',
'amount' => '4.2300',
'unit' => '',
'comment' => '1 yr E-mail Support Package (Plesk 7.5 Plus)
fee',
'gross_amount' => '4.2400',
'multiplier' => undef
},
{
'count' => undef,
'period' => '2592000',
'taxfree_amount' => '4.0000',
'quantity' => '1',
'taxfree_gross_amount' => '4.0000',
'duration' => '1 month(s)',
'discount' => '0.00',
'rate' => '3.390000',
'amount' => '3.3900',
'unit' => '',
'comment' => '1 yr E-mail Support Package (Plesk 7.5
monthly fee',
'gross_amount' => '3.3900',
'multiplier' => undef
},
{
'count' => undef,
45
Plus)
Plus)
setup
Plus)
XML API
'period' => '0',
'taxfree_amount' => '0.0000',
'quantity' => '',
'taxfree_gross_amount' => '0.0000',
'duration' => '',
'discount' => '0.00',
'rate' => '0.000000',
'amount' => '42.4100',
'unit' => '',
'comment' => '+ NDS 18.00 %',
'gross_amount' => '42.4100',
'multiplier' => undef
}
],
'rperiod' => '2592000',
'subscr_id' => '240',
'order_type' => '100',
'doc_date' => '2007-12-14 16:03:26',
'doc_subtotal' => '235.5900',
'subscriptions' => [
{
'ar_doc_id' => '745',
'subscr_status' => '1',
'applied' => '1',
'start_date' => '2007-12-14 16:03:56',
'id' => '240'
},
{
'ar_doc_id' => '745',
'subscr_status' => '1',
'applied' => '1',
'start_date' => '2007-12-14 16:04:06',
'id' => '241'
}
],
'added_by_account' => '2',
'doc_status_txt' => 'ds_completed',
'plan_type' => '1',
'plan_type_txt' => 'Virtuozzo Container',
'domain' => 'testdomain.com',
'bhp_id' => '314',
'doc_balance' => '0.0000',
'doc_total' => '278.0000',
'id' => '745',
'provider_tax_ex_number' => '',
'doc_subtotal_print' => '235.5900',
'period' => '2592000',
'subscr_end_date' => undef,
'is_tax_included' => '1',
'name' => 'order',
'order_id' => '745',
'doc_num' => '1336',
'description' => 'Order on the Container creation',
'plan_id' => '314',
'doc_type' => 'OR',
46
XML API
47
'added_by_ip' => '10.30.64.209',
'plan_name' => 'Virtuozzo Container with lics'
};
get_hosting_target_list
The function returns the list of subscriptions (that already exist for an account) with not fully
used resources, which allows creating hosting in the range of these remaining resources.
Parameters:
account_id
Account ID.
Returns: {hosting_target_list => {id => ID, name => STRING, plan_name => STRING,
sites_available => NUMBER} }
SOAP Faults codes:
No specific codes.
XML API
place_order
The function places order.
Parameters:
account_id
ID of account the prices are to be calculated for.
hp_sid
Hosting plan series key.
period
Optional parameter in case a period is trial (for_trial
parameter is specified) or if a domain hosting plan is
purchased. Subscription period.
campaign
Optional parameter. ID of campaign (Marketing Director >
Campaign Manager > Campaigns). When user is redirected
to store via a Campaign link, redirector adds
HSPC_MM= parameter to store URL.
Example:
Redirect To URL: http://mystore.host.com
Campaign ID: 25
Redirection
is
done
to
URL
http://mystore.host.com?HSPC_MM=25
In this way store gets campaign ID.
When order is placed, campaign ID must be send back to
the server, to add this order to campaign report.
promo_id
Optional parameter: The ID of promotion to be applied to
hosting plan prices.
48
XML API
domain_hash
The list of domains. Each domain in this list is presented
by the following hash:
{'domain1' => {
domain_name => 'example.com' -- self-explanatory
dm_action => 'register_new' -- action over domain
period => 2, -- registration period in years
whois_privacy => 1|0 -- use whois privacy yes|no
is_manual => 1| 0 -- use manual registration yes|no. Use
when importing domain subscription.
expire_time => Expiration date for domain. Use when
importing domains. Format: Use any string parsable by
Date::Manip (which is, well, just about anything).
contact_hash => {admin => 45, billing => 0, owner =>
undef} -- mapping of contact types to use for domain to
contact IDs. If contact id is 'undef' or '0', it will be created
on the basis of account contact information
create_site
=> 1|0 - create site for this domain or no.
hosting_destination => 56 - Subscription number, for
which this domain is bought.
is_default => 1|0 -- If 1, this domain is specified as the
default one in the order.
ns_list => [[HOSTNAME, IP], [HOSTNAME, IP], ...] -list of nameservers for domain. If present,
no DNS hosting service will be provided.
},
'domain2' => { ... },
ext_data => { purpose of domaun usage => 'Business', ... }
-- any additional information required by a registrar. This
parameter is always the only one in the hash.
}
app_list
The list of application templates IDs.
49
XML API
attribute_list
The list of custom attributes.
sb_plan
Optional parameter: The parameter is to be used only if
Sitebuilder service is included in a hosting plan.
If a Sitebuilder site already exists, the Sitebuilder site alias
must be passed. If a new Sitebuilder site is to be created,
the 'new' value must be passed.
license_list
List of licenses included in a hosting plan.
login
The list can include three parameters:
password
login
forwarding URL
The parameters composition depends upon hosting plan
type.
answer_list
The list of answers on a hosting plan questionnaire. Each
answer is a list consisting of a question ID and an answer
string.
for_trial
If an order is for trial period.
initiator_email
E-mail of a person that has added an order.
initiator_ip
IP address of a person that has added an order.
description
Optional parameter. Order description.
50
XML API
is_free
1 - yes or 0 - no. Optional parameter that can be used by
provider only. The parameter specifies whether an order
should be free (1) or not (0). If yes, the balance of an order
created on a subscription import is adjusted to zero, that is
a special 'balance correction' string is added to an order.
This parameter can be used, for example if a provider
wants to import a a subscription or a number of
subscriptions into Parallels Business Automation Standard and it is necessary that a corresponding orders to
be generated for these subscriptions will be of a zero
amount.
Note: Only provider is allowed to use the is_free
parameter. If this parameter is used by a reseller, this will
result in SOAP fault (see the list of SOAP Fault Codes
below this table).
ext_data
List of extended attributes
qos_list
Optional parameter. The list of billable resources
presented as the following hash:
{
'res_id_1003'
=>
{'res_id'
=>
'1003','value' => '2','multiplier' => '1'},
'res_id_1012'
=>
{'res_id'
=>
'1012','value' => '1','multiplier' => '1'},
...
}
Where:
res_id - is a resource numerical identifier assigned in the
Parallels Business Automation - Standard database
multiplier - is a resource units
value - is an additional
included value.
resource value ordered over the
Returns: ORDER (on page 37).
SOAP Faults codes:
AFMdenied
Anti-Fraud Manager has stopped an order.
AuthzError
Authorization error.
DomainRequired
Hosting plan requires a domain registration, but no
domains were registered.
HPNoApps
Applications specified are not supported by a hosting
plan.
51
XML API
HPNoDomainAction
A domain operation specified is not supported.
HPNoDomainAvailable
A domain name is not available for registration.
HPNoDomainReg
Hosting plan does not support domain registration.
HPNoDomainSubscrAllowed
No more domains allowed for a hosting plan. Allowed
limit for domains registration is used up.
HPNoLicClasses
Licenses specified are not supported by a hosting plan.
HPNoSB
Parallels Sitebuilder service specified is not supported by
a hosting plan.
HPNoSecureWhois
A domain hosting plan does not support secure whois
service.
HPNoTransferDomainAvailab A domain specified is not available for transfer in a
le
particular hosting plan.
HPNoTrial
Hosting plan does not support trial periods.
HPSBErrors
Errors connected with Parallels Sitebuilder site have
occurred during order processing.
InvalidDomain
Invalid domain name was specified.
NoOrderForProvider
Provider tries to place order for themselves.
NoPointerAllowed
Domain pointer operation is not available for a domain
specified.
NoQuestion
No question exists in a hosting plan for an answer
specified.
NoSubdomain
Subdomain creation is not available for a domain
specified.
OrderFailed
Order creation error.
OrderFreeDenied
The is_free parameter is used not by provider (for
example, reseller tries to create a free order).
OrderExtData
Extended attribute addition error.
SubscrNotFound
A subscription a domain registration is to be added to
does not exist.
TLDNoSuchPeriod
A domain registration period specified does not
supported for a TLD.
UserNoVPSPasswd
No password specified for Container.
52
XML API
UserVPSPasswdWeak
Container password does not meet the password strength
requirements.
53
XML API
54
create_offline_payment
This function allows creating an offline payment and, at the same moment, applying this
payment to a number of documents.
Note: The payment created by this function can be applied to documents with Open or Overdue
status. The payment can be applied only to the following types of documents: Order, Invoice,
Debit Adjustment, and Payment Request. A payment can be applied only to documents assigned
to an account a payment was issued for.
Parameters:
amount
A payment total amount.
account_id
ID of account a payment is issued for.
ref_num
A payment reference number.
doc_list
Optional parameter. List of IDs of documents a payment
is to be applied to.
adjust_error_fatal
Optional parameter that defines the function behavior in
case of error, depending of a value assigned to this
parameter :
If 1, then any error that occurs will stop payment
processing and produce SOAP fault DocAdjustError.
Errors will be placed into SOAP details.
If 0, then in case errors occur, the function will keep
trying to pay documents, but all the errors will be
returned.
Returns:
{ result => 1 } if no errors occurred, and offline payment has been placed successfully.
or
{ result => 0, error_info => ARRAYREF } if adjust_error_fatal=0 and some
errors occurred.
Example of returned value:
{
'error_info' => [
{
'error_message' => 'Document 103 has been paid',
'document' => '103',
'error_code' => 'DocPaid'
XML API
}
],
'result' => '0'
};
SOAP Faults codes:
DocAdjustError
Error adjusting documents!
Document type specific errors:
DocInvalidAccount
Document %DOCID% was not added by the account
trying to pay for it.
DocPaid
Document %DOCID% has been paid
DocNotOpen
Document %DOCID% is not open
DocWrongType
Document %DOCID% is of an inappropriate type.
Example of Test Code for create_offline_payment Function
#!/usr/bin/perl
use strict;
use SOAP::Lite;
use Data::Dumper;
my $client = SOAP::Lite
->proxy('https://hspc_mn_server_name/hspc/xml-api')
->on_fault(sub {die 'Fault: '.$_[1]->faultstring.' '.$_[1]->faultcode.'
'.$_[1]->faultdetail});
my $sid = $client->ns('HSPC/API/1.0')->session_open(
{
email => 'someuser@somehost', password => 'somepassword'
}
)->result->{session_id};
$client->transport->http_request->header('HSPC-SID' => $sid);
my %h = (
amount => 5,
account_id => 2,
ref_num => 'test offline payment',
doc_list => [103],
adjust_error_fatal => 1,
);
my $obj = $client->ns('HSPC/API/Billing/1.0')->create_offline_payment(%h)>result;
print "\nResult: " . Dumper($obj);
$client->ns('HSPC/API/1.0')->session_close;
55
XML API
56
get_order_details
This function allows getting the full information about an order by an order ID.
Parameters:
order_id
An order numerical identifier assigned in the
Parallels Business Automation - Standard database.
doc_num
An order reference number (optional).
Returns: ORDER (on page 37), see Example 2.
Note: The function can be used to get details of other types of documents, for example, invoice.
To use the function this way, a document ID is to be passed. In this case, th parameter name
remains the same, order_id.
SOAP Faults codes:
OrderNotFound
Order not found. This means that no order with the
ID specified.
AuthzError
Access Denied.
get_extended_attr_list
The function returns extended attributes available for a particular hosting plan type.
Parameters:
order_type
Order type: corresponds to a hosting plan type, the
parameter value (constant) is a hosting plan code used
in Store.
Returns value: [ { view_name=>, title=>, value=>, type=> }, .. ]
SOAP Faults codes:
No specific codes.
XML API
57
get_account_subscr
The function returns the list of account subscriptions.
Parameters:
account_id
ID of account the list of subscriptions is requested.
Returns an array of hashes:
{'plan_type_txt' => STRING, 'plan_type' => INT, 'status' => STRING, 'plan_name' =>
STRING, 'subscr_name' => STRING, 'subscr_id' => ID }
SOAP Faults codes:
MissingAccount
No accounts with passed ID has been found.
AccessDenied
Function is called by a person not logged in or
logged in with insufficient permissions. Access to
account information is denied.
AccountAccessDenied
Access to account information is denied in case a
reseller uses this function, but account belongs to
another reseller. Another match is the situation when
a user is logged in and requests information about
account that does not belong to him/her.
subscr_auth
The function authorizes an account against subscription ID.
Parameters:
account_id
ID of account the list of subscriptions is requested.
subscr_id
ID of subscription.
Returns:
is_authorized => 1 or 0
SOAP Faults codes:
SubscrNotFound
No subscription with ID passed.
AuthzError
Subscription belongs to another account or in case a
reseller uses this function, to another reseller.
XML API
get_subscr_info
The function returns full subscription information.
Parameters:
subscr_id
ID of subscription.
account_id
Optional parameter. ID of account subscription belongs
to.
If account_id is provided, subscription is verified for belonging to the account.
Returns:
Various outputs depending on Subscription type, see examples (on page 62).
In general, the following parameters are returned.
All subscriptions:
Common output fields for all subscription types:
id
ID of subscription.
name
Subscription name.
account_no
ID of account.
status_txt
Subscription status in text form ( Active, On Hold,
etc.).
status
ID of subscription status.
prev_status
Subscription previous status ID.
plan_type
Hosting plan ID.
plan_type_txt
Hosting plan type in text.
plan_id
Hosting plan ID.
plan_sid
Hosting plan series key.
plan_name
Hosting plan name in text.
create_order_id
ID of order placed for subscription.
period
Subscription period duration (given in seconds).
next_period
If subscription has been renewed, next subscription
period.
58
XML API
renewal_policy
Renewal policy code:
0 - Do not generate renewal order automatically;
1 - Generate renewal order automatically and try to
pay it.
2. - Generate renewal order automatically and do
not to pay it.
trial_period
If subscription is trial, then trial period duration in
seconds is returned.
custom_subscr_fee
Custom subscription fee (if such has been set for
subscription).
start_date
Subscription start date.
end_date
Subscription end date.
grace_date
If subscription is in Graced status, the grace period start
date.
expiration_date
Subscription expiration date.
termination_date
If subscription has been terminated, subscription
termination date is returned.
goaway_date
If subscription has been deleted, the deletion date is
returned.
Common returned parameters for all subscription types except for Domain registration ones:
prom_id
If promotion has been applied to subscription,
promotion ID is returned.
prom_start_date
Promotion period start date (if promotion has been
applied).
prom_end_date
Promotion period end date (if promotion has been
applied).
res_info
All resources included in subscription.
bm_attr
Custom attributes assigned to subscription (if any).
questions
Questions specified (Questionnaire) for subscription, if
any.
assigned_domains
Domains assigned to subscription, if any.
The following subscription types have some extra output fields:
Domain registration subscription returned parameters:
59
XML API
domain
Hash containing information about domain zone.
regdomain
Hash containing information about domain registration.
Virtuozzo Container subscription:
platform_id
ID of Container platform:
-1 - Unknown
0 - All
1 - Linux Vz2.0
3 - Linux Vz3.x
4 - Windows Vz3.x
5 - Linux Vz3.x EM64T
6 - Linux Vz3.x IA64
100 - Non-VZ
201 - Plesk for Unix
202 - Plesk for Windows
platform
Platform name in text form.
traf_class
Traffic class ID, if such has been configured for
subscription.
app_resources
Applications available for subscription.
is_root_access
If root access allowed for Container.
ve_id
Container ID.
ve
Container name.
Plesk Client subscription:
traf_class
Traffic class ID, if such has been configured for
subscription.
plesk_client
Hash containing information about Plesk client (ID,
node, status, etc.)
platform_id
Plesk platform ID (name as for Virtuozzo Container
subscription.
platform
Plesk platform name in text form.
app_resources
Applications available for subscription.
Plesk Domain subscription:
60
XML API
traf_class
Traffic class ID, if such has been configured for
subscription.
plesk_domain
Hash containing information about Plesk domain (ID,
node, status, etc.)
platform_id
Plesk platform ID (name as for Virtuozzo Container
subscription.
platform
Plesk platform name in text form.
app_resources
Applications available for subscription.
Plesk Dedicated Server subscription:
hw_id
Server ID assigned in Parallels Business Automation.
server_properties
Hash
containing
configuration.
information
about
server
Dedicated Server subscription:
platform_id
Server platform ID (name as for Virtuozzo Container
subscription.
platform
Platform name in text form.
traf_class
Traffic class ID, if such has been configured for
subscription.
server_properties
Hash
containing
configuration.
hw_id
Server ID assigned in Parallels Business Automation.
information
about
server
SOAP Faults codes:
SubscrNotFound
No subscription with ID passed.
AuthzError
Subscription belongs to another account or in case a
reseller uses this function, to another reseller.
61
XML API
62
Example of get_subscr_info Returned Values
Examples of get_subscr_info function output depending on a subscription type are presented in
this topic.
Dedicated server
{
'goaway_date' => undef,
'prom_start_date' => '2007-09-10 08:54:12',
'trial_period' => '0',
'traf_class' => undef,
'plan_type' => '3',
'plan_type_txt' => 'Dedicated Server',
'account_no' => '3',
'renewal_policy' => '1',
'assigned_domains' => [],
'id' => '7',
'bm_attr' => [
{
'group_id' => '1',
'group_name' => 'Hard Disk',
'bm_attr_id' => '2',
'name' => '80 GB',
'subscr_id' => '7',
'is_complimentary' => '0'
},
{
'group_id' => '2',
'group_name' => 'Memory',
'bm_attr_id' => '5',
'name' => '512 MB DDR',
'subscr_id' => '7',
'is_complimentary' => '0'
},
{
'group_id' => '3',
'group_name' => 'Processor',
'bm_attr_id' => '8',
'name' => 'AMD Athlon64 3000',
'subscr_id' => '7',
'is_complimentary' => '0'
},
{
'group_id' => '5',
'group_name' => 'Operating System',
'bm_attr_id' => '14',
'name' => 'Windows Server 2003',
'subscr_id' => '7',
'is_complimentary' => '0'
}
],
'period' => '2592000',
'prom_id' => '0',
'name' => 'DS1234',
'questions' => [],
'prom_end_date' => undef,
'custom_subscr_fee' => undef,
'is_traffic_overused' => '0',
'end_date' => '2008-11-30 00:00:00',
'plan_name' => 'DS',
'next_period' => '2592000',
'base_date' => '2000-01-30 00:00:00',
'res_info' => [
{
XML API
'short_name' => 'numstaticip',
'is_unlim' => '0',
'is_advanced' => '0',
'id' => '7',
'value' => '1',
'name' => 'Number of Static IP addresses',
'is_domain' => '0',
'is_countable' => '1',
'max_value' => '1048576',
'overuse_rate' => '0.000000',
'is_ve_related' => '0',
'is_metered' => '0',
'res_id' => '201',
'is_reducible' => '1',
'multiplier' => '1',
'units' => 'ip(s)'
},
{
'short_name' => 'numdnshosting',
'is_unlim' => '0',
'id' => '7',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of domains with DNS hosting
provided',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1048576',
'is_metered' => '0',
'res_id' => '208',
'is_reducible' => '0',
'units' => 'domain',
'multiplier' => '1'
}
],
'server_properties' => {
'port' => '',
'identification' => 'DS1234',
'switch_id' => '0',
'ipaddresses' => [
'12.13.14.15',
'12.13.14.16'
],
'comment' => 'test dedicated',
'switch' => undef,
'rack' => undef,
'id' => '3',
'attributes' => [
{
'attr_id' => '6',
'name' => '1024 MB DDR'
},
{
'attr_id' => '11',
'name' => 'VIRUS
Protection'
},
{
'attr_id' => '3',
'name' => '120 GB'
},
{
'attr_id' => '13',
'name' => 'ROOT Access'
},
63
XML API
{
'attr_id' => '9',
'name' => 'Dual Intel Xeon
D 2.8 GHz'
},
{
'attr_id' => '12',
'name' => 'Development
Tools'
},
{
'attr_id' => '15',
'name' => 'Fedora Linux'
}
],
'form_factor' => '45'
},
'plan_sid' => '16',
'status' => '1',
'is_upgrade' => undef,
'is_notify' => undef,
'prev_status' => '10',
'create_order_id' => '31',
'status_txt' => 'active',
'grace_date' => '2008-05-14 08:48:21',
'billable_items' => [],
'start_date' => '2007-09-10 08:54:12',
'platform' => 'Non-VZ',
'termination_date' => undef,
'hw_id' => '3',
'expiration_date' => '2008-10-26 00:00:00',
'plan_id' => '16',
'platform_id' => '100'
};
Miscellaneous Subscription
{
'goaway_date' => undef,
'prom_start_date' => '2008-04-29 11:25:58',
'trial_period' => '0',
'plan_type' => '7',
'plan_type_txt' => 'Miscellaneous',
'account_no' => '2',
'renewal_policy' => '1',
'assigned_domains' => [
'fdgfdgdfg.com'
],
'id' => '166',
'bm_attr' => [],
'period' => '2592000',
'prom_id' => '0',
'name' => 'Miscellaneous (34)',
'questions' => [
{
'question' => 'Question 1',
'value' => 'answer 1',
'question_id' => '1',
'hp_id' => '238',
'subscr_id' => '166'
},
{
'question' => 'Question 2',
'value' => 'answer 2',
'question_id' => '2',
'hp_id' => '238',
'subscr_id' => '166'
},
64
XML API
{
'question' => 'Question 3',
'value' => 'answer 3',
'question_id' => '3',
'hp_id' => '238',
'subscr_id' => '166'
}
],
'prom_end_date' => undef,
'custom_subscr_fee' => undef,
'end_date' => '2008-05-29 00:00:00',
'plan_name' => 'Misc 21',
'next_period' => '7776000',
'base_date' => '2008-05-29 00:00:00',
'res_info' => [
{
'short_name' => 'numdnshosting',
'is_unlim' => '0',
'is_advanced' => '0',
'id' => '166',
'value' => '10',
'name' => 'Number of domains with DNS hosting
provided',
'is_domain' => '0',
'is_countable' => '1',
'max_value' => '1048576',
'overuse_rate' => '1.000000',
'is_ve_related' => '0',
'is_metered' => '0',
'res_id' => '4000',
'is_reducible' => '0',
'multiplier' => '1',
'units' => 'domain'
}
],
'plan_sid' => '127',
'status' => '1',
'is_upgrade' => undef,
'is_notify' => undef,
'prev_status' => '3',
'create_order_id' => '922',
'status_txt' => 'active',
'grace_date' => undef,
'billable_items' => [],
'start_date' => '2008-04-29 11:25:58',
'termination_date' => undef,
'expiration_date' => undef,
'plan_id' => '241'
};
Plesk Client Subscription
{
'goaway_date' => '2008-03-08 00:00:00',
'prom_start_date' => '2007-12-21 13:31:32',
'trial_period' => '0',
'traf_class' => undef,
'plan_type' => '10',
'plan_type_txt' => 'Plesk Client',
'account_no' => '4',
'renewal_policy' => '0',
'assigned_domains' => [
'sub-cli-2.com'
],
'id' => '36',
'bm_attr' => [],
'period' => '2592000',
'prom_id' => '0',
65
XML API
'name' => 'Dr. John Lector (4-1047)',
'questions' => [],
'app_resources' => [],
'prom_end_date' => undef,
'plesk_client' => {
'status' => '0',
'status_txt' => 'active',
'subscr_id' => '36',
'hw_id' => '1',
'id' => '244',
'plesk_status' => '0',
'plesk_id' => '26',
'plesk_name' => 'Dr. John Lector (4-1047)'
},
'custom_subscr_fee' => undef,
'is_traffic_overused' => '0',
'end_date' => '2008-02-21 13:37:43',
'plan_name' => 'PC Win Uniq HN',
'next_period' => '2592000',
'base_date' => '2007-12-21 13:37:43',
'res_info' => [
{
'short_name' => 'pc_diskquota',
'is_unlim' => '0',
'is_advanced' => '0',
'id' => '36',
'value' => '100',
'name' => 'Disk space quota',
'is_domain' => '0',
'is_countable' => '1',
'max_value' => '1024000',
'overuse_rate' => '0.000000',
'is_ve_related' => '0',
'is_metered' => '0',
'res_id' => '1300',
'is_reducible' => '0',
'multiplier' => '1048576',
'units' => 'MB'
},
{
'short_name' => 'pc_numwebusers',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of web users',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1302',
'is_reducible' => '0',
'units' => 'users',
'multiplier' => '1'
},
{
'short_name' => 'pc_nummailbox',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of mailboxes',
'is_ve_related' => '0',
66
XML API
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1304',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pc_mailboxquota',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Mailbox quota',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '102400',
'is_metered' => '0',
'res_id' => '1305',
'is_reducible' => '0',
'units' => 'MB',
'multiplier' => '1048576'
},
{
'short_name' => 'pc_nummailredir',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of mail redirects',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1306',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pc_nummailgrp',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of mail groups',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1307',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pc_nummailautoresp',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
67
XML API
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of mail autoresponders',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1308',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pc_nummaillist',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of mailing lists',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1309',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pc_numwebapp',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of web applications',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1310',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pc_numsubdomains',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of subdomains',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1311',
'is_reducible' => '0',
'units' => 'subdomains',
'multiplier' => '1'
},
68
XML API
{
'short_name' => 'pc_numdomains',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '2',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of domains',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1312',
'is_reducible' => '0',
'units' => 'domains',
'multiplier' => '1'
},
{
'short_name' => 'pc_numips',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '0',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of IP',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1313',
'is_reducible' => '0',
'units' => 'ip(s)',
'multiplier' => '1'
},
{
'short_name' => 'pc_mysqldbquota',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '100',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'mysql database quota',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1024000',
'is_metered' => '0',
'res_id' => '1321',
'is_reducible' => '0',
'units' => 'MB',
'multiplier' => '1048576'
},
{
'short_name' => 'pc_micsqldbquota',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '100',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'microsoft sql database quota',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1024000',
'is_metered' => '0',
69
XML API
'res_id' => '1322',
'is_reducible' => '0',
'units' => 'MB',
'multiplier' => '1048576'
},
{
'short_name' => 'pc_micsqlnumdb',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'maximum number of microsoft sql serever
databases',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1024',
'is_metered' => '0',
'res_id' => '1323',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pc_sslshlinksnumber',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'maximum number of shared ssl links',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1000',
'is_metered' => '0',
'res_id' => '1324',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pc_subftpusers',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Maximum number of FTP subaccounts',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1000',
'is_metered' => '0',
'res_id' => '1325',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pc_fpseusers',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
70
XML API
71
'is_domain' => '0',
'name' => 'Maximum number of Microsoft FrontPage
subaccounts',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1000',
'is_metered' => '0',
'res_id' => '1326',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pc_numodbc',
'is_unlim' => '1',
'id' => '36',
'is_advanced' => '0',
'value' => '0',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Maximum number of ODBC connections',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '0',
'is_metered' => '0',
'res_id' => '1327',
'is_reducible' => '1',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pc_numiispools',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Maximum number of IIS application pools',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1024',
'is_metered' => '0',
'res_id' => '1331',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pc_mysqlnumdb',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'maximum number of MySQL databases',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1024',
'is_metered' => '0',
'res_id' => '1332',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
XML API
'short_name' => 'pc_numdomainalias',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'maximum number of domain aliases',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1333',
'is_reducible' => '0',
'units' => 'alias(es)',
'multiplier' => '1'
},
{
'short_name' => 'pc_totalmailbquota',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Total mailboxes quota',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '102400',
'is_metered' => '0',
'res_id' => '1334',
'is_reducible' => '0',
'units' => 'MB',
'multiplier' => '1048576'
},
{
'short_name' => 'numdnshosting',
'is_unlim' => '0',
'id' => '36',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of domains with DNS hosting
provided',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1048576',
'is_metered' => '0',
'res_id' => '1335',
'is_reducible' => '0',
'units' => 'domain',
'multiplier' => '1'
},
{
'short_name' => 'pc_numcfdsn',
'is_unlim' => '1',
'id' => '36',
'is_advanced' => '0',
'value' => '0',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Maximum number of ColdFusion DSN
connections',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '0',
72
XML API
'is_metered' => '0',
'res_id' => '1336',
'is_reducible' => '1',
'units' => 'unit',
'multiplier' => '1'
}
],
'plan_sid' => '49',
'status' => '11',
'is_upgrade' => undef,
'is_notify' => undef,
'add_params' => '76',
'prev_status' => '10',
'create_order_id' => '151',
'billable_items' => [],
'grace_date' => '2008-03-08 00:00:00',
'status_txt' => 'expired',
'start_date' => '2007-12-21 13:31:32',
'platform' => 'Plesk for Windows',
'termination_date' => undef,
'expiration_date' => '2009-03-08 00:00:00',
'plan_id' => '51',
'platform_id' => '202'
};
Plesk Domain Subscription
{
'goaway_date' => undef,
'prom_start_date' => '2008-03-03 12:35:00',
'trial_period' => '0',
'traf_class' => undef,
'plan_type_txt' => 'Plesk Domain',
'plan_type' => '9',
'account_no' => '5',
'renewal_policy' => '0',
'assigned_domains' => [
'hadelen.com'
],
'id' => '90',
'bm_attr' => [],
'period' => '31104000',
'prom_id' => '0',
'name' => 'hadelen.com',
'questions' => [],
'app_resources' => [],
'prom_end_date' => undef,
'custom_subscr_fee' => undef,
'is_traffic_overused' => '0',
'end_date' => '2009-11-14 00:00:00',
'plan_name' => 'PD check webmail',
'next_period' => '31104000',
'base_date' => '2009-11-14 00:00:00',
'res_info' => [
{
'short_name' => 'pd_diskquota',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '100',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Disk space quota',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1024000',
'is_metered' => '0',
'res_id' => '1200',
73
XML API
'is_reducible' => '0',
'units' => 'MB',
'multiplier' => '1048576'
},
{
'short_name' => 'pd_numwebusers',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of web users',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1202',
'is_reducible' => '0',
'units' => 'users',
'multiplier' => '1'
},
{
'short_name' => 'pd_nummailbox',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of mailboxes',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1204',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pd_mailboxquota',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Mailbox quota',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '102400',
'is_metered' => '0',
'res_id' => '1205',
'is_reducible' => '0',
'units' => 'MB',
'multiplier' => '1048576'
},
{
'short_name' => 'pd_nummailredir',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of mail redirects',
74
XML API
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1206',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pd_nummailgrp',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of mail groups',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1207',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pd_nummailautoresp',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of mail autoresponders',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1208',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pd_nummaillist',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of mailing lists',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1209',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pd_numwebapp',
'is_unlim' => '0',
'id' => '90',
75
XML API
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of web applications',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1210',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pd_numsubdomains',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of subdomains',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1211',
'is_reducible' => '0',
'units' => 'subdomains',
'multiplier' => '1'
},
{
'short_name' => 'pd_ip',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '0',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Dedicated IPs',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1',
'is_metered' => '0',
'res_id' => '1212',
'is_reducible' => '0',
'units' => 'IP',
'multiplier' => '1'
},
{
'short_name' => 'pd_harddiskquota',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '100',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Hard disk space quota',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1024000',
'is_metered' => '0',
'res_id' => '1219',
'is_reducible' => '0',
'units' => 'MB',
'multiplier' => '1048576'
76
XML API
},
{
'short_name' => 'pd_numdomainalias',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '0',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Maximum number of domain aliases',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '1220',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pd_mysqldbquota',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '100',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Mysql database quota',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1024000',
'is_metered' => '0',
'res_id' => '1221',
'is_reducible' => '0',
'units' => 'MB',
'multiplier' => '1048576'
},
{
'short_name' => 'pd_micsqldbquota',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '100',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Microsoft sql database quota',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1024000',
'is_metered' => '0',
'res_id' => '1222',
'is_reducible' => '0',
'units' => 'MB',
'multiplier' => '1048576'
},
{
'short_name' => 'pd_micsqlnumdb',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Maximum number of microsoft sql serever
databases',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
77
XML API
'max_value' => '1024',
'is_metered' => '0',
'res_id' => '1223',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pd_sslshlinksnumber',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Maximum number of shared ssl links',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1000',
'is_metered' => '0',
'res_id' => '1224',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pd_mysqlnumdb',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Maximum number of MySQL databases',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1024',
'is_metered' => '0',
'res_id' => '1225',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pd_totalmailboxquota',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Total mailboxes quota',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '102400',
'is_metered' => '0',
'res_id' => '1226',
'is_reducible' => '0',
'units' => 'MB',
'multiplier' => '1048576'
},
{
'short_name' => 'numdnshosting',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
78
XML API
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of domains with DNS hosting
provided',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1048576',
'is_metered' => '0',
'res_id' => '1227',
'is_reducible' => '0',
'units' => 'domain',
'multiplier' => '1'
},
{
'short_name' => 'pd_subftpusers',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Maximum number of FTP subaccounts',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1000',
'is_metered' => '0',
'res_id' => '1228',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pd_fpseusers',
'is_unlim' => '0',
'id' => '90',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Maximum number of Microsoft FrontPage
subaccounts',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '1000',
'is_metered' => '0',
'res_id' => '1229',
'is_reducible' => '0',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'pd_numodbc',
'is_unlim' => '1',
'id' => '90',
'is_advanced' => '0',
'value' => '0',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Maximum number of ODBC connections',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '0',
'is_metered' => '0',
'res_id' => '1230',
'is_reducible' => '1',
'units' => 'unit',
'multiplier' => '1'
79
XML API
},
{
'short_name' => 'pd_numcfdsn',
'is_unlim' => '1',
'id' => '90',
'is_advanced' => '0',
'value' => '0',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Maximum number of ColdFusion DSN
connections',
'is_ve_related' => '0',
'overuse_rate' => '0.000000',
'max_value' => '0',
'is_metered' => '0',
'res_id' => '1231',
'is_reducible' => '1',
'units' => 'unit',
'multiplier' => '1'
}
],
'plan_sid' => '113',
'status' => '1',
'is_upgrade' => undef,
'is_notify' => undef,
'add_params' => '90',
'prev_status' => '3',
'create_order_id' => '424',
'status_txt' => 'active',
'grace_date' => undef,
'billable_items' => [],
'start_date' => '2008-03-03 12:35:00',
'platform' => 'Plesk for Windows',
'plesk_domain' => {
'status' => '0',
'hw_id' => '10',
'subscr_id' => '90',
'plesk_status' => '0',
'plesk_id' => '102',
'plesk_ip' => '10.26.0.97',
'status_txt' => 'active',
'id' => '206',
'plesk_name' => 'hadelen.com'
},
'termination_date' => undef,
'expiration_date' => undef,
'plan_id' => '113',
'platform_id' => '202'
};
Virtuozzo Container Subscription
{
'goaway_date' => undef,
'prom_start_date' => '2008-03-31 13:09:36',
'is_root_access' => '1',
'trial_period' => '0',
'traf_class' => undef,
'plan_type_txt' => 'Container',
'plan_type' => '1',
'account_no' => '3',
'renewal_policy' => '1',
'assigned_domains' => [
'app.ssl.lmtest.ru'
],
'id' => '129',
'bm_attr' => [],
'period' => '2592000',
80
XML API
'prom_id' => '0',
'name' => 'Plesk',
'questions' => [],
'app_resources' => [
{
'name' => 'Majordomo with Autoresponder',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'autoresponder-majordomo-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '0',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'Awstats Fc4',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'awstats-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '1',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'Jdk Fc4',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'jdk-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '0',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'Jre Fc4',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'jre-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '0',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'Mod Perl Fc4',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'mod_perl-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '1',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'Mod Ssl Fc4',
'is_upgrade' => '0',
81
XML API
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'mod_ssl-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '1',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'Mysql Fc4',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'mysql-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '1',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'Openwebmail Fc4',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'openwebmail-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '0',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'Php Fc4',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'php-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '1',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'Phpmyadmin Fc4',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'phpmyadmin-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '1',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'PostgreSQL',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'postgresql-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '0',
'type' => '1',
'id' => '129',
82
XML API
'cid' => '1'
},
{
'name' => 'Proftpd Fc4',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'proftpd-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '0',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'Psa Fc4',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'psa-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '1',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'SSH 3.1',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'ssh',
'subscr_fee' => '0.00',
'is_complementary' => '1',
'type' => '4',
'id' => '129',
'cid' => '3'
},
{
'name' => 'Usermin Fc4',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'usermin-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '0',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'Webmin Fc4',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
'app_key' => 'webmin-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '0',
'type' => '1',
'id' => '129',
'cid' => '1'
},
{
'name' => 'ZendOptimizer',
'is_upgrade' => '0',
'is_notify' => '0',
'setup_fee' => '0.00',
83
XML API
'app_key' => 'zend-optimizer-fc4',
'subscr_fee' => '0.00',
'is_complementary' => '0',
'type' => '1',
'id' => '129',
'cid' => '1'
}
],
'prom_end_date' => undef,
'custom_subscr_fee' => undef,
'is_traffic_overused' => '0',
'end_date' => '2008-06-01 08:18:06',
'plan_name' => '99026 test',
've_id' => '1027',
'next_period' => '2592000',
'base_date' => '2008-05-01 08:18:06',
'res_info' => [
{
'short_name' => 'numstaticip',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of Static IP addresses',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '1048576',
'is_metered' => '0',
'res_id' => '25',
'is_reducible' => '0',
'units' => 'ip(s)',
'multiplier' => '1'
},
{
'short_name' => 'nummailbox',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '0',
'value' => '1024',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of mailboxes',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '1048576',
'is_metered' => '0',
'res_id' => '38',
'is_reducible' => '0',
'units' => 'mailbox',
'multiplier' => '1'
},
{
'short_name' => 'numwebsites',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of websites',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '1048576',
'is_metered' => '0',
'res_id' => '69',
84
XML API
'is_reducible' => '0',
'units' => 'website',
'multiplier' => '1'
},
{
'short_name' => 'numdbs',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of databases',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '1048576',
'is_metered' => '0',
'res_id' => '72',
'is_reducible' => '0',
'units' => 'database',
'multiplier' => '1'
},
{
'short_name' => 'numbks',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of backups',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '1048576',
'is_metered' => '0',
'res_id' => '74',
'is_reducible' => '0',
'units' => 'backup',
'multiplier' => '1'
},
{
'short_name' => 'sizebks',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '0',
'value' => '100',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Total size of all backups',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '1048576',
'is_metered' => '0',
'res_id' => '76',
'is_reducible' => '0',
'units' => 'MB',
'multiplier' => '1048576'
},
{
'short_name' => 'numdnshosting',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '0',
'value' => '1',
'is_countable' => '1',
'is_domain' => '0',
85
XML API
'name' => 'Number of domains with DNS hosting
provided',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '1048576',
'is_metered' => '0',
'res_id' => '100',
'is_reducible' => '0',
'units' => 'domain',
'multiplier' => '1'
},
{
'short_name' => 'kmemsize',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '10800',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Size of unswappable kernel memory',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2097151',
'is_metered' => '0',
'res_id' => '101',
'is_reducible' => '1',
'units' => 'KB',
'multiplier' => '1024'
},
{
'short_name' => 'lockedpages',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '256',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Unswappable user pages',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '102',
'is_reducible' => '1',
'units' => 'pages',
'multiplier' => '1'
},
{
'short_name' => 'vmguarpages',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '6144',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Memory allocation guarantee',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '103',
'is_reducible' => '1',
'units' => 'pages',
'multiplier' => '1'
},
{
'short_name' => 'shmpages',
86
XML API
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '21504',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Total size of SysV IPC shared memory',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '104',
'is_reducible' => '1',
'units' => 'pages',
'multiplier' => '1'
},
{
'short_name' => 'privvmpages',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '655360',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Total size of private pages',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '105',
'is_reducible' => '1',
'units' => 'pages',
'multiplier' => '1'
},
{
'short_name' => 'numproc',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '240',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of processes',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '32000',
'is_metered' => '0',
'res_id' => '106',
'is_reducible' => '1',
'units' => '',
'multiplier' => '1'
},
{
'short_name' => 'physpages',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '2147483647',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Total number of physical memory pages',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '107',
'is_reducible' => '1',
87
XML API
'units' => 'pages',
'multiplier' => '1'
},
{
'short_name' => 'oomguarpages',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '6144',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Guaranteed allocating address space',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '108',
'is_reducible' => '1',
'units' => 'pages',
'multiplier' => '1'
},
{
'short_name' => 'numfile',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '9312',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of open files',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '109',
'is_reducible' => '1',
'units' => '',
'multiplier' => '1'
},
{
'short_name' => 'numtcpsock',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '360',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of TCP/IP sockets',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '110',
'is_reducible' => '1',
'units' => '',
'multiplier' => '1'
},
{
'short_name' => 'numflock',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '206',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of file locks',
'is_ve_related' => '1',
88
XML API
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '111',
'is_reducible' => '1',
'units' => '',
'multiplier' => '1'
},
{
'short_name' => 'numpty',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '16',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of pseudo-terminals',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '112',
'is_reducible' => '1',
'units' => '',
'multiplier' => '1'
},
{
'short_name' => 'numsiginfo',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '256',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of siginfo structures',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2560',
'is_metered' => '0',
'res_id' => '113',
'is_reducible' => '1',
'units' => '',
'multiplier' => '1'
},
{
'short_name' => 'tcpsndbuf',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '1680',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Total size of TCP send buffers',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2095171',
'is_metered' => '0',
'res_id' => '114',
'is_reducible' => '1',
'units' => 'KB',
'multiplier' => '1024'
},
{
'short_name' => 'tcprcvbuf',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
89
XML API
'value' => '1680',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Total size of TCP receive buffers',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2095171',
'is_metered' => '0',
'res_id' => '115',
'is_reducible' => '1',
'units' => 'KB',
'multiplier' => '1024'
},
{
'short_name' => 'othersockbuf',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '2048',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Total size of other socket buffers',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2097151',
'is_metered' => '0',
'res_id' => '116',
'is_reducible' => '1',
'units' => 'KB',
'multiplier' => '1024'
},
{
'short_name' => 'dgramrcvbuf',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '256',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Total size of UDP receive buffers',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2097151',
'is_metered' => '0',
'res_id' => '117',
'is_reducible' => '1',
'units' => 'KB',
'multiplier' => '1024'
},
{
'short_name' => 'numiptent',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '128',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of entries in IP tables',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '3000',
'is_metered' => '0',
'res_id' => '118',
'is_reducible' => '1',
'units' => '',
'multiplier' => '1'
},
90
XML API
{
'short_name' => 'netrateguar',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '0',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Guaranteed network rate',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '1024',
'is_metered' => '0',
'res_id' => '119',
'is_reducible' => '1',
'units' => 'MBit/sec',
'multiplier' => '1024'
},
{
'short_name' => 'diskspace',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '0',
'value' => '1024',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Disk space quota',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '4194303',
'is_metered' => '0',
'res_id' => '121',
'is_reducible' => '1',
'units' => 'MB',
'multiplier' => '1024'
},
{
'short_name' => 'diskinodes',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '200000',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Disk inode quota',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '122',
'is_reducible' => '1',
'units' => 'inodes',
'multiplier' => '1'
},
{
'short_name' => 'cpuunits',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '0',
'value' => '1000',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'CPU usage',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '500000',
'is_metered' => '0',
91
XML API
'res_id' => '124',
'is_reducible' => '1',
'units' => 'unit',
'multiplier' => '1'
},
{
'short_name' => 'dcachesize',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '3624960',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Size of busy dentry/inode cache',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147482624',
'is_metered' => '0',
'res_id' => '125',
'is_reducible' => '1',
'units' => 'bytes',
'multiplier' => '1'
},
{
'short_name' => 'quotaugidlimit',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '100',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Limit of user quotas',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '126',
'is_reducible' => '1',
'units' => '',
'multiplier' => '1'
},
{
'short_name' => 'numothersock',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '360',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'Number of sockets other than TCP/IP',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '2147483647',
'is_metered' => '0',
'res_id' => '127',
'is_reducible' => '1',
'units' => '',
'multiplier' => '1'
},
{
'short_name' => 'rate_bound',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '0',
'is_countable' => '0',
'is_domain' => '0',
92
XML API
'name' => 'Guaranteed network rate is network rate
limit',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '1',
'is_metered' => '0',
'res_id' => '178',
'is_reducible' => '1',
'units' => '',
'multiplier' => '1'
},
{
'short_name' => 'cpulimit',
'is_unlim' => '0',
'id' => '129',
'is_advanced' => '1',
'value' => '100',
'is_countable' => '1',
'is_domain' => '0',
'name' => 'CPU limit',
'is_ve_related' => '1',
'overuse_rate' => '0.000000',
'max_value' => '100',
'is_metered' => '0',
'res_id' => '181',
'is_reducible' => '1',
'units' => '%',
'multiplier' => '1'
}
],
'plan_sid' => '100',
'status' => '1',
'is_upgrade' => undef,
'is_notify' => undef,
'add_params' => undef,
'prev_status' => '3',
'create_order_id' => '696',
'status_txt' => 'active',
'grace_date' => undef,
'billable_items' => [],
'start_date' => '2008-03-31 13:09:36',
'platform' => 'Linux Vz3.x',
'termination_date' => undef,
'expiration_date' => undef,
'plan_id' => '206',
'platform_id' => '3',
've' => {
'slm_mode' => '0',
'hn_ip_address' => '10.30.64.248',
'status' => 'running',
'apps' => undef,
'qos' => undef,
'hn_vz_interface' => '2',
'ips' => undef,
'offline_management' => '0',
'status_txt' => 'running',
'id' => '1027',
'is_root_pwd_syncd' => '1',
'ip_address' => '10.25.41.34',
'vza_status' => 'running',
'is_bandwidth_limited' => undef,
'is_custom_resolver' => undef,
'vendor_id' => '1',
'hw_id' => '2',
'os_tmpl_id' => '56',
'hn_service_ve_ip' => '10.24.8.101',
'account_id' => '3',
93
XML API
'utf_ve_name' => 'Plesk',
'platform_id' => '3',
've_name' => 'Plesk'
}
};
Domain Registration Subscription
{
'goaway_date' => undef,
'plan_sid' => '185',
'status' => '1',
'is_notify' => undef,
'prev_status' => '3',
'create_order_id' => '884',
'plan_type' => '6',
'plan_type_txt' => 'Domain Registration',
'account_no' => '6',
'domain' => {
'domain' => 'ros-test-851.cc',
'dns_enabled' => '1',
'added_by' => '1',
'nsset_id' => '1',
'ns_info' => undef,
'action' => '2',
'utf_domain' => 'ros-test-851.cc'
},
'renewal_policy' => '1',
'status_txt' => 'active',
'grace_date' => undef,
'id' => '163',
'start_date' => '2008-04-22 16:52:41',
'period' => '31104000',
'name' => 'ros-test-851.cc',
'termination_date' => undef,
'expiration_date' => undef,
'regdomain' => {
'real_expire_time_check' => undef,
'reg_status' => '1',
'period' => '1',
'plugin_name' => 'WebNIC',
'real_expire_time' => undef,
'reg_time' => '2008-04-22 16:52:42',
'domain' => 'ros-test-851.cc',
'id_protect' => undef,
'registrar' => 'WebNIC',
'action' => '2',
'reg_status_txt' => 'registered',
'expire_time' => '2009-04-22 16:52:42'
},
'plan_id' => '189',
'custom_subscr_fee' => undef,
'end_date' => '2009-04-22 16:52:41',
'plan_name' => '[WebNIC] Domain Registration',
'next_period' => '31104000',
'base_date' => '1941-04-01 13:38:32'
};
94
XML API
95
create_custom_invoice
The function allows adding an invoice manually, without aforegoing orders. A custom includes
custom items and fees.
Parameters
subscr_id
Optional parameter: ID of subscription. Optional
parameter.
vendor_id
ID of vendor account.
description
Invoice description text.
account_no
ID of account an invoice is created for.
items
Services or any other items included in an invoice.
Array of hashes of the following kind:
{
rate - fee for an item;
quantity - number of items (optional), 1 by default;
comment - item name or comment to an item;
start_time - item provisioning start date. Optional
parameter. If not specified, invoice creation date is
used.
}
amount
Invoice total amount. Optional parameter.
Returns:
In case of success, ID of added invoice is returned.
In case of error, error message is returned.
SOAP Faults codes:
NoOrderForProvider
Provider tries to place invoice for themselves.
InvalidAccount
A person logged in and trying to place an invoice is not
registered for an account that stands as vendor in
respect to an account an invoice is placed for.
Initiator
Failed to find a registered person that places an order
by initiator_email passed.
XML API
InvoiceFailed
A list of invoice items has been passed, but amount
specified for at least one of items is negative. In this
case, fees for all invoice items must be positive.
'Wrong amount value'
A list of invoice items has not been passed and invoice
amount passed is zero. In this case, an invoice amount
must be either positive or negative (for credit invoice).
96
get_account_campaigns
The function allows getting the information about marketing campaigns applied to a given
account.
Parameters:
account_id
ID of account the list of campaigns is needed.
Returns:
List o f arrays, each array consists of campaign ID (in database) and campaign digest (campaign
ID used in campaign URL):
Example of returned value:
return [
[3,'97651bf001'],....]
SOAP Faults codes:
No specific codes.
XML API
HSPC/API/Account
create_customer
The function adds a new customer account and person.
Parameters:
address1
Address line 1.
address2
Optional parameter: Address line 2.
city
City.
comment
Comment to account.
company_name
Optional parameter: If specified, account is
business.
country
Customer country.
email
Customer administrative e-mail.
fax_src
Customer fax number.
first_name
Customer first name.
fraud_check
Optional parameter: A flag that defines whether
an account is to be checked by anti-fraud
manager or not.
gender
Customer gender.
insertion
Customer name insertion.
lang
Customer personal language.
last_name
Customer last name.
middle_name
Customer middle name.
mobile_src
Customer mobile phone.
password
Customer personal password.
phone_src
Customer phone number.
prefix
Customer name prefix.
97
XML API
state
Customer state of residence.
suffix
Customer name suffix.
tax_ex_number
Customer VAT number.
zip
Customer address zip code.
ext_data
List of extended attributes
timezone
Customer time zone.
Returns: {account_id => NUMBER}
SOAP Faults codes:
NewAccountsDenied
New accounts creation is denied.
UserExtData
Extended attribute addition error.
UserAccount
Account creation error.
98
XML API
create_domain_contact
The function creates domain contacts.
Parameters:
account_id
Customer account ID.
address
Postal Address.
city
Customer city.
country
Customer country.
email
Customer administrative e-mail.
fax
Customer fax number.
first_name
Customer first name.
last_name
Customer last name.
company_name
Optional parameter: If specified, account is
business. Company name
phone
Customer phone number.
state
Customer state of residence.
zip
Customer address zip code.
Returns: {contact_id => NUMBER}
SOAP Faults codes:
No specific codes.
99
XML API
create_reseller
The function creates a partner application.
Parameters:
address1
Address line 1.
address2
Optional parameter: Address line 2.
city
City.
comment
Optional parameter:
application.
company_name
Company name.
description
Optional parameter: The text passed from the
comment parameter and shown in Partner
Application details in PCC.
country
Reseller country.
email
Reseller administrative e-mail.
ext_date
Optional parameter: Any additional information
needed in case specific accounting plug-in is
used.
fax_src
Optional parameter: Reseller fax number.
first_name
Reseller first name.
gender
Optional parameter: Customer gender.
insertion
Optional parameter: Reseller name insertion.
lang
Optional parameter: Reseller personal language.
last_name
Reseller last name.
middle_name
Optional parameter: Reseller middle name.
mobile_src
Reseller mobile phone.
password
Customer personal password.
phone_src
Reseller phone number.
prefix
Optional parameter: Reseller name prefix.
Comment
to
partner
100
XML API
state
Optional parameter (for non USA or Canada
countries): Reseller state of residence.
suffix
Optional parameter: Reseller name suffix.
tax_ex_number
Optional parameter: Reseller VAT number.
zip
Reseller address zip code.
Returns: {account_id => NUMBER}
SOAP Faults codes:
NewResellerDenied
New reseller accounts creation denied.
CompanyRegistered
A company with similar name is already
registered.
UserExtData
Extended attribute addition error.
ResellerSaveError
Reseller account creation error.
get_account_info
The function returns information on an account.
Parameters:
account_id
Account ID
Returns: ACCOUNT_INFO (on page 102)
SOAP Faults codes:
No specific codes.
101
XML API
Example of ACCOUNT_INFO Hash
{
'vendor_name' => 'Provider',
'technical_phone' => '+1 1239867',
'technical_fax' => '',
'admin_first_name' => 'Kate',
'address' => {
'country' => 'US',
'country_loc' => 'United States',
'city' => 'Karson',
'zip' => '123456',
'fax' => '',
'state' => 'AL',
'state_loc' => 'Alabama',
'address1' => 'Park Lane 45',
'phone' => '+1 1239867',
'mobile' => '',
'address2' => '',
'state' => undef
},
'admin_phone' => '+1 1239867',
'billing_prefix' => '',
'admin_prefix' => '',
'billing_mobile' => '',
'billing_last_name' => 'Green',
'lang' => 'en',
'billing_middle_name' => '',
'technical_middle_name' => '',
102
XML API
'name' => 'Kate Green',
'admin_last_name' => 'Green',
'account_id' => '228315',
'technical_email' => 'kate@green.com',
'admin_middle_name' => '',
'account_type' => '3',
'technical_insertion' => '',
'technical_suffix' => '',
'admin_suffix' => '',
'billing_fax' => '',
'billing_email' => 'kate@green.com',
'billing_phone' => '+1 1239867',
'status' => 'active',
'billing_first_name' => 'Kate',
'admin_gender' => '',
'admin_email' => 'kate@green.com',
'technical_prefix' => '',
'admin_fax' => '',
'admin_insertion' => '',
'technical_last_name' => 'Green',
'billing_gender' => '',
'technical_first_name' => 'Kate',
'vendor_id' => '1',
'billing_insertion' => '',
'technical_gender' => '',
'billing_suffix' => '',
'admin_mobile' => '',
'technical_mobile' => '',
103
XML API
'comment' => ''
};
get_domain_contact_list
The function returns the list of domain contacts.
account_id
Account ID.
Returns: {contact_list => DM_CONTACT list}
SOAP Faults codes:
No specific codes.
get_reseller_terms
The function returns reseller Terms and Conditions.
Returns: {title => STRING, body => STRING}
SOAP Faults codes:
No specific codes.
validate_password
The function checks password in accordance with password strength settings.
Parameters:
password
Password.
Returns: {result => 1}
SOAP Faults codes:
UserBadPassword
Password is invalid or not acceptable.
104
XML API
105
get_extended_attr_list
The function returns extended attributes needed for customer or reseller account creation if a
specific accounting plug-in is enabled or just some custom extended attributes (on page 196)
are used.
Parameters:
customer_type
Account type: customer or reseller, value:
1 - customer account
2 - reseller account
Returns value: [ { view_name=>, title=>, value=>, type=> }, .. ]
SOAP Faults codes:
No specific codes.
XML API
106
get_person_list
The function returns the detailed information about person(s) associated with a particular
account, i.e., account users.
Parameters:
account_id
Account numerical identifier assigned in the
Parallels Business Automation - Standard
database.
Returns: a hash or a hash of hashes (if several users are associated with an account). A hash per
person looks like:
'person_list' => [
{
'lang' => 'en',
'person_id' => '2',
'account_list' => [
{
'status' => '0',
'vendor_id' => '1',
'person_id' => '2',
'name' => 'First Last',
'type' => '3',
'account_id' => '2'
}
],
'middle_name' => '',
'last_name' => 'Last',
'email' => 'mail@provider.com',
'insertion' => '',
'comment' => '',
'suffix' => '',
'gender' => 'M',
'prefix' => '',
'first_name' => 'First'
}
],
...
};
SOAP Faults codes:
MissingAccount
Account not found.
AccountsDenied
Access denied.
AccountAccessDenied
Access denied.
MissingPerson
Person not found.
PersonsDenied
You are not allowed to access persons.
XML API
107
XML API
HSPC/API/Person
auth_person
The function authenticates a person.
Parameters:
email
Person e-mail. Together with password can be
replaced with sid.
password
Person password. Together with email can be
replaced with sid.
ip
Optional parameter. Customer IP. If specified,
the anti-fraud Login Filter is activated.
sid
Client CP session ID (SID). Optional
parameter. Can be passed instead of email and
password and in this case a customer will be
authenticated in Store by this session ID.
login_to_cp
Optional parameter. The value can be 1 (true)
or 0 (false). If true, the function will include
the client CP session ID (SID) into the
response.
Returns: PERSON_INFO:
{
'sid' => 'e3b09cb237a41b6867bcbb62ac8899da',
'person' => {
'lang' => 'en',
'person_id' => '5',
'account_list' => [
{
'status' => '0',
'vendor_id' => '1',
'person_id' => '5',
108
XML API
'name'
=>
'Account
Name',
'type' => '3',
'account_id' => '5'
}
],
'middle_name' => '',
'last_name' => 'Smith',
'email' => 'smith@mail.com',
'insertion' => '',
'comment' => '',
'suffix' => '',
'gender' => 'female',
'prefix' => '',
'first_name' => 'Jane'
}
};
SOAP Faults codes:
UserAuthen
User authentication error.
The returned hash presents person information:
Parameter
Means
sid
Client CP session ID. Returned in case the sid parameter is
passed with the 'true' value.
109
XML API
person
Person information. Contains hash:
Parameter
Means
lang
Two-letter
ISO
639
(http://www.loc.gov/standards/iso6392/php/code_list.php) language codes
abbreviation in lower case of the
interface language set for a person.
person_id
Person numerical identifier assigned in
the Parallels Business Automation Standard database.
account_list Properties of the account a person is
associated with. Contains hash:
status - Account status: 0 - 'active',
1 - 'on_hold', 2 - 'for_approval' (held
by anti-fraud filter and waits for
vendor manual approval), 255 'deleted'.
vendor_id -Numerical identifier
of vendor account (provider or
reseller). This is an account ID
assigned automatically in Parallels
Business Automation - Standard.
person_id - Person numerical
identifier assigned in the Parallels
Business Automation - Standard
database.
name - Account name.
type - Account type: 1- Provider
account, 2 -Reseller account, 3 Customer account.
account_id - Account numerical
identifier assigned automatically in
Parallels Business Automation Standard.
middle_name
Person middle name.
last_name
Person last name.
email
Person e-mail used as password.
insertion
Person last name insertion.
comment
Free-form comment that can be added
to a person information.
suffix
Person name suffix.
gender
Person gender: Male or Female.
prefix
Person name prefix (Mr, Mrs, etc.).
first_name
Person first name.
110
XML API
111
get_person_info
The function returns a registered person details by a person numerical ID assigned on
registration in the Parallels Business Automation - Standard database.
Parameters:
person_id
A registered person numerical identifier
assigned in the Parallels Business
Automation - Standard database
SOAP Faults codes:
MissingPerson
Person not found
PersonsDenied
You are not allowed to access persons
Returns:
$VAR1 = {
'lang' => 'en',
'person_id' => '2',
'account_list' => [
{
'status' => '0',
'vendor_id' => '1',
'person_id' => '2',
'name' => 'First Last',
'type' => '3',
'account_id' => '2'
}
],
'middle_name' => '',
'last_name' => 'Last',
'email' => 'mail@provider.com',
'insertion' => '',
'comment' => '',
'suffix' => '',
'gender' => 'M',
'prefix' => '',
'first_name' => 'First'
};
XML API
HSPC/API/Domain
check_domain_list
The function checks domains for availability.
Parameters:
hp_sid
Hosting plan series key.
action
An action to be performed over a domain:
'dns_hosting' - Subdomain either in
provider's or in user's domain. Domain
must present in Provider DNS already.
'domain_pointer' - Use domain, registered
elsewhere, new in Provider DNS. It's
equivalent to 'Use existing domain,
registered elsewhere' field in store.
'register_new' - Register a new domain.
'reg_transfer' - Transfer a registered
domain to Provider DNS.
'use_existing' - A domain is present in
Provider DNS already, for example a user
already
has
domain
registration
subscription. Now user wants, for
example, to buy a plesk domain with the
same domain name. The action
corresponds to 'Use one of my domains'
field in Store.
account_id
Optional parameter in all cases except for the
action='use_existing': ID of an account a
domain is to be registered for.
domain_list
List of domains to be checked.
Returns: {available_domain_list => [List of OK domains]}
SOAP Faults codes:
HPDomainOnly
Hosting plan series key passed to the
function does not belong to domain
registration hosting plan.
NoAccountIdSpecified
action='use_existing', but ID of account is
not specified.
112
XML API
check_domain_name_syntax
The function checks domain name syntax.
Parameters:
domain
Domain name.
Returns: {result => 1 | 0}
SOAP Faults codes:
No specific codes.
get_domain_list
The function returns the list of domains a customer can use for subdomains creation.
Parameters:
account_id
ID of an account for
information is returned.
for_trial
If this parameter is specified, then only
those domains which allow creation of
trial subscriptions are returned.
Returns: {domain_list => [List of domains for subdomain]}
SOAP Faults codes:
No specific codes.
which
the
113
XML API
validate_ns_list
The function checks validity of name servers list.
Parameters:
ns_list
LIst of name servers. Each list item
consists of two elements:
name server hostname
name server IP address
Returns: {result => 1 } or Fault
SOAP Faults codes:
UserNoNS
Name server hostname is not specified.
UserNoIP
Name server IP address is not specified.
UserInvalidNSName
Name server hostname is invalid.
UserIPInvalid
Name server IP address is invalid.
114
XML API
save_contact
The function creates or saves changes to an existing domain contact.
Parameters (all optional except for account_id):
hp_sid
Hosting plan series key.
domain
A domain name.
action
An action performed over a domain:
domain registration or transfer.
contact_type
Contact type (administrative, billing,
technical, etc., depending on a plug-in).
The plug-in specific contact types are
also specified using this parameter.
account_id
Account numerical ID assigned in
Parallels Business Automation Standard database.
contact_id
Contact ID in database (used for contact
editing only since when a new contact is
created, no ID yet exists)
form_data
Domain contacts screen form data hash.
In other words, the data to be filled into
a domain contact dorm. If not provided,
then a contact form is filled by data
taken from account.
Returns: {contact_id => [new contact ID]} or Fault
SOAP Faults codes:
HPTypeInvalid
HP SID does not correspond to a
hosting plan type
DMContactError
Error saving contact data
115
XML API
116
validate_domain_data
The function validates data for a domain or domains list.
Parameters (all optional, but at least domain, action, contact_hash or domain_data_hash must be
used):
hp_sid
Hosting plan series key.
domain
A domain name.
action
An action performed over a domain:
domain registration or transfer.
contact_hash
Contact data hash (all contact data:
administrative, billing, technical, other
additional types of contact data,
depending on a plug-in)
account_id
Account numerical ID assigned in
Parallels Business
Automation
Standard database. Used only if no
contacts found in database and domain
contact data is to be taken from account
profile.
form_data
A domain form data hash (extdata). In
other words, any extended data besides
the base contacts needed for a domain
registration. If extended data is required,
his hash is used to fill the extended data
form.
domain_data_hash
This parameter allows validating a
number of domains at once. The hash
looks like:
{
domain_name => $h{domain},
contact_hash => $h{contact_hash},
action => $h{action},
}
Returns: {result => 1 } or Fault
SOAP Fault Codes:
XML API
UserDomainDataError
Invalid data in domain contacts or
extdata.
HSPC/API/Mailer
send
This function sends e-mail.
Parameters:
to_email
Recipient's e-mail.
to_name
Recipient's name.
subject
Message subject.
body
Message body.
from_email
Sender's e-mail.
from_name
Sender's name, by default is set in mailer.
Returns: {result => 1}
SOAP Faults codes:
No specific codes.
117
XML API
118
HSPC/API/PP
get_saved_paymethod_list
The method provides a list of payment methods saved in Parallels Business Automation Standard database the owner (customer) could choose from.
Parameters:
plugin_id
A payment plug-in alphabetical ID internally
used in Parallels Business Automation Standard.
account_id
Numerical identifier (ID) of account owning a
payment method.
Returns:
PAYMETHOD_LIST =
{
paymethod_id => NUMBER,
name => STRING,
paytype => STRING,
paytype_id => STRING,
expire_date => STRING,
}
Note: The expire_date is returned for credit cards only.
SOAP Faults codes:
No specific codes.
XML API
get_plugin_list
The method provides a list of plug-ins available for payment.
No parameters.
Returns:
PLUGIN =
{
plugin_id => STRING,
title => STRING,
is_redirect => BOOLEAN,
has_form => BOOLEAN,
paymethod_category_titles => [STRING, ...],
description => STRING,
}
SOAP Faults codes:
No specific codes.
get_layout_hash
The method provides the form to be filled by customer in Store.
Parameters.
plugin_id
A payment plug-in alphabetical ID internally
used in Parallels Business Automation Standard.
account_id
Numerical identifier (ID) of account owning a
payment method.
Returns:
LAYOUT =
{
form => STRING,
check_javascript => STRING,
param_list => [STRING, STRING, ... ],
}
SOAP Faults codes:
No specific codes.
119
XML API
120
get_redirect_hash
The method registers an attempt to pay by redirect or INIpay plug-in and returns back the
redirect information.
Parameters:
plugin_id
A payment plug-in alphabetical ID internally
used in Parallels Business Automation Standard.
order_id
Numerical identifier (ID) of an order.
url_back
Store URL a customer is to be redirected from
an external payment gateway.
Returns:
REDIRECT =
{
url => STRING,
method => STRING,
params => {param1 => STRING, param2 => STRING, ...}
onload_js_func => STRING,
content => STRING,
}
SOAP Faults codes:
No specific codes.
XML API
121
pay
The method registers an attempt to pay by direct plug-in and does nothing in case of redirect
payment.
Parameters:
plugin_id
A payment plug-in alphabetical ID internally
used in Parallels Business Automation Standard.
order_id
Numerical identifier (ID) of order.
$paymethod_id
For saved payment methods: a payment
method numerical identifier (ID) assigned in
Parallels Business Automation - Standard.
$form_args
Arguments for the form to be filled by a
customer obtained from get_layout_hash.
$fraud_query
In case a new payment method has been submitted, the PHP Store picks up the form_args for
pay() method from the param_list returned by the get_layout_hash method. In case
a customer wants to use that payment method already saved in Parallels Business Automation Standard database, the additional argument is paymethod_id. So, either paymethod_id or
$form_args->{paytype_id} must be specified . The fraud_query are arguments
gathered from client (if any) regarding anti-fraud check. The required fields are obtained via
HSPC::API::Fraud->get_warning_newpaymethod.
XML API
122
get_status
The method returns the current status of a document in Parallels Business Automation Standard Payment Processing.
Parameters:
order_id
Numerical identifier (ID) of an order.
Returns:
STATUS =
{
code => NUMBER,
string => STRING,
}
SOAP Faults codes:
No specific codes.
HSPC/API/Fraud
get_warning_newpaymethod
The method provides a form to be displayed in the Store to query a user information related to
Anti-Fraud check of his/her order, when he/she pays by a new payment method.
Parameters:
order_id
Numerical identifier (ID) of an order.
Returns:
{
form
=> STRING,
check_javascript => STRING,
param_list
=> [STRING, STRING, ... ],
};
SOAP Faults codes:
No specific codes.
XML API
123
get_resume_newpaymethod
The method returns the current status for a given order in case an asynchronous Anti-Fraud
check is performed.
Parameters:
order_id
Numerical identifier (ID) of an order.
Returns:
HTML string (with formatting).
SOAP Faults codes:
No specific codes.
get_safe_description
The method returns the reason the order was declined by Anti-Fraud system.
Parameters:
order_id
Returns string.
SOAP Faults codes:
No specific codes.
Numerical identifier (ID) of an order.
XML API
HSPC/API/Config
get_provider_config
Parameters:
No parameters
Returns (returned data structure is described later in this section):
$VAR1 = {
'currency' => {
'currency_radix' => '.',
'currency_sign_code' => '90;36',
'separator_char' => ',',
'currency' => 'Dollar',
'iso_alfa' => 'ZWD',
'entity' => 'Zimbabwe',
'currency_alignment' => '1',
'currency_minor' => '2'
},
'default_lang' => 'en',
'lang_list' => [
{
'title' => 'English',
'id' => 'en'
},
{
'title' => 'Spanish',
'id' => 'es'
},
124
XML API
125
{
'title' => 'Russian',
'id' => 'ru'
}
],
'store' => {
'referral' => {
'question' => undef,
'option_list' => []
},
'is_opened' => '1',
'provider_name' => 'Provider-Provider',
'text_info' => {
'account_agreement_text'
undef,
'offline_header' => undef,
'agreement_text' => undef
}
},
'is_use_ssl' => '1',
'is_use_ssl_cp' => '0',
'tax_info' => {
'is_taxation_enabled' => '0',
'tax_zone' => undef,
'is_tax_included' => '0'
}
};
=>
XML API
SOAP Faults codes:
No specific codes.
The returned hash presents provider configuration and store settings:
Parameter
Means
currency
System-wide currency settings. Includes the hash:
Parameter
Means
currency_radix
Decimal separator character.
currency_sign_cod Currency sign ASCII code.
e
separator_char
Thousand separator character.
currency
Currency name.
iso_alfa
Alphabetical currency ISO code.
entity
Country name.
currency_alignmen Currency sign alignment, to the
t
right or to the left of the amount
(1 - to the left, 2 - to the right).
currency_minor
Format of the fractional part of
prices, i.e., number of digits
after comma.
default_lang
Provider default language.
lang_list
Language packs enabled. Contains hash of hashes each of
them specifying a language pack enabled. Each hash looks
like:
Parameter
Means
title
Language name shown in store.
id
ISO language code in lowercase, just like a language pack
directory name (en for English,
de for German)..
126
XML API
store
Basic Store settings. Includes the hash of hashes:
Parameter
Means
referral
Referral question parameters
hash:
question - referral question
option_list
- referral
answers list
is_opened
Is store opened. 1 - yes, 0 - no.
provider_name
Provider company name shown
in store
text_info
User Agreements and offline
payment system description.
Contains hash:
account_agreement_text
- User Agreement to accept on
account registration
offline_header - Offline
payment systems descriptin
shown on Payment page.
agreement_text - User
Agreement to accept before
placing order.
is_use_ssl
If SSL is enabled for store. 1 - yes, 0 - no.
is_use_ssl_cp
If SSL is enabled for Control Panel. 1 - yes, 0 - no. The
parameter passes to store, how customers should be redirected
from store to CP: by http or by https.
127
XML API
tax_info
128
Taxation settings. Contains hash:
Parameter
Means
is_taxation_enabl If taxation is enabled as systemed
wide setting. 1 - yes, 0 - no.
tax_zone
Name of a tax zone to be
mentioned in store.
is_tax_included
If hosting plan prices include
taxes (1) or not (0). If not then if
taxation is enabled, taxes will be
added to an order total upon
checkout.
HSPC/API/Campaign
get_campaign
Parameters:
digest
Campaign key used as a unique campaign
identifier.
Returns ID (numerical identifier assigned in Parallels Business Automation - Standard database)
of the promotion associated with a given Campaign:
{
'promo_id' => '1'
};
SOAP Faults codes:
NoCampaignFound
No campaign exists for the digest specified
XML API
get_account_campaigns
The method allows finding campaigns that belong to an account.
Parameters:
account_id
ID of an account.
Returns a reference to array of [id, digest] pairs,
where id is internal Campaign ID, digest - Campaign identifier used in redirector URL.
SOAP Faults codes:
No specific codes.
HSPC/API/SSL
get_cert_form
The function returns the SSL certificate configuration form in HTML format.
Parameters:
hp_sid
Hosting plan series key.
form_data
Prefill values for the HTML form.
account_id
ID of an account an SSL certificate is to be
registered for.
Returns:
“
”
SOAP Faults codes:
No specific codes.
129
XML API
validate_cert_form
The function checks the SSL certificate configuration form data for validity.
Parameters:
hp_sid
Hosting plan series key.
form_data
The values filled out by the customer using
the form from get_cert_form.
account_id
ID of an account an SSL certificate is to be
registered for.
Returns:
{ field_with_error => “Field with error: error description” }
SOAP Faults codes:
No specific codes.
130
XML API
131
get_parsed_csr_data
The function parses the CSR submitted by user in order to show the parsed CSR content on the
"Submit Order" step in store.
Parameters:
hp_sid
Hosting plan series key.
form_data
The values filled out by the customer using
the form from get_cert_form.
account_id
ID of an account an SSL certificate is to be
registered for.
Returns the parsed CSR data as follows:
{
parse_error => if exists,
country => string,
state => string,
city => string,
organization_name => string,
organizational_unit_name => string,
common_name => string,
};
SOAP Faults codes:
No specific codes.
132
CHAPTER 3
Online Store Integration and
Customization
Starting with the version 4.3.3, PBAS is shipped with two stores:
The old store used in previous versions, fully functional with all the options used before
version 4.3.3. After upgrading to version 4.3.3, the old store remains in use, by default. For
details about old store configuration and customization refer to PBAS SDK version below
4.3.4 (http://download.pa.parallels.com/pbas/4.3/doc/PBAS_SDK_43.pdf).
The new store which is faster, dynamic, customizable, with the tabbed screen and
shortened purchase wizard.
In this chapter the new online store integration and customization options are described.
The new store configuration available from PBAS Provider Control Panel is described in PBAS
Provider guide >> Managing Online Store > New Store Configuration Basics.
In This Chapter
Online Store Structure ........................................................................................................... 132
Deploying Online Store ........................................................................................................ 133
Open Store, Switch between Old and New Stores ................................................................ 137
Configuring Redirect URLs to Integrate the Store with Existing Website ........................... 138
Store Customization .............................................................................................................. 143
Updating Third-Party Libraries ............................................................................................. 151
Online Store Structure
Online store is installed by default into the /var/opt/hspc-store directory.
It has the following structure:
i18n – directory with language packs
includes – directory contains symphony framework components and online store logic
templates – directory with templates
web – contains index.php and static content
customization – the directory, where your customization should be placed. See below.
settings.ini – online store config
Online Store Integration and Customization
133
Deploying Online Store
The new store is installed automatically in its default location on PBAS Management Node
/var/opt/hspc-store and does not affect the old store settings. By default, after
upgrading to version 4.3.3, the old store is used.
The new store can also be deployed on a remote server (on page 133).
Store Installation on Remote Server
The new store installation on a remote server is basically similar to the the old store installation.
Step-by-step instructions are below.
Important: It is supposed that in case of the remote installation the store is used by one vendor
only.
Store Installation in Virtuozzo Container
Since the new store is included in the PBAS installer, the Virtuozzo Container that will host the
store must match a part of the requirements for PBAS Management Node. For instance, the
installation is possible over the following 32-bit host OSes:
Red Hat Enterprise Linux AS5
CentOS 5
The new store may be deployed over the other OSes, including the 64-bit ones, however in this
document we do not consider such environments for the new store.
Important: It is recommended to use secured connection for the store (https). To this effect,
install the mod_ssl template in the Container designated for the store deployment.
By default, the store is deployed in the /var/opt/hspc-store/ directory. If needed, you
may deploy the store in any other folder, providing that you make the corresponding changes to
httpd settings.
To deploy the new store in the Container:
1. Copy the following packages from PBAS distributive into the Container designated for the
store deployment:
# cd /path/to/pbas-installer/packages/
# scp hspc-store-4*.rpm php53-*.rpm gmp-*.rpmlibxml2-*.rpmroot@remote.store:/tmp/
For PBAS 4.3.4 the list of packages will be the following:
hspc-store-4.3.3-46.swsoft.i386.rpm
php53-5.3.3-13.el5_9.1.i386.rpm
php53-cli-5.3.3-13.el5_9.1.i386.rpm
Online Store Integration and Customization
134
php53-common-5.3.3-13.el5_9.1.i386.rpm
php53-mbstring-5.3.3-13.el5_9.1.i386.rpm
php53-soap-5.3.3-13.el5_9.1.i386.rpm
gmp-4.1.4-7.i386.rpm
libxml2-2.6.26-2.1.2.8.i386.rpm
2. Log in to the store Container and run the following commands:
# cd /tmp/
# rpm -Uhv *.rpm
3. Configure the httpd server:
Open the file /etc/php.ini and add/edit the following settings:
default_socket_timeout = 300
The installer includes the ready-to-use configuration file for Apache HTTP Server:
/var/opt/hspc-store/hspc_shop.conf.in
Run the following commands:
#
cp
/var/opt/hspc-store/hspc_shop.conf.in
/etc/httpd/conf.d/hspc_shop.conf
# service httpd restart
Important: If you are planning to use the secured protocol https for the store, do the
following:
a
Open the file /etc/httpd/conf.d/ssl.conf
b
Find the section and at the end of this section add the
following string:
Include "conf.d/hspc_shop.conf"
c
Run the command:
# service httpd restart
4. Configure the access to PBAS XML API. At the sever that runs Parallels Business
Automation
Standard
(i.e.,
your
Management
Node),
edit
the
/etc/hspcd/conf/hspc_ssl.conf file:
Change Allow from none
Into Allow from store_hostname store_ip
where store_hostname store_ip must be replaced with either your store hostname, or store
IP address, or both store hostname and IP in one string divided with a space.
Save the changes to hspc_ssl.conf file.
Restart httpd.
5. Configure authorization for the store:
a
Log in to PCC, go to Commerce Director > Store Manager > Configure Store > Security
Settings, generate the key.
b
Log
in
the
store
Container,
store/settings.ini.
open
the
file
/var/opt/hspc-
Online Store Integration and Customization
135
Specify the PBAS Management Node IP address for the HSPCOMPLETE_SERVER
parameter.
Paste the generated secure key for the SECURE_KEY parameter.
Warning: During the store upgrade to the next version, the file /var/opt/hspcstore/settings.ini will be rewritten. It is highly recommended that you create a
copy of this settings.ini file and keep it safely.
6. Configuration is competed. If all of the configuration steps are done correctly, the new store
will be available by the Container address.
Store Installation in Parallels Plesk Panel
To deploy the new store in Parallels Plesk Panel:
1. Create a subscription in Plesk Panel. PHP Support should be enabled for domain in Plesk
Panel at: Websites & Domains > domain.tld > Website Scripting and Security.
Note: PHP version 5.3.3 or higher should be installed on the Plesk server. Additionally, the
php53-soap (php-soap) and php53-mbstring (php-mbstring) packages should be installed.
2. Copy the store files into the Plesk Panel domain.
For example, using the command as follows:
#
scp
-r
/var/opt/hspc-store/
root@PLESK_SERVER_IP:/var/www/vhosts/domain.tld/httpdocs/
3. Configure web server parameters. Use the predefined configuration file shipped with the
store:
/var/www/vhosts/domain.tld/httpdocs/hspc-store/hspc_shop.conf.in
For Plesk 11.5:
Copy the content of the hspc_shop.conf.in file and in the Plesk Panel, enter it into
Websites & Domains > domain.tld > Web Server Settings.
Fields: Additional directives for HTTP or Additional directives for HTTPS depending on
the protocol that would be used for the store.
Important! Do not forget to replace the default directory:
Alias /shop/
/var/opt/hspc-store/web/
with the directory that corresponds to your domain name, for example such as for
domain.tld:
Alias /shop/
store/web/
/var/www/vhosts/domain.tld/httpdocs/hspc-
For Plesk versions below 11.5
Copy the content of the hspc_shop.conf.in file into the file:
/var/www/vhosts/domain.tld/conf/vhost.conf
Or (depending on the protocol used for the store):
/var/www/vhosts/domain.tld/conf/vhost_ssl.conf
Important! Do not forget to replace the default directory
Online Store Integration and Customization
Alias /shop/
136
/var/opt/hspc-store/web/
with the directory that corresponds to your domain name,for example such as for
domain.tld:
Alias /shop/
store/web/
/var/www/vhosts/domain.tld/httpdocs/hspc-
Reconfigure the domain:
/usr/local/psa/admin/bin/httpdmng
domain.tld
--reconfigure-domain
4. Configure the access to PBAS XML API. At the sever that runs Parallels Business
Automation
Standard
(i.e.,
your
Management
Node),
edit
the
/etc/hspcd/conf/hspc_ssl.conf file:
Change Allow from none
Into Allow from store_hostname store_ip
where store_hostname store_ip must be replaced with either your store hostname, or store
IP address, or both store hostname and IP in one string divided with a space.
Save the changes to hspc_ssl.conf file.
Restart httpd.
5. Configure authorization for the store:
Log in to PCC, go to Commerce Director > Store Manager > Configure Store > Security
Settings, generate the key.
Open
the
file
store/settings.ini
/var/www/vhosts/domain.tld/httpdocs/hspc-
Specify the PBAS Management Node IP address for the HSPCOMPLETE_SERVER
parameter.
Paste the generated secure key for the SECURE_KEY parameter.
In addition, we recommend to specify the path to store logs via the LOG_LOCATION
parameter.
Note: You may see the error “open_basedir restriction in effect” in domain error log
(/var/www/vhosts/domain.tld/logs/error_log
or
/var/www/vhosts/domain.tld/statictics/logs/error_log). To avoid
this error, add the logs directory path (as you have specified for the LOG_LOCATION
parameter) to the value of the open_basedir parameter. This will make the logs
directory content allowed for reading by PHP scripts. The open_basedir parameter
value can be set in the Plesk Panel, Websites & Domains > domain.tld > PHP settings.
6. Configure the Store settings in PBAS. Log in to PCC.
a
Go to Commerce Director > Store Manager > Configure Store and enter the valid Store
URL.
b
Set the SSL support for the store. Go to Configuration Director > Miscellaneous Settings
> SSL Setup. If SSL is enabled for the Plesk Domain, where Store is deployed, then
activate the Enable SSL in Store option.
Online Store Integration and Customization
137
Note: To enable SSL for the Plesk Domain, log in to the Plesk Panel, go to Home >
Subscriptions > https-shop.com > Websites & Domains > domain.tld > Website Scripting and
Security, enable the SSL support. In addition, the Plesk Domain should be moved to the
dedicated IP address and SSL certificate should be installed.
Open Store, Switch between Old
and New Stores
The new store is opened and closed together with the old store, in Commerce Director > Store
Manager > Configure Store, the General Settings tab, the Status field.
To switch between the old and the new stores change the Store URL so that the links used in
Provider/Reseller Control Centers and Customer Control Panel point to the new store: Go to
Commerce Director > Store Manager > Configure Store, the General Settings tab. Enter the new
store URL: (depending on security settings, specify http:// or https://): Default URL to the new
store: /shop.
How to stop using one of the stores. Since both stores are closed together, it is not possible to
close or open one of them. To stop using one of the stores, you need to configure redirect from
one
store
to
another.
For
details,
refer
to
Knowledgebase
Article
(http://kb.parallels.com/116379).
Online Store Integration and Customization
138
Configuring Redirect URLs to
Integrate the Store with Existing
Website
The new store provides graphical interface to compose the redirect URLs that may be placed to
your existing website, to integrate it with PBAS online store.
The redirect may contain:
The pre-selected packages. Customers are redirected to the online store with a particular
package already in the Shopping Cart. The redirect ID that is appended to the URL carries
the information about the package preselected. Promotions applied to the presenected
packages are also passed ot redirect.
Note: The auto-generated ID for the redirect URL may be renamed later into a more descriptive
one, to easier recognize your redirects.
The online store tabs (that correspond to hosting plan categories) and plan groups. For
more details about Plan categories and Plan groups refer to PBAS Provider guide >>
Managing Online Store > New Store Configuration Basics. In this case, manually append
the plans category ID to the generated redirect. The Defadlt tabs (More Services and
Domains) have the fixed IDs specified at the bottom of the store Redirector screen. For
details, see the Example 1.
Domain lookup results. The domain lookup results may be sent to PBAS store from the
HTTP form, together with the redirect. The generated redirect URL is placed in the Search
Domain form HTML code manually. For details, see the Example 2.
Store language. Appended automatically when the Redirect URL is created. You may also
append any language available in online store by replacing a language two-letter code (in
lowercase) in the generated redirect URL.
To configure redirect URLs:
1. Open the store in the browser.
2. Select a hosting plan or a plan group.
3. Sign in as an existing customer and enter your Provider account login and password. When
signed in, the Create static link for this configuration link appears in the Shopping Cart area:
Online Store Integration and Customization
139
4. Click the Create static link for this configuration link. Now your pre-selection is captured,
but not saved yet. The Preconfigured Store Links page opens. The newly pre-selected link
and all the links created before are displayed. The new pre-selection is shown on the top as
the Current Configuration in Shopping Cart.
5. Click Create new link. The redirect URL is generated. The new link details are shown on top
of the Links List:
To change the Link ID, just retype it and then click Rename. The Link ID may consist of
digits '0-9', lowercase and uppercase letters 'a-z' and underscores '_' only. The length of the Link
ID should be between 3 and 30 characters.
To delete the link, click Delete link.
To change the pre-selected package for the redirect URL, click Change configuration. You
will be redirected to Store page with the pre-selected package configuration. Change
configuration and click the Create static link for this configuration link in the Shopping Cart area.
The Links List is displayed. The updated configuration is shown on top:
Online Store Integration and Customization
140
To save the changes to the configuration and update the redirect URL, click Update existing link.
Important: Save the updated link before you start updating another links. When you are
redirected to store, your unsaved updates are dropped.
Example 1. Redirect URL to the Store Tab
The store tabs correspond to the Plan Categories, and each Plan Categore has the numeric ID
assigned in PBAS.
In addition, there are two default tabs that have static :
Domains
More Services
Generally, to get the Redirect to the Store tab, the tab ID is appended to the Redirect URL
instead of the link ID.
For your convenience, the ready to use redirects to all of the store tabs that are in use, are shown
at the bottom of the Redirector screen. For details, read more about Redirects (on page 138).
To get the list of the "Store tab" Redirects, scroll the Redirector screen down to the Static Links
List. Then expand the list. The list of links is displayed. Copy the link and use it at your website.
Example 2. Pass Domain Lookup Results to the Store with Redirect
URL
The Store Redirector allows redirecting the customers to your Store not only with the preselected package, but at the same time, pass the Domain Lookup data. In this case, the Store will
be opened with the pre-selected package, or the Domains tab chosen, then the Domain Lookup
performed, and the Domain lookup results are shown.
To set up the redirect with the Domain Lookup data, prepare the Doman Search form, to be
placed to the external website.
The HTML code for the Domain Search form should contain the specific parameters:
Parameter
Value or Description
method
POST
action
http:///shop//redirect/
Where:
- domain name of your PBAS MN
- the two-letter language code, for Store interface. For
example, en.
- the link to any of the pre-configured packages from your
pre-selector, or link to the Domains tab. For example:
http://provider.com/shop/en/redirect/c_domains.
Online Store Integration and Customization
dm_action
domain_selection_typ
e
141
Domain action. Possible values:
register_new - register a new domain
reg_transfer - transfer a registered domain
domain_pointer - use a domain registered elsewhere
The type of the input for the domain lookup. Use either single or multi
types in the Domain Search form. Possible values:
single - check the single domain with various TLDs. Use the text
input type with the domain_name parameter, to enter the domain
name and then the checkbox input types with the tld[] parameter to
provide the TLDs selection in the Domain Search form.
multi - use only the textarea input type with the domain_names
parameter, to enter the full domain names divided with comma,
semicolon, or white space, like mydomain.com otherdomain.com.
domain_name
The domain name for lookup. Use this parameter for the single
domain_selection_type.
tld[]
TLDs, for the single domain name. Use this parameter for the single
domain_selection_type.
domain_names
Domain names for lookup. Use this parameter for the multi
domain_selection_type.
Online Store Integration and Customization
142
Example of the Domain Search form HTML code. The usage of all parameters is shown in
this example.
Test preselector with domain lookup data
Store Customization
The store customization options are described in this section.
Changing Store Layout, Styles and Images
The store provides a wide range of options for pages customization.
It is possible to customize palette, fonts, use own images and logotypes, change the size and
positioning of configuration blocks and controls, hide configuration blocks for various types of
hosting plans, change any templates, for example header and footer. All these option are
described below in this section.
Change palette, fonts, and styles
The Parallels Common UI skin, which is used, for instance for Plesk Panel 11.5, has been taken
as the basic theme for the new Store.
If you already have the store branded with the corporate palette for Plesk 11.5, you may use this
skin for PBAS Store as well. For details, refer to Plesk Panel documentation: Customizing Panel
Appearance
and
Branding
(http://download1.parallels.com/Plesk/PP11/11.5/Doc/enUS/online/plesk-themes-guide/).
The store UI elements are available by the following paths:
/var/opt/hspc-store/web/css/ - CSS files
/var/opt/hspc-store/web/images - images
Together with the common elements, such as headers, icons, buttons, and styles for pages layout
design, the new Store also brings the own styles for the controls, jQuery library elements, the
images not yet included in Common UI Skin. In addition, the new store redefines a certain
properties of Common UI Skin screen elements.The Store own styles are defined in the
/var/opt/hspc-store/web/css/stylesheet.css file. The styles definitions in the
stylesheet.css file are annotated and grouped into sections according to the styles
designation.
The Store styles are customized separately for each vendor. In future Store versions it may
become possible to customize the styles for all vendors at a time.
Attention: In order to avoid overwriting of the customized files during Store upgrade, place the
customized files in the following upgrade-safe directories:
/var/opt/hspcstore/customization/vendor/VENDOR_ID/static/css/ - CSS files
/var/opt/hspc-store/customization/vendor/
VENDOR_ID/static/images/ - images
Where VENDOR_ID - is the ID of the vendor account, for which the Store is customized.
Online Store Integration and Customization
144
Change header and footer templates
The store templates are located in the /var/opt/hspc-store/templates/ directory.
The customized templates should be placed in the upgrade-safe directory:
/var/opt/hspc-store/customization/vendor/1/templates/
To add the content in the description and keywords meta tags, or to change the other
HTML header element, modify the file:
/var/opt/hspc-store/templates/html_header.html.php
To change the top navigation block, modify the file:
/var/opt/hspc-store/templates/header.html.php
To change the footer, modify the file:
/var/opt/hspc-store/templates/footer.html.php
Online Store Integration and Customization
145
Customizing Store by Means of Configuration Parameters
The file /var/opt/hspc-store/settings.ini contains the global parameters for the
store including connection settings, layout and behavior, environment variables, and other
options related to store customization. The comments that describe the designation and usage
are provided for each parameter. Thus, to know about all parameters, look into the
settings.ini file.
Custom settings should be placed to the special customization directory.
Important:
The
changes
made
to
the
original
file
/var/opt/hspcstore/settings.ini are reset to defaults during PBAS updates installation. Always put
your
custom
settings
in
the
update-safe
directory:
/var/opt/hspcstore/customization/vendor//custom.ini,
where
is the ID of vendor account. For provider account with ID=1 the directory is
created
automatically
during
new
store
deployment:
/var/opt/hspcstore/customization/vendor/1/custom.ini. In this custom file, all the store
custom settings may be placed, except for the ones related to PBAS Management Node access
and authorization.
To facilitate store customization, the graphical interface is provided for some the store
parameters related to layout and behavior. When you use this graphical interface to change
the parameters values, the custom settings are automatically placed into the upgrade-safe
directory
/var/opt/hspcstore/customization/vendor//custom.ini.
To open the graphical configurator for store global settings:
1. Open the store in the browser.
2. Select a hosting plan or a plan group.
3. Sign in as an existing customer and enter your Provider account login and password. When
signed in, the Create static link for this configuration link appears in the Shopping Cart area:
Online Store Integration and Customization
146
4. Click the Create static link for this configuration link. The store configuration settings are
displayed.
5. Click the Settings tab. The list of the store parameters is displayed (the screenshot below
shows only part of the screen):
6. Enter the parameters values in the fields next to their names. For the parameters that are set
to Yes/No, put a tick in the check box for Yes or clear the tick for No.
7. When ready, click Update parameters to save the changes.
Note: To skip all the customization, click Reset to defaults. This will delete the custom.ini
file, so the store parameters' values will be taken from the default file settings.ini.
Hide the configuration blocks for different types of hosting plans
By default, the Store displays all the options and controls used to change the hosting plan
configuration during purchase. Typically, the hosting plan configuration controls are presented
as blocks in the store: for example, Resources, Applications, Domains, etc. If needed, a
particular configuration blocks for a particular type of hosting plans can be hidden and thus,
kept away of changes during purchase.
Hiding a hosting plan configuration blocks may be useful for some types of hosting that provide
a wide range of settings to configure, but at the same time have some default settings that meet
the needs of most of the customers.
The plans configuration blocks are hidden by means of the COLLAPSED_BLOCKS directive.
Syntax is the following:
COLLAPSED_BLOCKS
=
"type_id,block_name,block_name,...;
"
Online Store Integration and Customization
147
Where:
type_id - a numeric value, defined in the file /var/opt/hspcstore/includes/constants.php, HP_TYPE_* constant values
block_name - a string value, defined in the file /var/opt/hspcstore/includes/constants.php, HP_BLOCK_* constant values
Example: Hide the Applications and Resources blocks for Virtuozzo Container hosting plans
and the Domains and Resources blocks for Miscellaneous hosting plans. Enter the following
directive:
Integrating with 3rd Party Applications. Kayako Chat
Here is an example how to add Kayako site badge to the online Store.
Note: The instructions are given for Kayako Fusion 4.5 and may differ for other versions. You
may refer to Kayako documentation for instructions how to generate source code for the badge.
To generate the Kayako tag:
1. Login to Kayako Admin panel, go to Home > Tag generator
Online Store Integration and Customization
148
2. Click on Site Badge and then click Next.
3. Set the options like Department, Route to Chat Skills, customize styles if needed and click
Generate.
4. Copy the generated tag code.
The code will look like:
Online Store Integration and Customization
149
5. Login to the server, where online Store is deployed and go to the Store directory. (Default
store location is /var/opt/hspc-store).
6. Customize footer.html.php template (on page 143) and insert the generated code
there:
a
Create the directory for custom templates for your vendor:
#mkdir –p customization/vendor/1/templates/
In this example, we create the directory for provider account (vendor ID= 1). For other
cases, use your vendor account ID.
b
Copy the original footer.html.php file into the created directory:
#
cp
templates/footer.html.php
customization/vendor/1/templates/
c
Open the
customization/vendor/1/templates/footer.html.php
template and insert the generated code before the ""
line. Save the changes.
Online Store Integration and Customization
150
As the result, the Kayako site badge will be added to all online Store screens as it’s shown on
screen shot below.
Customizing Store Localization
Before you start translating the store localization into the new language that is not shipped with
PBAS, it is necessary to add the corresponding language pack to PBAS (on page 222).
When a new language pack is added, do the following:
1. Add the flag image. Create a new image or copy an existing one from the old store to the
new one:
#
cp
-p
/var/opt/hspc-frontend/images/flags/flag_xx.gif
/var/opt/hspc-store/web/images/flags/
where xx - is the language two-letter ISO code in lowercase.
2. Create the directory for the new locale and copy the etalon (EN) locale into this directory:
# mkdir /var/opt/hspc-store/i18n/XX
#
cp
-p
/var/opt/hspc-store/i18n/EN/hspc-store-basic.xml
/var/opt/hspc-store/i18n/XX/hspc-store-basic.xml
XX - is the language two-letter ISO code in uppercase.
Online Store Integration and Customization
151
3. Translate the etalon locale into the new language.
If the old store has already been translated into a custom language, this translation can be used
as the base for the new store translation.
Note: To get the new locale applied to the store, it may be needed to open the store in a new
browser session. When locale is changed, there is no need to restart any of the services or clear
the browser cache. No additional actions needed to make visible the changes made to the
translation.
Updating Third-Party Libraries
The
store
uses
jQuerylibrary
(http://jquery.com/download/),
jQuery
UI
(http://jqueryui.com/download),
jQueryFormPlugin
(http://jquery.malsup.com/form/#download),
and
Symfony
Components
framework
(http://symfony.com/components).
By the moment of PBAS version 4.3.3 release, the latest versions of these libraries were
included in the Store distribution. However, the PBAS release cycle may differ from the thirdparty libraries releases. In such a situations, the third-party libraries should be updated
manually.
Important: Back up the Store before updating the third-party components.
Updating jQuery
The default path for jQuery files is /var/opt/hspc-store/web/js/thirdparty/:
jquery-1.9.1.js
jquery.form.js
jquery-ui-1.10.2.custom.js
Important: Before upgrading, it is strongly recommended to carefully read the Release Note
and Upgrade Notes for the jQuery version you are going to install, paying a special attention to
the issues related to compatibility with the previous versions.
The jQuery files may be updated either for a particular vendor or for all vendors.
In the step-by-step instructions below we suppose that VENDOR_ID should be replaced with the
vendor account numeric ID.
To update the jQuery files for the particular vendor:
1.
Place the new jQuery files to the directory:
/var/opt/hspc-store/customization/vendor/VENDOR_ID/statis/js/
2. Copy the file:
/var/opt/hspc-store/templates/html_header.html.php
into the customization directory:
Online Store Integration and Customization
152
/var/opt/hspc-store/customization/vendor/VENDOR_ID/templates/
3. Open the html_header.html.php file. Change the .js files' names into the new ones in
the following strings:
$view['assets']?>"
$view['assets']?>"
4. Save the changes.
To update the jQuery files for all vendors:
1. Place the new jQuery files to the directory:
/var/opt/hspc-store/web/js/thirdparty/
2. Change the .js files' names in the original file:
/var/opt/hspc-store/templates/html_header.html.php
For details, see the step-by-step instruction above, for per vendor customization, steps 3 and
4.
Updating Symfony Components
By default, the executable files are located in the directory:
/var/opt/hspc-store/includes/vendor/
The following components are used:
"symfony/finder": "v2.3.0",
"symfony/class-loader": "v2.3.0",
"symfony/event-dispatcher": "v2.3.0",
"symfony/http-foundation": "v2.3.0",
"symfony/routing": "v2.3.0",
"symfony/http-kernel": "v2.3.0",
"symfony/config": "v2.3.0",
"symfony/yaml": "v2.2.2 "
Important: Before you start updating do the following:
1. Carefully read the Release Note and Upgrade Notes for the Symfony Components
version you are going to install, paying a special attention to the issues related to
compatibility with the previous versions.
2. Open the file /var/opt/hspc-store/includes/composer.json and specify
the particular components that should be updated. For example:
Online Store Integration and Customization
{
"require": {
"symfony/finder": "2.3.*",
"symfony/class-loader": "2.3.*",
"symfony/event-dispatcher": "2.3.*",
"symfony/http-foundation": "2.3.*",
"symfony/routing": "2.3.*",
"symfony/http-kernel": "2.3.*",
"symfony/config": "2.3.*",
"symfony/yaml": "2.3.*"
}
}
To update the Symfony Components:
1. Run the following commands:
# cd /var/opt/hspc-store/includes/
# curl -sS http://getcomposer.org/installer | php
# phpcomposer.pharupdate
The output of the last command should look as follows:
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Removing symfony/finder (v2.3.0)
- Installing symfony/finder (v2.3.1)
Downloading: 100%
- Removing symfony/class-loader (v2.3.0)
- Installing symfony/class-loader (v2.3.1)
Downloading: 100%
- Removing symfony/routing (v2.3.0)
- Installing symfony/routing (v2.3.1)
Downloading: 100%
- Removing symfony/http-foundation (v2.3.0)
- Installing symfony/http-foundation (v2.3.1)
Downloading: 100%
- Removing symfony/event-dispatcher (v2.3.0)
- Installing symfony/event-dispatcher (v2.3.1)
Downloading: 100%
- Removing symfony/http-kernel (v2.3.0)
- Installing symfony/http-kernel (v2.3.1)
Downloading: 100%
- Removing symfony/config (v2.3.0)
- Installing symfony/config (v2.3.1)
Downloading: 100%
- Removing symfony/yaml (v2.2.3)
- Installing symfony/yaml (v2.3.1)
Downloading: 100%
Writing lock file
Generating autoload files
153
154
CHAPTER 4
User Interface Customization
Parallels Business Automation - Standard customization tools are described in this chapter.
In This Chapter
Screens Customization Overview ......................................................................................... 154
Template Based Customization............................................................................................. 159
Customizing Vendor Control Center (PCC/RCC) ................................................................ 159
Customizing Customer Control Panel................................................................................... 168
Adding New Fields to Accounts Registration Form ............................................................. 196
Extending E-Mail Notification Templates ............................................................................ 200
Customizing Language Packs ............................................................................................... 212
Screens Customization Overview
You can customize any of Parallels Business Automation - Standard screens in a way that suits
your needs.
The following customization types are available:
Template based customization (on page 159). Allows customizing Control Panel frames
and dashboards.
Screen aliases based customization (on page 159). Applicable to Provider and Reseller
Control Centers screens only. Allows customizing any of PCC or RCC screens.
Adding, hiding or changing interface items in the Control Panel dashboards by means of CP
customization module (on page 174).
Screen ID based customization (on page 186). Applicable to Control Panel screens.Allows
customizing the screens displaying objects properties, lists of objects and the like - all
screens accessible by clicking on CP dashboards items.
Editing the context help for any of the Parallels Business Automation - Standard screens.
Context help files are located in the /var/opt/hspc-root/help/ and sorted by
language packs directories. Help files names exactly match its screen ID.
Context help opens after clicking Help link at the Control Panel top:
User Interface Customization
155
:
Editing the on-screen help bars for the Control Panels your customers use. Onscreen help
files are located in the /var/opt/hspc-root/hints/ and sorted by language packs
directories. Help files names exactly match its screen ID.
Onscreen help is embossed on most of Control Panel screen and provides short hints:
User Interface Customization
156
Warning: Please carefully follow both the directories structure and naming conventions offered
below to store your customization. Otherwise the customized files will be overwritten after the
next Parallels Business Automation - Standard update installation. Do not customize files inside
the original directories because such changes will be also lost after the Parallels Business
Automation - Standard update installation.
We strongly recommend to copy into the custom directories only the files that you really
customize. Do not copy the surrounding template files into the custom directories. Considerable
number of template files in custom directories can result in the necessity for a lot of extra
checks during Parallels Business Automation - Standard upgrade installation, because during
upgrade each template in custom directories is checked in respect to compatibility with a new
Parallels Business Automation - Standard version.
Customized files should be stored in the single subdirectory created specially:
/var/opt/hspc-root/
Parallels Business Automation Standard base directory defined
by
HSPCROOT_ROOT
parameter in hspc.conf file.
/var/opt/hspc-root/custom/
Parallels Business Automation Standard customization base
directory.
/var/opt/hspc-root/custom/template/
The subdirectory containing
customized templates.
/var/opt/hspc-root/custom/help/
The subdirectory containing
customized context help files.
/var/opt/hspc-root/custom/hints/
The subdirectory containing
customized onscreen help files.
/var/opt/hspc-root/custom/screen/
The subdirectory containing
screen ID based customization
files.
/var/opt/hspc-root/custom/localization/
The subdirectory containing the
language pack customization
files.
User Interface Customization
157
It is also possible to perform the account-specific and language-specific customization. Such
customization can be applied to screen templates, context help, and onscreen help only.
The account-specific customization calls for creation of the following subdirectories in
/var/opt/hspc-root/custom/template/,
/var/opt/hspcroot/custom/help/, and /var/opt/hspc-root/custom/hints/:
default/
The directory to put templates customized for all Providers
1/
The directory to put templates customized for Provider only
RESELLER_ID/
The directory to put templates customized for particular
Reseller, where RESELLER_ID represents a Reseller
Account ID.
Example 1:
To customize screen templates for a particular reseller account (let us assume that this reseller
account ID is 123), it is necessary to:
1. Create a subdirectory 123/ under the /var/opt/hspc-root/custom/template/
directory.
2. Under the /var/opt/hspc-root/custom/template/123 directory, create
subdirectories that exactly follow the path to the original files you want to customize. For
example, if you want to customize store frontpage templates, that are originally located in
/var/opt/hspc-root/template/HSPC/EM/Plans/, you must create the
HSPC/EM/Plans/ subdirectory under the 123/ directory and put the customized files
there.
Thus, following our example, the final path for customized store frontpage templates must
be:
/var/opt/hspc-root/custom/template/123/HSPC/EM/Plans/
Always create the corresponding subdirectories for customized files to let your
customization be applied.
User Interface Customization
158
Example 2:
To perform the language-specific customization, you should create the subdirectory named by
the language two-letter abbreviation, e.g., EN/ for English, FR/ - for French, etc. For example,
/var/opt/hspc-root/custom/hints/FR/
to store the customized onscreen help files in French. And to store the french customization for
your Provider account only:
/var/opt/hspc-root/custom/hints/1/FR/
To perform the language dependent customization for a particular Reseller account (for
example, with account ID 127), you should create the directory:
/var/opt/hspc-root/custom/hints/127/FR/
For example, In accordance with the rules outlined above, the location of the custom on-screen
help file for all French customers of the Reseller with account ID 127 on page with screen ID
01.04.18.02.16 should be the following:
/var/opt/hspc-root/custom/hints/127/FR/01.04.18.02.16.html
The procedure of customization file lookup looks as follows:
Parallels Business Automation - Standard searches through the default subdirectory for the
Reseller language specific customization:
/var/opt/hspc-root/custom/hints/127/FR/01.04.18.02.16.html
If customization file was not found, the Parallels Business Automation - Standard searches
in the Reseller language specific directory, but in this case, not in the custom language
directory (FR/) but in the directory that corresponds to the default language used by
Provider. For example if the default language used by Provider is English, then the
customized file will be searched in the following directory:
/var/opt/hspc-root/custom/hints/127/EN/01.04.18.02.16.html
If customization file was not found in the Reseller language-specific directory, then just the
Reseller-specific directory is checked:
/var/opt/hspc-root/custom/hints/127/01.04.18.02.16.html
If the customization file is still not found, then the Parallels Business Automation - Standard
searches in the default directory for French customized onscreen help:
/var/opt/hspc-root/custom/hints/fr/01.04.18.02.16.html
If the customization file is not found again, then the Parallels Business Automation Standard searches in the default directory for the customized onscreen help in the default
language used by Provider (for example, a Provider uses English):
/var/opt/hspc-root/custom/hints/en/01.04.18.02.16.html
Finally, the Parallels Business Automation - Standard searches in the default directory used
for customized onscreen help:
/var/opt/hspc-root/custom/hints/01.04.18.02.16.html
User Interface Customization
159
Template Based Customization
Most of elements used at Parallels Business Automation - Standard screens can be customized
using the screen aliases (in Provider and Reseller Control Centers) or screen IDs (both
PCC/RCC and Control Panel) based approaches. This method is reliable and absolutely safe.
However, some elements of Parallels Business Automation - Standard graphical interface
cannot be customized using screen aliases or screen ID based method. For example, login pages,
links at tabs, some documents used in specific accounting plug-ins.
Templates are widely used in Parallels Business Automation - Standard interface. The template
files *.tmpl and *.html are stored in different directories under /var/opt/hspcroot/template or /var/opt/hspc-root/skins directory.
The name of a template used at a Parallels Business Automation - Standard screen can be found
from a page HTML source code. Alternatively, it is possible to find the needed template file by
localization string IDs used at the screen you want to customize.
Similarly to the other customization, to prevent the customized templates from having been rewritten during Parallels Business Automation - Standard upgrade installation, the customized
templates must be placed into the /var/opt/hspc-root/custom/ directory.
For example, if the path to the Russian accounting documents is
/var/opt/hspc-root/template/HSPC/ACC/Plugin/Ru/UI/
then the customized templates are to be placed into the
/var/opt/hspc-root/custom/template/HSPC/ACC/Plugin/Ru/UI/
directory.
Warning: The same template can be used in a number of Parallels Business Automation Standard screens and in most cases it is actually used. This means that a single customized
template may emerge at a number of Parallels Business Automation - Standard pages. Please be
very careful when customizing templates.
Customizing Vendor Control Center
(PCC/RCC)
Components Repository
Below we describe how to add or customize Parallels Business Automation - Standard screens
using the XML Components Repository.
User Interface Customization
160
Components Repository Structure and Files
Parallels Business Automation - Standard Component Repository Configuration is presented as
a set of XML documents with the structure described below.
All configuration files are located in one directory and named arbitrary, but with .xml
extension and in a valid format.
Parallels Business Automation - Standard Component Repository Configuration offers the
following vision of Parallels Business Automation - Standard logical structure (in descending
order):
director
First level grouping set with power limited to a reasonable number for main menu to be
observable.
manager
Second level grouping set usually based on independent lines of work.
screen
Atomic element of structure, any webpage: a dashboard, an edit form, a wizard
step, whatever.
Screens can be nested within other screens to form any URIs and navigation paths. Screens
nested within screens do not have entries in main menu, could be presented only by higher level
nodes.
Nodes have the following attributes:
title_id (default: alias)Localization ID of component's external name;
string(id => 'title_id') visually appears in site path, main menu and so on. See
note for set_node_context($) interface below.
alias String unique throughout the configuration; unambiguously identifies a node for direct
referencing. Used when inserting other nodes on-the-fly, filling some parameters with default
value, etc.
id Number unique on its level; forms a uri (as well as Screen ID) as a concatenation of higher
level nodes' id and this id. If id is not set for a node, it is set automatically to some of spare
values (incrementally).
class Name of handler class.
method Name of handler method from class.
filter Name of static filter function (on page 161) from class. Defines on what conditions an
element must be shown. If present, a function is run with node_descriptor (see below) as
a parameter on menu tree creation or a screen lookup. Should return a non-zero result for a node
to be visible and accessible, otherwise a node is hidden. Value of filtered_out property of
node_descriptor is set to 1 in case filter property presented and filter method return
zero result on call to node(). Thus, other modules don't have to handle filter property but
just check filtered_out.
User Interface Customization
161
groups Security groups as comma separated list. Refer to Security Manager documentation
for details.
icon (default: alias) Component's page icon.
before IDREF to some node's alias. Points to node of the same logical level to insert a
new node before it.
helper Topic ID of corresponding helper's page.
ssl SSL mode for node. If presents, the parameter's value (on or off) specifies whether to force
enabled or disabled SSL for this node (the corresponding 'force SSL' option must be enabled in
provider's configuration).
Each configuration XML document has root as its root element and nodes of any level as its
children. Use the before attribute to point to exact place for a node insertion.
All optional parameters are inherited from higher level nodes.
Files
Location
All configuration files must be located in one directory. Currently it is
/var/opt/hspc-data/Core/CompRep
Defaults
Main configuration file must be named _.xml.
Order
Files are sorted in alphabetical order before reading. Use it for organizing sequences of
dependent configuration blocks.
Inheritance
To add a record to a block, reproduce the whole nesting scheme of the block, using the only
alias parameter for matching of parent nodes, and place the record inside the scheme. If a record
with such alias already exists, the old record is overrode.
The filter Function Sample
sub filter {
my $node = shift;
if ($node->{alias} eq 'node_alias1') {
return tell_us_whether_to_show_this_node();
} elsif ($node->{alias} eq 'node_alias2') {
return get_some_option() == 'some_value';
}
return 1;
}
User Interface Customization
162
New Component Sample
Parallels Business Automation - Standard Components Repository provides an opportunity of
creating new screens in Parallels Business Automation - Standard.
Important: To get a new screen displayed not only in Provider Control Center, but in Reseller
Control Center as well, set the reseller permissions. Go to Configuration Director > Security
Manager > Setup and select the Reseller Permissions tab. To grant permissions for reseller to
view the new screen, put a tick in the check box next to the new screen name and click OK.
The very first thing you need to do to create a new screen is adding your xml file with definition
of a new screen. This definition consists of an entry in menu hierarchy, a perl class name and a
method of this class, which will be responsible for forming a new page content.
After this, you need to code your perl class and provide specified method in it. Place the
package with this class so perl can find it (you can check search directory seeing content of your
@INC variable):
/usr/bin/perl -V
Finally, to let a new screen appear in Parallels Business Automation - Standard, restart the last
thing to do One thing that remains new screen arriving is hspcd restart:
/etc/init.d/hspcd restart
Note: If you want to add a number of screens one-by-one, you can do without restarting hspcd
each time you want a new screen to appear in the Parallels Business Automation - Standard
interface. To this effect, edit the Parallels Business Automation - Standard configuration file
/etc/hspc/hspc.conf. Set COMPREP_NOCACHE=1, save changes and restart hspcd.
After this new components start appearing in the interface right after you add a new screen
definition. However, this degrades the Parallels Business Automation - Standard performance.
Thus, when you finish with new components addition, set the COMPREP_NOCACHE=0 in
/etc/hspc/hspc.conf and restart hspcd.
Now we describe a simple example demonstrating how you can add a new screen.
Place following xml file:
into the
/var/opt/hspc-data/Core/CompRep/cc/account_director_custom.xml
file.
User Interface Customization
163
The director and manager tags were copied from the original account_director.xml, they are
already shown in Parallels Business Automation - Standard menu entries (you can see them in
Provider Control Center, they are Account Director and Account Director > Customer Manager
accordingly.
The new entry is the screen tag. It defines
alias for screen: custom_component;
method of this perl class that will form the page content: some_teaser;
perl class: Custom::Component; We describe the perl class later in this topic.
icon and title for the screen, (we take here already existed examples); As for the screen title,
so you can achieve it customizing language packs. Just add the id of your customized string
in the screen tag:
For more information about customizing strings please refer to the corresponding SDK topic (on
page 212), where you can know out how to specify a string ID and assign a text value to this
string ID.
filter function, this function manages the screen visibility in the interface. The filter function
is needed only if you want to set a strict rules for a screen visibility. If you want a screen to
be visible all the time, do not define this function.
Place the following perl class definition into the
/usr/lib/perl5/site_perl/5.8.8/Custom/Component.pm
file:
package Custom::Component;
use strict;
use HSPC::Application;
use HSPC::WebPage;
## draw page for custom component
## < returns:
## { STATUS => ..., CONTENT => ... } structure
sub some_teaser {
my $class = shift;
my $page = HSPC::WebPage->new();
$page->title();
$page->tab();
$page->statuses();
$page->post_info_text (
title
=> 'custom_component_title',
content
=> 'custom_component_under_construction'
);
return
{
STATUS => 'OK',
CONTENT
=> $page->get_content()
};
}
## check if screen is needed to be shown
## < returns:
## TRUE -- if screen is needed to be shown, FALSE -- otherwise
User Interface Customization
164
sub filter {
return 1 if $ENV{SHOW_CUSTOM_COMPONENT};
}
1;
Note: Don't forget to check that /usr/lib/perl5/site_perl/5.8.8/ directory is in
your @INC paths.
Now you need to restart hspcd in order to make changes available.
If everything is ok, you will see a new entry under the Account Director > Customer Manager
menu in Provider Control Center.
Now let's focus on the perl module Custom::Component.
The main thing that this module must provide, is the some_teaser method, which has been
specified as method option in the screen tag in our xml example). The return value of this
method is the following reference on a hash with entries:
"STATUS" - possible values: "OK", "ERROR", "REDIRECT", "CUSTOM", "POSTED";
"CONTENT" - the web page source that is needed to be shown, used if STATUS is "OK" or
"CUSTOM";
"ERROR" - error number, used if STATUS is "ERROR";
Here are the examples illustrating how to use different return values:
STATUS "OK":
return { STATUS => "OK", CONTENT => "CONTENT ..." }
Normal page is shown in this case.
STATUS "ERROR":
return { STATUS => "ERROR", ERROR => 403 }
Notify about error.
STATUS "REDIRECT":
$ENV{system_obj}->{redirect_local} = 'some_local_URL';
$ENV{system_obj}->{redirect} = 'some_URL';
return {STATUS => 'REDIRECT'};
Use one of the environment variables (redirect_local or redirect) to initiate a local
(to one of your site pages) or internal (to other website pages) redirection respectively. For
example, if your new custom page is a screen form, let say New Object, then you can use local
redirect: after a 'New Object' form is filled and then follows the click on the Save button - a
local redirect brings you on the page with the list of such Objects, as this is done in Parallels
Business Automation - Standard for new Accounts, new payments, and so on. Then it is
necessary to specify in the Component.pm module:
$ENV{system_obj}->{redirect_local} = 'some_local_URL';
return {STATUS => 'REDIRECT'};
If you use an internal redirect, for example on some other website, then it is necessary to write
the following:
User Interface Customization
165
$ENV{system_obj}->{redirect} = 'full_resirect_URL';
return {STATUS => 'REDIRECT'};
Of course, words some_local_URL and full_resirect_URL must be replaced with real path or
real full URL.
STATUS "CUSTOM":
return {STATUS => 'CUSTOM', CONTENT => 'some_content'}
Almost the same as STATUS "OK", the only difference is that no http headers will be added.
They are to be added manually.
STATUS "POSTED":
return {STATUS => 'POSTED'}
Nothing will be output at all. System will assume that both headers and content will be output
manually.
CONTENT of the returned page can be formed as you would like it to be. Parallels Business
Automation - Standard GUI methods are not used in this case, but you need to provide localized
content. The easiest way to do this is the following:
Use the string method from HSPC::Localization package. In this case, the module
described above will look as following:
(# cat /usr/lib/perl5/site_perl/5.8.8/Custom/Component.pm):
package Custom::Component;
use strict;
use HSPC::Console;
use HSPC::WebPage;
use HSPC::Localization qw(string);
## draw page for custom component
## < returns:
## { STATUS => ..., CONTENT => ... } structure
sub some_teaser {
my $class = shift;
my $page = HSPC::WebPage->new();
$page->title();
$page->tab();
$page->statuses();
$page->post_info_text (
title
=> string( 'custom_component_title' ),
content
=> string( 'custom_component_under_construction'
)
);
return
{
STATUS => 'OK',
CONTENT
=> $page->get_content()
};
}
## check if screen is needed to be shown
## < returns:
User Interface Customization
166
## TRUE -- if screen is needed to be shown, FALSE -- otherwise
sub filter {
return 1;
}
1;
--snap
Please note, that string IDs used as arguments for string method must be valid. These IDs can
belong to already existing strings in Parallels Business Automation - Standard or customized
ones. In the latter case, please provide customization for all languages your system will support
(on page 212).
Screen Aliases Based Customization in Control Centers
Together with screen IDs, the Control Centers screens have alphabetical names called aliases.
Screen alias is not shown anywhere on a screen, but exactly an alias defines a particular screen
in a Control Center hierarchy.
You can find a screen alias by clicking on screen ID. For example, screen ID is 01.01.03.04.01
(in our example, this is Billing Director > Discount Manager > Promotions):
User Interface Customization
167
Screen alias in this case is shown in brackets and its value is promotion.
Please pay attention to the fact that the full nesting structure, in accordance with the Control
Center menu structure, is shown for a target screen.
How customization is applied: Customization is applied in a cumulative order - starting from a
'child' screen and up to a 'parent' screen. Parent screens customization affects all the child ones.
First, the ending screen module is parsed (in our example, this is the promotion screen, if
customization is found, it is applied, then the parent screens are parsed: first
discount_manager, then billing_director. If customization is found for these
screens, it is added to a previously found one. Customization found for a 'parent' screens is
applied to all the child screens. For example, if you customize the discount_manager
screen, this customization will be applied to all screens under the Discount Manager. Thus, to
customize a group of screens, use a Manager or a Director alias as a customization module
name.
You can customize any screen in Provider or Reseller Control Center by writing a customization
module for the corresponding screen. The name of a module should follow the screen alias.
For example, for the screen with ID 01.01.01.01 (Account Director > Customer Manager >
Customers) with screen alias customers the module name should be customers.pm.
PBAS Control Centers components nesting level and belonging are also reflected in their screen
IDs. Any screen ID consists of five digits:
Component
Product
ID
Tool ID
Director ID
Manager
ID
Screen
Director
Director ID
00
00
Manager
on
a Constant. Constant.
for
second nesting level Always 01
must be PCC,
02
for RCC
Component under a 01
Manager or other
component without
nested ones.
Director ID
Manager
ID
00
Director ID Manager
Component
or component ID
or ID
ID
component
ID
User Interface Customization
168
Control Center Screen Customization Module Sample
A special method called customize should be defined in a customization module.
This method should accept an HTML text as an argument and return the customized HTML text
to be sent to a client browser. This method will be called right before sending out an HTML
page to a client.
Example: Customizing screen in Provider Control Center
We customize the Support > Contacts screen. Screen ID is 01.01.09.10.00. By clicking on
screen ID we discover screen alias. The screen alias is support_tab_con. Thus, the
customization module must be named by its alias and placed here::
/var/opt/hspc-root/custom/screen/support_tab_con.pm
Module text:
package HSPC::Custom::Screen::support_tab_con;
use strict;
use HSPC::Custom::Screen;
sub customize {
my ($stream, $alias) = @_;
## insert the message
my $msg = "This message was inserted by screen alias customization in
PCC.
\n";
$stream = $msg . $stream;
## return customized text
return $stream;
}#/customize
1;
After you will place the customization module into the right directory, you will need to restart
hspcd for changes to take effect:
/etc/init.d/hspcd restart
If everything goes right, you will see This message was inserted by screen alias customization in
PCC. message at the top of the Support screen.
Customizing Customer Control
Panel
Control Panel Screen Structure
The Control Panel screen consists of the two main parts:
Top frame (1) that displays the following:
Logotype
Tabs
Subscription selector
Logout link
User Interface Customization
169
Set of tabs shown on the top frame differs depending on the type of the subscription
selected.
Top frame can be customized by means of template based customization (on page 159). Top
frame template is located here:
/var/opt/hspcroot/skins/panel/template/HSPC/CP/Visual/top_frame.tmpl
Main frame (2) that displays links to services according to the selected subscription and the
selected tab.
User Interface Customization
170
For Parallels Plesk Panel (Plesk) and Parallels Operations Automation (POA) subscriptions the
Main frame parts aside letting Plesk or POA original panel be shown on center. Thus, in this
case the Main frame appears to be subdivided into three areas:
Left frame (3) that belongs to PBAS and can be customized.
Service specific frame (4) that displays original Plesk or POA panel that opens in PBAS
Control Panel window and thus, it should be customized on Plesk or POA side, if needed.
Right frame (5) that also belongs to PBAS and can be customized.
Note: Beginning with Pesk 11, left and right frames are not drawn in Customer Control Panel.
Instead, only original Plesk panel is drawn in PBAS frame. UI customization for Plesk 11 is
possible for top frame only.
Left and Right frames can be customized by means of template based customization (on page
159). Left and Right frames templates are located here:
/var/opt/hspcroot/skins/panel/template/HSPC/CP/Visual/leftframe.tmpl
frame (3).
-
Left
/var/opt/hspcroot/skins/panel/template/HSPC/CP/Visual/rightframe.tmpl - Right
frame (5).
User Interface Customization
171
Note: If you want your customization be shown for all subscription types (for example PVC,
Plesk, and POA), you will need to customize Main Frame and Left or Right frames, because
Main frame is replaced with service area for Plesk and POA subscriptions.
Depending on the selected tab and type of the subscription, the Main frame area of the Control
Panel displays different types of interface elements:
Home (2). The Home tab is selected. The Subscription type selected is non Plesk or POA.
This screen can be customized by means of the template based customization. Original
template location is:
/var/opt/hspcroot/skins/panel/template/HSPC/CP/Menu/home.tmpl
Dashboard. The Account, Help and Support, or System tab. This screen can be customized
either by one of the following ways:
Template based customization. Original template location:
/var/opt/hspcroot/skins/panel/template/HSPC/CP/Menu/dash.tmpl
CP customization module (on page 174).
Control Panel dashboards are shown under the Account, Help and Support tabs and also under
the System tab. The Account dashboard is shown on the screenshot below:
User Interface Customization
172
Dashboard consists of sections (6). For example, Store, Billing Management, Account
Management are sections of the Account dashboard.
Dashboard sections contain items (7). For example, Balance, Billing History, Payment Methods
are items in the Billing Management section. Dashboard elements can be added or hidden using
customization module (on page 175). See also: Control Panel Dashboard IDs Table (on page
176).
The rest of CP screens that can be reached clicking on dashboards' items, such as lists of
objects or objects details, can be customized by means of screen ID based customization (on
page 186).
Control Panel Top Frame and Tabs Customization
Tabs can be customized by means of the Top frame template. Top frame template is located
here:
/var/opt/hspcroot/skins/panel/template/HSPC/CP/Visual/top_frame.tmpl
Example: Hide Domain Contacts tab:
1. Copy the template to custom location:
/var/opt/hspcroot/custom/template/HSPC/CP/Visual/top_frame.tmpl
2. Discover the Domain Contacts tab ID:
a
Log in to Control Panel and select All my domains from the subscription selector located
at the CP top frame to the right. View HTML code of the Top frame.
b
Search for the sample: Domain Contacts. The surrounding code contains tab ID:
Domain Contacts
Tab ID is system_domains_domconts.
c
Open the file:
/var/opt/hspcroot/custom/template/HSPC/CP/Visual/top_frame.tmpl.
Search for the following sample:
User Interface Customization
173
{
foreach my $m ( @{$menu} ) {
my $url = $m->{url} || "/cp/index.cgi/top/zone,$m->{tab}";
my $name = $m->{title};
my $tab = $m->{tab};
$OUT .= qq{
$name
};
}
}
d
Add the string "next if ($tab eq 'system_domains_domconts');" so
that the code looks as follows:
{
foreach my $m ( @{$menu} ) {
my $url = $m->{url} || "/cp/index.cgi/top/zone,$m->{tab}";
my $name = $m->{title};
my $tab = $m->{tab};
next if ($tab eq 'system_domains_domconts');
$OUT .= qq{
$name
};
}
}
The added string skips the Domain Contacts tab, so that it is not rendered.
e
Save the changes. Refresh the Control Panel screen to see the customization result.
Customizing Main Frame
Main frame can be customized by means of template based customization. Possible templates
are:
Right and left frames. Original templates location:
/var/opt/hspcroot/skins/panel/template/HSPC/CP/Visual/leftframe.tmpl
/var/opt/hspcroot/skins/panel/template/HSPC/CP/Visual/rightframe.tmpl
Dashboards. Original template location:
/var/opt/hspcroot/skins/panel/template/HSPC/CP/Menu/dash.tmpl
Home. Original template location:
/var/opt/hspcroot/skins/panel/template/HSPC/CP/Menu/home.tmpl
User Interface Customization
174
Other screens. Original template location:
/var/opt/hspcroot/skins/panel/template/site_7/HSPC/Site/Layout/service_def
ault.tmpl
Before starting customization, copy the templates to customization directories. To get the
custom path, drop /skins/panel directories and create the /custom directory instead. For
example:
/var/opt/hspc-root/custom/template/HSPC/CP/Menu/home.tmpl
Example: Add site badge to Control Panel main frame.
1. Get site badge code. If you would like to add a site badge to CP main frame, for example
Kayako live chat or Twitter, you can generate the needed code at their websites using tag
generator.
2. Add code to template. Open the template and search for the "Test Item 1",
title_desc => "The Item 1 Description",
url_title => 'test_item1_URL_title',
url => "/test_item1",
icon => "icon_srvs",
id => $menu_tab.'_test_section_testadd1',
tab => $menu_tab,
};
push @$items, {
title => "Test Item 2",
title_desc => "The Item 2 Description",
url_title => 'test_item2_URL_title',
url => "/test_item2",
icon => "icon_srvs",
id => $menu_tab.'_test_section_testadd2',
tab => $menu_tab,
};
## add new section and items to it.
my $error = HSPC::CP::Menu->add_item_to_section (
menu => $menu,
section_id => $section_id,
section_tab => $menu_tab,
section_title => 'Test section',
items => $items,
);
In this example the “add_item_to_section” method adds a new section with ID
'system_test_section’. This new section will be visible at the Control Panel System tab with the
“Test section” title and will contain two items inside.
In order to add a new menu item to existing section you have to know its ID. The list of section
IDs is attached.
User Interface Customization
182
Add New Item to Existing Section
The example below illustrates how to add a new item to the existing section (for example,
section ID=’site_other’). Below is a custom code to be added to the CP.pm (on page 175) file.
my $menu_tab = 'system';
my $section_id = 'site_other';
my $items = [];
## add new item to existing section
##
my $menu_tab = 'site';
my $section_id = 'site_other';
my $items = [];
## define item for addition
push @$items, {
title => "Additional Element",
title_desc => "Additional Element Description",
url_title => 'URL title of additional element',
url => "/additional_element",
icon => "icon_srvs",
id => 'site_other_testadd',
tab => $menu_tab,
};
## add item.
my $error = HSPC::CP::Menu->add_item_to_section (
menu => $menu,
section_id => $section_id,
section_tab => $menu_tab,
items => $items,
);
User Interface Customization
183
Replace Item in Existing Section
This section advises how to replace the existing item with a new one. Below is a custom code to
be added to the CP.pm (on page 175) file.
The code example replaces the “Crontab” item in “Site” tab with a new one.
my $menu_tab = 'site';
my $section_id = 'site_other';
my $items = [];
#########################################################
## replace the Crontab item (id=’site_other_crontab’)
## to a new item
##
$menu_tab = "site";
my $item_id = 'site_other_crontab';
push @$items, {
title => "Replaced Test Item2",
title_desc => "The Item 2 Description",
url_title => 'replaced_test_item2',
url => "/replaced_test_item2",
icon => "icon_srvs",
id => $item_id,
tab => $menu_tab,
};
## replace item
my $error = HSPC::CP::Menu->add_item_to_section (
menu => $menu,
section_id => $section_id,
section_tab => $menu_tab,
items => $items,
dup_mode => 'replace',
);
Delete Item and Section
To delete a menu or a dashboard item or section, use the “delete_menu_item” or
“delete_menu_section” methods respectively. Below is a custom code to be added to the
CP.pm (on page 175) file.
The example below illustrates how these methods can be used.
## delete menu item
my $error = HSPC::CP::Menu->delete_menu_item (
menu => $menu,
item_id => $item_id,
);
## delete menu section
my $error = HSPC::CP::Menu->delete_menu_section (
menu => $menu,
section_id => $section_id,
);
The full source code of the example is attached (on page 184).
User Interface Customization
184
Full Source Code of the HSPC::Custom::Menu::CP
Below is the full source code of the example package HSPC::Custom::Menu::CP.
package HSPC::Custom::Menu::CP;
use strict;
use HSPC::CP::Menu;
use HSPC::Logger qw(sw_die);
##---------------------------------------------------------------------------## >> class
## =>> menu : ref to array
sub customize {
my ($self,%h) = @_;
sw_die('menu => undefined') unless $h{menu};
my $menu = $h{menu};
##
## add new item to existing section
##
my $menu_tab = 'site';
my $section_id = 'site_other';
my $items = [];
## define item for addition
push @$items, {
title => "Additional Element",
title_desc => "The element description",
url_title => 'URL title of additional element',
url => "/additional_element",
icon => "icon_srvs",
id => 'site_other_testadd',
tab => $menu_tab,
};
## add item.
my $error = HSPC::CP::Menu->add_item_to_section (
menu => $menu,
section_id => $section_id,
section_tab => $menu_tab,
items => $items,
);
#########################################################
## create new section and add two items to it
##
$section_id = 'site_test_section';
$items = [];
## define items for addition
push @$items, {
title => "Test Item 1",
url_title => 'test_item1_URL_title',
url => "/test_item1",
icon => "icon_srvs",
id => $menu_tab.'_test_section_testadd1',
tab => $menu_tab,
};
push @$items, {
title => "Test Item 2",
url_title => 'test_item2_URL_title',
url => "/test_item2",
icon => "icon_srvs",
id => $menu_tab.'_test_section_testadd2',
tab => $menu_tab,
};
User Interface Customization
## add new section and items to it.
my $error = HSPC::CP::Menu->add_item_to_section (
menu => $menu,
section_id => $section_id,
section_tab => $menu_tab,
section_title => 'Test section',
items => $items,
);
#########################################################
## replace the last element in previously added section
## to a new item
##
## define item for replace (this element will replace the testadd2
element)
$menu_tab = "site";
my $item_id = 'site_hekima_testadd2';
push @$items, {
title => "Replaced Test Item2",
url_title => 'replaced_test_item2',
url => "/replaced_test_item2",
icon => "icon_srvs",
id => $item_id,
tab => $menu_tab,
};
## replace item
my $error = HSPC::CP::Menu->add_item_to_section (
menu => $menu,
section_id => $section_id,
section_tab => $menu_tab,
items => $items,
dup_mode => 'replace',
);
##
## delete menu item
##
my $error = HSPC::CP::Menu->delete_menu_item (
menu => $menu,
item_id => $item_id,
);
##
## delete menu section
##
my $error = HSPC::CP::Menu->delete_menu_section (
menu => $menu,
section_id => $section_id,
);
return 1;
}
1;
185
User Interface Customization
186
Control Panel Screens Customization Using Screen IDs
All Parallels Business Automation - Standard screens have the unique screen ID that consists of
five numbers divided with dots (e.g., ). You can find the screen ID by viewing the source code
of the screen and searching by the 'screen' keyword.
You can customize PBAS Control Panel screens by writing a customization module for the
corresponding screen.
For Control Panel screens, the name of a customization module should follow the screen ID but
with dots replaced with underscores (e.g., for screen with ID 01.04.20.01.05 the module name
should be 01_04_20_01_05.pm).
Important: Please carefully follow both the directories structure and naming conventions
outlined earlier (on page 154) to store your customized files.
A special method called customize should be defined in a customization module. This
method should accept an HTML text as an argument and return the customized HTML text to
be sent to a client browser. This method will be called right before sending out an HTML page
to a client.
A special API is provided to facilitate screens customization.
User Interface Customization
187
Customization API Methods
In this paragraph we explain how you can discover the name of CP screen element
Here we introduce a notion of control that should be understood as one of the elements at the
screen (e.g., an editable field, a checkbox, an option button, form heading, etc.).
The following four methods are available and automatically exported from the
HSPC::Custom::Screen module:
sw_cu_insert_before - insert a custom text before some control;
sw_cu_insert_after - insert a custom text after some control;
sw_cu_replace - replace a control with custom text;
sw_cu_find - find a control, return a control HTML text.
Methods sw_cu_insert_before, sw_cu_insert_after, and sw_cu_replace
accept the following arguments:
ctrl_type - type of the control (see below for details)
ctrl_id - ID of the control
stream - original HTML text
custom_text - custom text
and return the customized HTML text.
The sw_cu_find method accepts the following arguments:
ctrl_type - type of the control (see below for details)
ctrl_id - ID of the control
stream - original HTML text
and returns the control HTML text.
The customization module should be placed in the following directory:
/var/opt/hspc-root/custom/screen/
The following controls' types are available for customization:
General page controls:
path - path at the very top of the page
title - title of the page shown right below path
top_link - top links like Help (id 'open_help'), Add Comment (id 'add_comment'), etc
page_description - page description shown in Control Panel
tabs - page tabs (id = 'item')
page_title - the whole page header including tabs and everything above
Listing page controls:
paging - paging bar above lists (includes page numbers and switches number of items per
page)
User Interface Customization
188
actions_bar - the bar at the bottom of the screen that allows performing actions over
Containers (create, start, stop, etc.)
browse - the whole listing section starting from column names and till the last row of the list
frequency_bar - bar for setting up time frequency (shown in Billing Manager - Reports Summary - Aged A/R Reports)
ranges_bar - bar for setting up date/time range (for instance, it is shown in the Action Log)
search_bar - search bar shown right above the list; it includes both the Search and the Filter
options
Edit form controls:
cell_title - field title
cell_check - checkbox
cell_combo - drop-down menu or combo-box (i.e, a drop-down menu with ability both to
select one of pre-defined variants or type a new one)
cell_datetime - several drop-down boxes and input fields for setting up a date/time (e.g., in
Promotion edit form or in Tax Rates)
cell_file - file upload
cell_input - input field where you can type something
cell_textarea - text area field, i.e., an input field for several strings
cell_list - multi-select box with button add/remove like in "Available Card Types" in
payment plug-ins settings
cell_lists2 - two multi-select boxes with '<<' and '>>' buttons and optional Up/Down buttons
cell_period - input field and select box with Minute/Hour/Day/Month
cell_popup - input field with button which opens the popup window
cell_radio - radio button
edit_open - the entire form
Other controls:
form - the whole edit form (e.g., a form for editing a Promotion properties)
view - the whole view form (e.g., a form for viewing a Promotion properties)
button - any button on the screen.
User Interface Customization
189
Discovering Screen ID and the Name of Screen Element to Customize
Discover Screen ID
To know out the screen ID, view the scren HTML code and search for the word screen. You
will get the sample as:
Discover Screen Element Name
Internally, the Parallels Business Automation - Standard marks all of the elements (i.e.,
controls) on the page with the special metatags:
and
where "X" represents the type of control (e.g., "cell_combo" or "cell_check") and "Y"
represents the control ID. The control ID is an alphabetical identifier that explicitly identifies a
particular control and allows you to explicitly define a particular field you want to customize
since an edit form can include several controls of the same type. For example, in the Account
Settings form in the Control Panel My Account zone, there are several controls of cell_combo
type: State (US or Canada), State (other countries), and Country. If you want to customize the
Country field, you need to use the cell_combo control with the address_country ID. We provide
the example of the Country field customization module (on page 191).
The metatags mentioned above allow you to fetch the name of control and customize it using
the facilities described in this section. By default, all the metatags are removed from an HTML
output right before sending an HTML to a client browser. However, if you want to see these
tags, you can temporary disable the metatags automated removal by turning on the setting Do
not remove metatags from page content in PСС -> Configuration Director -> Miscellaneous
Settings > Inteface Settings.
To know out the type and ID if the control you want to customize:
1. Turn on the Do not remove metatags from page content setting as this described above
2. Go to the screen you want to customize, right-click somewhere on the screen and select the
View Source option from the context menu that appears.
3. In the HTML code, look for the needed metatag.
For example, let us look at the piece of HTML code describing the Account Settings form (Edit
screen) under the Account tab in the Control Panel:
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : Yes Author : (c) 1999-2013 Comments : Copyright © 1996-2002 AuthorIT Software Corporation Ltd., all rights reserved. Company : AuthorIT Software Corporation Ltd. Create Date : 2013:09:13 22:07:18+04:00 Keywords : Release, 4.3., Revision, 1.9 Modify Date : 2013:09:13 22:08:04+04:00 Source Modified : D:20130913180654 Subject : Parallels Tagged PDF : Yes XMP Toolkit : Adobe XMP Core 5.2-c001 63.139439, 2010/09/27-13:37:26 Metadata Date : 2013:09:13 22:08:04+04:00 Creator Tool : Acrobat PDFMaker 10.0 for Word Document ID : uuid:e04b64e3-2092-455b-9b05-d685e6239128 Instance ID : uuid:15b3835c-5bf7-4249-b4e7-b4c27fcbb251 Format : application/pdf Title : Parallels Business Automation Standard Description : Parallels Creator : (c) 1999-2013 Producer : Adobe PDF Library 10.0 Headline : Parallels Page Layout : OneColumn Page Count : 391EXIF Metadata provided by EXIF.tools