Sie sind auf Seite 1von 248

May 2010

10685-02 Rev. B
i TVManager 4.1
BackOffice API Technical
Reference
Contacting Minerva Networks
For more information about Minerva Networks, see http://www.minervanetworks.com.
Minerva Networks, Inc.
2150 Gold Street
Alviso, CA 95002
USA

Tel: 408.567.9400
Fax: 408.567.0747
Toll Free: 800.806.9594
Minerva Support Services
800-9-MINERVA
800-964-6378
408-904-1299
Support Request: http://support.minervanetworks.com
Minerva Product Information
800-806-9594
408-567-9400
http://www.minervanetworks.com/products/overview
Copyright 2010 Minerva Networks, Inc. All rights reserved, also protected by patents granted/pending in
US/China/Others. Printed in the USA.
Minerva, the Minerva logo and MinervaiTVManager are registered trademarks of Minerva Networks, Inc. All other
trademarks or registered trademarks are the property of their respective companies.
This document and the software/hardware described in it are copyrighted with all rights reserved worldwide. Under the
copyright laws, neither this document nor related software may be copied, in whole or in part, without written consent
of Minerva Networks, Inc., except in the normal use acceptable to Minerva Networks. Under the law, copying includes
translating into another language or format.
Minerva Networks, Inc., provides this publication as is without warranty of any kind, either express or implied, includ-
ing but not limited to the implied warranties or conditions or merchantability or fitness for a particular purpose. In no
event shall Minerva be liable for any loss of profits, loss of business, loss of use or data, interruption of business, or for
indirect, special, incidental, or consequential damages of any kind, even if Minerva has been advised of the possibility
of such damages arising from any defect or error in this publication.
Minerva may revise this publication from time to time without notice. Some states or jurisdictions do not allow dis-
claimer of express or implied warranties in certain transactions; therefore, this statement may not apply to you.
Minerva is not obligated to update or upgrade any hardware product (whether or not a Minerva product) that may be
required to run this software release or upgrade. This release or upgrade is licensed on the same terms as apply to the
software program to which this release or upgrade relates.
You may be viewing this document via electronic means. While every effort has been taken to ensure the highest qual-
ity, some forms of electronic transmission can degrade the quality of both print and illustrations. The quality of docu-
mentation is best when a printout is generated from a native source (e.g., floppy disk or CD-ROM) and printed on a
high-quality laser printer.
www.minervanetworks.com 3
iTVManager BackOffice API Technical Reference
Document History
History from Previous Book
This table contains relevant history inherited from the iTVManager 4 BackOffice API Technical Reference:
Document
Version
Date
Software
Version
Description
02-A 4/9/2010 4.1 Initial release.
00-B 5/19/2010 4.0 - 4.1
SPx
- In section Input Argument Specification Format in chapter Introduction,
added a note about the DATE format.
- Added a note in the field descriptions in the following CDKs:
md.cst.edit_customer (attribute customerStartDate)
md_cst.get_customer_account (attribute PAYMENT_METHOD)
md_cst.get_customer_list (attribute ENABLE_CALLERID)
md_cst.get_customer_services (attribute START_DATE). Also,
removed note indicating The next two attributes are misnamed.
md_cst.set_services_for_customer (attribute startDate)
Document
Version
Date
Software
Version
Description
00-A 7/24/2009 4.0 Initial release.
00-B 7/31/2009 4.0 Removed erroneous -5 error code for md_dev.get_device_info() call.
00-C 9/25/2009 4.0 Added -7 status description for md_dev.get_device_info().
00-D 10/11/2009 4.0 Changed name of delete PPV channel call from
md_liv.delete_ppv_channe() to md_liv.delppvchannel2().
00-E 12/7/2009 4.0 SP1+ Added note in introduction: Any CDK which is designed to edit data in
an existing record, such as md_cst.edit_customer, you must return origi-
nal values for all fields that you dont want changed...
4 www.minervanetworks.com
iTVManager: BackOffice API Technical Reference
www.minervanetworks.com 5
May 2010 iTVManager BackOffice API Technical Reference
Contents
Introduction........................................................................................................................ 9
Audience...................................................................................................................................9
Relationship to the BackOffice Console....................................................................................9
Packages ................................................................................................................................11
How to Invoke a Procedure.....................................................................................................11
Document Conventions...........................................................................................................13
Debugging ........................................................................................................................ 19
Concepts.................................................................................................................................19
Procedure Summary...............................................................................................................19
Procedure Specifications ........................................................................................................20
md_cdk.get_error()............................................................................................. 20
BackOffice User Accounts.............................................................................................. 21
Concepts.................................................................................................................................21
Procedure Summary...............................................................................................................23
Procedure Specifications ........................................................................................................24
md_sys.add_admin()............................................................................................. 24
md_sys.del_admin()............................................................................................. 26
md_sys.edit_admin()........................................................................................... 27
md_sys.get_admin_list().................................................................................... 29
md_adm.get_system_statistics() ....................................................................... 31
md_adm.login_with_session()............................................................................. 32
md_adm.log_off() (session ID version) ........................................................... 33
md_adm.log_off() (username/password version)............................................... 34
Multicast Addresses........................................................................................................ 35
Concepts.................................................................................................................................35
Procedure Summary...............................................................................................................35
Procedure Specifications ........................................................................................................36
md_iph.add_mcast_ip_address() ......................................................................... 36
md_iph.add_ports()............................................................................................. 37
md_iph.delete_mcast_ip().................................................................................. 38
md_iph.del_ip_ports() ....................................................................................... 39
md_iph.get_multi_ip_addresses()...................................................................... 40
md_iph.get_ports()............................................................................................. 41
Regions............................................................................................................................. 43
Concepts.................................................................................................................................43
Procedure Summary...............................................................................................................43
Procedure Specifications ........................................................................................................44
md_sys.add_region()........................................................................................... 44
md_sys.add_skins_to_region()........................................................................... 47
6 www.minervanetworks.com
Contents iTVManager BackOffice API Technical Reference
md_sys.delete_region() ......................................................................................48
md_sys.delete_skins_from_region()...................................................................49
md_sys.edit_region()..........................................................................................50
md_sys.get_ISP_dictionary() .............................................................................52
md_sys.get_skins_for_region()..........................................................................56
md_sys.set_default_region_for_ISP() ...............................................................57
md_sys.set_default_skin_for_region() .............................................................58
Lineups..............................................................................................................................59
Concepts .................................................................................................................................59
Procedure Summary...............................................................................................................60
Procedure Specifications.........................................................................................................61
md_liv.add_channels_to_lineup() ......................................................................61
md_liv.add_lineup() ...........................................................................................63
md_liv.delete_channels_from_lineup() .............................................................65
md_liv.delete_lineup() ......................................................................................66
md_liv.edit_lineup()..........................................................................................67
md_liv.get_lineup_dictionary()........................................................................69
md_liv.get_lineups()..........................................................................................72
Customers.........................................................................................................................73
Concepts .................................................................................................................................73
Procedure Summary...............................................................................................................73
Procedure Specifications.........................................................................................................75
md_cst.activate_customer()...............................................................................75
md_cst.add_customer()........................................................................................76
md_cst.deactivate_customer() ...........................................................................82
md_cst.delete_customer()...................................................................................83
md_cst.edit_customer() ......................................................................................84
md_cst.get_customer()........................................................................................87
md_cst.get_customer_account()..........................................................................89
md_cst.get_customer_list()...............................................................................92
md_cst.get_customer_services()........................................................................95
md_cst.get_customer_skin()...............................................................................97
md_cst.remove_services_from_customer()..........................................................99
md_cst.set_callerID_for_account().................................................................100
md_cst.set_customer_options()........................................................................101
md_cst.set_services_for_customer()...............................................................104
md_cst.set_skin_for_account()........................................................................106
md_cst.update_nrep_customer_info()...............................................................107
md_sys.get_nrep_acct_type_dictionary()........................................................108
Channels .........................................................................................................................109
Concepts ...............................................................................................................................109
Channel Categorization.........................................................................................................109
Procedure Summary.............................................................................................................110
Procedure Specifications.......................................................................................................111
md_liv.add_live_channel()...............................................................................111
md_liv.add_ppv_channel().................................................................................116
md_liv.delete_live_channel() .........................................................................122
md_liv.delppvchannel2() ..................................................................................124
md_liv.disable_channels()...............................................................................126
www.minervanetworks.com 7
iTVManager BackOffice API Technical Reference Contents
md_liv.edit_channel_cas_settings() .............................................................. 128
md_liv.edit_channel_in_lineup().................................................................... 130
md_liv.editLiveChannel2() .............................................................................. 132
md_liv.editPpvChannel2()................................................................................ 135
md_liv.enable_channels()................................................................................ 138
md_liv.get_channel_list() .............................................................................. 140
md_liv.get_live_dictionary()......................................................................... 144
md_liv.get_ppv_dictionary()........................................................................... 148
Devices ........................................................................................................................... 151
Concepts...............................................................................................................................151
Procedure Summary.............................................................................................................151
Procedure Specifications ......................................................................................................153
md_dev.add_device()......................................................................................... 153
md_dev.assign_device().................................................................................... 155
md_dev.delete_device().................................................................................... 157
md_dev.edit_device() ....................................................................................... 158
md_dev.get_device_info()................................................................................ 160
md_dev.get_device_list()................................................................................ 163
md_dev.get_unassigned_devices().................................................................... 166
md_dev.schedule_to_reboot()........................................................................... 168
md_dev.set_callerID_for_device().................................................................. 169
md_dev.set_skin_for_device()......................................................................... 170
md_dev.unassign_device()................................................................................ 172
Services .......................................................................................................................... 173
Concepts...............................................................................................................................173
Procedure Summary.............................................................................................................173
Procedure Specifications ......................................................................................................174
md_srv.get_services() ..................................................................................... 174
VOD Assets .................................................................................................................... 177
Concepts...............................................................................................................................177
Procedure Summary.............................................................................................................177
Procedure Specifications ......................................................................................................178
md_sam.add_asset()........................................................................................... 178
md_sam.delete_asset() ..................................................................................... 182
md_sam.edit_asset()......................................................................................... 183
md_sam.get_asset_dictionary() ....................................................................... 185
md_sam.getAssetList() ..................................................................................... 189
Subscription VOD.......................................................................................................... 193
Concepts...............................................................................................................................193
Procedure Summary.............................................................................................................194
Procedure Specifications ......................................................................................................195
md_cdk.create_svod_package()......................................................................... 195
md_cdk.delete_svod_package()......................................................................... 197
md_cdk.edit_svod_package() ............................................................................ 198
md_cdk.get_svod_asset_list()......................................................................... 200
md_cdk.get_svod_package_list() ..................................................................... 201
Channel Packages ......................................................................................................... 203
Concepts...............................................................................................................................203
8 www.minervanetworks.com
Contents iTVManager BackOffice API Technical Reference
Procedure Summary.............................................................................................................204
Procedure Specifications.......................................................................................................205
md_cdk.create_channel_package() ....................................................................205
md_srv.delete_channel_package() ....................................................................208
md_srv.edit_channel_package()........................................................................209
md_srv.edit_channel_package_cas_settings().................................................211
md_liv.get_channel_package_dictionary()......................................................212
md_srv.get_channel_package_info().................................................................215
md_srv.get_channel_packages()........................................................................217
md_cdk.update_nrep_channel_pkg_info()..........................................................219
Service Packages ...........................................................................................................221
Concepts ...............................................................................................................................221
Procedure Summary.............................................................................................................221
Procedure Specifications.......................................................................................................222
md_cdk.create_service_package() ....................................................................222
md_srv.del_service_pkg().................................................................................224
md_cdk.edit_service_package()........................................................................225
md_srv.get_service_package_info().................................................................227
Caller ID...........................................................................................................................229
Concepts ...............................................................................................................................229
Procedure Summary.............................................................................................................229
Procedure Specifications.......................................................................................................230
SendMessage()....................................................................................................230
Network DVR...................................................................................................................231
Procedure Summary.............................................................................................................231
Procedure Specifications.......................................................................................................232
md_liv.set_channel_rule()...............................................................................232
md_liv.set_program_rule()...............................................................................233
md_cst.set_customer_npvr_limit() ..................................................................235
md_cst.get_customer_npvr_limit() ..................................................................236
md_pvr.set_system_defaults() .........................................................................236
md_cst.set_customer_pause_live_tv_limit()...................................................238
md_pvr.delete_customer_schedule().................................................................239
md_pvr.delete_customer_asset()......................................................................240
Set-Top Box Restart Tool (STBRT)...............................................................................241
Concepts ...............................................................................................................................241
Procedure Summary.............................................................................................................241
Procedure Specifications.......................................................................................................242
md_stbrt.send_message_to_region().................................................................242
md_stbrt.send_message_to_customer() .............................................................243
md_stbrt.start_message_job() .........................................................................243
md_stbrt.start_reboot_job() ...........................................................................245
md_dev.schedule_to_reboot() ...........................................................................246
www.minervanetworks.com 9
May 2010 iTVManager BackOffice API Technical Specification
Introduction
The iTVManager BackOffice API is a programmatic interface to the iTVManager Database. The API is a set
of stored procedures that you use to view and modify the data in your iTVManager system. The API lets you
add and edit customers, devices, channels, lineups, regions, and so on.
What the API doesnt do is provide procedures that let you start and stop iTVManager processes, ingest EPG
and VOD data, control a VOD playback, and the like. The only control procedures that the API provides are
the ability to tell an STB to reboot itself and to send the STB a Caller ID message.
Audience
This book is intended to be used by iTVManager system administrators who want to manage the Database
programmatically. Before using this specification, you should understand the concepts that were introduced in
the iTVManager Technical Overview book, particularly the Data chapter.
Relationship to the BackOffice Console
The BackOffice API isnt the only way to administer iTVManager: You can also use the Web-based
BackOffice Console. The Console can perform more functions than can the API. The table, below lists the
BackOffice Consoles modules. If a modules functionality is supported by the API, the chapter that describes
that API is listed in the API Chapter column.
Module API Chapter
Devices
Devices
Customers
Customers
Channel Management > Channels
Channels
Channel Management > Lineups
Lineups
Channel Management > EPG
Asset Management > Asset Mgmt
VOD Assets
Asset Management > Provider Mgmt
Asset Management > Image Mgmt
Asset Management > Trailer Mgmt
Asset Management > Category Mgmt
10 www.minervanetworks.com
Introduction iTVManager BackOffice API Technical Specification
The BackOffice Console modules are described in the iTVManager 4 BackOffice Console Reference.
Billing
Service & Pricing > Channel Package
Channel Packages
Service & Pricing > Record Space
Service & Pricing > Other Pricing
Services
Service & Pricing > Subscriptions
Subscription VOD
Service & Pricing > Service Package
Service Packages
Service & Pricing > Asset Pricing
Service & Pricing > Free Movie
Service & Pricing > VOD Bundling
Service & Pricing > Sports Package
IP Headend > Setup > System Configuration
IP Headend > Setup > Network Configuration
Multicast Addresses
IP Headend > SeaChange Server
IP Headend > Video Servers
IP Headend > Video Encoders
IP Headend > Multicast Addr.
IP Headend > MulticastStream Set
System Setup > Business Info
System Setup > Region
Regions
System Setup > Admin User
BackOffice User Accounts
System Setup > EAS Setup
System Setup > Business Rules
System Setup > Configuration
System Setup > Upgrade Manager
Reports
Message Center
Module API Chapter
www.minervanetworks.com 11
iTVManager BackOffice API Technical Specification Introduction
Packages
The procedures in the BackOffice API are organized into packages. The package name appears as a prefix in a
procedures protocol. For example, in the md_cst.add_customer() procedure, the package is md_cst. The
packages and the objects that they affect are:
The package is only significant as part of a procedures name. You dont have to explicitly switch into a
package in order to use its procedures.
How to Invoke a Procedure
To invoke a BackOffice API procedure, you form an HTTP statement and post it to the XmlPo.po application
on the server that hosts the cdk process. Typically, this is the Administration Server.
Each procedure has a set of input arguments and output arguments, as explained in the procedures
specification. When you invoke the procedure, you pass in the desired values as the input arguments, and pass
a question marks as each of the output arguments. The one exception to this is the final output argument
(status), which is always passed as ?int status.
The call responds with an XML document that returns the status of the call in the status variable, and returns
a set of rows (or a tables) for each output argument.
For example, the protocol for the md_dev.get_device_info() procedure looks like this:
Here, there are two input arguments (sessionID and deviceID), and five output arguments (?deviceInfo,
?customerInfo, ?deviceList, ?deviceCapabilities, and ?int status). To invoke the procedure, you
replace the input arguments with values, and replace the output arguments with question marks (except for
status), and post the call to the XmlPo.po application on the appropriate server. For example:
ht t p: / / 192. 168. 0. 1: 3000/ Xml Po. po?SP=md_dev. get _devi ce_i nf o( ' mySI D' , ' 12' , ?, ?, ?, ?, ?i nt
st at us)
The XML thats returned by the call looks like this:
Package Objects
md_adm
User accounts for the BackOffice Console and API
md_cdk
Miscellaneous (SVOD, bits and pieces of other objects)
md_cst
Customers
md_dev
Devices (STBs)
md_iph
Multicast streams
md_liv
Channels and channel lineups
md_sam
VOD assets
md_srv
Channel packages, service packages, and other services (Web, email, etc)
md_sys
Regions
md_dev.get_device_info ( sessionID, deviceID, ?deviceInfo, ?customerInfo,
?deviceList, ?deviceCapabilities, ?int status )
12 www.minervanetworks.com
Introduction iTVManager BackOffice API Technical Specification
<doc>
<md_dev. get _devi ce_i nf o st at us=" 0" >
<RS1>
<r ow DEVI CE_I D=" 2049"
SERI AL=" 001095700a82" MAC_ADDRESS=" 001095700a82"
I P_ADDRESS=" 10. 1. 120. 2" PORT=" " SWI TCH_PORT_I D=" " MODEL_NUMBER=" "
STATUS=" A" TURN_ON_DATE=" 01/ 28/ 2006" TURN_ON_TI ME=" 12: 08"
TURN_OFF_DATE=" " TURN_OFF_TI ME=" " SMART_CARD_NUM=" No CA I D" DHCP=" N"
STB_THI NK_VERSI ON=" 2. 1. 67. SP02R" STB_FI RMWARE_VERSI ON=" B04. 06. 00"
STB_OS_VERSI ON=" Thomson SWVer si on: ST03. 25. 00"
STB_REBOOT_STATUS=" Boot ed " >
</ r ow>
</ RS1>
<RS2>
<r ow CUSTOMER_I D=" MD11609" CUSTOMER_NAME=" J i mBowi e" ADDRESS=" 45 45t h St . "
CI TY=" Pr ovol one" STATE_ZI PCODE=" ca 94536" WORK_PHONE=" 321- 555- 1234 "
HOME_PHONE=" 321- 555- 4321 " EMAI L=" j bOwi e@wow. com" >
</ r ow>
</ RS2>
<RS3>
<r ow DEVI CE_I D=" 2168" ></ r ow>
<r ow DEVI CE_I D=" 2097" ></ r ow>
</ RS3>
<RS4>
<r ow STREAM_COUNT=" 2" HAS_HD=" Y" HAS_PVR=" N" HAS_PLT=" Y" ></ r ow>
</ RS4>
</ md_dev. get _devi ce_i nf o>
. . .
</ doc>
Note the following:
All procedure calls take the same HTTP form; they all begin with http://cdkIP:port/XmlPo.po?SP=
followed by the procedure name and arguments, where cdkIP:port is the IP address and port of the
server that hosts the cdk process.
Arguments must be separated by a comma.
Each string input argument must be enclosed in single quotes.
Except when specifying a currency format that contains a comma (for example, 9,999.00), use
commas only as an argument delimiter. (Dont use them even within single quotes.)
With one or two exceptions, every procedures take a session ID as its first argument. The session ID is
a string that identifies your BackOffice session. You create the ID when you log into the BackOffice
through the md_adm.login_with_session() procedure, as explained in the BackOffice User Accounts
chapter.
The following characters must be replaced with their representative hexadecimal values when passed in as
part of an input argument:
All procedures take a final output argument, status. The status value, which describes the success or
failure of the call, is returned in the first line of the XML response. In the example, we see
<md_dev.get_device_info status="0">. In general, a status of 0 means success, although some
create a new object procedures return the ID of the newly-created object in the status value.
Character Hex
+ %2B
# %23
% %25
& %26
www.minervanetworks.com 13
iTVManager BackOffice API Technical Specification Introduction
A procedure can only return a single status value. If the call has more than one error (for example, if
more than one input argument is invalid), the first error thats encountered is reported by status.
The body of the XML output returns the values of the other output arguments (i.e. other than status).
Each output argument is returned in its own table, even if the argument returns a single value. As you can
see in the example XML, the output argument tables are named <RSN> where N is a monotonically
increasing integer starting at 1.
IMPORTANT: Any CDK whi ch i s desi gned to edi t data i n an exi sti ng record, such as md_cst.edi t_customer, you
must return ori gi nal val ues for al l fi el ds that you don t want changed. Don t, for exampl e, popul ate
j ust the l astName fi el d i f that s the onl y fi el d you want to change, otherwi se al l other fi el ds i n the
record wi l l be nul l ed.

You can popul ate fi el ds i n edi t CDKs wi th ori gi nal val ues by usi ng the correspondi ng get CDK,
such as md_cst.get_customer.
Document Conventions
General Typography
The table below describes the typography thats used throughout the Minerva documentation.
How to Read The Procedure Specifications
The chapters in this book provide the technical specifications of the procedures that affect a particular
iTVManager object, where an object is a record in the Database. To make the distinction between an object
(i.e. a record) and the real-world thing that it represents, we capitalize the object name; for example, a
Customer object is a record that represents a flesh-and-blood customer, and a Device object represents a
plastic-and-silicon STB.
Each chapter is divided into these sections:
Concepts. An overview of the terms and notions that pertain to the objects that are described in the
chapter.
Procedure Summary. A list of the procedures that are described in the chapter, with brief descriptions.
Typeface Use
Abcdef
Used for interface labels, both in the BackOffice Console and on the STB. For example:
Channel Management (BackOffice Console), Share Rental (STBs Buy Dialog panel).
Abcdef
Used for messages that are displayed on the STB. For example: Blocked Movie, Blocked
Program.
abcdef
Used for filenames, literal command line input, and API keywords. For example:
datafile.dat (file), itvmgrctl (command), md_cst.add_customer() (BackOffice API
stored procedure), vaultCategoryListRect (Thinkstuff statement).
abcdef
Used for non-literal command line input. For example: itvmgrPassword.
abcdef
Used for command line output and file contents. For example: Passwor d: .
Abcdef Used for references to other books and chapters. For example: See the Think Application
Arguments chapter of the iTVManager 4 Configuration Guides for details.
14 www.minervanetworks.com
Introduction iTVManager BackOffice API Technical Specification
Procedure Specifications. A detailed explanation of each procedure. The procedures are listed in
alphabetical order. The form of a specification is described below.
Procedure Specification Format
Each procedure is specified by itself. A procedure specification is divided into these sections:
Name and description. The procedures name is always presented at the top of a page followed by a
prosaic description; for example:
Protocol. The Protocol section gives the procedures signature, or name and arguments:
Argument names that arent preceded by a question mark are input arguments. Argument names that are
preceded by a question mark are output arguments. When you call the procedure, you replace the input
argument names with the values you want to supply to the procedure, and pass literal question marks as
the output arguments. See How to Invoke a Procedure for an example.
Input Arguments. This section provides a description of each input argument. The format of the
description is explained in Input Argument Specification Format.
Output Arguments. This section provides a description of each output argument. See Output Argument
Specification Format for more information.
Status Values. This section lists and describes all of the status values that can be returned by the
procedure.:
Example. This section provides an example HTTP invocation and XML response. An example was given
in How to Invoke a Procedure.
md_dev.get_device_info()
Returns all the information thats known about a device. As a convenience, the procedure also
returns information about the customer to whom the device is assigned, and a list of the other
Devices that are assigned to that customer.
PROTOCOL
md_dev.get_device_info ( sessionID, deviceID, ?deviceInfo, ?customerInfo,
?deviceList, ?deviceCapabilities, ?int status )
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 Invalid deviceID.
-4 More than one Device has deviceID.
-5 deviceID is invalid.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure
www.minervanetworks.com 15
iTVManager BackOffice API Technical Specification Introduction
Input Argument Specification Format
An input argument specification looks like this:
The first line provides six pieces of information, in order from left to right:
1. An integer that gives the arguments ordinal position within the set of arguments. In the example, above,
promoAssets is declared to be the twenty-second argument.
2. An asterisk (*) before the argument name indicates that the argument is always required. A hashmark (#)
means it might be required, as explained in the arguments description. If the argument is always optional,
no special character is prepended to the arguments name. In the example, *promoAssets is marked as
always required.
3. The arguments name.
4. The bracketed number is the length of the data that the argument takes, in characters. Only those
arguments that take strings or lists of values declare their length. In the example, the promoAssets value
can be 2048 characters long.
5. The type of data the argument takes. In the example, the I D|I D indicator means that promoAssets takes
a list of IDs. The data types are listed and explained in the next section.
6. The final bit of information provides additional information about the values that the argument can take:
Its either a range of valid values, how to retrieve these values, formatting information, and so on. Not all
argument specifications provide this information. The meaning of the procedure reference in the
example is explained in the next section.
The technical information is followed by a prosaic description of the argument.
Input Argument Data Type
There are seven input argument data types:
Data Type Meaning
STRI NG
If an argument takes string data, the length of the data is always announced. For example:
7 registrationNumber[ 80] STRI NG
The registrationNumber argument can be 80 characters long.
CHAR
A single character. The set of valid characters is always announced. For example:
8 hasHD CHAR [ Y| N]
The hasHD argument can be 'Y' or 'N.' Since, in this case, the argument isnt required, it
can also be empty: ''.
I NTEGER
A single integer. The set of valid integers is usually announced. For example:
9 *searchAttribute I NTEGER [ 1- 7]
The searchAttribute argument must be a number between 1 and 7, inclusive.
1 channelIDs[ 4000] I D|I D md_liv.get_lineup_dictionary:<RS2>.CHANNEL_ID
The IDs of the Channels that you want to remove from the Lineup. Its not an error for the list to
include Channels that dont belong to the Lineup.
16 www.minervanetworks.com
Introduction iTVManager BackOffice API Technical Specification
I D
A token that was created in a previous call. The method for retrieving valid ID values is
always announced. For example:
10 customerID I Dmd_cst.get_customer_list():<RS1>.CUSTOMER_ID
The reference to the procedure means that you can retrieve valid Customer IDs from the
CUSTOMER_ID field in the <RS1> output argument of the md_cst.get_customer_list()
procedure.
DATE
A string that represents a date, given in the IPTV Providers date format. For example:
11 startDate DATE IPTV Providers date format
The date format is set when you assign a default Region to the IPTV Provider through the
md_sys.set_default_region_for_ISP() procedure. The date formats themselves are
returned through get_ISP_dictionary():<RS6>.DATE_STYLE_ID.
IMPORTANT: For accurate resul ts when usi ng CDKs that i ncl ude date fi el ds, use date
formats that i ncl ude day, month and year. These i ncl ude the fol l owi ng:

MM/dd/yyy
MM/dd/yy
dd/MM/yyyy
dd/MM/yy
yyyy/MM/dd
MMM-ddyyyy
NOTE: Any CDK output (normally get CDKs) that include 'DATE' format (such as CC
expiration date, customer expiration date, Social Security, etc.) with no date,
returns a space. Any CDK input (such as a set command) that includes a
'DATE' format parameter must be made a null (no space) value. To use the
date output of a get call as date input for a set call, the spaces must first be
deleted. This issue will be fixed in iTVManager 4.2.
TI ME
A string that represents a time of day, given in the IPTV Providers time format. For
example:
12 endTime TI ME IPTV Providers time format
The time format is set when you assign a default Region to the IPTV Provider through the
md_sys.set_default_region_for_ISP() procedure. The time formats themselves are
returned through get_ISP_dictionary():<RS7>.TIME_STYLE_ID.
Data Type Meaning
www.minervanetworks.com 17
iTVManager BackOffice API Technical Specification Introduction
If a list of values is expected, the data type is given as type|type. For example:
14 channelIDs[ 4000] I D|I D md_liv.get_lineup_dictionary:<RS2>.CHANNEL_ID
The values in the list are separated by the | character. For example:
'12|345|34'
IMPORTANT: Al l argument val ues shoul d be encl osed i n si ngl e quotes.
Output Argument Specification Format
An output argument specification looks like this:
The first line provides three pieces of information, in order from left to right:
1. An integer that gives the arguments ordinal position. In the example, above, deviceInfo is the
fourteenth argument.
2. The arguments descriptive name.
3. The arguments literal name as it appears in the output XML file.
This is followed by a prosaic description, and then a list of the fields that will appear in the output XML file.
PRI CE
A string that represents an amount of money, given in the IPTV Providers decimal format.
For example:
13 ppvPrice PRI CE IPTV Providers decimal format
The decimal format is set when you assign a default Region to the IPTV Provider through
the md_sys.set_default_region_for_ISP() procedure. There are three components to
a decimal format:
The integer delimiter character (delimiting hundreds, thousands, millions, etc).
The decimal delimiter character.
The number of decimal places.
For example:
'9,999.99': The integer delimiter is a comma, the decimal delimiter is a period, and
the number of decimal places is 2.
'9999,99': Theres no integer delimiter, the decimal delimiter is a comma, and the
number of decimal places is 2.
Data Type Meaning
15 deviceInfo <RS1>
Device information, given as a single row of attributes:
DEVICE_ID. The Device ID value.
SERIAL. The devices serial number.
MAC_ADDRESS. The devices MAC address.
IP_ADDRESS. The devices (current) IP address.
18 www.minervanetworks.com
Introduction iTVManager BackOffice API Technical Specification
www.minervanetworks.com 19
May 2010 iTVManager BackOffice API Technical Reference
Debugging
Concepts
The md_cdk.get_error() procedure returns information about the most recently encountered SQL error.
Procedure Summary
md_cdk.get_error() returns information about an error.
20 www.minervanetworks.com
Debugging iTVManager BackOffice API Technical Reference
Procedure Specifications
md_cdk.get_error()
Provides more information about a previous -2 (general SQL) error.
PROTOCOL
md_cdk.get_error ( sessionID, ?description, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
OUTPUT ARGUMENTS
2 description <RS1>
DATE_TIME. The date and time of the call that generated the error.
MODULE. The BackOffice API procedure that generated the error.
ERROR_MESSAGE. The SQL code that generated the error.
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General SQL error.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cdk. get _er r or ( ' mySI D' , ?, ?i nt st at us)
Response:
<md_cdk. get _er r or st at us=" 0" >
<RS1>
<r ow DATE_TI ME=" 2007- 09- 12 10: 50: 02. 0" MODULE=" get _t r ai l er _l i st sql : "
ERROR_MESSAGE=" sel ect 1, t r ai l er _i d, t i t l e, nvl ( descr i pt i on, &#39; &#39; )
descr i pt i on, vs_par t i t i on_i d, st at us f r omSAM_SCH_TLR_I D_VI EWwher e r ownum&l t ; = 0 MI NUS
sel ect 1, t r ai l er _i d, t i t l e, nvl ( descr i pt i on, &#39; &#39; )
descr i pt i on, vs_par t i t i on_i d, st at us f r omSAM_SCH_TLR_I D_VI EWwher e r ownum&l t ; = 0"
></ r ow>
</ RS1>
</ md_cdk. get _er r or >
. . .
<doc>
www.minervanetworks.com 21
May 2010 iTVManager BackOffice API Technical Reference
BackOffice User Accounts
Concepts
The BackOffice User Account procedures let you log into and out of the iTVManager BackOffice. You must
log in before invoking any of the other BackOffice API, and you should log out when youre finished.
The Default BackOffice User Account
iTVManager creates a default BackOffice Account with the username su; the account has no password.
Youre not allowed to delete the default BackOffice User Account, nor can you change its username or
password. If you want to neutralize the default Account, you can use md_cst.edit_admin() to remove all
of its BackOffice Account permissions.
Creating a New BackOffice Account
You can create a new BackOffice Account through the md_sys.add_admin() procedure, or through the
BackOffice Console. All of the BackOffice User Accounts that are created through the BackOffice Console
are visible to the API, and vice versa.
BackOffice Account Permissions
Not all BackOffice Accounts have the same accessibility permissions: Permissions are granted on a module
basis, where a module is a BackOffice entity that corresponds (roughly) to an API package; for example, an
Account that doesnt have permission to access the Device Module wont be able to invoke the procedures in
the MD_DEV package. Permissions are assigned when the Account is created.
The modules are:
DEV: Devices
CST: Customers
CHM: Channel Management
SAM: Asset Management (VOD, trailers, posters, and so on)
BIL: Billing
SRV: Services and Pricing (Channel and Service Packages, SVODs, and so on)
IPH: IP Headend (IP addresses)
SYS: System Setup (localized strings, Thinkstuff settings, Dispatcher configuration)
MSG: Messages (to the STBs)
RPT: Reports
22 www.minervanetworks.com
BackOffice User Accounts iTVManager BackOffice API Technical Reference
Logging In and the Session ID
When you log in, you have to provide the username and password of an existing BackOffice User Account and
an ID (an arbitrary string of your own creation) thats assigned to the login session; most of the other API
calls ask that you pass in the session ID. For example, here we log in through the default account and create a
session ID of mySID:
ht t p: / / 10. 1. 1. 1: 9000/ Xml Po. po?SP=md_adm. l ogi n_wi t h_sessi on( ' su' , ' ' , ' mySI D' , ?i nt st at us)
In subsequent calls, we pass the session ID string as the first argument:
ht t p: / / 10. 1. 1. 1: 9000/ Xml Po. po?SP=md_sys. get _admi n_l i st ( ' mySI D' , ?, ?, ?i nt st at us)
NOTE: In the examples in this reference, we use ' mySI D' as the session ID value.
You can log into the BackOffice through the API or the BackOffice Console. Although multiple different
BackOffice User Accounts can be logged into the BackOffice at the same time, each BackOffice User Account
can only be logged in once (whether through the API or the Console). If a BackOffice User Account is
already logged in, a subsequent attempt to log in through the API will fail. The BackOffice Console, on the
other hand, gives you a chance to end the Accounts current session. The logic of the login process looks like
this:
After youve logged into the BackOffice your session remains active until (a) you log out, (b) a BackOffice
Console login kicks you off, or (c) the session has been idle for too long.
login: username/password
NO
exit
YES
NO
login is accepted
YES
how?
API
BackOffice
Console
end
current
session?
already
logged
in?
NO
YES
login
info
correct?
www.minervanetworks.com 23
iTVManager BackOffice API Technical Reference BackOffice User Accounts
Procedure Summary
BackOffice Accounts
md_sys.add_admin() creates a new BackOffice Account.
md_sys.del_admin() removes a BackOffice Account.
md_sys.edit_admin() modifies a BackOffice Account.
md_sys.get_admin_list() returns a list of all BackOffice Accounts.
BackOffice Sessions
md_adm.login_with_session() starts a new BackOffice session.
md_adm.log_off() ends the current BackOffice session.
Miscellaneous
md_adm.get_system_statistics() retrieves information such as the number of registered Customers,
the number of VOD titles, the number of Channels, and so on.
24 www.minervanetworks.com
BackOffice User Accounts iTVManager BackOffice API Technical Reference
Procedure Specifications
md_sys.add_admin()
Creates a new BackOffice Account.
PROTOCOL
md_sys.add_admin ( sessionID, firstName, middleName, lastName, username, password,
phone, fax, email, status, hasDEV, hasCST, hasCHM, hasSAM, hasBIL, hasSRV, hasIPH,
hasSYS, hasRPT, hasTRA, hasMSG, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 firstName[ 40] STRI NG
3 middleName[ 20] STRI NG
4 *lastName[ 80] STRI NG
The Account owners first, middle, and last name.
5 *username[ 40] STRI NG
6 *password[ 40] STRI NG
The Accounts username and password. The username must be unique across all BackOffice Accounts.
7 phone[ 50] STRI NG
8 fax[ 50] STRI NG
9 email[ 80] STRI NG
The Account owners phone number, fax number, and email address.
10 status CHAR [ A| I]
The Accounts status, either 'A' for active or 'I' for inactive. The default is 'A'.
11 hasDEV CHAR [ Y| N]
12 hasCST CHAR [ Y| N]
13 hasCHM CHAR [ Y| N]
14 hasSAM CHAR [ Y| N]
15 hasBIL CHAR [ Y| N]
16 hasSRV CHAR [ Y| N]
17 hasIPH CHAR [ Y| N]
18 hasSYS CHAR [ Y| N]
19 hasRPT CHAR [ Y| N]
20 hasTRA CHAR [ Y| N]
21 hasMSG CHAR [ Y| N]
These arguments correspond to the Account permissions listed in BackOffice Account Permissions. Each
takes 'Y' or 'N' as a value. The default is 'N'.
OUTPUT ARGUMENTS
22 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
www.minervanetworks.com 25
iTVManager BackOffice API Technical Reference BackOffice User Accounts
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-4 username isnt unique.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sys. add_admi n( ' mySI D' , ' f i r st ' , ' mi ddl e' , ' l ast ' , ' l ogi n
' , ' passwor d' , ' ' , ' ' , ' ' , ' A' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ?i nt st at us)
Response:
<doc>
<md_sys. add_admi n st at us=" 0" >
</ md_sys. add_admi n>
. . .
</ doc>
26 www.minervanetworks.com
BackOffice User Accounts iTVManager BackOffice API Technical Reference
md_sys.del_admin()
Deletes a BackOffice User Account.
PROTOCOL
md_sys.del_admin ( sessionID, accountID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *accountID I D md_sys.get_admin_list():<RS1>.ADMIN_USER_ID
The ID of the BackOffice User Account that you want to delete. You cant delete the default BackOffice
User Account.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
IMPORTANT: If you try to del ete the defaul t BackOffi ce User Account, status i s set to -2.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sys. del _admi n( ' mySI D' , ' 21' , ?i nt st at us)
Response:
<doc>
<md_sys. del _admi n st at us=" 0" >
</ md_sys. del _admi n>
. . .
</ doc>
www.minervanetworks.com 27
iTVManager BackOffice API Technical Reference BackOffice User Accounts
md_sys.edit_admin()
Modifies the attributes of a BackOffice User Account.
IMPORTANT: Thi s procedure modi fi es al l of the attri butes that correspond to the i nput arguments. If you onl y
want to change a subset of the attri butes, you have to retri eve and pass i n the current val ues of the
attri butes that you don t want to change.
PROTOCOL
md_sys.edit_admin ( sessionID, accountID, firstName, middleName, lastName, username,
password, phone, fax, email, status, hasDEV, hasCST, hasCHM, hasSAM, hasBIL,
hasSRV, hasIPH, hasSYS, hasRPT, hasTRA, hasMSG, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *accountID I D md_sys.get_admin_list():<RS1>.ADMIN_USER_ID
The ID of the BackOffice User Account that you want to edit. Youre not allowed to change the
real-world names, username, password, or status of the default BackOffice User Account, but you can
change the Accounts permissions.
NOTE: See md_sys.add_admin() for descriptions of the rest of the input arguments.
3 firstName[ 40] STRI NG
4 middleName[ 20] STRI NG
5 *lastName[ 80] STRI NG
6 *username[ 40] STRI NG
7 *password[ 40] STRI NG
8 phone[ 50] STRI NG
9 fax[ 50] STRI NG
10 email[ 80] STRI NG
11 status CHAR [ A| I]
12 hasDEV CHAR [ Y| N]
13 hasCST CHAR [ Y| N]
14 hasCHM CHAR [ Y| N]
15 hasSAM CHAR [ Y| N]
16 hasBIL CHAR [ Y| N]
17 hasSRV CHAR [ Y| N]
18 hasIPH CHAR [ Y| N]
19 hasSYS CHAR [ Y| N]
20 hasRPT CHAR [ Y| N]
21 hasTRA CHAR [ Y| N]
22 hasMSG CHAR [ Y| N]
OUTPUT ARGUMENTS
23 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
28 www.minervanetworks.com
BackOffice User Accounts iTVManager BackOffice API Technical Reference
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 Youre trying to change the name or password of the default login account.
-4 username isnt unique.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sys. edi t _admi n( ' mySI D' , ' 21' , ' Fi r st ' , ' Mi ddl e' , ' Last ' ,
' api t est ' , ' api t est ' , ' ' , ' ' , ' ' , ' A' , ' Y' , ' Y' , ' Y' , ' Y' , ' ' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ?i nt st at us)
Response:
<doc>
<md_sys. edi t _admi n st at us=" 0" >
</ md_sys. edi t _admi n>
. . .
</ doc>
www.minervanetworks.com 29
iTVManager BackOffice API Technical Reference BackOffice User Accounts
md_sys.get_admin_list()
Retrieves a list of BackOffice User Accounts.
PROTOCOL
md_sys.get_admin_list ( sessionID, ?accountInfo, ?count, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
OUTPUT ARGUMENTS
2 accountInfo <RS1>
Information about the existing BackOffice User Accounts.

Each row contains information about a single
Account:
LAST_NAME. The Account owners last name.
MIDDLE_NAME. The Account owners middle name.
FIRST_NAME. The Account owners first name.
STATUS. "A" for active, "I" for inactive.
LAST_ACCESS. The time of the Accounts most recent login, given as "date time" in the IPTV
Providers date and time format.
PASSWORD. The Accounts password.
DEV. "Y" or "N" as the Account has or doesnt have access to the Devices component...
CST. ...the Customers component...
CHM. ...the Channel Management component...
SAM. ...the Asset Management component...
BIL. ...the Billing component...
SRV. ...the Services and Pricing component..
IPH. ...the IP Headend component...
SYS. ...the System Setup component...
MSG. ...the Messages component...
RPT. ...and the Reports component.
ADMIN_USER_ID. The BackOffice User Account ID.
3 count <RS2>
The number of existing BackOffice User Accounts. The count is returned in a single row that contains a
single attribute:
COUNT. The number existing BackOffice User Accounts.
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
30 www.minervanetworks.com
BackOffice User Accounts iTVManager BackOffice API Technical Reference
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sys. get _admi n_l i st ( ' mySI D' , ?, ?, ?i nt st at us)
Response:
<doc>
<md_sys. get _admi n_l i st st at us=" 0" >
<RS1>
<r ow LAST_NAME=" l ast " MI DDLE_NAME=" mi ddl e" FI RST_NAME=" f i r st " STATUS=" A"
LAST_ACCESS=" " PASSWORD=" passwor d" DEV=" Y" CST=" Y" CHM=" Y" SAM=" Y" BI L=" Y" SRV=" Y"
I PH=" Y" SYS=" Y" TRA=" Y" MSG=" Y" RPT=" Y" ADMI N_USER_I D=" 5" ></ r ow>
<r ow LAST_NAME=" Ar t " MI DDLE_NAME=" " FI RST_NAME=" " STATUS=" A" LAST_ACCESS=" "
PASSWORD=" abc" DEV=" Y" CST=" Y" CHM=" Y" SAM=" Y" BI L=" Y" SRV=" Y" I PH=" Y" SYS=" Y" TRA=" Y"
MSG=" Y" RPT=" Y" ADMI N_USER_I D=" 7" ></ r ow>
<r ow LAST_NAME=" Gi a" MI DDLE_NAME=" " FI RST_NAME=" " STATUS=" A"
LAST_ACCESS=" 09/ 10/ 2007 17: 36" PASSWORD=" abc" DEV=" Y" CST=" Y" CHM=" Y" SAM=" Y" BI L=" Y"
SRV=" Y" I PH=" Y" SYS=" Y" TRA=" Y" MSG=" Y" RPT=" Y" ADMI N_USER_I D=" 8" ></ r ow>
<r ow LAST_NAME=" Madat hi l " MI DDLE_NAME=" " FI RST_NAME=" " STATUS=" A" LAST_ACCESS=" "
PASSWORD=" abc" DEV=" Y" CST=" Y" CHM=" Y" SAM=" Y" BI L=" Y" SRV=" Y" I PH=" Y" SYS=" Y" TRA=" Y"
MSG=" Y" RPT=" Y" ADMI N_USER_I D=" 3" ></ r ow>
<r ow LAST_NAME=" Nguyen" MI DDLE_NAME=" " FI RST_NAME=" " STATUS=" A" LAST_ACCESS=" "
PASSWORD=" abc" DEV=" Y" CST=" Y" CHM=" Y" SAM=" Y" BI L=" Y" SRV=" Y" I PH=" Y" SYS=" Y" TRA=" Y"
MSG=" Y" RPT=" Y" ADMI N_USER_I D=" 2" ></ r ow>
<RS2>
<r ow COUNT=" 5" ></ r ow>
</ RS2>
</ md_sys. get _admi n_l i st >
. . .
</ doc>
www.minervanetworks.com 31
iTVManager BackOffice API Technical Reference BackOffice User Accounts
md_adm.get_system_statistics()
Returns information about the current state of the iTVManager system, such as how many customers are
registered, how many VODs are in the VOD server, how many Channels have been defined, and so on. The
information that this procedure returns is meant to be displayed in a UI.
PROTOCOL
md_adm.get_system_statistics ( sessionID, ?systemInfo, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
OUTPUT ARGUMENTS
2 systemInfo <RS1>
Each row in this table provides a single statistic. The rows elements are:
TYPE. The statistics UI-friendly name.
COUNTS. The number of objects of the statistic.
UI_ORDER. This is used by the iTVManager BackOffice Console to order the statistics when theyre
presented in the UI.
See the EXAMPLE section for a list of the statistics that are included in the table.
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_adm. get _syst em_st at i st i cs( ' mySI D' , ?, ?i nt st at us)
Response:
<doc>
<md_adm. get _syst em_st at i st i cs st at us=" 0" >
<RS1>
<r ow TYPE=" Act i ve Cust omer s: " COUNTS=" 2141" UI _ORDER=" 1" ></ r ow>
<r ow TYPE=" Act i ve Devi ces: " COUNTS=" 3959" UI _ORDER=" 2" ></ r ow>
<r ow TYPE=" Vi deo St or ed: " COUNTS=" 107" UI _ORDER=" 3" ></ r ow>
<r ow TYPE=" Li ve Channel s: " COUNTS=" 199" UI _ORDER=" 4" ></ r ow>
<r ow TYPE=" PPV Channel s: " COUNTS=" 6" UI _ORDER=" 7" ></ r ow>
<r ow TYPE=" EAS Channel s: " COUNTS=" 1" UI _ORDER=" 8" ></ r ow>
<r ow TYPE=" Mul t i cast Devi ces: " COUNTS=" 104" UI _ORDER=" 9" ></ r ow>
</ RS1>
</ md_adm. get _syst em_st at i st i cs>
. . .
<doc>
32 www.minervanetworks.com
BackOffice User Accounts iTVManager BackOffice API Technical Reference
md_adm.login_with_session()
Starts a new BackOffice session. See Logging In and the Session ID for more information about this procedure,
including an example.
PROTOCOL
md_adm.login_with_session ( username, password, sessionID, ?int status )
INPUT ARGUMENTS
1 *username[ 40] STRI NG
The username of the BackOffice User Account for which the session is started.
2 *password[ 40] STRI NG
The password of the BackOffice User Account for which the session is started.
3 *sessionID[ 80] STRI NG
A session ID string that will be used, in subsequent API calls, to identify this session.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 username isnt recognized or password is wrong.
-2 sessionID is already in use.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_adm. l ogi n_wi t h_sessi on( ' l ogi n' , ' passwor d' , ' mySI D' , ?i
nt st at us)
Response:
<doc>
<md_adm. l ogi n_wi t h_sessi on st at us=" 0" >
</ md_adm. l ogi n_wi t h_sessi on>
. . .
</ doc>
www.minervanetworks.com 33
iTVManager BackOffice API Technical Reference BackOffice User Accounts
md_adm.log_off() (session ID version)
Ends the BackOffice session identified by session ID. You can also end a session based on username and
password (see the username/password version, next).
PROTOCOL
md_adm.log_off ( sessionID, ?loginInfo, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
OUTPUT ARGUMENTS
2 loginInfo <RS1>
A single row that contains information about the BackOffice User Account thats being logged off:
USER_NAME. The UI-friendly name of the user that owns the Account, in the form First Last.
Note that this is not the username value that was used to log into the Account.
TIME_STAMP. The date and time that the Account had logged in, given as date time in the IPTV
Providers date and time formats.
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call (session ID version):
ht t p: / / serverIP: port/ Xml Po. po?SP=md_adm. l og_of f ( ' mySI D' , ?, ?i nt st at us)
Response (session ID version):
<doc>
<md_adm. l og_of f st at us=" 0" >
<RS1>
<r ow USER_NAME=" Fi r st Mi ddl e Last " TI ME_STAMP=" 2007- 09- 06 10: 51: 59. 0" ></ r ow>
</ RS1>
</ md_adm. l og_of f >
. . .
</ doc>
34 www.minervanetworks.com
BackOffice User Accounts iTVManager BackOffice API Technical Reference
md_adm.log_off() (username/password version)
Ends a BackOffice session identified by username and password. You can also end a session based on session
ID, as explained immediately above.
PROTOCOL
md_adm.log_off ( username, password, ?int status )
INPUT ARGUMENTS
1 *username[ 40] STRI NG
2 *password[ 40] STRI NG
The username and password of the BackOffice User Account that will be logged off.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 username isnt logged in.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call (username version):
ht t p: / / serverIP: port/ Xml Po. po?SP=md_adm. l og_of f ( ' api t est ' , ' api t est ' , ?i nt st at us)
Response (username version):
<doc>
<md_adm. l og_of f st at us=" 0" >
</ md_adm. l og_of f >
. . .
</ doc>
www.minervanetworks.com 35
May 2010 iTVManager BackOffice API Technical Reference
Multicast Addresses
Concepts
The Multicast Address procedures let you modify and query the range of IP addresses and ports that can
assigned to Channels. After you add multicast addresses and ports to the system through the procedures
described here, you have to assign them to a virtual encoder through the BackOffice Console. Only those
addresses and ports that have been assigned to an encoder can be assigned to Channels. The entire process is
described in the Assigning IP Addresses to Channels chapter of the iTVManager 4 Configuration Guides.
Procedure Summary
md_iph.add_mcast_ip_address() adds an IP address to the pool.
md_iph.add_ports() adds a port number to the pool.
md_iph.get_multi_ip_addresses() lists the current IP addresses.
md_iph.get_ports() lists the current port numbers.
md_iph.delete_mcast_ip() removes an IP address from the pool.
md_iph.del_ip_ports() removes a port number from the pool.
36 www.minervanetworks.com
Multicast Addresses iTVManager BackOffice API Technical Reference
Procedure Specifications
md_iph.add_mcast_ip_address()
Reserves a sequence of IP addresses (as many as 255) within a Class C subnet.
PROTOCOL
md_iph.add_mcast_ip_address ( sessionID, numberOfAddresses, classCSubnet,
?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *numberOfAddresses I NTEGER [ 1- 255]
3 *classCSubnet[ 11] STRI NG aaa.bbb.ccc
These two arguments let you reserve a sequence of Class C addresses. The procedure reserves addresses
starting with classCSubnet.1 and ending with classCSubnet.numberOfAddresses. For example, if
classCSubnet is '205.10.34' and numberOfAddresses is '128', the procedure reserves addresses
from 205.10.34.1 through 205.10.34.128.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 classCSubnet is invalid.
-4 numberOfAddresses

is greater than 255.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_i ph. add_mcast _i p_addr ess( ' mySI D' , 10, ' 227. 1. 2' , ?i nt
st at us)
Response:
<doc>
<md_i ph. add_mcast _i p_addr ess st at us=" 0" >
</ md_i ph. add_mcast _i p_addr ess>
. . .
</ doc>
www.minervanetworks.com 37
iTVManager BackOffice API Technical Reference Multicast Addresses
md_iph.add_ports()
Reserves a sequence of IP ports that will be used with your multicast IP addresses.
PROTOCOL
md_iph.add_ports ( sessionID, numberOfPorts, firstPort, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *numberOfPorts I NTEGER
3 *firstPort I NTEGER
These two arguments let you reserve a sequence of port numbers. The procedure reserves
numberOfPorts ports starting with port number firstPort.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_i ph. add_por t s( ' mySI D' , ' 3' , ' 2000' , ?i nt st at us)
Response:
<doc>
<md_i ph. add_por t s st at us=" 0" >
</ md_i ph. add_por t s>
. . .
</ doc>
38 www.minervanetworks.com
Multicast Addresses iTVManager BackOffice API Technical Reference
md_iph.delete_mcast_ip()
Removes a set of IP addresses from the list of reserved IP addresses.
PROTOCOL
md_iph.delete_mcast_ip ( sessionID, ipAddressList, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *ipAddressList[ 4000] I D|I D md_iph.get_multi_ip_addresses():<RS1>.IP_ADDRESS_ID
The list of IP addresses, identified by IP address ID, that you want to remove from the list of reserved
addresses.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_i ph. del et e_mcast _i p( ' mySI D' , ' 1| 2| 3' , ?i nt st at us)
Response:
<doc>
<md_i ph. del _mcast _i p st at us=" 0" >
</ md_i ph. del _mcast _i p>
. . .
</ doc>
www.minervanetworks.com 39
iTVManager BackOffice API Technical Reference Multicast Addresses
md_iph.del_ip_ports()
Removes a set of IP ports from the list of reserved ports.
PROTOCOL
md_iph.del_ip_ports ( sessionID, portList, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *portList[ 200] I D|I D md_iph.get_ports():<RS1>.IP_PORT_ID
The list of ports, identified by port ID, that you want to remove from the list of reserved ports.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_i ph. del _i p_por t s( ' mySI D' , ' 1| 2| 3' , ?i nt st at us)
Response:
<doc>
<md_i ph. del _i p_por t s st at us=" 0" >
</ md_i ph. del _i p_por t s>
. . .
</ doc>
40 www.minervanetworks.com
Multicast Addresses iTVManager BackOffice API Technical Reference
md_iph.get_multi_ip_addresses()
Retrieves information about the IP addresses that have been added to the reserved IP address list.
PROTOCOL
md_iph.get_multi_ip_addresses ( sessionID, ?ipAddressInfo, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
OUTPUT ARGUMENTS
2 ipAddressInfo <RS1>
Information about each IP address:
IP_ADDRESS_ID. The unique ID that represents the IP address.
IP_ADDRESS. The IP address in aaa.bbb.ccc.ddd form.
USED. The assignment status of the address. Its "used" if the IP address has been assigned; otherwise
" " (empty string).
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
4
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_i ph. get _mul t i _i p_addr esses( ' mySI D' , ?, ?i nt st at us)
Response:
<doc>
<md_i ph. get _mul t i _i p_addr esses st at us=" 0" >
<RS1>
<r ow I P_ADDRESS_I D=" 1" I P_ADDRESS=" 239. 255. 1. 1" USED=" " ></ r ow>
<r ow I P_ADDRESS_I D=" 2" I P_ADDRESS=" 239. 255. 1. 2" USED=" " ></ r ow>
<r ow I P_ADDRESS_I D=" 3" I P_ADDRESS=" 239. 255. 1. 3" USED=" " ></ r ow>
<r ow I P_ADDRESS_I D=" 4" I P_ADDRESS=" 239. 255. 1. 4" USED=" " ></ r ow>
<r ow I P_ADDRESS_I D=" 5" I P_ADDRESS=" 239. 255. 1. 5" USED=" " ></ r ow>
</ RS1>
. . .
</ doc>
www.minervanetworks.com 41
iTVManager BackOffice API Technical Reference Multicast Addresses
md_iph.get_ports()
Retrieves information about the IP ports that have been added to reserved port list.
PROTOCOL
md_iph.get_ports ( sessionID, ?portInfo, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
OUTPUT ARGUMENTS
2 portInfo <RS1>
Information about each IP address:
IP_PORT_ID. The unique ID that represents the IP port.
IP_PORT. The port number.
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_i ph. get _por t s( ' mySI D' , ?, ?i nt st at us)
Response:
<doc>
<md_i ph. get _por t s st at us=" 0" >
<RS1>
<r ow I P_PORT_I D=" 1" I P_PORT=" 3001" ></ r ow>
<r ow I P_PORT_I D=" 2" I P_PORT=" 2000" ></ r ow>
<r ow I P_PORT_I D=" 3" I P_PORT=" 2001" ></ r ow>
<r ow I P_PORT_I D=" 4" I P_PORT=" 2002" ></ r ow>
</ RS1>
. . .
</ doc>
42 www.minervanetworks.com
Multicast Addresses iTVManager BackOffice API Technical Reference
www.minervanetworks.com 43
May 2010 iTVManager BackOffice API Technical Reference
Regions
Concepts
A Region defines a set of localization parameters:
Date format. How dates are formatted and presented in the STB UI. The set of date formats is
pre-defined.
Time format. How a time-of-day is formatted and presented in the STB UI. The set of time formats is
pre-defined.
Decimal format. The decimal number format is used to present numeric data, such as price tags, in the
STB UI. The formats are not pre-defined: You declare a Regions decimal format as if you were creating
a format string for the Oracle SQL TO_CHAR() function (which is what youre doing). For STBs, the two
most common format strings are 9999.99 (which uses . as the decimal character) and 9999,99
(which uses ,).
Currency symbol. The character thats used to denote currency. Only one denomination symbol is
allowed (thus, for example, $ but not ).
Currency symbol placement. The currency symbol can appear before or after the currency amount.
For more information on the date, time, and decimal formats, see the Input Argument Specification Format section
in the Introduction chapter of this book.
Procedure Summary
set_get_ISP_dictionary() returns information thats used to create a Region.
md_sys.add_region() creates a new Region.
md_sys.delete_region() removes a Region from the system and destroys it.
md_sys.edit_region() lets you modify the attributes of an existing Region.
md_sys.set_default_region_for_ISP() sets an IPTV Providers default Region. This is the Region
to which all Customers and Lineups are added if no other Region has been chosen.
md_sys.add_skins_to_region() adds STB Skins to a Region. The menus of Themes and Languages
that are presented to the end-user are defined by the Regions Skins.
md_sys.delete_skins_from_region() removes a Regions default Skin.
md_sys.get_skins_for_region() lists a Regions Themes and Languages.
md_sys.set_default_skin_for_region() sets a Regions default Skin. This is the Skin thats
displayed on the STB if no other Skin has been chosen.
44 www.minervanetworks.com
Regions iTVManager BackOffice API Technical Reference
Procedure Specifications
md_sys.add_region()
Creates a Region and assigns it a unique Region ID. The new ID is returned as the status value.
PROTOCOL
NOTE: In iTVManager release 4.1, the md_sys.add_regi on() call has been extended to include the three new
optional fields underlined below. These fields allow you to include Hospitality information with the call.
(See Input Arguments section for details.) For previous releases, you can continue to use the call with the
original set of 12 parameters.)
md_sys.add_region ( sessi onI D, name, descr i pt i on, count r yI D, l i neupI D, t i mezoneI D,
cur r encySymbol , deci mal For mat , dat eFor mat I D, t i meFor mat I D, def aul t Ski nI D,
i sSymbol Pr ef i xed, i sHospi t al i t y, Hospi t al i t yVendor I P, Hospi t al i t yVendor Por t , ?int
status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *name[ 100] STRI NG
The name you want to assign to the Region. The name must be unique across all Regions.
3 description[ 1024] STRI NG
A human-readable description of the region.
4 *countryID I D get_ISP_dictionary():<RS4>.COUNTRY_ID
The ID of the country to which the Region will be assigned.
5 *lineupID I D get_ISP_dictionary():<RS2>.LINEUP_ID.
The ID of the Lineup that will be assigned to the Region.
6 *timezoneID I D get_ISP_dictionary():<RS5>.TIME_ZONE_CODE
The ID of the time zone that the Region will be part of.
7 *currencySymbol[ 20] STRI NG
The symbol (or string) thats used to denote a currency value.
Specify up to 20 unicode characters for the currency symbol. You can include leading or trailing spaces, or
spaces between characters.
8 *decimalFormat[ 20] STRI NG get_ISP_dictionary():<RS10>.DECIMAL_STYLE
An example string that provides the format in which decimal numbers are displayed. There are three
components to a decimal format:
The integer delimiter character (delimiting hundreds, thousands, millions, etc).
The decimal delimiter character.
The number of decimal places.
For example:
'9,999.99': The integer delimiter is a comma, the decimal delimiter is a period, and the number of
decimal places is 2.
'9999,99': Theres no integer delimiter, the decimal delimiter is a comma, and the number of decimal
places is 2.
9 *dateFormatID I D get_ISP_dictionary():<RS6>.DATE_STYLE_ID
The ID of the date format that will be used by this Region.
www.minervanetworks.com 45
iTVManager BackOffice API Technical Reference Regions
10 *timeFormatID I D get_ISP_dictionary():<RS7>.TIME_STYLE_ID
The ID of the time format that will be used by this Region.
11 *defaultSkinID I D get_ISP_dictionary():<RS8>.SKIN_ID
The ID of the default Skin (Theme+language) that will be used by Devices that are part of this Region.
IMPORTANT: Al though the defaultSkinID argument i sn t l i teral l y requi red, you shoul d treat i t as i f i t were. You
can t assi gn a Regi on to a Customer or IPTV Provi der unl ess the Regi on has a Ski n.
12 isSymbolPrefixed CHAR [ Y| N]
If 'Y', the currency symbol is placed before (to the left of) the currency value; if 'N', the symbol is on
the right. The default is 'Y'the symbol is to the left of the value.
Hospitality Parameters
Optionally include the following parameters to supply Hospitality information for the Region.
NOTE: If Hospitality parameters arent passed in the CDK call, then in the Database, isHospitality is set to N
and HospitalityVendorIP and HospitalityVendorPort is set to null.
13 isHospitality CHAR [ Y| N]
If 'Y', Hospitality is enabled for the Region.
14 HospitalityVendorIP[ 64] STRI NG
The Hospitality vendors IP address.
NOTE: - If isHospitality is set to Y, HospitalityVendorIP cannot be null.
- If isHospitality is set to N, the value stored for the vendor IP in the Database will be null even
if a value is passed in HospitalityVendorIP.
15 HospitalityVendorPort I NTEGER [ 1 - 65535]
The Hospitality vendors port number.
NOTE: - If isHospitality is set to Y, HospitalityVendorPort cannot be null.
- If isHospitality is set to N, the value stored for the vendor port in the Database will be null even
if a value is passed in HospitalityVendorPort.
OUTPUT ARGUMENTS
16 status I NTEGER
If successful, status is set to the new Region ID. If the procedure fails, status is set to a value
described in STATUS VALUES.
46 www.minervanetworks.com
Regions iTVManager BackOffice API Technical Reference
STATUS VALUES
>0 The new Region ID number.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-4 defaultSkinID

is invalid.
-7 countryID

, lineupID

, dateFormatID

, or timeFormatID

is missing or invalid.
-9 name

is missing.
-10 name

isnt unique.
-11 Hospitality is not installed (or enabled) in iTVManager and isHospitatilty is set to Y
-12 isHospitality is Y and ( HospitalityVendorIP or HospitalityVendorPort ) is null.
-14 HospitalityVendorIP is not valid.
-15 HospitalityVendorPort is not valid. Valid values are from 1 t o 65535.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sys. add_r egi on( ' mySI D' , ' Mi dwest ' , ' Mi dwest
Regi on' , ' 1' , ' 21' , ' 10' , ' $' , ' 9999. 99' , 1, 1, 1, ' Y' , ' Y' , ' 192. 168. 34. 67' , ' 418' , ?i nt
st at us)
Response:
<doc>
<md_sys. add_r egi on st at us=" 42" >
</ md_sys. add_r egi on>
. . .
</ doc>
www.minervanetworks.com 47
iTVManager BackOffice API Technical Reference Regions
md_sys.add_skins_to_region()
Adds a set of Skins to a Region. A Skin is a combination of UI graphics and language thats displayed by the
STB. A single Skin can be added to more than one Region.
PROTOCOL
md_sys.add_skins_to_region ( sessionID, regionID, skinIDs, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *regionID I D get_ISP_dictionary():<RS3>.Region_ID
The ID of the Region to which you want to add Skins.
3 skinIDs[ 4000] I D|I D get_ISP_dictionary():<RS8>.SKIN_ID
The IDs of the Skins that you want to add to the Region.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-4 One of the IDs in skinIDs

is invalid.
-6 regionID

is invalid.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sys. add_ski ns_t o_r egi on( ' mySI D' , ' 42' , ' 1| 2' , ?i nt
st at us)
Response:
<doc>
<md_sys. add_ski ns_t o_r egi on st at us=" 0" >
</ md_sys. add_ski ns_t o_r egi on>
. . .
</ doc>
48 www.minervanetworks.com
Regions iTVManager BackOffice API Technical Reference
md_sys.delete_region()
Removes a Region from the system and destroys it. After calling this procedure, the Regions ID is no longer
valid. You cant remove a Region that contains Customers.
PROTOCOL
md_sys.delete_region ( sessionID, regionID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *regionID I D get_ISP_dictionary():<RS3>.Region_ID
The ID of the region that you want to delete.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-6 regionID

is invalid.
-8 The Region is being used.
-9 The Region contains customers.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sys. del et e_r egi on( ' mySI D' , ' 42' , ?i nt st at us)
Response:
<doc>
<md_sys. del et e_r egi on st at us=" 0" >
</ md_sys. del et e_r egi on>
. . .
</ doc>
www.minervanetworks.com 49
iTVManager BackOffice API Technical Reference Regions
md_sys.delete_skins_from_region()
Removes a set of Skins from a Region.
PROTOCOL
md_sys.delete_skins_from_region ( sessionID, regionID, skinIDs, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *regionID I D get_ISP_dictionary():<RS3>.Region_ID
The ID of the Region from which you want to remove Skins.
3 skinIDs[ 4000] I D|I D md_sys.get_skins_for_region():<RS1>.SKIN_ID
The IDs of the Skins that you want to remove from the Region. You cant remove a Skin thats being
used as a Customers default Skin. If the procedure finds a default Skin in the skinIDs list, processing
stops immediately. Note, however, that the already-deleted Skins arent restored. For example, if the
second of three Skins is used as a Customer default, the first Skin will be deleted, but the second and third
wont.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-4 One of the IDs in skinIDs is invalid in the region.
-5 One of the Skins has been set as a Customers default Skin.
-6 regionID

is invalid.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sys. del et e_ski ns_f r om_r egi on( ' mySI D' , ' 42' , ' 1| 2| 3' , ?i
nt st at us)
Response:
<doc>
<md_sys. del et e_ski ns_f r om_r egi on st at us=" 0" >
</ md_sys. del et e_ski ns_f r om_r egi on>
. . .
</ doc>
50 www.minervanetworks.com
Regions iTVManager BackOffice API Technical Reference
md_sys.edit_region()
Modifies the attributes of a Region.
IMPORTANT: Thi s procedure modi fi es al l of the attri butes that correspond to the i nput arguments. If you onl y
want to change a subset of the attri butes, you have to retri eve and pass i n the current val ues of the
attri butes that you don t want to change.
PROTOCOL
NOTE: In iTVManager release 4.1, the md_sys.add_regi on() call has been extended to include the three new
optional fields underlined below. These fields allow you to include Hospitality information with the call.
(See Input Arguments section for details.) For previous releases, you can continue to use the call with the
original set of 13 parameters.)
md_sys.edit_region ( sessionID, regionID, name, description, countryID, lineupID,
timezoneID, currencySymbol, decimalFormat, dateFormatID, timeFormatID,
defaultSkinID, isSymbolPrefixed, i sHospi t al i t y, Hospi t al i t yVendor I P,
Hospi t al i t yVendor Por t , ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *regionID I D get_ISP_dictionary():<RS3>.Region_ID
The ID of the Region that you want to edit.
NOTE: See md_sys.add_region() for descriptions of the rest of the input arguments.
3 *name[ 100] STRI NG
4 description[ 1024] STRI NG
5 *countryID I D get_ISP_dictionary():<RS4>.COUNTRY_ID
6 *lineupID I D get_ISP_dictionary():<RS2>.LINEUP_ID
IMPORTANT: You mustn t reset a Regi on s Li neup i f the Regi on contai ns Customers (i f Customers have been
assi gned to the Regi on). You can change the attri butes of the Regi on s Li neupfor exampl e, you
can add and remove Channel s from the Li neupbut you mustn t assi gn a di fferent Li neup to the
Regi on.
7 *timezoneID I D get_ISP_dictionary():<RS5>.TIME_ZONE_CODE
8 *currencySymbol[ 20] STRI NG
9 *decimalFormat[ 20] STRI NG get_ISP_dictionary():<RS10>.DECIMAL_STYLE
10 *dateFormatID I D get_ISP_dictionary():<RS6>.DATE_STYLE_ID
11 *timeFormatID I D get_ISP_dictionary():<RS7>.TIME_STYLE_ID
12 defaultSkinID I D get_ISP_dictionary():<RS8>.SKIN_ID
13 isSymbolPrefixed CHAR [ Y| N]
Hospitality Parameters
14 isHospitality CHAR [ Y| N]
15 HospitalityVendorIP[ 64] STRI NG
16 HospitalityVendorPort I NTEGER [ 1 - 65535]
www.minervanetworks.com 51
iTVManager BackOffice API Technical Reference Regions
OUTPUT ARGUMENTS
17 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-4 defaultSkinID

is invalid.
-6 regionID

is invalid.
-7 countryID, lineupID, dateFormatID, or timeFormatID is missing or invalid.
-9 name is missing.
-10 name

isnt unique.
-11 Hospitality is not installed (or enabled) in iTVManager and isHospitatilty is set to Y
-12 isHospitality is Y and ( HospitalityVendorIP or HospitalityVendorPort ) is null.
-14 HospitalityVendorIP is not valid.
-15 HospitalityVendorPort is not valid. Valid values are from 1 t o 65535.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / ser ver I P: por t / Xml Po. po?SP=md_sys. edi t _r egi on( ' mySI D' , ' 42' , ' Mi dwest ' , ' Mi dwest
Regi on' , ' 2' , ' 21' , ' 10' , ' $' , ' 9999. 99' , 1, 1, 1, ' Y' , ' Y' , ' 192. 168. 34. 67' , ' 418' , ?i nt
st at us)
Response:
<doc>
<md_sys. edi t _r egi on st at us=" 0" >
</ md_sys. edi t _r egi on>
. . .
</ doc>
52 www.minervanetworks.com
Regions iTVManager BackOffice API Technical Reference
md_sys.get_ISP_dictionary()
Retrieves information that can be used to create a Region.
PROTOCOL
NOTE: In iTVManager release 4.1 and later releases, the md_sys.get_ISP_di cti onary() call can accept the two
additional arguments underlined below. Include these arguments to return the decimal style with the call.
(See the Input Arguments and Output Arguments sections below for details.) You can continue to use the
call with the original set of 10 parameters. IMPORTANT: Use both new arguments, or neither of them,
when making the call. Dont specify just one of them.
md_sys.get_ISP_dictionary ( sessionID, ?iptvProviders, ?lineups, ?regions,
?countries, ?timeZones, ?dateFormats, ?timeFormats, ?skins, ?languages,
?decimalStyle, ?int status)
INPUT ARGUMENTS
1 #sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
NOTE: This is a new optional argument for use only with iTVManager 4.1 and later releases. IMPORTANT:
Specify this argument only if you are also specifying the decimalStyle output argument.
OUTPUT ARGUMENTS
2 iptvProviders <RS1>
Information about the known IPTV providers. Each row describes a single Provider:
ISP_ID. The IPTV Provider ID.
NAME. The Providers name.
ADDRESS. In the form street address, city, state, zip code, country.
PREFERRED_REGION_ID. The ID of the Providers default Region.
IMPORTANT: Currentl y, onl y one IPTV Provi der i s al l owed (per system). The Provi der obj ect (ID = 1) i s created
for you.
3 lineups <RS2>
Lineup information. Each row describes a single Lineup:
LINEUP_ID. The Lineups ID.
NAME. The Lineups name.
DESCRIPTION. The Lineups description.
ENTITY_ID. The IPTV Provider ID.
4 regions

<RS3>
Region information. Each row describes a single Region:
REGION_ID. The Regions ID.
LINEUP_ID. The ID of the Lineup that the Region corresponds to. A Region can correspond to only
one Lineup.
COUNTRY_CODE. The ISO 3166 code for the Regions country.
TIME_ZONE_CODE. The ID of the Regions time zone.
DEFAULT_SKIN_ID. The ID of the Regions default Skin.
DEFAULT_THEME. The name of the Regions default Theme.
DEFAULT_LANGUAGE. The ISO code of the Regions default language.
www.minervanetworks.com 53
iTVManager BackOffice API Technical Reference Regions
CURRENCY_SYMBOL. The single-character currency symbol.
DECIMAL_STYLE. A string that depicts the Regions decimal format.
DATE_STYLE. The ID of the Regions date format.
TIME_STYLE. The ID of the Regions time format.
CURRENCY_PREFIXED. The position of the currency symbol with respect to the currency value. Either
"before" (the symbol is to the left of the value) or "after" (the symbol is to the right).
HOSPITALITY. Whether or not Hospitality is enabled for the Region.
HOSPITALITY_VENDOR_IP. The Hospitality vendors IP address.
HOSPITALITY_VENDOR_PORT. The Hospitality vendors port address.
5 countries

<RS4>
Country information. Each row contains:
COUNTRY_ID. ID that represents the country.
COUNTRY_CODE. The countrys ISO code.
DESCRIPTION. A human-readable description of the country.
6 timeZones

<RS5>
Time zone information. Each row contains:
TIME_ZONE_CODE. The ID of the time zone.
JAVA_TIME_ZONE_ID. Ignore this attribute.
7 dateFormats

<RS6>
How dates are formatted. Each row contains:
DATE_STYLE_ID. The ID of the date format.
DATE_STYLE. A string that depicts the date format.
DESCRIPTION. A description of the format.
8 timeFormats

<RS7>
How time (strings) are formatted. Each row contains:
TIME_STYLE_ID. The ID of the time format.
TIME_STYLE. A string that depicts the time format.
DESCRIPTION. A description of the format.
9 skins

<RS8>
Theme and (UI) language information. Each row contains:
SKIN_ID. The Skins ID.
THEME. The name of the Skins theme.
LANGUAGE. The ISO code of the Skins language.
STB_TYPE. A semicolon-separated list of the names of the STBs for which the Skin is designed.
10 languages <RS9>
Language information. Each row contains information about a single language thats known to be
supported by the system:
LANGUAGE_ID. A system-generated ID for the language.
CODE. The languages ISO code.
DESCRIPTION. The languages real-world name.
11 #decimalStyle <RS10>
Decimal style information. Each row describes a single decimal style.
DECIMAL_STYLE. The decimal style.
54 www.minervanetworks.com
Regions iTVManager BackOffice API Technical Reference
NOTE: This is a new optional argument for use only with iTVManager 4.1 and later releases. IMPORTANT: If
yo uspecify this argument, you must also specify a sessionID as an input argument.
12 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 Session ID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / ser ver I P: por t / Xml Po. po?SP=md_sys. get _I SP_di ct i onar y( ' mySI D' , ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
i nt st at us)
NOTE: This example includes arguments for the sessionID (argument #1) and decimalStyle (argument #2).
these arguments were introduced with iTVManager 4.1.
Response:
<doc>
-
<md_sys. get _I SP_di ct i onar y st at us=" 0" >
-
<RS1>
<r ow I SP_I D=" 1" name=" Mi ner va Net wor ks" addr ess=" 2111 Tasman Dr i ve, Sant a Cl ar a,
Cal i f or ni a, 95054, U. S. A. " Pr ef er r ed_Regi on_I D=" 1" / >
</ RS1>
-
<RS2>
<r ow Li neup_I D=" 1001" NAME=" Mai n Li neup" DESCRI PTI ON=" Or i gi nal Li neup mi gr at ed
f r omi TVManager 2. 1" ENTI TY_I D=" 1" / >
<r ow Li neup_I D=" 26453" NAME=" MyChannel s" DESCRI PTI ON=" " ENTI TY_I D=" 1" / >
<r ow Li neup_I D=" 26454" NAME=" MyChannel s2" DESCRI PTI ON=" " ENTI TY_I D=" 1" / >
<r ow Li neup_I D=" 26452" NAME=" QFT- l i neup" DESCRI PTI ON=" " ENTI TY_I D=" 1" / >
<r ow Li neup_I D=" 28960" NAME=" WNC" DESCRI PTI ON=" " ENTI TY_I D=" 1" / >
<r ow Li neup_I D=" 29459" NAME=" av l i neup" DESCRI PTI ON=" av l i neup" ENTI TY_I D=" 1" / >
<r ow Li neup_I D=" 26455" NAME=" samest uf f f f f f f " DESCRI PTI ON=" " ENTI TY_I D=" 1" / >
</ RS2>
<RS3>
<r ow Regi on_I D=" 134" NAME=" av r egi on" Li neUp_I D=" 29459" COUNTRY_CODE=" CA"
TI ME_ZONE_CODE=" 126" DEFAULT_SKI N_I D=" 41" DEFAULT_THEME=" Def aul t 4. 0"
def aul t _Language=" EN" CURRENCY_SYMBOL=" $" DECI MAL_STYLE=" 9999" DATE_STYLE=" YYYY/ MM/ DD"
TI ME_STYLE=" HH: MI : SS AM" CURRENCY_PREFI XED=" bef or e" HOSPI TALI TY=" N"
HOSPI TALI TY_VENDOR_I P=" " HOSPI TALI TY_VENDOR_PORT=" " / >
<r ow Regi on_I D=" 114" NAME=" swi r l _r egi on" Li neUp_I D=" 1001" COUNTRY_CODE=" CA"
TI ME_ZONE_CODE=" 75 " DEFAULT_SKI N_I D=" 314" DEFAULT_THEME=" " def aul t _Language=" "
CURRENCY_SYMBOL=" $" DECI MAL_STYLE=" 9999. 99" DATE_STYLE=" MM/ DD/ YYYY" TI ME_STYLE=" HH24: MI "
CURRENCY_PREFI XED=" bef or e" HOSPI TALI TY=" N" HOSPI TALI TY_VENDOR_I P=" "
HOSPI TALI TY_VENDOR_PORT=" " / >
<r ow Regi on_I D=" 115" NAME=" WNC_REGI ON" Li neUp_I D=" 28960" COUNTRY_CODE=" CA"
TI ME_ZONE_CODE=" 75 " DEFAULT_SKI N_I D=" 293" DEFAULT_THEME=" Swi r l 4. 0"
def aul t _Language=" AR" CURRENCY_SYMBOL=" $" DECI MAL_STYLE=" 9999. 99"
DATE_STYLE=" MM/ DD/ YYYY" TI ME_STYLE=" HH24: MI " CURRENCY_PREFI XED=" bef or e" HOSPI TALI TY=" N"
HOSPI TALI TY_VENDOR_I P=" " HOSPI TALI TY_VENDOR_PORT=" " / >
. . . .
</ RS3>
<RS4>
www.minervanetworks.com 55
iTVManager BackOffice API Technical Reference Regions
. . . .
56 www.minervanetworks.com
Regions iTVManager BackOffice API Technical Reference
md_sys.get_skins_for_region()
Retrieves information about the Skins that have been added to a Region.
PROTOCOL
md_sys.get_skins_for_region ( sessionID, regionID, ?skins, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *regionID I D get_ISP_dictionary():<RS3>.Region_ID
The ID of the Region that youre interested in.
OUTPUT ARGUMENTS
3 skins <RS1>
A list of the Skins for the Region. Each row contains information about a single Skin:
REGION_ID. This will always be the same as regionID

.
SKIN_ID. The Skins ID.
THEME. The name of the Skins theme.
LANGUAGES. A list of semicolon-postfixed ISO 639-2 language codes. These are the languages that the
Skin supports.
BOOT_IP. The IP address of the boot stream on which the Skin is served.
BOOT_PORT. The IP port of the boot stream on which the Skin is served.
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-2 General error. Call md_cdk.get_error() for details.
-6 regionID

is invalid.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sys. get _ski ns_f or _r egi on( ' mySI D' , ' 42' , ?, ?i nt st at us)
Response:
<doc>
<md_sys. get _ski ns_f or _r egi on st at us=" 0" >
<RS1>
<r ow REGI ON_I D=" 42" SKI N_I D=" 2" THEME=" Def aul t " LANGUAGES=" FR; "
BOOT_I P=" 209. 6. 66. 4" BOOT_PORT=" 4545" ></ r ow>
<r ow REGI ON_I D=" 42" SKI N_I D=" 1" THEME=" Swi r l " LANGUAGES=" EN; " BOOT_I P=" 209. 6. 66. 3"
BOOT_PORT=" 4545" ></ r ow>
</ RS1>
</ md_sys. get _ski ns_f or _r egi on>
. . .
</ doc>
www.minervanetworks.com 57
iTVManager BackOffice API Technical Reference Regions
md_sys.set_default_region_for_ISP()
Sets the default Region for an IPTV Provider. By assigning a default Region, you define the IPTV Providers
date, time, and decimal formats.
PROTOCOL
md_sys.set_default_region_for_ISP ( sessionID, iptvProviderID, regionID,
?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *iptvProviderID I D get_ISP_dictionary():<RS1>.ISP_ID
The ID of the IPTV Provider that you want to affect.
IMPORTANT: Currentl y, i ptvProvi derID must be 1. Thi s i s the ID of the (si ngl e) IPTV Provi der that s created for
you. Onl y one IPTV Provi der i s al l owed (per system).
3 *regionID I D get_ISP_dictionary():<RS3>.Region_ID
The ID Of the Region that you want to assign as the default for the IPTV Provider.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-6 regionID

is invalid.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sys. set _def aul t _r egi on_f or _I SP( ' mySI D' , ' 1' , ' 42' , ?i nt
st at us)
Response:
<doc>
<md_sys. set _def aul t _r egi on_f or _I SP st at us=" 0" >
</ md_sys. set _def aul t _r egi on_f or _I SP>
. . .
</ doc>
58 www.minervanetworks.com
Regions iTVManager BackOffice API Technical Reference
md_sys.set_default_skin_for_region()
Sets the default Skin for a Region.
PROTOCOL
md_sys.set_default_skin_for_region ( sessionID, regionID, skinID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *regionID I D md_sys.get_ISP_dictionary():<RS3>.REGION_ID
The ID of the Region.
3 *skinID I D md_sys.get_ISP_dictionary():<RS8>.SKIN_ID
The ID of the Skin that will be used as the default for the Region.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUESs
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-4 regionID

is invalid.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sys. set _def aul t _ski n_f or _r egi on( ' mySI D' , ' 42' , ' 1' , ?i n
t st at us)
Response:
<doc>
<md_sys. set _def aul t _ski n_f or _r egi on st at us=" 0" >
</ md_sys. set _def aul t _ski n_f or _r egi on>
. . .
</ doc>
www.minervanetworks.com 59
May 2010 iTVManager BackOffice API Technical Reference
Lineups
Concepts
A Lineup is a list of Channels for a geographical region. A Lineup comprises (or depends upon):
A list of Channels and their assigned channel numbers.
A start date.
A list of the Regions that will present the Lineup. (As well see below, the Lineup doesnt contain the
Region, but its useless until its assigned to a Region.)
A textual description.
The textual description is a customer-friendly string that could (potentially) be presented in the STB UI
(although it isnt currently displayed). The rest of the Lineups attributes are discussed below.
Channel Numbers
When you add Channels to a Lineup, you identify the Channels by ID and you associate each ID with a
channel number (the number thats displayed in the EPG on the STB). For example, lets say you add Channel
(ID) 1541 to Lineup A and give it a channel number of 5. Channel 1541 has no idea that it has a channel
number of 5it doesnt know anything about channel numbers. The channel number is maintained by the
Lineup. In other words, its the Lineup that knows that Channel 1541 has a channel number of 5. The
advantage of this system is that the same Channel (i.e. Channel ID) can be added to more than one Lineup, yet
appear with a different channel number in each.
To retrieve a Channels channel number within a Lineup, look at the CHANNEL_NUMBER field of
get_lineup_dictionary():<RS1>.
Lineups and Regions
A Lineup can belong to more than one Region, but a Region can only contain a single Lineup. The best way to
think of this relationship is that the Region places the Lineup in a particular location; whether that location is
a country, state, province, hotel, and so on, the scope of the location is reasonably unbounded.
Since the procedure that creates a Region (md_sys.add_region()) requires a Lineup ID argument, you must
create the Lineup first.
Changing a Lineups Contents
If you change the contents of a Customers Lineupif you add Channels to or remove Channels from the
Lineupyou must reset the NVRAM and reboot all of the STBs that use that Lineup. This sort of Lineup
change can happen implicitly when you switch a Customer from one Region to another: Although the Lineups
from the respective Regions didnt change, the Customers impression of the Lineup will have changed (or, more
accurately, the Lineup thats stored in the NVRAM of the Customers STB needs to be refreshed).
60 www.minervanetworks.com
Lineups iTVManager BackOffice API Technical Reference
Currently, resetting the STB can only be done from the BackOffice Console. Follow these steps:
1. Log into the BackOffice Console.
2. Go to the Customer page.
3. Select the first Customer in the Region and click Edit.
4. Click the STB Devices tab.
5. Select the Customers first STB.
6. Click Reset NVRAM and confirm the reset.
7. Click Reboot and schedule the reboot.
8. Repeat the Reset NVRAM and Reboot instructions for each of the Customers STBs.
9. Repeat these instructions for each of the Customers in the Region.
Procedure Summary
md_liv.get_lineup_dictionary() retrieves information thats used to create a Lineup.
md_liv.add_lineup() creates a new Lineup.
md_liv.delete_lineup() deletes a Lineup.
md_liv.edit_lineup() modifies the attributes of a Lineup.
md_liv.get_lineups() lists all Lineups.
md_liv.add_channels_to_lineup() adds Channels to a Lineup.
md_liv.delete_channels_from_lineup() removes Channels from a Lineup.
Also see:
md_liv.edit_channel_in_lineup() in the Channels chapter lets you change the start date and channel
number of a Channel within a Lineup.
www.minervanetworks.com 61
iTVManager BackOffice API Technical Reference Lineups
Procedure Specifications
md_liv.add_channels_to_lineup()
Augments a Lineups set of Channels. This procedure doesnt remove the Channels that are already in the
Lineup.
PROTOCOL
md_liv.add_channels_to_lineup ( sessionID, lineupID, channelMap, startDate,
?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *lineupID I D md_liv.get_lineups():<RS1>.LineupID
The ID of the Lineup that you want to add the Channels to.
3 channelMap[ 4000] STRI NG md_liv.get_lineup_dictionary:<RS2>.CHANNEL_ID
md_liv.get_lineup_dictionary:<RS3>.CHANNEL_NUM
A series of number pairs, each of which maps a Channel ID to channel number for this Lineup. For
example, the mapping 1002_11 means that the Channel with ID=1002 will appear in the customers
EPG as channel number 11. Individual mappings are separated by |: '1002_11|1035_12|934_13'.
When you add a Channel through this function, the Channels start date is set to the startDate value.
4 startDate DATE IPTV Providers date format
The date on which the Channels in the Lineup will be (or were) enabled. If startDate is NULL or in the
past, the Channel is immediately enabled.
OUTPUT ARGUMENTS
5 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 lineupID

is invalid.
-5 channelMap contains an invalid Channel ID.
-6 lineupID

already contains a Channel number listed in channelMap.
-8 lineupID

already contains a Channel ID listed in channelMap.
-9 startDate

isnt valid (or uses the wrong date format).
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
62 www.minervanetworks.com
Lineups iTVManager BackOffice API Technical Reference
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. add_channel s_t o_l i neup( ' mySI D' , ' 21' , ' 20_998| 41_9
99' , ' 12/ 12/ 2007' , ?i nt st at us)
Response:
<doc>
<md_l i v. add_channel s_t o_l i neup=" 0" >
</ md_l i v. add_channel s_t o_l i neup>
. . .
</ doc>
www.minervanetworks.com 63
iTVManager BackOffice API Technical Reference Lineups
md_liv.add_lineup()
Creates a new Lineup and assigns it a unique Lineup ID number. The ID is returned as the status argument.
PROTOCOL
md_liv.add_lineup ( sessionID, lineupName, description, startDate, channelMap,
?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *lineupName[ 256] STRI NG
The name you want to assign to the Lineup.
3 description[ 1024] STRI NG
A customer-friendly description of the Lineup.
4 startDate DATE IPTV Providers date format
The date on which the Lineup will be (or was) enabled. This start date is inherited by all the Channels in
the channelMap. If startDate is NULL or in the past, the Channels are immediately enabled.
5 channelMap[ 4000] STRI NG md_liv.get_lineup_dictionary:<RS2>.CHANNEL_ID
md_liv.get_lineup_dictionary:<RS3>.CHANNEL_NUM
A series of number pairs, each of which maps a Channel ID to channel number for this Lineup. For
example, the mapping 1002_11 means that the Channel with ID=1002 will appear in the customers
EPG as channel number 11. Individual mappings are separated by |: '1002_11|1035_12|934_13'.
A channel number can only appear once within a Lineup.
When you add a Channel through this function, the Channels start date is set to the startDate value. If
you want the Channel to have a different start date, dont add it through this functionuse
add_channels_to_lineup(), instead.
OUTPUT ARGUMENTS
6 status I NTEGER
If successful, status is set to the new Lineup ID. If the procedure fails, status is set to a value
described in STATUS VALUES.
STATUS VALUES
>0 The new Lineup ID number.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-4 lineupName

is missing.
-5 Invalid Channel ID number in the channelMap

list.
-6 A channel number in the channelMap

list already appears in the Lineup.
-7 lineupName

isnt unique.
-8 A Channel ID + channel number combination in the channelMap

list has already been added to
the Lineup.
-9 startDate

isnt valid or uses the wrong date format.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
64 www.minervanetworks.com
Lineups iTVManager BackOffice API Technical Reference
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. add_l i neup( ' mySI D' , ' New Li neup' , ' A New
Li neup' , ' 10/ 01/ 2007' , ' 1002_11| 1035_12| 934_13' , ?i nt st at us)
Response:
<doc>
<md_l i v. add_l i neup=" 43" >
</ md_l i v. add_l i neup>
. . .
</ doc>
www.minervanetworks.com 65
iTVManager BackOffice API Technical Reference Lineups
md_liv.delete_channels_from_lineup()
Removes Channels from a Lineups set of Channels.
PROTOCOL
md_liv.delete_channels_from_lineup ( sessionID, lineupID, channelIDs, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *lineupID I D md_liv.get_lineups():<RS1>.LineupID
The ID of the Lineup that you want to add the Channels to.
3 channelIDs[ 4000] I D|I D md_liv.get_lineup_dictionary:<RS2>.CHANNEL_ID
The IDs of the Channels that you want to remove from the Lineup. Its not an error for the list to include
Channels that dont belong to the Lineup.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 Invalid lineupID

value.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. del et e_channel s_f r om_l i neup( ' mySI D' , ' 21' , ' 20| 4
1' , ?i nt st at us)
Response:
<doc>
<md_l i v. del et e_channel s_f r om_l i neup=" 0" >
</ md_l i v. del et e_channel s_f r om_l i neup>
. . .
</ doc>
66 www.minervanetworks.com
Lineups iTVManager BackOffice API Technical Reference
md_liv.delete_lineup()
Removes an entire Lineup. You must remove all narrow Channel Packages from the Lineup before you delete
the Lineup. You cant delete a Lineup that has been assigned to a Region.
PROTOCOL
md_liv.delete_lineup ( sessionID, lineupID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *lineupID I D md_liv.get_lineups():<RS1>.LineupID
The ID of the Lineup that you want to delete.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 Invalid lineupID

value.
-5 The Lineup contains a narrow Channel Package.
-6 The Lineup has been assigned to a Region.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. del et e_l i neup( ' mySI D' , ' 21' , ?i nt st at us)
Response:
<doc>
<md_l i v. del et e_l i neup=" 0" >
</ md_l i v. del et e_l i neup>
. . .
</ doc>
www.minervanetworks.com 67
iTVManager BackOffice API Technical Reference Lineups
md_liv.edit_lineup()
Edits a Lineups attributes except for the set of Channels that it contains. To change a Lineups Channels, use
md_liv.add_channels_to_lineup() and md_liv.delete_channels_from_lineup().
IMPORTANT: Thi s procedure modi fi es al l of the attri butes that correspond to the i nput arguments. If you onl y
want to change a subset of the attri butes, you have to retri eve and pass i n the current val ues of the
attri butes that you don t want to change.
PROTOCOL
md_liv.edit_lineup ( sessionID, lineupID, lineupName, description, startDate,
?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *lineupID I D md_liv.get_lineups():<RS1>.LineupID
The ID of the Lineup that you want to edit.
3 *lineupName[ 256] STRI NG
The name you want to assign to the Lineup.
4 description[ 1024] STRI NG
A customer-friendly description of the Lineup.
5 startDate DATE IPTV Providers date format
The date on which the Lineup will be (or was) enabled. This start date is inherited by all the Channels in
the channelMap. If startDate is NULL or in the past, the Channels are immediately enabled.
OUTPUT ARGUMENTS
6 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 lineupID

is invalid.
-4 lineupName

is missing.
-5 Invalid Channel ID number in the channelMap

list.
-6 A channel number in the channelMap

list already appears in the Lineup.
-8 A Channel ID + channel number mapping in the channelMap

list has already been added to the
Lineup.
-9 startDate

isnt valid (or uses the wrong date format).
68 www.minervanetworks.com
Lineups iTVManager BackOffice API Technical Reference
STATUS VALUES
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. edi t _l i neup( ' mySI D' , ' 21' , ' New Li neup' , ' A New
Li neup' , ' 09/ 01/ 2007' , ?i nt st at us)
Response:
<doc>
<md_l i v. edi t _l i neup=" 0" >
</ md_l i v. edi t _l i neup>
. . .
</ doc>
www.minervanetworks.com 69
iTVManager BackOffice API Technical Reference Lineups
md_liv.get_lineup_dictionary()
Returns the Channels that can be added to a Lineup, and (optionally) those that have already been added to a
specific Lineup.
PROTOCOL
md_liv.get_lineup_dictionary ( sessionID, lineupID, ?usedChannels,
?availableChannels, ?availableChannelNumbers, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 lineupID I D md_liv.get_lineups():<RS1>.LineupID
If you supply a lineupID value, the usedChannels

cursor will contain the Channels that have been
added to the Lineup. If you dont supply a lineupID value, usedChannels

will be empty.
OUTPUT ARGUMENTS
3 usedChannels <RS1>
Information about the Channels that have been added to the Lineup identified by lineupID
2
. If you
didnt supply a lineupID

value,

usedChannels

will be empty.

Each row contains information about a
single Channel:
CHANNEL_ID. The Channels ID.
CHANNEL_NAME. The Channels name.
CHANNEL_TYPE. The Channels type, one of 'LIVE', 'PPV', or 'EAS'.
CHANNEL_LINEUP_ID. This will always be the same as lineupID.
CHANNEL_NUMBER. The Channels channel number within lineupID.
EFFECTIVE_DATE. The date and time upon which the Channel will be (or was) enabled. The date is
expressed using the Providers date format.
4 availableChannels <RS2>
Information about the Channels that can be added to a Lineup. Each row contains information about a
single Channel:
CHANNEL_ID. The Channels ID.
CHANNEL_NAME. The Channels name.
CHANNEL_TYPE. The Channels type, one of 'LIVE', 'PPV', or 'EAS'.
5 availableChannelNumbers<RS3>
The channel numbers that can be assigned to a Lineups Channels. Each row contains a single value:
CHANNEL_NUM. The available channel number.
6 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
70 www.minervanetworks.com
Lineups iTVManager BackOffice API Technical Reference
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 lineupID

is non-NULL and invalid.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. get _l i neup_di ct i onar y( ' mySI D' , ' 21' , ?, ?, ?, ?i nt
st at us)
Response:
<doc>
<md_l i v. get _l i neup_di ct i onar y st at us=" 0" >
<RS1>
<r ow CHANNEL_I D=" 3" CHANNEL_NAME=" MSNBC" CHANNEL_TYPE=" LI VE"
CHANNEL_LI NEUP_I D=" 21" CHANNEL_NUMBER=" 6" EFFECTI VE_DATE=" 2007- 09- 10 00: 00: 00. 0" ></ r ow>
<r ow CHANNEL_I D=" 4" CHANNEL_NAME=" Cour t TV" CHANNEL_TYPE=" LI VE"
CHANNEL_LI NEUP_I D=" 21" CHANNEL_NUMBER=" 3" EFFECTI VE_DATE=" 2007- 09- 10 00: 00: 00. 0" ></ r ow>
<r ow CHANNEL_I D=" 5" CHANNEL_NAME=" STARZ On Demand" CHANNEL_TYPE=" LI VE"
CHANNEL_LI NEUP_I D=" 21" CHANNEL_NUMBER=" 8" EFFECTI VE_DATE=" 2007- 09- 10 00: 00: 00. 0" ></ r ow>
<r ow CHANNEL_I D=" 6" CHANNEL_NAME=" Nat i onal Geogr aphi c Channel " CHANNEL_TYPE=" LI VE"
CHANNEL_LI NEUP_I D=" 21" CHANNEL_NUMBER=" 7" EFFECTI VE_DATE=" 2007- 09- 10 00: 00: 00. 0" ></ r ow>
<r ow CHANNEL_I D=" 7" CHANNEL_NAME=" Fox News Channel " CHANNEL_TYPE=" LI VE"
CHANNEL_LI NEUP_I D=" 21" CHANNEL_NUMBER=" 4" EFFECTI VE_DATE=" 2007- 09- 10 00: 00: 00. 0" ></ r ow>
<r ow CHANNEL_I D=" 8" CHANNEL_NAME=" Weat her Channel Lat i n Amer i ca"
CHANNEL_TYPE=" LI VE" CHANNEL_LI NEUP_I D=" 21" CHANNEL_NUMBER=" 9" EFFECTI VE_DATE=" 2007- 09- 10
00: 00: 00. 0" ></ r ow>
<RS2>
<r ow CHANNEL_I D=" 3" CHANNEL_NAME=" MSNBC" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 4" CHANNEL_NAME=" Cour t TV" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 5" CHANNEL_NAME=" STARZ On Demand" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 6" CHANNEL_NAME=" Nat i onal Geogr aphi c Channel " CHANNEL_TYPE=" LI VE"
></ r ow>
<r ow CHANNEL_I D=" 7" CHANNEL_NAME=" Fox News Channel " CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 8" CHANNEL_NAME=" Weat her Channel Lat i n Amer i ca"
CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 9" CHANNEL_NAME=" CNBC" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 10" CHANNEL_NAME=" Hi st or y I nt er nat i onal " CHANNEL_TYPE=" LI VE"
></ r ow>
<r ow CHANNEL_I D=" 11" CHANNEL_NAME=" Bi ogr aphy On Demand" CHANNEL_TYPE=" LI VE"
></ r ow>
<r ow CHANNEL_I D=" 12" CHANNEL_NAME=" A &amp; E Net wor k" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 13" CHANNEL_NAME=" QFT_Gal axi eCh1" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 14" CHANNEL_NAME=" QFT_Gal axi eCh2" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 15" CHANNEL_NAME=" QFT_Tel us" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 16" CHANNEL_NAME=" QFT_Googl e" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 17" CHANNEL_NAME=" HDNet " CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 18" CHANNEL_NAME=" HDNet Movi es" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 19" CHANNEL_NAME=" HDTV Speci al Event s" CHANNEL_TYPE=" LI VE"
></ r ow>
<r ow CHANNEL_I D=" 20" CHANNEL_NAME=" HD News" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 41" CHANNEL_NAME=" t est " CHANNEL_TYPE=" LI VE" ></ r ow>
</ RS2>
<RS3>
<r ow CHANNEL_NUM=" 1" ></ r ow>
<r ow CHANNEL_NUM=" 2" ></ r ow>
<r ow CHANNEL_NUM=" 3" ></ r ow>
<r ow CHANNEL_NUM=" 4" ></ r ow>
<r ow CHANNEL_NUM=" 5" ></ r ow>
www.minervanetworks.com 71
iTVManager BackOffice API Technical Reference Lineups
<r ow CHANNEL_NUM=" 6" ></ r ow>
<r ow CHANNEL_NUM=" 7" ></ r ow>
<r ow CHANNEL_NUM=" 8" ></ r ow>
<r ow CHANNEL_NUM=" 9" ></ r ow>
</ RS3>
</ md_l i v. get _l i neup_di ct i onar y>
. . .
</ doc>
72 www.minervanetworks.com
Lineups iTVManager BackOffice API Technical Reference
md_liv.get_lineups()
Retrieves a list of all Lineups. Note that the information thats returned doesnt include a Lineups list of
Channels. To retrieve a Lineups Channels, call md_liv.get_lineup_dictionary().
PROTOCOL
md_liv.get_lineups ( sessionID, ?lineups, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
OUTPUT ARGUMENTS
2 lineups

<RS1>
Information about the Lineups. Each row contains:
LineupID. The Lineups ID.
NAME. The Lineups name.
DESCRIPTION. The Lineups description.
MULTICAST_IP_SET. Unused.
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. get _l i neups( ' mySI D' , ' 21' , ' New Li neup' , ' A New
Li neup' , ' 09/ 01/ 2007' , ?i nt st at us)
Response:
<doc>
<md_l i v. get _l i neups=" 0" >
<RS1>
<r ow Li neupI D=" 21" NAME=" East " DESCRI PTI ON=" East er n Channel s" MULTI CAST_I P_SET=" "
></ r ow>
<r ow Li neupI D=" 22" NAME=" West " DESCRI PTI ON=" West er n Channel s" MULTI CAST_I P_SET=" "
></ r ow>
<r ow Li neupI D=" 42" NAME=" t est " DESCRI PTI ON=" " MULTI CAST_I P_SET=" " ></ r ow>
<r ow Li neupI D=" 43" NAME=" New Li neup" DESCRI PTI ON=" A New Li neup"
MULTI CAST_I P_SET=" " ></ r ow>
</ RS1>
</ md_l i v. get _l i neups>
. . .
</ doc>
www.minervanetworks.com 73
May 2010 iTVManager BackOffice API Technical Reference
Customers
Concepts
Every real-world IPTV subscriber is represented by a Customer object. Customers are created through the
add_customer() procedure. Unlike all other BackOffice objects, the Customer is identified by a string ID that
can be supplied by the caller. This makes it possible to use the same ID to identify the (real-world) customer in
the BackOffice system and in an external BSS/OSS system (as described in the subsection below).
When you create a Customer, an additional object, an STB Account, is automatically created. An STB Account
object represents a Customers STB login information. A single Customer can have more than one STB
Account. Each STB Account has its own language, theme, parental control settings, and so on. The Customers
initial STB Account (the one thats created when the Customer object itself is created) is called the Primary
STB Account. Additional STB Accounts (Secondary Accounts) are created by the Primary STB Account
through the STB onlyyou cant create Secondary STB Accounts through the BackOffice API or through the
BackOffice Console.
Each STB Account has an ID thats unique across all STB Accounts.
A Customer has a list of Services, such as Channel Packages, Web, Email, and so forth. When you add a
Service to a Customer, its accessible to all of that Customers STB Accounts.
Using Custom Customer IDs
By default
To use an external ID, follow these steps:
1. Log into the BackOffice Console.
2. Go to System Setup > Business Info.
3. Check the Use Custom IDs checkbox.
By default, the Use Custom IDs checkbox isnt checkedin other words, when you add a Customer, a unique
ID is generated for you.
You can store your own ID value without using it as the Customer ID. Thus, you can use the BackOffice to
generate a Customer ID for you, but still attach the external ID to the Customer object.
Procedure Summary
md_cst.activate_customer() activates a Customers STB Accounts.
md_cst.add_customer() creates a new Customer.
md_cst.deactivate_customer() turns off a Customers STB Accounts.
74 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
md_cst.delete_customer() removes a Customer from the system.
md_cst.edit_customer() modifies a Customers attributes.
md_cst.get_customer() returns general information about a Customer.
md_cst.get_customer_account() returns information about a Customers STB Accounts.
md_cst.get_customer_list() returns information about a filtered list of Customers.
md_cst.get_customer_services() returns a list of a Customers Services.
md_cst.get_customer_skin() returns a Customers Theme and Language settings.
md_cst.remove_services_from_customer() removes Services from a Customer.
md_cst.set_callerID_for_account() enable Caller ID for one of a Customers STB Accounts.
md_cst.set_customer_options() sets various attributes of a customers account.
md_cst.set_services_for_customer() adds Services to a Customer.
md_cst.set_skin_for_account() returns the Theme and Language settings for one of a Customers
STB Accounts.
md_cst.update_nrep_customer_info() adds or replaces NRTC account type values and fire
occupancy rate values for existing customers.
md_sys.get_nrep_acct_type_dictionary() returns account type IDs, for use when making NRTC
reports.
www.minervanetworks.com 75
iTVManager BackOffice API Technical Reference Customers
Procedure Specifications
md_cst.activate_customer()
Activates a Customer, thus making it possible for the Customers STB Accounts to use the STB. You cant
activate a deleted Customer.
PROTOCOL
md_cst.activate_customer ( sessionID, customerID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D
The ID of the Customer you want to activate.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 The Customer has been deleted (the status is 'D').
-5 customerID is invalid.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . act i vat e_cust omer ( ' mySI D' , ' 3' , ?i nt st at us)
Response:
<doc>
<md_cst . act i vat e_cust omer st at us=" 0" >
</ md_cst . act i vat e_cust omer >
. . .
</ doc>
76 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
md_cst.add_customer()
Creates a new Customer and assigns it a Customer ID. The Customer ID can either be generated by
iTVManager, or you can pass it in as an input argument (see Using Custom Customer IDs, above, for more
information ). Either way, the ID is returned through the actualCustomerID output argument. Note that this
method of returning the ID is different from all other object-creation procedures (which use the status value
to return the ID).
This procedure also creates a Primary STB Account for the Customer.
NOTE: When you add a customer using the md_cst.add_customer call, default values for several fields, which
arent included in the fields list, are assumed. To modify the values of these other fields after the customer
is created, use the md_cst.set_customer_options call.
PROTOCOL
NOTE: The md_cst.add_customer() call has been extended to include the two new optional fields, underlined
below. These fields allow you to include customer-specific data used for NRTC reports. (See Input
Arguments section for details.) For the 4.0 release, you can continue to use the call with the original set of
46 parameters. However, for subsequent releases, support for sending just 46 parameters will be
discontinued, and you need to configure your CDK tools to pass all 48 parameters (using null values if no
NRTC data is supplied.)
md_cst.add_customer ( sessionID, customerID, externalCustomerID, regionID, firstName,
middleName, lastName, address1, address2, address3, city, state, zipcode,
workPhone, homePhone, mobilePhone, email, faxNumber, socialSecurityNumber,
loginRequired, login, password, pin, autoProvisionCount, hasPPV, hasNVOD, hasPromo,
hasVOD, customerStartDate, customerEndDate, customerStatus, serviceStartDate,
serviceEndDate, serviceIDs, unused, creditLimit, pinRequired, parentalControlOn,
paymentType, creditCardType, creditCardNumber, creditCardExpireDate,
creditCardHolderName, bankID, bankAcctNumber, bankAcctHolderName,
nrep_account_type_id, fcoDrops, ?actualCustomerID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 customerID[ 20] STRI NG
If youve specified that you want to use a custom Customer ID (as described in Using Custom Customer
IDs, above), then the customerID value that you supply in this call is used as the subscribers Customer
ID.
If you havent specified that you want to use a custom Customer IDs (the Use Custom IDs box is
unchecked in System Setup > Business Info interface) , then the Customer ID is generated for you. If
you do supply a custom ID, the value is ignored.
In either of the above cases, the actual ID is returned in the actualCustomerID output argument.
The customerID string that you supply is automatically trimmed of leading and trailing whitespace.
IMPORTANT:i TVManager sends a message to the condi ti onal access (CA) system i f and onl y i f " Use
Custom ID" box i s sel ected i n the BackOffi ce Consol e. A CA message i s not sent i f
thi s box i s not checked.
3 externalCustomerID[ 40] STRI NG
Optional ID that identifies the customer in an external database.
4 *regionID I D md_sys.get_ISP_dictionary():<RS3>.Region_ID
The Region to which the Customer will be added.
www.minervanetworks.com 77
iTVManager BackOffice API Technical Reference Customers
5 firstName[ 512] STRI NG
6 middleName[ 512] STRI NG
7 *lastName[ 512] STRI NG
The Customers first, middle, and last name.
8 *address1[ 80] STRI NG
9 address2[ 80] STRI NG
10 address3[ 80] STRI NG
The Customers street address.
11 *city[ 40] STRI NG
12 *state[ 40] STRI NG
13 *zipcode[ 24] STRI NG
The Customers city, state, and zip code. If the zip code isnt within the Emergency Alert System domain,
status is set to -99 but the Customer is created, nonetheless.
14 workPhone[ 50] STRI NG
15 homePhone[ 50] STRI NG
16 mobilePhone[ 50] STRI NG
The Customers work, home, and mobile phone numbers.
IMPORTANT: If you re usi ng Phone Number as your auto-provi si oni ng method, you have to make sure that each
of your customers has a uni que home phone number. The system doesn t enforce home phone
number uni queness.
17 email[ 80] STRI NG
The Customers email address.
18 faxNumber[ 50] STRI NG
The Customers fax number.
19 socialSecurityNumber[ 28] STRI NG
The Customers social security number.
20 *loginRequired CHAR [ Y| N]
If 'Y', the customer must log into the STB using the login and password of one of the Customer
Accounts. If 'N', the customer is automatically logged in as the Primary STB Account.
21 *login[ 40] STRI NG
22 *password[ 40] STRI NG
23 *pin[ 20] STRI NG
The login name, password, and PIN of the Primary STB Account. The login/password are required
when the customer logs into the STB (but see loginRequired) or tries to access the STBs Settings pages
(which can only be accessed by the Primary STB Account.). The pin is a password that protects
purchases: When the customer tries to buy a PPV or VOD (or other service or product) a dialog asks for
the Primary STB Accounts PIN. By default, the PIN is required. You can toggle the requirement
through the pinRequired argument, or through the BackOffice Consoles Customer module.
IMPORTANT: Passwords and PINs may onl y contai n numbers.
78 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
24 #autoProvisionCountI NTEGER
The maximum number of STBs (Devices) that can be registered to this Customer. This value is required
only if the autoprovisioning business rule is enabled (as explained below); if autoprovisioning is
disabled, the argument must be NULL. When called from edit_customer() (and with autoprovisioning
enabled), the autoProvisionCount value must not be less than the number of STBs that are already
registered to the Customer.
To enable or disable autoprovisioning, log into the BackOffice Console and go to the System Setup >
Business Rules page. The autoprovisioning switch is at the top of the page, as shown below:
25 hasPPV CHAR [ Y| N]
26 hasNVOD CHAR [ Y| N]
27 hasPromo CHAR [ Y| N]
28 hasVOD CHAR [ Y| N]
If 'Y', the customer is allowed to access Pay Per View channels, the Near Video on Demand catalog
(currently unused), promotional channels, and the Video on Demand catalog; otherwise, not. The default
for all of these is 'Y'.
29 customerStartDate DATE IPTV Providers date format
30 customerEndDate DATE IPTV Providers date format
31 *customerStatus CHAR [ A| I]
The first two arguments set the dates upon which the Customer will be activated and then (later)
deactivated. If customerStartDate is NULL or in the past, the Customer is immediately activated. If you
provide dates, the end date must come after the start date. The date arguments are given in the Providers
date format. The customerStatus argument is used to set the Customers initial status if
customerStartDate is omitted: 'A' activates the Customer, 'I' deactivates. If customerStartDate is
provided, customerStatus is ignored.
32 #serviceStartDate DATE IPTV Providers date format
33 serviceEndDate

DATE IPTV Providers date format
34 serviceIDs[ 4000]

I D|I D md_srv.get_services():<RS1-RS5>.SERVICE_MENU_ID
The first two arguments set the dates upon which the Customers Services, given in serviceIDs, will be
activated and then (later) deactivated. If the start date is in the past, the Customers Services are
immediately activated.

serviceStartDate is required only if serviceIDs isnt empty. If you dont
provide a serviceEndDate value, the Services are never disabled. If you supply a serviceEndDate, it
must come after the start date. The date arguments are given in the Providers date format.
The serviceIDs argument contains a list of the Services (Service Packages, Channel Packages, SVODs,
and so on) that will be added to the Customer.
35 unused
www.minervanetworks.com 79
iTVManager BackOffice API Technical Reference Customers
36 creditLimit PRI CE IPTV Providers decimal format
The Customers initial purchasing limit expressed in the Providers decimal format.
37 pinRequired CHAR [ Y| N]
If 'Y', the customer must enter his or her PIN when purchasing, through the STB, a VOD, PPV, or other
product or service. If 'N', the transaction doesnt require a PIN.
The PIN value is set through the pin argument. Theres only PIN per Customerin other words, all STB
Accounts, for that Customer, use the same PIN value. If pinRequired is NULL, its set to 'Y' (the PIN is
required).
38 parentalControlsOn CHAR [ Y| N]
If 'Y', parental controls are enabled on the Customers STB(s). If 'N', parental controls arent in
enabled. The default is 'N'.
39 paymentType I NTEGER [ 1- 4]
An integer that represents the Customers payment method. Accepted values are:
1 credit card (see the creditCard arguments, below)
2 mail-in
3 prepaid
4 debit from a bank account (see the bank arguments, below)
40 creditCardType I NTEGER [ 1- 4]
An integer that represents the Customers credit card type. Accepted values are:
1 American Express
2 MasterCard
3 Visa
4 Discover
41 creditCardNumber[ 40] STRI NG
42 creditCardExpireDateDATE IPTV Providers date format
43 creditCardHolderName[ 80] STRI NG
Information about the Customers credit card. The expiration date is expressed in the Providers date
format.
44 *bankID I D BackOffice Console: Billing > Bank Mgmt
45 bankAcctNumber[ 40] STRI NG
46 bankAcctHolderName[ 40] STRI NG
Information about the Customers bank. If you dont have a bank defined, use -1 as the bankID value.
NRTC Parameters
Optionally include the following parameters to supply NRTC information for the customer.
47 nrep_account_type_id I D
md_sys.get_nrep_acct_type_dictionary():<RS1>.NREP_ACCOUNT_TYPE_ID
The customer account_type_id, which is used in NRTC reports.
48 fcoDrops[ 5] I NTEGER
A number that represents the fire occupancy rate, which is used in NRTC reports.
OUTPUT ARGUMENTS
49 actualCustomerID

<RS1>
Returns the Customers ID. The (single) row contains:
CUSTOMER_ID. The Customers ID.
80 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
50 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 General error: Requested data wasnt found.
-4 Invalid date format in one of the date arguments.
-5 customerEndDate

is earlier than customerStartDate.
-6 General error: Customer information couldnt be added.
-11 customerID, if supplied, has already been assigned to a customer.
-12 General error: Customer info couldnt be added.
-13 A narrow Channel Package in serviceIDs isnt in the Lineup assigned to regionID.
-14 An ID in serviceIDs is invalid.
-15 regionID is invalid.
-16 The Region identified by regionID hasnt been assigned to an IPTV Provider.
-17 You supplied a serviceStartDate that specifies a Service start date in the future, but
serviceIDs contains a Service that has already started.
-18 Autoprovisioning is enabled and autoProvisionCount is NULL or less than 0, or autoprovisioning
is disabled and autoProvisionCount is non-NULL.
-19 pin is NULL, contains non-numeric characters, or has more than 20 digits.
-20 password is NULL, contains non-numeric characters, or has more than 40 digits.
-22 serviceIDs includes too many required Channel Packages.
-23 pinRequired has been supplied, but is neither Y nor N.
-24 parentalControlsOn has been supplied, but is neither Y nor N.
-25 Invalid account type specified in nrep_account_type_id.
-26 Invalid fcoDrops.
-95 The customerID is longer than 20 characters.
-96 socialSecurityNumber isnt unique.
-97 creditCardExpireDate date format is invalid.
-98 socialSecurityNumber has more than 28 characters or isnt numeric.
-99 zipcode isnt within the Providers EAS domain.
IMPORTANT: status = -99 i s a warni ng; i t s not a fatal error. Despi te the error, the Customer i s created.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . add_cust omer ( ' mySI D' , ' 99990001' , ' ' , ' 1' , ' Emma' , ' '
, ' Wat son' , ' 6639Mai nSt r eet ' , ' ' , ' ' , ' Char l est on' , ' SC' , ' 60343' , ' ' , ' 555555555' , ' ' , ' ' , ' ' , ' ' , ' Y
' , ' 3277160' , ' 3277160' , ' 3277160' , 1, ' Y' , ' Y' , ' Y' , ' Y' , ' ' , ' ' , ' A' , ' 08/ 01/ 2007' , ' ' , ' 48' , ' ' , ' 500
0' , ' Y' , ' Y' , ' 2' , ' - 1' , ' ' , ' ' , ' ' , ' - 1' , ' ' , ' ' , ' 3' , ' 49' , ?, ?i nt st at us)
Response:
<doc>
<md_cst . add_cust omer st at us=" 0" >
<RS1>
www.minervanetworks.com 81
iTVManager BackOffice API Technical Reference Customers
<r ow CUSTOMER_I D=" AS002" ></ r ow>
</ RS1>
</ md_cst . add_cust omer >
. . .
</ doc>
82 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
md_cst.deactivate_customer()
Deactivates a Customer. The Customers STB Accounts will no longer be able to access the STB.
PROTOCOL
md_cst.deactivate_customer ( sessionID, customerID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst.get_customer_list():<RS1>.CUSTOMER_ID
The ID of the Customer that you want to deactivate.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-5 customerID

is invalid.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . deact i vat e_cust omer ( ' mySI D' , ' EXTI D1' , ?i nt st at us
Response:
<doc>
<md_cst . deact i vat e_cust omer st at us=" 0" >
</ md_cst . deact i vat e_cust omer >
. . .
</ doc>
www.minervanetworks.com 83
iTVManager BackOffice API Technical Reference Customers
md_cst.delete_customer()
Deletes a Customer. All Services and pending rentals are cancelled, the Customers STB Accounts are erased,
and the Customers Devices are deactivated. The Customer (record) is then either destroyed or its (merely)
marked as deleted (the status is set to 'D'), depending on the Customers dependencies in the Billing module
and the state of the force

argument. As soon as the Billing dependencies are removed, the Customer record
is destroyed. Customer records that are deleted-but-not-yet-destroyed can (still) be retrieved through
get_customer().
PROTOCOL
md_cst.delete_customer ( sessionID, customerID, force, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst.get_customer_list():<RS1>.CUSTOMER_ID
The ID of the Customer you want to delete.
3 *force CHAR [ Y| N]
When you delete a Customer, the Customers Services, STB Accounts, rentals, and so on, are always
cancelled. What happens to the Customer record itself depends on whether the Customer has
dependencies in the Billing module, and whether force is 'Y' or 'N':
If the Customer doesnt have any dependenciesin other words, if none of the Billing tables refer to
this Customerthen the Customer record is completely destroyed, regardless of the force

value.
If there are dependencies, then the Customer record is only destroyed if force is set to 'Y'. If the
argument is to 'N', the Customer isnt completely erased; instead, the Customers account is set to 'D'
(for deleted). A deleted Customer is just as unusable as a destroyed Customer, except that you can
still retrieve Customer information through the get_customer() call.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-6 customerID

is invalid.
-7 force

is neither 'Y' nor 'N'.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . del et e_cust omer ( ' mySI D' , ' EXTI D1' , ' N' , ?i nt st at us
Response:
<doc>
<md_cst . del et e_cust omer st at us=" 0" >
</ md_cst . del et e_cust omer >
. . .
</ doc>
84 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
md_cst.edit_customer()
Edits a Customers information.
IMPORTANT: Thi s procedure modi fi es al l of the attri butes that correspond to the i nput arguments. If you onl y
want to change a subset of the attri butes, you have to retri eve and pass i n the current val ues of the
attri butes that you don t want to change.
IMPORTANT: You can t use thi s procedure to add a Servi ce to a Customer; i nstead, use
md_cst.set_services_for_customer().
NOTE: Not all customer field values can be adjusted with the md_cst.edit_customer call. For those that
arent, use the md_cst.set_customer_options call call.
PROTOCOL
NOTE: The md_cst.edi t_customer() call has been extended to include the two new optional fields, underlined
below. These fields allow you to include customer-specific data used for NRTC reports. (See Input
Arguments section for details.) For the 4.0 release, you can continue to use the call with the original set of
42 parameters. However, for subsequent releases, support for sending just 42 parameters will be
discontinued, and you need to configure your CDK tools to pass all 44 parameters (using null values if no
NRTC data is supplied.)
md_cst.edit_customer( sessionID, customerID, externalCustomerID, regionID, firstName,
middleName, lastName, address1, address2, address3, city, state, zipcode,
workPhone, homePhone, mobilePhone, email, faxNumber, socialSecurityNumber,
loginRequired, login, password, pin, autoProvisionCount, hasPPV, hasNVOD, hasPromo,
hasVOD, customerStartDate, customerEndDate, customerStatus, creditLimit,
pinRequired, parentalControlsOn, paymentType, creditCardType, creditCardNumber,
creditCardExpireDate, creditCardHolderName, bankID, bankAcctNumber,
bankAcctHolderName, nrep_account_type_id, fcoDrops, ?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst.get_customer_list():<RS1>.CUSTOMER_ID
The ID of the Customer that you want to edit.
NOTE: See md_cst.add_customer() for more notes on the present input argument and for descriptions of the
rest of the input arguments.
3 externalCustomerID [ 40] STRI NG
4 *regionID I D md_sys.get_ISP_dictionary():<RS3>.Region_ID
IMPORTANT: If you re changi ng the Customer s Regi on, and i f the new Regi on uses a Li neup that s di fferent
from the Customer s ol d Regi on, you must reset the NVRAM on the Customer s STB and then
reboot the devi ce. See the i nstructi ons i n the Changing a Lineups Contents secti on of the Lineups
chapter.
5 firstName[ 512] STRI NG
6 middleName[ 512] STRI NG
7 *lastName[ 512] STRI NG
8 *address1[ 80] STRI NG
9 address2[ 80] STRI NG
www.minervanetworks.com 85
iTVManager BackOffice API Technical Reference Customers
10 address3[ 80] STRI NG
11 *city[ 40] STRI NG
12 *state[ 40] STRI NG
13 *zipcode[ 24] STRI NG
14 workPhone[ 50] STRI NG
15 homePhone[ 50] STRI NG
16 mobilePhone[ 50] STRI NG
17 email[ 80] STRI NG
18 faxNumber[ 50] STRI NG
19 socialSecurityNumber[ 28] STRI NG
20 *loginRequired CHAR [ Y| N]
21 *login[ 40] STRI NG
22 *password[ 40] STRI NG
23 *pin[ 20] STRI NG
24 #autoProvisionCountI NTEGER
25 hasPPV CHAR [ Y| N]
26 hasNVOD CHAR [ Y| N]
27 hasPromo CHAR [ Y| N]
28 hasVOD CHAR [ Y| N]
29 customerStartDate DATE IPTV Providers date format
NOTE: When a customer account is edited, their start date is changed to the current date. This will be
fixed in iTVManager 4.2.
30 customerEndDate DATE IPTV Providers date format

31 *customerStatus CHAR [ A| I]
32 creditLimit PRI CE IPTV Providers decimal format
33 pinRequired CHAR [ Y| N]
34 parentalControlsOn CHAR [ Y| N]
35 paymentType I NTEGER [ 1- 4]
36 creditCardType I NTEGER [ 1- 4]
37 creditCardNumber[ 40] STRI NG
38 creditCardExpireDateDATE IPTV Providers date format
39 creditCardHolderName[ 80] STRI NG
40 *bankID I D BackOffice Console: Billing > Bank Mgmt
41 bankAcctNumber[ 40] STRI NG
42 bankAcctHolderName[ 40] STRI NG
NRTC Parameters
Optionally include the following parameters to supply NRTC information for the customer.
43 nrep_account_type_id I D
md_sys.get_nrep_acct_type_dictionary():<RS1>.NREP_ACCOUNT_TYPE_ID
The customer account_type_id, which is used in NRTC reports.
44 fcoDrops[ 5] I NTEGER
An number that represents the fire occupancy rate, which is used in NRTC reports.
OUTPUT ARGUMENTS
45 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
86 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 Invalid customerID

value.
-4 Invalid date format in one of the date arguments.
-5 customerEndDate

is earlier than customerStartDate.
-6 General error: Customer info couldnt be added.
-7 A subaccount uses login

as a login name. (Login names must be unique.)
-8 serviceStartDate is NULL (and serviceIDs

isnt empty).
-12 General error: Customer info couldnt be added.
-15 regionID is missing or invalid.
-16 The Region identified by regionID hasnt been assigned to an IPTV Provider.
-18 Autoprovisioning is enabled and autoProvisionCount is NULL or less than 0, or autoprovisioning
is disabled and autoProvisionCount is non-NULL.
-19 pin is NULL.
-20 password or pin contains characters other than numbers.
-23 pinRequired has been supplied, but is neither Y nor N.
-24 parentalControlsOn has been supplied, but is neither Y nor N.
-25 Invalid account type specified in nrep_account_type_id.
-26 Invalid fcoDrops.
-96 socialSecurityNumber isnt unique.
-97 creditCardExpireDate expiration date is invalid.
-98 socialSecurityNumber is invalid.has more than 28 characters or isnt numeric.
-99 zipcode isnt within the Providers EAS domain.
IMPORTANT: status = -99 i s a warni ng; i t s not a fatal error. Despi te the error, the Customer i s edi ted.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . edi t _cust omer ( ' mySI D' , ' AS002' , ' ' , ' 1' , ' Fi r st Name'
, ' M' , ' Last Name' , ' Addr ess1' , ' Addr ess2' , ' Addr ess3' , ' Ci t y' , ' St at e' , ' zi pcode' , ' 111- 111- 1111'
, ' 222- 111- 1111' , ' 333- 111- 1111' , ' emai l @emai l . com' , ' f ax' , ' 111223333' , ' Y' , ' l ogi n' , ' 9' , ' 9' , '
2' , ' Y' , ' N' , ' Y' , ' Y' , ' 2007/ 06/ 06' , ' 2008/ 06/ 06' , ' A' , ' 999' , ' ' , ' Y' , ' 2' , ' - 1' , ' ' , ' ' , ' ' , ' - 1' , ' ' ,
' ' , ' 3' , ' 75' , ?int status)
Response:
<doc>
<md_cst . edi t _cust omer st at us=" 0" >
</ md_cst . edi t _cust omer >
. . .
</ doc>
www.minervanetworks.com 87
iTVManager BackOffice API Technical Reference Customers
md_cst.get_customer()
Returns general information about a Customer.
PROTOCOL
md_cst.get_customer ( sessionID, customerID, ?customerInfo, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst.get_customer_list():<RS1>.CUSTOMER_ID
The ID of the Customer that youre interested in.
OUTPUT ARGUMENTS
3 customerInfo <RS1>
Provides general information about the Customer. The row contains:
CUSTOMER_ID. The Customers ID.
FIRST_NAME. The Customers first name.
MIDDLE_NAME. The Customers middle name.
LAST_NAME. The Customers last name.
CREATE_DATE. The date upon which the Customers account was created, expressed in the Providers
date format.
ADDRESS1. The Customers (real-world) address.
ADDRESS2. (address continued, if necessary)
ADDRESS3. (address continued, if necessary)
CITY. The Customers city.
STATE. The Customers state.
ZIPCODE. The Customers zip code.
WORK_PHONE. The Customers work phone number.
HOME_PHONE. The Customers home phone number.
EMAIL. The Customers email address.
LOGIN_REQUIRED. "Y" if the (real-world) customer is presented with a login screen on the STB; "N" if
not.
SS_NUM. The Customers social security number.
MOBILE_PHONE. The Customers mobile phone number.
HAS_PPV. "Y" if the Customer can access Pay Per View channels; "N" if not.
HAS_NVOD. Currently unused.
HAS_PROMO_CHANNEL. "Y" if the Customer can access promotional channels; "N" if not.
HAS_VOD. "Y" if the Customer can access the Video on Demand catalog; "N" if not.
HAS_PVR. "Y" if the Customer can access the STBs Personal Video Recorder (assuming the STB has a
PVR, and assuming that PVR is enabled at the Device level); "N" if not.
NOTE: Currently, PVR is provided (and added to the Customers account) as a Service. You cant enable PVR
through the md_cst.add_customer() and md_cst.edit_customer() procedures.
AUTO_PROVISION_COUNT. The number of attempts that have been made to provision the Customers
Device.
EXTERNAL_CUSTOMER_ID. The ID (string) thats used to identify the (real-world) customer in an
external BSS/OSS system.
88 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
STATUS. "A" if the Account is active, "I" if its inactive, or "D" if it has been deleted but not yet
destroyed.
4 parentalControlsOn CHAR [ Y| N]
If 'Y', parental controls are enabled on the Customers STB(s). If 'N', parental controls arent in
enabled. The default is 'N'.
5 faxNumber[ 50] STRI NG
The Customers fax number.
6 pinRequired CHAR [ Y| N]
If 'Y', the customer must enter his or her PIN when purchasing, through the STB, a VOD, PPV, or other
product or service. If 'N', the transaction doesnt require a PIN.
The PIN value is set through the pin argument. Theres only PIN per Customerin other words, all STB
Accounts, for that Customer, use the same PIN value. If pinRequired is NULL, its set to 'Y' (the PIN is
required).
7 creditLimit PRI CE IPTV Providers decimal format
The Customers initial purchasing limit expressed in the Providers decimal format.
8 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-5 customerID

doesnt identify a Customer.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . get _cust omer ( ' mySI D' , ' MD12138' , ?, ?i nt st at us)
Response:
<doc>
<md_cst . get _cust omer st at us=" 0" >
<RS1>
<r ow CUSTOMER_I D=" MD12138" FI RST_NAME=" " MI DDLE_NAME=" " LAST_NAME=" el l yt est 1"
CREATE_DATE=" 30/ 11/ 2009" ADDRESS1=" 0" ADDRESS2=" " ADDRESS3=" " CI TY=" 0" STATE=" 0"
ZI PCODE=" 94065" WORK_PHONE=" " HOME_PHONE=" " EMAI L=" " LOGI N_REQUI RED=" N" SS_NUM=" "
MOBI LE_PHONE=" " HAS_PPV=" N" HAS_NVOD=" Y" HAS_PROMO_CHANNEL=" N" HAS_VOD=" N" HAS_PVR=" Y"
AUTO_PROVI SI ON_COUNT=" 1" EXTERNAL_CUSTOMER_I D=" " STATUS=" A" PARENTAL_CONTROL=" N" FAX=" "
PI N_REQUI RED=" N" SPENDI NG_ALLOWANCE=" " / >
EXTERNAL_CUSTOMER_I D=" " STATUS=" A" ></ r ow>
</ RS1>
</ md_cst . get _cust omer >
. . .
</ doc>
www.minervanetworks.com 89
iTVManager BackOffice API Technical Reference Customers
md_cst.get_customer_account()
Returns information about a Customers STB Accounts.
PROTOCOL
md_cst.get_customer_account ( sessionID, customerID, ?customerInfo,
?primaryStbAccount, ?secondaryStbAccounts, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst.get_customer_list():<RS1>.CUSTOMER_ID
The ID of the Customer that youre interested in.
OUTPUT ARGUMENTS
3 customerInfo <RS1>
Provides general information about the Customer. The row contains the same information thats
returned by md_cst.get_customer():<RS1>.
4 primaryStbAccount <RS2>
Provides information about the Customers Primary STB Account. The row contains:
STATUS. "A" if the Account is active or "I" if inactive.
LOGIN. The Accounts login name.
PASSWORD. The Accounts password.
PIN. The PIN password that must be entered in order to purchase movies (and such).
CREATE_DATE. The date on which the Account was created.
EFFECTIVE_DATE. The date on which the Account was (or will be) activated.
MODIFY_DATE. The date on which the Account was most recently modified.
EXPIRE_DATE. The date on which the Account was (or will be) deactivated.
PAYMENT_METHOD. The method the Customer uses to pay his or her bill. One of 'Credit Card',
'Mail', 'Pre Paid', or 'Direct Debit'.
NOTE: If the customer account was created with the BackOffice Console, the returned payment type for
credit card customers is CC instead of Credit Card. The discrepancy will be fixed in Release
4.2.
CREDIT_CARD_TYPE. The Customers credit card type. One of 'American Express', 'Master
Card', 'Visa', or 'Discover'.
CREDIT_CARD_NUMBER. The Customers credit card account number.
CREDIT_CARD_EXPIRE_DATE. The date upon which the Customers credit card will expire, in the
Providers date format.
CARD_HOLD_NAME. The name of the holder of the Customers credit card account.
GEO_LOCATION_ID. Ignore this field.
BANK_ID. The ID of the Bank that provides the Customers bank account.
BANK_ACCOUNT. The Customers bank account number.
BANK_OWNER. The name thats used as the owner of the Customers bank account.
BANK_NAME. The ID of the Bank that provides the Customers bank account.
ACCOUNT_ID. The ID of the Primary STB Account.
ASSET_RATING. The Parental Control movie rating setting for this Account.
TV_RATING. The Parental Control TV rating setting for this Account.
90 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
EMAIL_ENABLE. The Parental Control TV rating setting for this Account.
INTERNET_ENABLE. "Y" if Internet access is enabled for this Account, otherwise "N".
SEX_RATING. "S" if this Account is allowed to view sexual content, otherwise " " (empty string).
LANGUAGE_RATING. "L" if this Account is allowed to view sexual content, otherwise " " (empty string).
VIOLENCE_RATING. "V" if this Account is allowed to view violent content, otherwise " " (empty
string).
DIALOG_RATING. "D" if this Account is allowed to view content that has suggestive dialog, otherwise "
" (empty string).
FV_RATING. "F" if this Account is allowed to view content that has fantasy violence, otherwise " "
(empty string).
SPENDING_ALLOWANCE. The Accounts spending limit (for PPV and VOD), expressed in the IPTV
Providers decimal format.
SKIN_ID. The ID of the Accounts most recently-used Skin.
SKIN. The name of the Accounts most recently-used Theme.
LANGUAGE. The ISO 639-2 language code of the Accounts most recently-used language.
HAS_CALLERID. "Y" if Caller ID is enabled for this Account, otherwise "N".
REGION_ID. The ID of Region to which the Account is assigned.
5 secondaryStbAccounts <RS3>
Provides information about the Customers Secondary STB Accounts. Each row describes one Account:
NOTE: See the primaryStbAccount output argument for descriptions of the rest of the fields.
ACCOUNT_ID
LOGIN
PASSWORD
ASSET_RATING
TV_RATING
SPENDING_ALLOWANCE
EMAIL_ENABLE
INTERNET_ENABLE
SEX_RATING
LANGUAGE_RATING
VIOLENCE_RATING
DIALOG_RATING
FV_RATING
SKIN_ID
LANGUAGE
THEME
HAS_CALLERID
6 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-5 customerID

doesnt identify a Customer.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
www.minervanetworks.com 91
iTVManager BackOffice API Technical Reference Customers
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . get _cust omer _account ( ' mySI D' , ' MD11609' , ?, ?, ?, ?i n
t st at us)
Response:
<doc>
<md_cst . get _cust omer _account st at us=" 0" >
<RS1>
<r ow CUSTOMER_I D=" MD11609" FI RST_NAME=" Meg" MI DDLE_NAME=" " LAST_NAME=" Ryan"
CREATE_DATE=" 09/ 10/ 2007" ADDRESS1=" 2111 Tasman" ADDRESS2=" " ADDRESS3=" " CI TY=" Sant a
Cl ar a" STATE=" CA" ZI PCODE=" 95054" WORK_PHONE=" " HOME_PHONE=" 4089993333"
EMAI L=" meg@hol l ywood. com" LOGI N_REQUI RED=" N" SS_NUM=" 111111111" MOBI LE_PHONE=" "
HAS_PPV=" Y" HAS_NVOD=" Y" HAS_PROMO_CHANNEL=" Y" HAS_VOD=" Y" HAS_PVR=" N"
AUTO_PROVI SI ON_COUNT=" " EXTERNAL_CUSTOMER_I D=" " STATUS=" A" ></ r ow>
</ RS1>
<RS2>
<r ow STATUS=" A" LOGI N=" 0" PASSWORD=" 0" PI N=" 0" CREATE_DATE=" 09/ 10/ 2007"
EFFECTI VE_DATE=" 09/ 10/ 2007" MODI FY_DATE=" 09/ 10/ 2007" EXPI RE_DATE=" " CREDI T_RATI NG=" "
OVERRI DE_CREDI T=" " PAYMENT_METHOD=" CC" CREDI T_CARD_TYPE=" " CREDI T_CARD_NUMBER=" "
CREDI T_CARD_EXPI RE_DATE=" " CARD_HOLD_NAME=" " GEO_LOCATI ON_I D=" 1" BANK_I D=" 1"
BANK_ACCOUNT=" " BANK_OWNER=" " BANK_NAME=" " ACCOUNT_I D=" 1" ASSET_RATI NG=" X"
TV_RATI NG=" TVMA" EMAI L_ENABLE=" Y" I NTERNET_ENABLE=" Y" SEX_RATI NG=" " LANGUAGE_RATI NG=" "
VI OLENCE_RATI NG=" " DI ALOG_RATI NG=" " FV_RATI NG=" " SPENDI NG_ALLOWANCE=" " SKI N_I D=" "
LANGUAGE=" " THEME=" " HAS_CALLERI D=" N" REGI ON_I D=" 2" ></ r ow>
</ RS2>
<RS3>
</ RS3>
</ md_cst . get _cust omer _account >
. . .
</ doc>
92 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
md_cst.get_customer_list()
Returns the Customers that fulfill a search criteria. For a description of the search mechanism, see
md_dev.get_device_list() on page 163.
IMPORTANT: Unl i ke the other search mechani sms, get_customer_l i st() doesn t have an exact search fl ag. Al l
Customer searches are case-i nsensi ti ve and can be parti al stri ngs.
PROTOCOL
md_cst.get_customer_list ( sessionID, pageNumber, entriesPerPage, searchAttribute,
searchValue, ?customerList, ?customerCount, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *pageNumber I NTEGER >=1
3 *entriesPerPage I NTEGER >=1
The list of found Customers is divided into pages, where each page contains entriesPerPage
Customers. The pageNumber argument lets you select the page that you want to look at; page numbers
start at 1. Also see the customerCount output argument.
4 *searchAttribute I NTEGER [ 1- 7]
An integer constant that represents the Customer attribute that the searchValue will be compared to:
1 = The Customer ID.
2 = The Customers name (both the first and last names are considered).
3 = The Customers zipcode.
4 = The Customers name within the Customer Support Request table (i.e. only those Customers who
have made a Customer Support request are considered).
5 = The Customers name within the Service Change Request table (i.e. only those Customers who have
made a Service Change request are considered).
6 = The Customers social security number.
7 = The Customers home, work, or cell phone number
5 searchValue[ 20] STRI NG
The value thats used in the attribute comparison. searchValue is treated as a partial string; for example,
the searchValue ons, when searching on Customer name, will find Customers named Monsoon,
Moonstone, Onslaught, and so on. If searchValue is NULL, all Customers are returned. All comparisons
are case-insensitive.
OUTPUT ARGUMENTS
6 customerList <RS1>
Provides general information about the Customers. Each row contains:
CUSTOMER_ID. The Customers ID.
CUSTOMER_NAME. The Customers name, in the form last, first middle.
STATUS. Either "A" for active, or "I" for inactive.
ZIPCODE. The Customers zipcode.
REGION_ID. The ID of the Customers Region.
EXTERNAL_CUSTOMER_ID. The Customers external customer ID (as set through the
md_cst.add_customer() procedure).
www.minervanetworks.com 93
iTVManager BackOffice API Technical Reference Customers
LOGIN_REQUIRED. "Y" if the Customers STBs display a login screen, otherwise "N".
ENABLE_CALLERID. "Y" if caller ID is enabled for the Customers Primary STB Account, otherwise
"N". Keep in mind that the Customers Secondary STB Accounts have their own caller ID setting.
NOTE: When the end-user enables or disables caller ID from the STBs, the value returned in this filed
mignt not be correct. WORKAROUND: Use the md_cst.get_customer_services to retrieve the
correct caller ID enable/disable status.
HAS_PPV. "Y" if the Customer can access Pay Per View channels, otherwise "N". All of the STB
Accounts inherit this value.
HAS_VOD. "Y" if the Customer can access the Video on Demand catalog, otherwise "N". All of the
Customers STB Accounts inherit this value.
7 customerCount <RS2>
Customer and page counts, given in a single row:
PAGES. The number of pages of Customers, where each page describes entriesPerPage Customers.
COUNTS. The total number of Customers (across all pages) that were found in the search.
8 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 searchAttribute

is invalid.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . get _cust omer _l i st ( ' mySI D' , 1, 200, 1, ' ' , ?, ?, ?i nt
st at us)
Response:
<doc>
<md_cst . get _cust omer _l i st st at us=" 0" >
<RS1>
<r ow ROW_NUM=" 1" CUSTOMER_I D=" MD11609" CUSTOMER_NAME=" Ryan, Meg " STATUS=" A"
ZI PCODE=" 95054" REGI ON_I D=" 2" EXTERNAL_CUSTOMER_I D=" " LOGI N_REQUI RED=" N"
ENABLE_CALLERI D=" Y" HAS_PPV=" Y" HAS_VOD=" Y" ></ r ow>
<r ow ROW_NUM=" 2" CUSTOMER_I D=" MD11610" CUSTOMER_NAME=" Rober t s, J ul i a " STATUS=" A"
ZI PCODE=" 95876" REGI ON_I D=" 2" EXTERNAL_CUSTOMER_I D=" " LOGI N_REQUI RED=" N"
ENABLE_CALLERI D=" Y" HAS_PPV=" Y" HAS_VOD=" Y" ></ r ow>
<r ow ROW_NUM=" 3" CUSTOMER_I D=" MD11611" CUSTOMER_NAME=" Pi t t , Br ad " STATUS=" A"
ZI PCODE=" 94333" REGI ON_I D=" 2" EXTERNAL_CUSTOMER_I D=" " LOGI N_REQUI RED=" N"
ENABLE_CALLERI D=" Y" HAS_PPV=" Y" HAS_VOD=" Y" ></ r ow>
<r ow ROW_NUM=" 4" CUSTOMER_I D=" MD11612" CUSTOMER_NAME=" Damon, Mat t " STATUS=" A"
ZI PCODE=" 93833" REGI ON_I D=" 2" EXTERNAL_CUSTOMER_I D=" " LOGI N_REQUI RED=" N"
ENABLE_CALLERI D=" Y" HAS_PPV=" Y" HAS_VOD=" Y" ></ r ow>
<r ow ROW_NUM=" 5" CUSTOMER_I D=" MD11613" CUSTOMER_NAME=" Wi l l i s, Br uce " STATUS=" A"
ZI PCODE=" 93939" REGI ON_I D=" 2" EXTERNAL_CUSTOMER_I D=" " LOGI N_REQUI RED=" N"
ENABLE_CALLERI D=" Y" HAS_PPV=" Y" HAS_VOD=" Y" ></ r ow>
<r ow ROW_NUM=" 6" CUSTOMER_I D=" MD11614" CUSTOMER_NAME=" St acey, Mi ke " STATUS=" A"
ZI PCODE=" 95054" REGI ON_I D=" 2" EXTERNAL_CUSTOMER_I D=" " LOGI N_REQUI RED=" N"
ENABLE_CALLERI D=" Y" HAS_PPV=" Y" HAS_VOD=" Y" ></ r ow>
94 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
<r ow ROW_NUM=" 7" CUSTOMER_I D=" MD11615" CUSTOMER_NAME=" Spencer , Mar k " STATUS=" A"
ZI PCODE=" 95876" REGI ON_I D=" 3" EXTERNAL_CUSTOMER_I D=" " LOGI N_REQUI RED=" N"
ENABLE_CALLERI D=" Y" HAS_PPV=" Y" HAS_VOD=" Y" ></ r ow>
<r ow ROW_NUM=" 8" CUSTOMER_I D=" MD11616" CUSTOMER_NAME=" Kor t ava, Zi na " STATUS=" A"
ZI PCODE=" 95054" REGI ON_I D=" 2" EXTERNAL_CUSTOMER_I D=" " LOGI N_REQUI RED=" N"
ENABLE_CALLERI D=" Y" HAS_PPV=" Y" HAS_VOD=" Y" ></ r ow>
<r ow ROW_NUM=" 9" CUSTOMER_I D=" MD11617" CUSTOMER_NAME=" Nguyen, Mi nh " STATUS=" A"
ZI PCODE=" 95876" REGI ON_I D=" 3" EXTERNAL_CUSTOMER_I D=" " LOGI N_REQUI RED=" N"
ENABLE_CALLERI D=" Y" HAS_PPV=" Y" HAS_VOD=" Y" ></ r ow>
<r ow ROW_NUM=" 10" CUSTOMER_I D=" MD11618" CUSTOMER_NAME=" Madat hi l , Seema "
STATUS=" A" ZI PCODE=" 95876" REGI ON_I D=" 2" EXTERNAL_CUSTOMER_I D=" " LOGI N_REQUI RED=" N"
ENABLE_CALLERI D=" Y" HAS_PPV=" Y" HAS_VOD=" Y" ></ r ow>
</ RS1>
<RS2>
<r ow PAGES=" 1" COUNTS=" 10" ></ r ow>
</ RS2>
</ md_cst . get _cust omer _account >
. . .
</ doc>
www.minervanetworks.com 95
iTVManager BackOffice API Technical Reference Customers
md_cst.get_customer_services()
Returns a Customers list of Services.
PROTOCOL
md_cst.get_customer_services ( sessionID, customerID, ?services, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst.get_customer_list():<RS1>.CUSTOMER_ID
The ID of the Customer that youre interested in.
OUTPUT ARGUMENTS
3 services <RS1>
Information about the Customers Services. Each row contains information about a single Service:
NOTE: The three ID attributes are all different values, and are unique within different scopes. Its the scope part
thats importantas listed here, the three ID values are successively smaller scopes.
SUBSCRIBE_SERVICE_ID. The Service Subscription ID. This ID identifies an instance of a
subscription to a Service. In other words, the ID not only identifies a specific Service (such as a
specific Channel Package), it also identifies an instance of that Service having been added to a
Customer. See the introduction to md_cst.set_services_for_customer() on page 104 for more
about Service Subscription IDs.
SERVICE_MENU_ID. The Services Service IDin other words, the ID that identifies the Service across
all Service types.
SERVICE_ID. An ID that identifies the Service within its type. For example, for a Channel Package,
this is a Channel Package ID.
NAME. The Services name.
SERVICE_CODE. A code that denotes the type of Service. For a list of service code values, see Service
Codes.
PRICE. The price of the Service. The PRICE string is given in the Providers decimal format with a
prepended currency symbol.
START_DATE. The date upon which the Service will (or did) start, given in the Providers date format.
NOTE: You cant specify a past date. Specify only the current or a future date.
END_DATE. The date upon which the Service will (or did) end, given in the Providers date format.
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-5 customerID

doesnt identify a Customer.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
96 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . get _cust omer _ser vi ces( ' mySI D' , ' MD11619' , ?, ?i nt
st at us)
Response:
<doc>
<md_cst . get _cust omer _ser vi ces st at us=" 0" >
<RS1>
<r ow SERVI CE_MENU_I D=" 30" SERVI CE_I D=" 7" NAME=" QFT_Req_Pkg2" SERVI CE_CODE=" CHPKG"
PRI CE=" $ 10. 95" START_DATE=" 09/ 10/ 2007" END_DATE=" " SUBSCRI BE_SERVI CE_I D=" 4" ></ r ow>
</ RS1>
</ md_cst . get _cust omer _ser vi ces>
. . .
</ doc>
www.minervanetworks.com 97
iTVManager BackOffice API Technical Reference Customers
md_cst.get_customer_skin()
Returns a list of the Skins that are assigned to the Customers STB Accounts and the Customers Devices.
PROTOCOL
md_cst.get_customer_skin ( sessionID, customerID, ?accountSkins, ?deviceSkins,
?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst.get_customer_list():<RS1>.CUSTOMER_ID
The ID of the Customer that youre interested in.
OUTPUT ARGUMENTS
3 accountSkins <RS1>
Information about the Skins that are associated with the Customers STB Accounts. Each row contains
information about a single Skin:
CUSTOMER_ID. This will always be the same as customerID.
ACCOUNT_ID. The ID of the STB Account.
ACCOUNT_TYPE. "P" if this is a Primary STB Account, otherwise "S" (Secondary).
STATUS. "A" if the STB Account has been enabled, otherwise "I".
BOOT_STREAM_ID. The Skins ID.
SKIN. The name of the Skins Theme.
LANGUAGE. The Skins ISO 639-2 language code.
4 deviceSkins <RS2>
Information about the Skins that are associated with the Customers Devices. Each row contains
information about a single Skin:
CUSTOMER_ID. This will always be the same as customerID
2
DEVICE_ID. The Devices ID.
STATUS. "A" if the Device has been enabled, otherwise "I".
BOOT_STREAM_ID. The Skins ID.
LAST_USED_SKIN. The name of the Theme that was last displayed on the Device.
LAST_USED_LANGUAGE. The ISO 639-2 code of the language that was last displayed on the Device.
5 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 customerID

doesnt identify a Customer.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
98 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . get _cust omer _ski n( ' mySI D' , ' MD11619' , ?, ?i nt
st at us)
Response:
<doc>
<md_cst . get _cust omer _ski n st at us=" 0" >
<RS1>
<r ow CUSTOMER_I D=" MD11619" ACCOUNT_I D=" 11" ACCOUNT_TYPE=" P" STATUS=" A" SKI N_I D=" 1"
THEME=" Swi r l " LANGUAGE=" EN" ></ r ow>
</ RS1>
<RS2>
</ RS2>
</ md_cst . get _cust omer _ski n>
. . .
</ doc>
www.minervanetworks.com 99
iTVManager BackOffice API Technical Reference Customers
m
md_cst.remove_services_from_customer()
Removes one or more Services from a Customers list of Services.
PROTOCOL
md_cst.remove_services_from_customer ( sessionID, customerID, serviceIDs,
?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst.get_customer_list():<RS1>.CUSTOMER_ID
The ID of the Customer that youre interested in.
3 serviceIDs[ 4000] I D|I D md_cst.get_customer_services():<RS1>.SUBSCRIBE_SERVICE_ID.
A list of the Services that you want to remove from the Customer.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-11 customerID

is invalid.
-12 serviceIDs

includes a Service ID that the Customer isnt subscribed to. None of the Services are
removed.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . r emove_ser vi ces_f r om_cust omer ( ' mySI D' , ' MD11619' ,
' 4' , ?i nt st at us)
Response:
<doc>
<md_cst . r emove_ser vi ces_f r om_cust omer st at us=" 0" >
</ md_cst . get _cust omer _ser vi ces>
. . .
</ doc>
100 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
md_cst.set_callerID_for_account()
Enables or disables caller ID for an STB Account.
PROTOCOL
md_cst.set_callerID_for_account ( sessionID, accountID, enableCallerID, ?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *accountID I D md_cst.get_customer_account():<RS2>.ACCOUNT_ID
md_cst.get_customer_account():<RS3>.ACCOUNT_ID
The STB Account ID.
3 *enableCallerID CHAR [ Y| N]
If "Y", caller ID is enabled for this STB Account; if "N", its disabled.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 accountID doesnt identify an STB Account.
-7 enableCallerID

is neither "Y" nor "N".
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . set _cal l er I D_f or _account ( ' mySI D' , ' 11' , ' Y' , ?i nt
st at us)
Response:
<doc>
<md_cst . set _cal l er I D_f or _account st at us=" 0" >
</ md_cst . set _cal l er I D_f or _account >
. . .
</ doc>
www.minervanetworks.com 101
iTVManager BackOffice API Technical Reference Customers
m
md_cst.set_customer_options()
Sets various attributes of a customers account.
PROTOCOL
md_cst.set_customer_options ( sessionID, customerID, show_all_channel,
show_blocked_info, ppv_auto_set_reminder, reminder_period, tv_rating_id,
mpaa_access_level, sex_rating, language_rating, fv_rating, violence_rating,
dialog_rating, block_unrated, channel_blocking, blocked_channel_list,
display_timeout, unlock_timeout, pin_required, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst.get_customer_list():<RS1>.CUSTOMER_ID
The ID of the Customer that youre interested in.
3 show_all_channel CHAR [ Y| N]
(Unused.) If set to Y, unsubscribed channels are shown in the All favorites list. If set to N, they are not
shown.
4 show_blocked_info CHAR [ Y| N]
If set to Y, program information, such as title, description, rating, and so on, is displayed in the STB UI,
even if the program itself is blocked (because of parental controls). If set to N, the string Blocked
Program is displayed wherever the programs information is requested.
5 ppv_auto_set_reminderCHAR [ A|R|N]
Sets the way a PPV program is handled:
If set to A (autotune), the STB automatically tunes into the PPV program when the program begins.
If set to R (reminder), a reminder is displayed the number of seconds specified in field
reminder_period before the program begins.
If set to N (none), no action is taken.
6 reminder_period I NTEGER
When is set to R, specifies the number of seconds the reminder should be display before the program
begins.
7 *tv_rating_id I NTEGER [ 1-6]
Sets the lower bound of blocked TV shows, based on ratings.
8 *mpaa_access_level I NTEGER [ 2-10]
Sets the lower bound of blocked VOD movies, based on ratings.
9 sex_rating CHAR [ Y| N]
If set to Y, TV programs that contain a sex rating is blocked for the customer. If set to N, the same
programs arent blocked.
10 language_rating CHAR [ Y| N]
If set to Y, TV programs that contain a language rating is blocked for the customer. If set to N, the same
programs arent blocked.
11 fv_rating CHAR [ Y| N]
If set to Y, TV programs that contain an FV rating is blocked for the customer. If set to N, the same
programs arent blocked.
102 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
12 violence_rating CHAR [ Y| N]
If set to Y, TV programs that contain a violence rating is blocked for the customer. If set to N, the same
programs arent blocked. If null, the previous setting is unchanged.
13 dialog_rating CHAR [ Y| N]
If set to Y, TV programs that contain a dialog rating is blocked for the customer. If set to N, the same
programs arent blocked.
14 block_unrated CHAR [ Y| N]
If set to Y, TV programs that arent rated are blocked. If set to N, the same programs arent blocked.
15 channel_blocking CHAR [ Y| N]
If set to Y, channels specified in the following field (blocked_channel_list) are blocked for the
customer. If set to N, no channel blocking occurs.
16 blocked_channel_list
If channel_blocking is set to Y, the channel numbers listed in this field are blocked.
The channels in the blocked_channel_list parameter must be space-delimited, for example, 3 4 5
34 145.
Note: No validation is performed on the supplied channels numbers.
17 *display_timeout I NTEGER [ 5-45 ( use a mul t i pl e of 5 i n t hi s r ange) ]
The number of seconds after which the Caller ID panel is automatically removed from the screen on the
STB.
18 *unlock_timeout I NTEGER [ 30 to 1440]
The number of minutes after being unlocked that the Parental Controls are automatically re-locked on the
STB.
19 pin_required CHAR [ Y| N]
If set to Y, the customer must supply a PIN to purchase items. If set to N, the customer doesnt have to
supply a pin.
OUTPUT ARGUMENTS
20 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
www.minervanetworks.com 103
iTVManager BackOffice API Technical Reference Customers
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 Unknown error
-3 customerID

is invalid.
-11 show_all_channel

is invalid.
-12 show_blocked_info

is invalid.
-13 ppv_auto_set_reminder

is invalid.
-14 reminder_period

is invalid.
-15 tv_rating_id

is invalid.
-16 mpaa_access_level

is invalid.
-17 sex_rating

is invalid.
-18 language_rating

is invalid.
-19 fv_rating

is invalid.
-20 violence_rating

is invalid.
-21 dialog_rating

is invalid.
-22 block_unrated

is invalid.
-23 channel_blocking

is invalid.
-24 display_timeout

is invalid.
-25 unlock_timeout

is invalid.
-26 pin_required

is invalid.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / ser ver I P: por t / Xml Po. po?SP=md_cst . set _cust omer _opt i ons( ' mySI D' , ' MD11611' , ' Y' , ' Y' , '
R' , ' 10' , ' 1' , ' 2' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ' ' , ' 15' , ' 1440' , ' Y' , ?i nt st at us)
Response:
<doc>
<md_cst . set _cust omer _opt i ons st at us=" 0" >
</ md_cst . set _cust omer _opt i ons>
. . .
</ doc>
104 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
md_cst.set_services_for_customer()
Modifies a Customers list of Services. You use this procedure to add new Services and to adjust the end time
(but not the start time, as explained below) of existing Services. To remove a Service from Customer call
md_cst.remove_services_from_customer().
One thing that this procedure doesnt do: It wont adjust the start time of a Service thats already in the
Customers list of Services. Thats because the identity of a Service is based on its ID and its start date. If the
start date of an existing Service differs from that of a Service (with the same ID) in the serviceIDs list, then
the two Services are considered to be two different instances and the Service is added (again) to the Customer.
For example, lets say you want the Customer to be subscribed to Service 5 for the first two weeks of each of
three successive months. You can do this by making three calls to set_services_for_customer, something
like this:
set _ser vi ces_f or _cust omer ( . . . , 101, 5, 1/ 1/ 2007, 1/ 15/ 2007) ;
set _ser vi ces_f or _cust omer ( . . . , 101, 5, 2/ 1/ 2007, 2/ 15/ 2007) ;
set _ser vi ces_f or _cust omer ( . . . , 101, 5, 3/ 1/ 2007, 3/ 15/ 2007) ;
The later calls dont override the former calls.
On the other hand, in this sequence of calls...
set _ser vi ces_f or _cust omer ( . . . , 101, 5, 1/ 1/ 2007, 1/ 15/ 2007) ;
set _ser vi ces_f or _cust omer ( . . . , 101, 5, 1/ 1/ 2007, 2/ 15/ 2007) ;
set _ser vi ces_f or _cust omer ( . . . , 101, 5, 1/ 1/ 2007, 3/ 15/ 2007) ;
...the later calls do override the former calls, and the Customer will end up with a single instance of Service 5,
with a subscription that extends from 1/1/2007 to 3/15/2007.
The Service Subscription ID
When you add a Service to a Customer, a new Service Subscription ID is created. To illustrate this concept,
lets return to our original example:
set _ser vi ces_f or _cust omer ( . . . , 101, 5, 1/ 1/ 2007, 1/ 15/ 2007) ;
set _ser vi ces_f or _cust omer ( . . . , 101, 5, 2/ 1/ 2007, 2/ 15/ 2007) ;
set _ser vi ces_f or _cust omer ( . . . , 101, 5, 3/ 1/ 2007, 3/ 15/ 2007) ;
Here, three different Service Subscription IDs are created, one for each of the instance of the Customers
subscription to the Service with ID 101. A Customers Service Subscription IDs are through
md_cst.get_customer_services():<RS1>.SUBSCRIBE_SERVICE_ID.
PROTOCOL
md_cst.set_services_for_customer ( sessionID, customerID, serviceIDs, startDate,
endDate, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst.get_customer_list():<RS1>.CUSTOMER_ID
The ID of the Customer that youre interested in.
3 serviceIDs[ 4000] I D|I D md_srv.get_services():<RS1-RS5>.SERVICE_MENU_ID.
A list of the Services that you want to add to the Customer.
4 #startDate DATE IPTV Providers date format
The date upon which the Services will be enabled. This argument is only required if you pass a
non-empty serviceIDs argument.
www.minervanetworks.com 105
iTVManager BackOffice API Technical Reference Customers
NOTE: You cant specify a past date. Specify only the current or a future date.
5 endDate DATE IPTV Providers date format
The date upon which the Services will be disabled. If you dont provide an endDate value, the Services
are never disabled. The endDate, if provided, must come after the startDate.
OUTPUT ARGUMENTS
6 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-4 Invalid date format in one of the date arguments.
-5 endDate comes before startDate.
-8 startDate is NULL (and serviceIDs isnt empty).
-11 customerID is invalid.
-13 A narrow Channel Package in serviceIDs

isnt in the Customers Lineup.
-14 Invalid Service ID in serviceIDs

.
-17 You supplied a startDate that specifies a Service start date in the future, but serviceIDs
contains a Service that has already started.
-21 serviceIDs doesnt include a Channel Package thats marked as required.
-22 serviceIDs includes too many required Channel Packages.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . set _ser vi ces_f or _cust omer ( ' mySI D' , ' MD11619' , ' 4' ,
' 10/ 01/ 2007' , ' 10/ 12/ 2007' , ?i nt st at us)
Response:
<doc>
<md_cst . set _ser vi ces_f or _cust omer st at us=" 0" >
</ md_cst . set _ser vi ces_f or _cust omer >
. . .
</ doc>
106 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
md_cst.set_skin_for_account()
Sets the Skin for an STB Account. This sets the Theme and Language thats displayed on the STB when the
Customer logs in through that Account. If the Customer doesnt log into the STB (if login isnt required), the
STB displays the skin thats associated with the Device (see md_dev.set_skin_for_device() on page 170).
PROTOCOL
md_cst . set _ski n_f or _account ( sessionID, accountID, skinID, themeName, languageCode,
?i nt st at us)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *accountID I D md_cst.get_customer_account():<RS2>.ACCOUNT_ID
md_cst.get_customer_account():<RS3>.ACCOUNT_ID
The STB Account ID.
3 *skinID I D md_sys.get_skins_for_region():<RS1>.SKIN_ID
The ID of the Skin that you want to assign to the STB Account. The Skin must have already been added
to the Customers Region.
4 *themeName[ 256] STRI NG md_sys.get_skins_for_region():<RS1>.THEME
The name of the Skins theme.
5 *languageCode STRI NG md_sys.get_skins_for_region():<RS1>.LANGUAGES
The ISO language code for this Skin.
OUTPUT ARGUMENTS
6 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 accountID

doesnt identify an STB Account.
-4 skinID

doesnt identify a Skin, or themeName

/languageCode arent part of the Skin.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . set _ski n_f or _account ( ' mySI D' , ' 11' , ' 1' , ' EN' , ' EN' ,
?i nt st at us)
Response:
<doc>
<md_cst . set _ski n_f or _account st at us=" 0" >
</ md_cst . set _ski n_f or _account >
. . .
</ doc>
www.minervanetworks.com 107
iTVManager BackOffice API Technical Reference Customers
md_cst.update_nrep_customer_info()
Adds or replaces NRTC account type (nrep_account_type_id) values and fire occupancy rate (fcoDrops)
values for existing customers.
For more information on this call, see document iTVManager 4.1 Creating NRTC Reports.
PROTOCOL
md_cst . updat e_nr ep_cust omer _i nf o ( sessi onI d, cust omer I d, nr ep_account _t ype_i d,
f coDr ops, ?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID[ 20] STRI NG
The ID of the customer whose NRTC information you want to update.
3 nrep_account_type_id I D
md_sys.get_nrep_acct_type_dictionary():<RS1>.NREP_ACCOUNT_TYPE_ID
The customer account_type_id, which is used in NRTC reports.
4 fcoDrops[ 5] I NTEGER
A number that represents the fire occupancy rate, which is used in NRTC reports.
OUTPUT ARGUMENTS
5 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-3 customerID is invalid.
-25 Invalid account type value
-26 Invalid fcoDrops value
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . updat e_nr ep_cust omer _i nf o( ' mySI D' , ' 3' , ' 4' , ' 49' ,
?i nt p_st at us)
Response:
<doc>
<md_cst . UPDATE_NREP_CUSTOMER_I NFO st at us=" 0" >
</ md_cst . UPDATE_NREP_CUSTOMER_I NFO>
</ doc>
108 www.minervanetworks.com
Customers iTVManager BackOffice API Technical Reference
md_sys.get_nrep_acct_type_dictionary()
Returns available customer account type IDs.
PROTOCOL
md_sys.get_nrep_acct_type_dictionary ( sessionID, ?nrep_account_type_id, ?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
OUTPUT ARGUMENTS
2 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sys. get _nr ep_acct _t ype_di ct i onar y( ' mySI D' ,
?nr ep_account _t ype_i d, ?i nt st at us)
Response:
<doc>
<md_sys. GET_NREP_ACCT_TYPE_DI CTI ONARY st at us=' 0' >
<RS1>
<r ow NREP_ACCOUNT_TYPE_I D=' 1' NREP_ACCOUNT_NAME=' RES' DESCRI PTI ON=' Resi dent i al ' / >
<r ow NREP_ACCOUNT_TYPE_I D=' 2' NREP_ACCOUNT_NAME=' BAR' DESCRI PTI ON=' Bar or Rest aur ant ' / >
<r ow NREP_ACCOUNT_TYPE_I D=' 3' NREP_ACCOUNT_NAME=' BUS' DESCRI PTI ON=' Busi ness or Hot el
Lobby' / >
<r ow NREP_ACCOUNT_TYPE_I D=' 4' NREP_ACCOUNT_NAME=' OFC' DESCRI PTI ON=' Pr i vat e Of f i ce' / >
<r ow NREP_ACCOUNT_TYPE_I D=' 5' NREP_ACCOUNT_NAME=' ARENA' DESCRI PTI ON=' Spor t s Ar ena*' / >
<r ow NREP_ACCOUNT_TYPE_I D=' 6' NREP_ACCOUNT_NAME=' SHOW' DESCRI PTI ON=' Show Room' / >
<r ow NREP_ACCOUNT_TYPE_I D=' 7' NREP_ACCOUNT_NAME=' HOT' DESCRI PTI ON=' Hot el or Mot el ' / >
<r ow NREP_ACCOUNT_TYPE_I D=' 8' NREP_ACCOUNT_NAME=' MDU' DESCRI PTI ON=' Apar t ment ' / >
<r ow NREP_ACCOUNT_TYPE_I D=' 9' NREP_ACCOUNT_NAME=' DORM' DESCRI PTI ON=' Dor mi t or y, Fr at er ni t y,
Sor or i t y' / >
<r ow NREP_ACCOUNT_TYPE_I D=' 10' NREP_ACCOUNT_NAME=' PRI S' DESCRI PTI ON=' Pr i son' / >
<r ow NREP_ACCOUNT_TYPE_I D=' 11' NREP_ACCOUNT_NAME=' FI RE' DESCRI PTI ON=' Fi r ehouse' / >
<r ow NREP_ACCOUNT_TYPE_I D=' 12' NREP_ACCOUNT_NAME=' BOFC' DESCRI PTI ON=' Bul k Of f i ce' / >
<r ow NREP_ACCOUNT_TYPE_I D=' 13' NREP_ACCOUNT_NAME=' HOS' DESCRI PTI ON=' Hospi t al ' / >
</ RS1>
</ md_sys. GET_NREP_ACCT_TYPE_DI CTI ONARY>
</ doc>
www.minervanetworks.com 109
May 2010 iTVManager BackOffice API Technical Reference
Channels
Concepts
A Channel is a container of time-based programs. Within a Channel, programs cant overlap: A Channel can
only carry one program at a time.
The information for a Channels programsa programs name, duration, price (if its a Pay-Per-View
program), and sotypically comes from a set of Electronic Program Guide (EPG) files that you download
from an EPG provider. Thus, you dont have to create the program information yourself. However, you do
have to create your Channels yourself (either through the procedures described here, or through the
BackOffice Console).
If you know how EPG files are constructed, this might seem unnecessarily burdensome since the EPG files
also describe stations, which correspond loosely to iTVManager Channels. However, while EPG stations
are important (as described below), they dont provide enough information to create a usable Channel object.
For most Channels, the two most important pieces of information are the EPG station to which it
corresponds, and the IP address that carries the program content itself. The EPG station is important
Channel Categorization
Channel objects are categorized along three orthogonal axes: Channel Type, Channel Program Source, and
Channel Signal Source.
There are three Channel Types:
Live. A Live Channel is a normal channel that carries free (non-PPV) programming.
Pay Per View. A PPV Channel carries purchasable programming.
EAS. An Emergency Alert System Channel carries emergency alert messages.
IMPORTANT: You can t create EAS Channel s through the BackOffi ce API. To create an EAS Channel , you have
to use the BackOffi ce Channel Management > Channel s modul e.
There are two Channel Program Sources:
EPG. The program information is assembled from the Electronic Program Guide files that are
automatically ingested from an EPG provider (such as Tribune). Keep in mind, as described above, that
Channels are not created when an EPG is ingested. However, before you create your Channels, you must
first ingest the EPG (so you can retrieve the stations that are described in the EPG).
Local. The programs for a Local Channel are read from files you create yourself, as described in the
Creating and Loading "Local" Channels and Programs chapter of the iTVManager 4 Configuration Guides.
There are three Channel Signal Sources:
www.minervanetworks.com 110
iTVManager BackOffice API Technical Reference Channels
IP. The signal is delivered through a multicast IP address.
Analog frequency. The signal is broadcast (in its traditional through-the-air sense) on a particular
frequency. To receive an analog signal, the STB must have an antenna.
URL. The signal is a URL; in other words, the Channel displays a Web page.
Channels Numbers, Lineups, and Channel Packages
A Channel doesnt know its own channel number (the number thats displayed in the EPG on the STB). This
is because the channel number is maintained by the Channels Lineup; the number itself is assigned when the
Channel is added to a Lineup (through md_liv.add_channels_to_lineup(), as described in the Lineups
chapter). The advantage of this is that the same Channel (i.e. Channel ID) can be added to more than one
Lineup, yet appear with a different channel number in each. To retrieve a Channels channel number within a
Lineup, look at the CHANNEL_NUMBER field of get_lineup_dictionary():<RS1>.
An important point to keep in mind, when considering Channels, is that a Channel will only appear in a Lineup
if it has been explicitly added to that Lineup (through add_channels_to_lineup()). We mention this, here,
because you can also add Channels to a Channel Package, and then add the Channel Package to a Lineup. This
sequence (Channel added to Channel Package, Channel Package added to Lineup) might lead you to think that
the Channel has been added to the Lineupit hasnt. If you want the Channels in a particular Channel
Package to appear in a Lineup, you still must invoke add_channels_to_lineup() on those Channels.
Whether you call add_channels_to_lineup() before or after you add the Channel Package to the Lineup
doesnt matter.
Promotional Channels
A PPV Channel can have an associated promotional Channel. The promotional Channel, which must be
Live, provides an alternative signal source thats displayed when the PPV program on the promoted Channel
hasnt be purchased or the Channel is in interstitial time. For example, lets say Channel A (Live) is designated
as the promotional Channel for Channel B (PPV). If the customer tunes into Channel B but hasnt purchased
the current program, the signal from Channel A will be displayed, instead. The STB doesnt actually switch
Channelsit remains tuned into Channel Bit simply uses the signal source from Channel A and displays it
on Channel B.
Similarly, if a PPV Channel is in interstitial times (the dead time between programs), the signal from the
promotional Channel is displayed.
Procedure Summary
md_liv.get_live_dictionary() returns information thats used to create a Live Channel.
md_liv.add_live_channel() creates a Live Channel.
md_liv.delete_live_channel() deletes a Live Channel.
md_liv.editLiveChannel2() modifies the attributes of a Live Channel.
md_liv.get_ppv_dictionary() returns information thats used to create a PPV Channel
md_liv.add_ppv_channel() creates a PPV Channel.
md_liv.editPpvChannel2() modifies the attributes of a PPV Channel.
md_liv.delppvchannel2() deletes a PPV Channel.
www.minervanetworks.com 111
iTVManager BackOffice API Technical Reference Channels
md_liv.enable_channels() and md_liv.disable_channels() let you toggle the visibility of a
Channel within a Lineup.
md_liv.edit_channel_cas_settings() Sets the CAS key rotation period, the CAS service period,
CA encryption, and macrovision values for the specified channel.
md_liv.edit_channel_in_lineup() lets you change the start date and channel number of a Channel.
md_liv.get_channel_list() returns information about the Channels in the system.
Procedure Specifications
md_liv.add_live_channel()
IMPORTANT: Thi s procedure wi l l fai l i f i t s i nvoked whi l e the EPG i s bei ng i ngested.
Creates a new Live Channel and assigns it a unique Channel ID. The ID is returned as the status value.
Channel IDs are unique across all channel types (Live, PPV, and EAS).
For most Channels, the most important argument (pair) is ipAddressID/ipPortID. Its through these
arguments that you assign a multicast address to the Channel. Alternatively, you can use the
isAnalog/analogChannel arguments to create a Channel that corresponds to an analog broadcast frequency.
(To receive an analog broadcast, the STB must have an analog antenna.)
Also important is the stationID argument: It identifies the program information, in an EPG, that this
Channel corresponds to. Although most Channels are created this way, you can also create a local Channel or a
URL Channel, neither of which correspond to ingested EPG information:
The information for a local Channel doesnt come from a commercially-distributed EPG but, instead, is
created and loaded by hand after the Channel has been created. (Loading local Channel information is
described elsewhere.) To create a local Channel, pass NULL as the stationID and URL

arguments.
A URL Channel acts as a portal to a Web page. To create a URL Channel, you supply the URL in the
URL and pass NULL as the stationID argument.
PROTOCOL
md_liv.add_live_channel ( sessionID, unused, channelName, ipAddressID, ipPortID,
channelStatus, unused, stationID, movieRatingID, tvRatingID, posterID, hasSex,
hasViolence, hasLanguage, hasDialog, hasFantasyViolence, callSign, URL, isAdult,
isPromoChannel, unused, unused, unused, ignoreEAS, isAnalog, analogChannel,
isEncrypted, isHighDef, isMPEG4, isAudio, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 unused
3 *channelName[ 80] STRI NG
The full name that you want to assign to the Channel. Channel names neednt be unique. Note that the
full name is different from the (shorter) call sign, which is assigned through the callSign argument.
4 #ipAddressID I D md_liv.get_live_dictionary:<RS1>.IP_ADDRESS_ID
www.minervanetworks.com 112
iTVManager BackOffice API Technical Reference Channels
5 #ipPortID I D md_liv.get_live_dictionary:<RS2>.IP_PORT_ID
The ID of the multicast IP address and port you want to assign to the Channel. The IP address/port is
ignored (and isnt required) if this is an analog channel (isAnalog is 'Y') or a URL channel (URL isnt
empty).
6 channelStatus CHAR [ A| I]
The Channels initial status given as a single character: 'A' for active (or enabled) and 'I' for inactive (or
disabled). You can also enable and disable channels through the enable_channels() and
disable_channels() procedures. If you dont supply a channel status value, the Channel is
automatically enabled ('A') .
7 unused
8 stationID I D md_liv.get_live_dictionary:<RS6>.STATION_NUM
The ID of the station that this Channel corresponds to. When an EPG is ingested, the program data for
the station identified by this argument is read into this Channel. If you dont supply a station ID value or
a URL value, the Channel will be considered local. The program information for a Local Channel is
created and loaded through a separate process, described elsewhere. Valid station IDs are greater than 0.
If you supply a stationID value, you mustnt supply a URL value.
9 movieRatingID I D md_liv.get_live_dictionary:<RS3>.ASSET_RATING_ID
The ID of the movie rating code you want to assign to this Channel. The movie rating can be used by
Parental Controls mechanism (on the STB) to block certain channels.
10 tvRatingID I D md_liv.get_live_dictionary:<RS4>.TV_RATING_ID
The ID of the TV rating code you want to assign to this Channel. The TV rating can be used by Parental
Controls mechanism (on the STB) to block certain channels.
11 posterID I D md_liv.get_live_dictionary:<RS5>.IMAGE_ID
The ID of the image that will be associated with this Channel. Channel posters arent currently displayed
in the STB UI.
12 hasSex CHAR [ Y| N]
13 hasViolence CHAR [ Y| N]
14 hasLanguage CHAR [ Y| N]
15 hasDialog CHAR [ Y| N]
16 hasFantasyViolence CHAR [ Y| N]
More Parental Control settings. These are all boolean values ('Y' or 'N') that indicate whether the
Channel should be tagged as containing the corresponding (potentially undesirable) attribute.
17 callSign[ 20] STRI NG
The call sign (short channel name) thats assigned to this Channel. Although the call sign isnt required,
you probably dont want to exclude it. Call signs neednt be unique.
18 URL[ 512] STRI NG
The full URL address of a Web site to which this Channel acts as a portal. If you supply a URL value, you
mustnt supply a stationID value, nor can you specify this as an audio Channel (isAudio).
19 isAdult CHAR [ Y| N]
Set this to 'Y' if this Channel is Adult . The default is 'N'.
20 isPromoChannel CHAR [ Y| N]
Set this to 'Y' if you want this Channel to act as a promotional channel. In order for this Channel to
actually function as a promotional channel, a PPV Channel (the promoted channel) must ask for the
assignment through the promoChannelID argument to md_liv.add_ppv_channel() or
md_liv.editPpvChannel2(). The default is 'N'.
For more on promotional Channels, see the Promotional Channels section in Concepts, above.
21 unused
www.minervanetworks.com 113
iTVManager BackOffice API Technical Reference Channels
22 unused
23 unused
24 ignoreEAS CHAR [ Y| N]
Set this to 'Y' if you want this Channel to ignore EAS warnings. The default is 'N'.
25 isAnalog CHAR [ Y| N]
Set this to 'Y' if this Channel corresponds to an airwave broadcast channel. You set the broadcast
frequency through the next argument, analogChannel. Analog channels ignore the ipAddressID and
ipPortID values; however, an analog Channel should have a correspondence to an EPG stationin
other words, the stationID value is not ignored for an analog Channel. The default is 'N'.
26 analogChannel CHAR [ Y| N]
The airwave broadcast channel number thats used if this is an analog Channel. This argument is ignored
if isAnalog isnt set to 'Y'.
27 isEncrypted CHAR [ Y| N]
Set this to 'Y' if the Channels signal is encrypted. The default is 'N'.
28 isHighDef CHAR [ Y| N]
Set this to 'Y' if this Channel carries a High-Definition signal. The default is 'N'.
29 isMPEG4 CHAR [ Y| N]
Set this to 'Y' if this Channel carries an MPEG4 signal. The default is 'N'.
30 isAudio CHAR [ Y| N]
Set this to 'Y' if this is an audio Channel (i.e. audio only). Audio Channels cant be carried by Web portal
stations; if you set isAudio to 'Y', URL must be empty. The default is 'N'.
OUTPUT ARGUMENTS
31 status I NTEGER
If successful, status is set to the new Channel ID. If the procedure fails, status is set to a value
described in STATUS VALUES.
STATUS VALUES
>0 The new Channel ID number.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 The EPG is being updated.
-4 stationID

doesnt identify a valid station.
-5 You supplied a stationID

and a URL

value. (You mustnt supply both.)
-6 ipAddressID

isnt a recognized IP address (and this isnt an analog Channel).
-8 ipPortID

isnt a recognized IP port (and this isnt an analog Channel).
-10 You asked for an audio Channel (isAudio

=

'Y'), but URL

isnt empty.
-11 isAdult doesnt contain a valid value (neither 'Y' nor 'N')
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
www.minervanetworks.com 114
iTVManager BackOffice API Technical Reference Channels
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. add_l i ve_channel ( ' mySI D' , ' ' , ' MSNBC3' , ' 12' , ' 1' , ' A
' , ' - 1' , ' 16300' , ' 5' , ' 3' , ' - 1' , ' N' , ' N' , ' N' , ' N' , ' N' , ' MSNBC3' , ' ' , ' - 1' , ' N' , ' ' , ' ' , ' ' , ' N' , ' N' , ' '
, ' N' , ' N' , ' N' , ' N' , ?i nt st at us)
Response:
<doc>
<md_l i v. add_l i ve_channel =" 43" >
</ md_l i v. add_l i ve_channel >
. . .
</ doc>
www.minervanetworks.com 115
iTVManager BackOffice API Technical Reference Channels
www.minervanetworks.com 116
iTVManager BackOffice API Technical Reference Channels
md_liv.add_ppv_channel()
IMPORTANT: Thi s procedure wi l l fai l i f i t s i nvoked whi l e the EPG i s bei ng i ngested.
Creates a new Pay Per View (PPV) Channel and assigns it a unique Channel ID number. The ID is returned as
the status value. Channel IDs are unique across all channel types (Live, PPV, and EAS).
The procedure is much like add_live_channel(), but for these differences:
PPV Channels cant be analog.
A PPV Channel has a price.
A PPV Channel cant be used as a promotional channel.
PPV Preview and Impulse Buys
A PPV Channel can be set to offer a preview of its programs. There are two arguments related to PPV
previews:
The previewDuration

is the amount of time (in minutes) that the viewer is allowed to watch an
unpurchased PPV program.
The previewMode

determines when the preview clock starts ticking. In fixed mode, the preview is
available only during the beginning of a program. In floating mode, the preview can be viewed at any point
during a program. In either case, the clock cant be paused once it starts ticking.
Somewhat related to the preview feature is the impulse buy duration:
The impulseDuration is the time window, after the start of a program, during which the customer can
still purchase that program.
PPV Types
There are three types of PPV Channels: Normal (PPV), Pay Per Block (PPB), and All Day Movie Ticket (ADMT).
In a normal PPV Channel, programs are purchased individually. The price of the Channel (ppvPrice) is
used the default for programs that dont name their own price.
Pay Per Block (PPB) lets a customer purchase blocks of viewing time, rather than individual programs. You
create a PPB Channel by setting (as non-NULL) the values of the ppbDuration and ppbPrice arguments.
When you set these two arguments (and you must set both of them for either to be valid), the ppvPrice
and impulseDuration

arguments are ignored.
All Day Movie Ticket (ADMT) is similar to PPB in that it lets a customer purchase a block of viewing time
(an entire day, in this case). However, whereas you can create a PPB Channel, you cant create an ADMT
Channel. Instead, the ADMT designation must be part of the ingested EPG data. You can, however
ignore the ADMT designation by setting ignoreADMT to '1'. If you ignore the designation, the Channel
reverts to normal PPV.
www.minervanetworks.com 117
iTVManager BackOffice API Technical Reference Channels
PROTOCOL
md_liv.add_ppv_channel ( sessionID, channelName, ipAddressID, ipPortID,
channelStatus, stationID, movieRatingID, tvRatingID, posterID, hasSex, hasViolence,
hasLanguage, hasDialog, hasFantasyViolence, callSign, URL, promoChannelID,
ignoreEAS, isEncrypted, isHighDef, isMPEG4, isAudio, previewDuration, previewMode,
impulseDuration, isAdult, ppvPrice, ignoreADMT, ppbDuration, ppbPrice, ?int status
)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelName[ 80] STRI NG
The full name that you want to assign to the Channel. Channel names neednt be unique. Note that the
full name is different from the (shorter) call sign, which is assigned through the callSign argument.
3 #ipAddressID I D md_liv.get_live_dictionary:<RS1>.IP_ADDRESS_ID
4 #ipPortID I D md_liv.get_live_dictionary:<RS2>.IP_PORT_ID
These two arguments are the IDs of the multicast IP address and port you want to assign to the Channel.
The IP address/port is ignored (and isnt required) if this is an analog channel (see the analogChannel
argument).
5 channelStatus CHAR [ A| I]
The Channels initial status given as a single character: 'A' for active (or enabled) and 'I' for inactive (or
disabled). You can also enable and disable channels through the enable_channels() and
disable_channels() procedures. If you dont supply a channel status value, the Channel is
automatically enabled ('A') .
6 stationID I D md_liv.get_live_dictionary:<RS6>.STATION_NUM
The ID of the station that this Channel corresponds to. When an EPG is ingested, the program data for
the station identified by this argument is read into this Channel. If you dont supply a station ID value or
a URL value, the Channel will be considered local. The program information for a Local Channel is
created and loaded through a separate process, described elsewhere. Valid station IDs are greater than 0.
If you supply a stationID value, you mustnt supply a URL value.
7 movieRatingID I D md_liv.get_live_dictionary:<RS3>.ASSET_RATING_ID
The ID of the movie rating code you want to assign to this Channel. The movie rating can be used by
Parental Controls mechanism (on the STB) to block certain channels.
8 tvRatingID I D md_liv.get_live_dictionary:<RS4>.TV_RATING_ID
The ID of the TV rating code you want to assign to this Channel. The TV rating can be used by Parental
Controls mechanism (on the STB) to block certain channels.
9 posterID I D md_liv.get_live_dictionary:<RS5>.IMAGE_ID
The ID of the image that will be associated with this Channel. Channel posters arent currently displayed
in the STB UI.
10 hasSex CHAR [ Y| N]
11 hasViolence CHAR [ Y| N]
12 hasLanguage CHAR [ Y| N]
13 hasDialog CHAR [ Y| N]
14 hasFantasyViolence CHAR [ Y| N]
More Parental Control settings. These are all boolean values ('Y' or 'N') that indicate whether the
Channel should be tagged as containing the corresponding (potentially undesirable) attribute.
15 callSign[ 20] STRI NG
The call sign (short channel name) thats assigned to this Channel. Although the call sign isnt required,
you probably dont want to exclude it. Call signs neednt be unique.
www.minervanetworks.com 118
iTVManager BackOffice API Technical Reference Channels
16 URL[ 512] STRI NG
The full URL address of a Web site to which this Channel acts as a portal. If you supply a URL value, you
mustnt supply a stationID value, nor can you specify this as an audio Channel (isAudio).
17 promoChannelID I D
The ID of the Channel that acts as a promotional channel for this Channel.
For more on promotional Channels, see the Promotional Channels section in Concepts, above.
18 ignoreEAS CHAR [ Y| N]
Set this to 'Y' if you want this Channel to ignore EAS warnings. The default is 'N'; depending on your
regions laws, it may be illegal to ignore EAS warnings.
19 isEncrypted CHAR [ Y| N]
Set this to 'Y' if the Channels signal is encrypted. The default is 'N'.
20 isHighDef CHAR [ Y| N]
Set this to 'Y' if this Channel carries a High-Definition signal. The default is 'N'.
21 isMPEG4 CHAR [ Y| N]
Set this to 'Y' if this Channel carries an MPEG4 signal. The default is 'N'.
22 isAudio CHAR [ Y| N]
Set this to 'Y' if this is an audio Channel (i.e. audio only). Audio Channels cant be carried by Web portal
stations; if you set isAudio to 'Y', URL must be empty. The default is 'N'.
23 previewDuration STRI NG 'mmmm'
24 previewMode I NTEGER [0|1]
previewDuration is the amount of time, in minutes, that the user is allowed to watch the preview
material. If previewMode is '0' (fixed mode), the preview duration clock starts ticking at the beginning
of a program; if '1' (floating mode), it starts ticking when the customer switches to the PPV Channel.
25 impulseDuration STRI NG 'mmmm'
The amount of time, in minutes, after the beginning of a program during which the customer is allowed
to purchase the program. Note that the impulse duration is separate from the preview duration. Impulse
duration doesnt apply to PPB Channels.
26 isAdult CHAR [ Y| N]
Set this to 'Y' if this Channel is Adult . The default is 'N'.
27 ppvPrice PRI CE IPTV Providers decimal format
The default price for a PPV program or ADMT block. This doesnt apply to PPB: The price of a PPB
block is set through the ppbPrice argument.
28 ignoreADMT I NTEGER [0|1]
If set to '0', the ADMT designation is respected; if set to '1', the designation is ignored and programs
must be purchased individually.
29 ppbDuration STRI NG 'mmmm'
The duration, in minutes, of a single PPB block.
30 ppbPrice PRI CE IPTV Providers decimal format
The price of a PPB block.
OUTPUT ARGUMENTS
31 status I NTEGER
If successful, status is set to the new Channel ID. If the procedure fails, status is set to a value
described in STATUS VALUES.
www.minervanetworks.com 119
iTVManager BackOffice API Technical Reference Channels
STATUS VALUES
>0 The new Channel ID number.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 The EPG is being updated.
-4 stationID

doesnt identify a valid station.
-5 You supplied a stationID

and a URL

value. (You mustnt supply both.)
-6 ipAddressID

isnt a recognized IP address (and this isnt an analog Channel).
-8 ipPortID

isnt a recognized IP port (and this isnt an analog Channel).
-10 You asked for an audio Channel (isAudio

=

'Y'), but URL

isnt empty.
-11 isAdult doesnt contain a valid value (neither 'Y' nor 'N')
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. add_ppv_channel ( ' mySI D' , ' Spor t s
PPV' , 12, 2, ' A' , 22016, 1, 0, ' ' , ' N' , ' N' , ' N' , ' N' , ' N' , ' N' , ' ESPNPPV1' , ' ' , ' ' , ' N' , ' Y' , ' Y' , ' N' , ' N' ,
' 30' , ' 0' , ' 600' , ' N' , ' 4. 99' , ' Y' , ' ' , ' ' , ?i nt st at us)
Response:
<doc>
<md_l i v. add_ppv_channel =" 44" >
</ md_l i v. add_ppv_channel >
. . .
</ doc>
www.minervanetworks.com 120
iTVManager BackOffice API Technical Reference Channels
www.minervanetworks.com 121
iTVManager BackOffice API Technical Reference Channels
www.minervanetworks.com 122
iTVManager BackOffice API Technical Reference Channels
md_liv.delete_live_channel()
Deletes a Live Channel.
PROTOCOL
md_liv.delete_live_channel ( sessionID, channelID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelID I D md_liv.get_channel_list:<RS1>.CHANNEL_ID
The ID of the Channel that you want to delete.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-N For all other negative values, call md_cdk.get_error() for details.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. del et e_l i ve_channel ( ' mySI D' , ' 43' , ?i nt st at us)
Response:
<doc>
<md_l i v. del et e_l i ve_channel =" 0" >
</ md_l i v. del et e_l i ve_channel >
. . .
</ doc>
www.minervanetworks.com 123
iTVManager BackOffice API Technical Reference Channels
www.minervanetworks.com 124
iTVManager BackOffice API Technical Reference Channels
md_liv.delppvchannel2()
Deletes a PPV Channel.
PROTOCOL
md_liv.delppvchannel2 ( sessionID, channelID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelID I D md_liv.get_channel_list:<RS1>.CHANNEL_ID
The ID of the Channel that you want to delete.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-N For all other negative values, call md_cdk.get_error() for details.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. del ppvchannel 2( ' mySI D' , ' 44' , ?i nt st at us)
Response:
<doc>
<md_l i v. del ppvchannel 2=" 0" >
</ md_l i v. del ppvchannel 2>
. . .
</ doc>
www.minervanetworks.com 125
iTVManager BackOffice API Technical Reference Channels
www.minervanetworks.com 126
iTVManager BackOffice API Technical Reference Channels
md_liv.disable_channels()
Immediately disables a set of Channels within a Lineup or Channel Package.
PROTOCOL
md_liv.disable_channels ( sessionID, channelIDs, containerID, containerType,
?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 channelIDs I D|I D md_liv.get_channel_list:<RS1>.CHANNEL_ID
The list of Channel IDs. If channelIDs is NULL, then all of the Channels in the container (Lineup or
Channel Package) are disabled.
3 *containerID I D md_liv.get_lineups():<RS1>.LineupID
md_srv.get_channel_packages():<RS1>.CHANNEL_PKG_ID
The ID of the Lineup or Channel Package that the Channels are part of. Only those Channels (from the
channelIDs argument) that are contained in containerID are disabled. Channels that arent part of the
container are ignored (they arent disabled).
4 *containerType STRI NG [ LINEUP| CHPKG]
The type of Channel container: Either 'LINEUP' or 'CHPKG'.
OUTPUT ARGUMENTS
5 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 No valid channels were found, either because channelIDs doesnt contain any Channels that are
part of containerID, or channelIDs is NULL and containerID doesnt contain any Channels.
-4 containerType or containerID

is missing or invalid
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. di sabl e_channel s( ' mySI D' , ' 15| 16' , ' 3001' , ' LI NEUP'
, ?i nt st at us)
Response:
<doc>
<md_l i v. di sabl e_channel s=" 0" >
</ md_l i v. di sabl e_channel s>
. . .
</ doc>
www.minervanetworks.com 127
iTVManager BackOffice API Technical Reference Channels
www.minervanetworks.com 128
iTVManager BackOffice API Technical Reference Channels
md_liv.edit_channel_cas_settings()
Sets the CAS key rotation period, the CAS service period, CA encryption, and macrovision values for the
specified channel.
md_liv.edit_channel_cas_settings ( sessionID, channelID, cas_key_rotation_period,
cas_service_period, encrypt, macrovision, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelID I D md_liv.get_channel_list:<RS1>.CHANNEL_ID
The ID of the Channel that you want to edit.
3 cas_key_rotation_periodI D I NTEGER
(Widevine environments only.) The frequency, in weeks, with which the Conditional Access decryption
key for this PPV or Live channel is changed. (Occasional key changes help prevent unauthorized access.)
Key rotation only applies to dynamic keys. If youre using a fixed key, this field has no effect.
If you leave the field blank, the key is never changed.
NOTE: - You cant change the key rotation period setting by editing the channel settings of a previously
added channel. Instead, to reset a key rotation period, you must remove the channel and then
re-add it, setting the new key rotation period in the process.

- If you enable customer key rotation (by specifying a non-blank value for field), it is possible that
recordings made by a subscriber are no longer viewable if, subsequent to the recordings, a key
rotation occurs. Therefore, Minerva recommends that if you use key rotation, dont set it up when
adding individual Live channels. Otherwise, customers might become confused if they find they can
play recordings of some Live channels but not others. Instead, set up Key Rotation when you create
the packages to which the channels belong.
4 cas_service_period I D I NTEGER
The CAS service period in days.
NOTE: Leave this field blank. Instead, set the Service Period for (all) Live and PPV channels, respectively,
by setting the default_live_cas_service_period parameter in the Configuring Conditional
Access chapter of the iTVManager Configuration Guides.
5 encrypt CHAR [ Y| N]
If set to Y, the channels signal is encrypted through a Conditional Access system. If set to N, it is not.
6 macrovision CHAR [ Y| N]
If set to Y, and if encrypt is also set to Y, the channel cant be recorded on the STBs DVR. Otherwise, it
can be recorded. (Macrovision is an additional layer of access control that prevents entitled (and, thus,
decrypted) content from being recorded.)
OUTPUT ARGUMENTS
7 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
www.minervanetworks.com 129
iTVManager BackOffice API Technical Reference Channels
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 Unknown error.
-3 channel_pkg_id is invalid.
-15 cas_key_rotation_period is invalid
-16 cas_service_period is invalid.
-17 encrypt is invalid.
-18 macrovision is invalid.
EXAMPLE
Call:
ht t p: / / ser ver I P: por t / Xml Po. po?SP=md_l i v. edi t _channel _cas_set t i ngs( @sessi onI d,
12, ' ' , ' ' , ' ' , ' ' , ?i nt st at us)
Response:
<doc>
<md_l i v. edi t _channel _cas_set t i ngs st at us=" 0" >
</ md_l i v. edi t _channel _cas_set t i ngs>
. . .
</ doc>
www.minervanetworks.com 130
iTVManager BackOffice API Technical Reference Channels
md_liv.edit_channel_in_lineup()
This procedure lets you assign a start date to a Channel and change the Channels channel number. The
Channel must have already been added to a Lineup.
PROTOCOL
md_liv.edit_channel_in_lineup ( sessionID, lineupID, channelID, startDate,
channelNumber, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *lineupID I D md_liv.get_lineups():<RS1>.LineupID
The ID of the Lineup to which the Channel belongs.
3 *channelID I D md_liv.get_channel_list:<RS1>.CHANNEL_ID
The ID of the Channel that you want to edit.
4 startDate DATE IPTV Providers date format
The date when the Channel will be made available to customers. If startDate is NULL or in the past, the
Channel is immediately enabled.
5 *channelNumber I NTEGER md_liv.get_lineup_dictionary:<RS3>.CHANNEL_NUM
The channel number that will be assigned to this Channel. The number mustnt already be assigned to
another Channel within the Lineup.
OUTPUT ARGUMENTS
6 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 lineupID

doesnt identify a Lineup.
-5 channelID doesnt identify a Channel within lineupID

.
-6 channelNumber

is NULL or already being used by a Channel in this Lineup.
-9 startDate

format is unrecognizable.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. edi t _channel _i n_l i neup( ' mySI D' , ' 3001' , ' 1004' , ' 27
/ 02/ 2007' , ' 3' , ?i nt st at us)
Response:
<doc>
<md_l i v. edi t _channel _i n_l i neup=" 0" >
</ md_l i v. edi t _channel _i n_l i neup>
. . .
</ doc>
www.minervanetworks.com 131
iTVManager BackOffice API Technical Reference Channels
www.minervanetworks.com 132
iTVManager BackOffice API Technical Reference Channels
md_liv.editLiveChannel2()
Modifies the attributes of a Channel. Note that you cant modify the correspondence between a Channel and
its source station (which was set through md_liv.add_live_channel()s stationID argument).
IMPORTANT: Thi s procedure modi fi es al l of the attri butes that correspond to the i nput arguments. If you onl y
want to change a subset of the attri butes, you have to retri eve and pass i n the current val ues of the
attri butes that you don t want to change.
PROTOCOL
md_liv.editLiveChannel2 ( sessionID, channelID, unused, channelName, ipAddressID,
ipPortID, channelStatus, unused, movieRatingID, tvRatingID, posterID, hasSex,
hasViolence, hasLanguage, hasDialog, hasFantasyViolence, callSign, URL, isAdult,
isPromoChannel, unused, unused, unused, ignoreEAS, isAnalog, analogChannel,
isEncrypted, isHighDef, isMPEG4, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelID I D md_liv.get_channel_list:<RS1>.CHANNEL_ID
The ID of the Channel that you want to edit.
NOTE: See md_liv.add_live_channel() for descriptions of the rest of the input arguments.
3 unused
4 *channelName[ 80] STRI NG
5 #ipAddressID I D md_liv.get_live_dictionary:<RS1>.IP_ADDRESS_ID
6 #ipPortID I D md_liv.get_live_dictionary:<RS2>.IP_PORT_ID
IMPORTANT: If the Channel i s encrypted and you re usi ng a dynami c encrypti on key, you mustn t change the
Channel s IP address or port. If you need to change the IP or port, you have to del ete the Channel
and then re-add i t.
7 channelStatus CHAR [ A| I]
8 unused
9 movieRatingID I D md_liv.get_live_dictionary:<RS3>.ASSET_RATING_ID
10 tvRatingID I D md_liv.get_live_dictionary:<RS4>.TV_RATING_ID
11 posterID I D md_liv.get_live_dictionary:<RS5>.IMAGE_ID
12 hasSex CHAR [ Y| N]
13 hasViolence CHAR [ Y| N]
14 hasLanguage CHAR [ Y| N]
15 hasDialog CHAR [ Y| N]
16 hasFantasyViolence CHAR [ Y| N]
17 callSign[ 20] STRI NG
18 URL[ 512] STRI NG
19 isAdult CHAR [ Y| N]
20 isPromoChannel CHAR [ Y| N]
21 unused
22 unused
23 unused
24 ignoreEAS CHAR [ Y| N]
25 isAnalog CHAR [ Y| N]
26 analogChannel CHAR [ Y| N]
27 isEncrypted CHAR [ Y| N]
28 isHighDef CHAR [ Y| N]
www.minervanetworks.com 133
iTVManager BackOffice API Technical Reference Channels
29 isMPEG4 CHAR [ Y| N]
OUTPUT ARGUMENTS
30 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 channelID is invalid.
-4 The EPG is currently being ingested.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. edi t Li veChannel 2( ' mySI D' , ' 43' , ' ' , ' MSNBC3' , ' 12' , '
1' , ' A' , ' ' , ' 16300' , ' 5' , ' 3' , ' N' , ' N' , ' N' , ' N' , ' N' , ' MSNBC3' , ' ' , ' N' , ' N' , ' ' , ' ' , ' ' , ' N' , ' N' , ' ' , ' N
' , ' N' , ' N' , ?i nt st at us)
Response:
<doc>
<md_l i v. edi t Li veChannel 2=" 0" >
</ md_l i v. edi t Li veChannel 2>
. . .
</ doc>
www.minervanetworks.com 134
iTVManager BackOffice API Technical Reference Channels
cb
www.minervanetworks.com 135
iTVManager BackOffice API Technical Reference Channels
md_liv.editPpvChannel2()
Modifies the attributes of a PPV Channel. Note that you cant modify the correspondence between a Channel
and its source station (which was set through md_liv.add_ppv_channel()s stationID argument).
IMPORTANT: Thi s procedure modi fi es al l of the attri butes that correspond to the i nput arguments. If you onl y
want to change a subset of the attri butes, you have to retri eve and pass i n the current val ues of the
attri butes that you don t want to change.
PROTOCOL
md_liv.editPpvChannel2 ( sessionID, channelID, unused, channelName, ipAddressID,
ipPortID, channelStatus, movieRatingID, tvRatingID, posterID, hasSex, hasViolence,
hasLanguage, hasDialog, hasFantasyViolence, promoChannelID, previewDuration,
impulseDuration, URL, isAdult, callSign, ignoreEAS, ppvPrice, previewMode,
ignoreADMT, isEncrypted, isHighDef, isMPEG4, ppbDuration, ppbPrice, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelID I D md_liv.get_channel_list:<RS1>.CHANNEL_ID
The ID of the Channel that you want to edit.
3 unused
NOTE: See md_liv.add_ppv_channel() for descriptions of the rest of the input arguments.
4 channelName[ 80] STRI NG
5 #ipAddressID I D md_liv.get_ppv_dictionary:<RS1>.IP_ADDRESS_ID
6 #ipPortID I D md_liv.get_ppv_dictionary:<RS2>.IP_PORT_ID
IMPORTANT: If the Channel i s encrypted and you re usi ng a dynami c encrypti on key, you mustn t change the
Channel s IP address or port. If you need to change the IP or port, you have to del ete the Channel
and then re-add i t.
7 channelStatus CHAR [ A| I]
8 movieRatingID I D md_liv.get_ppv_dictionary:<RS3>.ASSET_RATING_ID
9 tvRatingID I D md_liv.get_ppv_dictionary:<RS4>.TV_RATING_ID
10 posterID I D md_liv.get_ppv_dictionary:<RS5>.IMAGE_ID
11 hasSex CHAR [ Y| N]
12 hasViolence CHAR [ Y| N]
13 hasLanguage CHAR [ Y| N]
14 hasDialog CHAR [ Y| N]
15 hasFantasyViolence CHAR [ Y| N]
16 promoChannelID I D
17 previewDuration STRI NG 'mmmm'
18 impulseDuration STRI NG 'mmmm'
19 URL[ 512] STRI NG
20 isAdult CHAR [ Y| N]
21 callSign[ 20] STRI NG
22 ignoreEAS CHAR [ Y| N]
23 ppvPrice PRICE IPTV Providers decimal format
24 previewMode I NTEGER [ 0| 1]
25 ignoreADMT I NTEGER [ 0| 1]
26 isEncrypted CHAR [ Y| N]
27 isHighDef CHAR [ Y| N]
www.minervanetworks.com 136
iTVManager BackOffice API Technical Reference Channels
28 isMPEG4 CHAR [ Y| N]
29 ppbDuration STRI NG 'mmmm'
30 ppbPrice PRICE IPTV Providers decimal format
OUTPUT ARGUMENTS
31 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 channelID

is invalid.
-4 The EPG is currently being ingested.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. edi t PpvChannel 2( ' mySI D' , ' 44' , ' ' , ' Spor t s
PPV' , 12, 2, ' A' , 1, 0, ' ' , ' N' , ' N' , ' N' , ' N' , ' N' , ' ' , ' ' , ' ' , ' N' , ' Y' , ' ESPNPPV1' , ' N' , ' 4. 99' , ' 30' , ' Y'
, ' N' , ' Y' , ' N' , ' 600' , ' ' , ?i nt st at us)
Response:
<doc>
<md_l i v. edi t PpvChannel 2=" 0" >
</ md_l i v. edi t PpvChannel 2>
. . .
</ doc>
www.minervanetworks.com 137
iTVManager BackOffice API Technical Reference Channels
www.minervanetworks.com 138
iTVManager BackOffice API Technical Reference Channels
md_liv.enable_channels()
Sets the date upon which a set of Channels, within a Lineup or Channel Package, will be enabled.
PROTOCOL
md_liv.enable_channels ( sessionID, channelIDs, containerID, containerType,
startDate, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 channelIDs I D|I D
The list of Channel IDs. If channelIDs is NULL, then all of the Channels in the container (Lineup or
Channel Package) are enabled.
3 *containerID I D md_liv.get_lineups():<RS1>.LineupID
md_srv.get_channel_packages():<RS1>.CHANNEL_PKG_ID
The ID of the Lineup or Channel Package that the Channels are part of. Only those Channels (from the
channelIDs argument) that are contained in containerID are disabled. Channels that arent part of the
container are ignored (they arent disabled).
4 *containerType STRI NG [ LINEUP| CHPKG]
The type of Channel container: Either 'LINEUP' or 'CHPKG'.
5 startDate DATE IPTV Providers date format
The date upon which the Channels will be enabled. If startDate is NULL or in the past, the Channels are
immediately enabled.
OUTPUT ARGUMENTS
6 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 No valid channels were found, either because channelIDs doesnt contain any Channels that are
part of containerID, or channelIDs is NULL and containerID doesnt contain any Channels.
-4 containerType or containerID

is missing or invalid
-5 startDate

is invalid.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. enabl e_channel s( ' mySI D' , ' 15| 16' , ' 3001' , ' LI NEUP' ,
?i nt st at us)
Response:
<doc>
<md_l i v. enabl e_channel s=" 0" >
</ md_l i v. enabl e_channel s>
. . .
</ doc>
www.minervanetworks.com 139
iTVManager BackOffice API Technical Reference Channels
www.minervanetworks.com 140
iTVManager BackOffice API Technical Reference Channels
md_liv.get_channel_list()
Returns the Channels that fulfill a search criterion. For a description of the search mechanism, see
md_dev.get_device_list() in the Devices chapter.
In addition to returning a list of Channels, this procedure is also used to retrieve information about a specific
Channel. For example, lets say youve retrieved a list of Channel ID values from
md_srv.get_channel_package_info(); to retrieve more information about the Channels, youd pass each
ID (chanID) into get_channel_list() thus:
md_dev. get _channel _l i st ( . . . , ' LI VE' , 1, chanID, ' Y' , 1, 1, ?, ?, ?i nt st at us ) ;
NOTE: Were assuming, in this example, that the Channel is Live (not PPV or EAS). If youre not sure about the
Channels type, youll have to call the procedure once for each type.
PROTOCOL
md_liv.get_channel_list ( sessionID, type, searchAttribute, searchValue, exact Mat ch,
pageNumber, entriesPerPage, ?channelList, ?channelCount, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *type STRI NG
A pre-defined string that identifies the type of Channel. It must be one of 'LIVE', 'PPV', or 'EAS'.
3 *searchAttribute I NTEGER [ 1- 4]
An integer constant that represents the Channel attribute that the searchValue will be compared to:
1 = Channel ID
2 = Channel name
3 = Call sign
4 = Multicast IP address
If searchAttribute is invalid, status will report success (0), although the output arguments wont be
defined.
4 searchValue[ 20] STRI NG
The value thats used in the attribute comparison. An empty searchValue is treated as a wildcard (all
Channels are returned).
5 exactMatch CHAR [ Y| N]
If 'Y' the attribute value must match the searchValue exactly (include case-sensitivity); if 'N', the
attribute needs only to contain the searchValue as a case-insensitive substring.
6 *pageNumber I NTEGER >=1
7 *entriesPerPage I NTEGER >=1
The list of found Channels is divided into pages, where each page contains entriesPerPage Channels.
The pageNumber argument lets you select the page that you want to look at; page numbers start at 1.
Also see the channelCount output argument.
OUTPUT ARGUMENTS
8 channelList <RS1>
The set of found Channels, given as a series of rows, where each row represents a single Channel:
CHANNEL_ID. The Channel ID.
CHANNEL_NAME. The Channels name.
www.minervanetworks.com 141
iTVManager BackOffice API Technical Reference Channels
STATION_NUM. The Channels channel number.
CALL_SIGN. The Channels call sign.
IP_ADDRESS. The Channels multicast IP address.
IP_PORT. The Channels multicast IP port.
STATION_TYPE. The Channels station type. (Promotion or Sports Pack channel.)
9 channelCount <RS2>
Channel and page counts, given as a single row of named values. The names are:
PAGES. The number of pages of Channels, where each page describes entriesPerPage Channels.
COUNTS. The total number of Channels (across all pages) that were found.
10 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 pageNumber

exceeds the actual number of pages.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. get _channel _l i st ( ' mySI D' , ' LI VE' , ' 1' , ' ' , ' N' , 1, 100
0, ?, ?, ?i nt st at us)
Response:
<doc>
<md_l i v. get _channel _l i st st at us=" 0" >
<RS1>
<r ow ROWNUM=" 1" CHANNEL_I D=" 10" CHANNEL_NAME=" Hi st or y I nt er nat i onal "
STATI ON_NUM=" 18822" CALL_SI GN=" HI SI " I P_ADDRESS=" 239. 255. 1. 108" I P_PORT=" 3001" ></ r ow>
<r ow ROWNUM=" 2" CHANNEL_I D=" 11" CHANNEL_NAME=" Bi ogr aphy On Demand"
STATI ON_NUM=" 31595" CALL_SI GN=" BI ODM" I P_ADDRESS=" 239. 255. 1. 109" I P_PORT=" 3001" ></ r ow>
<r ow ROWNUM=" 3" CHANNEL_I D=" 12" CHANNEL_NAME=" A &amp; E Net wor k"
STATI ON_NUM=" 10035" CALL_SI GN=" AETV" I P_ADDRESS=" 239. 255. 1. 110" I P_PORT=" 3001" ></ r ow>
<r ow ROWNUM=" 4" CHANNEL_I D=" 17" CHANNEL_NAME=" HDNet " STATI ON_NUM=" 28506"
CALL_SI GN=" HDNET" I P_ADDRESS=" 239. 255. 1. 111" I P_PORT=" 3001" ></ r ow>
<r ow ROWNUM=" 5" CHANNEL_I D=" 18" CHANNEL_NAME=" HDNet Movi es" STATI ON_NUM=" 33668"
CALL_SI GN=" HDNETMV" I P_ADDRESS=" 239. 255. 1. 21" I P_PORT=" 3001" ></ r ow>
<r ow ROWNUM=" 6" CHANNEL_I D=" 19" CHANNEL_NAME=" HDTV Speci al Event s"
STATI ON_NUM=" 33673" CALL_SI GN=" HDTVSE" I P_ADDRESS=" 239. 255. 1. 22" I P_PORT=" 3001" ></ r ow>
<r ow ROWNUM=" 7" CHANNEL_I D=" 20" CHANNEL_NAME=" HD News" STATI ON_NUM=" 34366"
CALL_SI GN=" HDNEWS" I P_ADDRESS=" 239. 255. 1. 23" I P_PORT=" 3001" ></ r ow>
<r ow ROWNUM=" 8" CHANNEL_I D=" 3" CHANNEL_NAME=" MSNBC" STATI ON_NUM=" 16300"
CALL_SI GN=" MSNBC" I P_ADDRESS=" 239. 255. 1. 101" I P_PORT=" 3001" ></ r ow>
<r ow ROWNUM=" 9" CHANNEL_I D=" 4" CHANNEL_NAME=" Cour t TV" STATI ON_NUM=" 10153"
CALL_SI GN=" COURT" I P_ADDRESS=" 239. 255. 1. 102" I P_PORT=" 3001" ></ r ow>
<r ow ROWNUM=" 10" CHANNEL_I D=" 44" CHANNEL_NAME=" MSNBC3" STATI ON_NUM=" 16300"
CALL_SI GN=" MSNBC" I P_ADDRESS=" 239. 255. 1. 12" I P_PORT=" 3001" ></ r ow>
<r ow ROWNUM=" 11" CHANNEL_I D=" 5" CHANNEL_NAME=" STARZ On Demand" STATI ON_NUM=" 31578"
CALL_SI GN=" STARZDM" I P_ADDRESS=" 239. 255. 1. 103" I P_PORT=" 3001" ></ r ow>
</ RS1>
<RS2>
<r ow PAGES=" 1" COUNTS=" 11" ></ r ow>
</ RS2>
www.minervanetworks.com 142
iTVManager BackOffice API Technical Reference Channels
</ md_l i v. get _channel _l i st >
. . .
</ doc>
www.minervanetworks.com 143
iTVManager BackOffice API Technical Reference Channels
www.minervanetworks.com 144
iTVManager BackOffice API Technical Reference Channels
md_liv.get_live_dictionary()
Retrieves information that you use to create or edit a Live Channel.
PROTOCOL
md_liv.get_live_dictionary( sessionID, stationNameSearch, ipAddressSearch,
maxRowCount, ?ipAddresses, ?ipPorts, ?movieRatings, ?tvRatings, ?posters,
?availableStations, ?usedStations, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 stationNameSearch STRI NG
Filters the rows that are returned in availableStations and usedStations. Only those station that
have names that contain stationNameSearch as a case-insensitive substring are returned.
3 ipAddressSearch STRI NG
Filters the rows that are returned in ipAddresses. Only those IP addresses that contain
ipAddressSearch as a substring are returned. The ipAddressSearch value can be any part of an IP
address construction, but is mostly like one or more dot-separated IP triplets; as examples: '192',
'192.168', '192.168.0'.
4 *maxRowCount I NTEGER >=1
Sets a numeric limit on the number of rows that are returned in the ipAddresses, availableStations,
and usedStations output arguments.
OUTPUT ARGUMENTS
5 ipAddresses <RS1>
The set of available IP addresses. The rows are filtered by the ipAddressSearch string, and the number
of rows is limited to maxRowCount. Each row contains:
IP_ADDRESS_ID. A unique ID for the IP address.
ADDRESS. The IP address and host name, given as " IP_ADDRESS(HOST_NAME)" .
6 ipPorts <RS2>
The set of available IP ports. Each row contains:
IP_PORT_ID. A unique ID for the IP port.
IP_PORT. The port number.
7 movieRatings <RS3>
The set of movie rating values. Each row contains:
ASSET_RATING_ID. The ratings ID.
ASSET_RATING. The ratings STB display string.
8 tvRatings <RS4>
The TV ratings that are defined for the system. Each row contains:
TV_RATING_ID. The ratings ID.
TV_RATING. The ratings STB display string.
9 posters <RS5>
The posters that can be associated with a Channel.
IMAGE_ID. The posters ID.
IMAGE_NAME. The posters name.
www.minervanetworks.com 145
iTVManager BackOffice API Technical Reference Channels
IMPORTANT: Channel posters aren t currentl y di spl ayed i n the STB UI.
10 availableStations <RS6>
The set of stations that havent been assigned to Channels. The rows are filtered by the
stationNameSearch string, and the number of rows is limited to maxRowCount. Each row contains:
STATION_NUM. This is the value you pass as the stationID argument to
md_liv.add_live_channel() or md_liv.add_ppv_channel().
STATION_NAME. The stations name.
STATION_CALL_SIGN. The stations call sign.
STATION_AFFIL. Ignore this field.
11 usedStations <RS7>
The set of stations that have already been assigned to Channels. The rows are filtered by the
stationNameSearch string, and the number of rows is limited to maxRowCount. Each row contains:
STATION_NUM. The ID of the real-world station for this Channel.
STATION_NAME. The stations name.
STATION_CALL_SIGN. The stations call sign.
STATION_AFFIL. Ignore this field.
12 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 maxChannelCount

is less than or equal to zero.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. get _l i ve_di ct i onar y( ' mySI D' , ' ' , ' ' , 1000, ?, ?, ?, ?, ?
, ?, ?, ?i nt st at us)
Response:
<doc>
<md_l i v. get _l i ve_di ct i onar y st at us=" 0" >
<RS1>
<r ow I P_ADDRESS_I D=" 12" ADDRESS=" 209. 255. 1. 12( VC8000) " ></ r ow>
</ RS1>
<RS2>
<r ow I P_PORT_I D=" 1" I P_PORT=" 3001" ></ r ow>
<r ow I P_PORT_I D=" 2" I P_PORT=" 2000" ></ r ow>
<r ow I P_PORT_I D=" 3" I P_PORT=" 2001" ></ r ow>
<r ow I P_PORT_I D=" 4" I P_PORT=" 2002" ></ r ow>
</ RS2>
<RS3>
<r ow ASSET_RATI NG_I D=" 1" ASSET_RATI NG=" NR" ></ r ow>
<r ow ASSET_RATI NG_I D=" 2" ASSET_RATI NG=" G" ></ r ow>
<r ow ASSET_RATI NG_I D=" 3" ASSET_RATI NG=" PG" ></ r ow>
<r ow ASSET_RATI NG_I D=" 4" ASSET_RATI NG=" PG- 13" ></ r ow>
<r ow ASSET_RATI NG_I D=" 5" ASSET_RATI NG=" R" ></ r ow>
<r ow ASSET_RATI NG_I D=" 6" ASSET_RATI NG=" NC- 17" ></ r ow>
<r ow ASSET_RATI NG_I D=" 7" ASSET_RATI NG=" AO" ></ r ow>
www.minervanetworks.com 146
iTVManager BackOffice API Technical Reference Channels
<r ow ASSET_RATI NG_I D=" 8" ASSET_RATI NG=" X" ></ r ow>
<r ow ASSET_RATI NG_I D=" 9" ASSET_RATI NG=" XX" ></ r ow>
<r ow ASSET_RATI NG_I D=" 10" ASSET_RATI NG=" XXX" ></ r ow>
</ RS3>
<RS4>
<r ow TV_RATI NG_I D=" 0" TV_RATI NG=" NR" ></ r ow>
<r ow TV_RATI NG_I D=" 1" TV_RATI NG=" TVY" ></ r ow>
<r ow TV_RATI NG_I D=" 2" TV_RATI NG=" TVY7" ></ r ow>
<r ow TV_RATI NG_I D=" 3" TV_RATI NG=" TVG" ></ r ow>
<r ow TV_RATI NG_I D=" 4" TV_RATI NG=" TVPG" ></ r ow>
<r ow TV_RATI NG_I D=" 5" TV_RATI NG=" TV14" ></ r ow>
<r ow TV_RATI NG_I D=" 6" TV_RATI NG=" TVMA" ></ r ow>
</ RS4>
<RS5>
<r ow I MAGE_I D=" - 1" I MAGE_NAME=" No i mage sel ect ed" ></ r ow>
</ RS5>
<RS6>
<r ow STATI ON_NUM=" 10002" STATI ON_NAME=" 3 Angel s Br oadcast i ng Net wor k"
STATI ON_CALL_SI GN=" 3ANGELS" STATI ON_AFFI L=" Sat el l i t e" STATI ON_TI ME_ZONE=" Cent r al D. S. "
></ r ow>
<r ow STATI ON_NUM=" 10021" STATI ON_NAME=" AMC" STATI ON_CALL_SI GN=" AMC"
STATI ON_AFFI L=" Sat el l i t e" STATI ON_TI ME_ZONE=" East er n D. S. " ></ r ow>
<r ow STATI ON_NUM=" 10032" STATI ON_NAME=" Communi que- I nst r uct i onal Tel evi si on Cent "
STATI ON_CALL_SI GN=" ARCH" STATI ON_AFFI L=" Educat i onal " STATI ON_TI ME_ZONE=" East er n D. S. "
></ r ow>
<r ow STATI ON_NUM=" 10047" STATI ON_NAME=" BALOCA" STATI ON_CALL_SI GN=" BALOCA"
STATI ON_AFFI L=" Cabl ecast " STATI ON_TI ME_ZONE=" East er n D. S. " ></ r ow>
</ RS6>
<RS7>
<r ow STATI ON_NUM=" 10035" STATI ON_NAME=" A &amp; E Net wor k" STATI ON_CALL_SI GN=" AETV"
STATI ON_AFFI L=" Sat el l i t e" STATI ON_TI ME_ZONE=" East er n D. S. " ></ r ow>
<r ow STATI ON_NUM=" 10139" STATI ON_NAME=" CNBC" STATI ON_CALL_SI GN=" CNBC"
STATI ON_AFFI L=" Sat el l i t e" STATI ON_TI ME_ZONE=" East er n D. S. " ></ r ow>
<r ow STATI ON_NUM=" 10153" STATI ON_NAME=" Cour t TV" STATI ON_CALL_SI GN=" COURT"
STATI ON_AFFI L=" Sat el l i t e" STATI ON_TI ME_ZONE=" East er n D. S. " ></ r ow>
<r ow STATI ON_NUM=" 16300" STATI ON_NAME=" MSNBC" STATI ON_CALL_SI GN=" MSNBC"
STATI ON_AFFI L=" Sat el l i t e" STATI ON_TI ME_ZONE=" East er n D. S. " ></ r ow>
</ RS7>
</ md_l i v. get _l i ve_di ct i onar y>
. . .
</ doc>
www.minervanetworks.com 147
iTVManager BackOffice API Technical Reference Channels
www.minervanetworks.com 148
iTVManager BackOffice API Technical Reference Channels
md_liv.get_ppv_dictionary()
Retrieves information that you use to create or edit a PPV Channel.
PROTOCOL
md_liv.get_ppv_dictionary( sessionID, stationNameSearch, ipAddressSearch,
maxChannelCount, ?ipAddresses, ?ipPorts, ?movieRatingCodes, ?tvRatingCodes,
?posters, ?availableStations, ?usedStations, ?promoChannels, ?previewModes,
?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
NOTE: See md_liv.get_live_dictionary() for descriptions of the rest of the input arguments.
2 stationNameSearch[ 20] STRI NG
3 ipAddressSearch STRI NG
4 maxChannelCount I NTEGER
OUTPUT ARGUMENTS
NOTE: See md_liv.get_live_dictionary() for descriptions of the first seven output arguments.
5 ipAddresses <RS1>
6 ipPorts <RS2>
7 movieRatingCodes <RS3>
8 tvRatingCodes <RS4>
9 posters <RS5>
10 newStations <RS6>
11 usedStations <RS7>
12 promoChannels <RS8>
The set of Channels that can act as promotional channels. Each row contains:
CHANNEL_ID.
CHANNEL_NAME. The name of the Channel in the form "channelNum:channelName"; for example:
"1:GOVERNMENT ACCESS"
13 previewModes <RS9>
A list of the (hard-coded) preview modes. Each row contains:
PREVIEW_MODE. The numeric constant that represents the mode.
DESCRIPTION. A description of the mode.
14 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 maxChannelCount

is less than or equal to zero.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
www.minervanetworks.com 149
iTVManager BackOffice API Technical Reference Channels
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. get _ppv_di ct i onar y( ' mySI D' , ' ' , ' ' , 10, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?i nt %20st at us)
Response:
<doc>
md_l i v. get _ppv_di ct i onar y st at us=" 0" >
<RS1>
</ RS1>
<RS2>
<r ow I P_PORT_I D=" 1" I P_PORT=" 3001" ></ r ow>
<r ow I P_PORT_I D=" 2" I P_PORT=" 2000" ></ r ow>
<r ow I P_PORT_I D=" 3" I P_PORT=" 2001" ></ r ow>
<r ow I P_PORT_I D=" 4" I P_PORT=" 2002" ></ r ow>
</ RS2>
<RS3>
<r ow ASSET_RATI NG_I D=" 1" ASSET_RATI NG=" NR" ></ r ow>
<r ow ASSET_RATI NG_I D=" 2" ASSET_RATI NG=" G" ></ r ow>
<r ow ASSET_RATI NG_I D=" 3" ASSET_RATI NG=" PG" ></ r ow>
<r ow ASSET_RATI NG_I D=" 4" ASSET_RATI NG=" PG- 13" ></ r ow>
<r ow ASSET_RATI NG_I D=" 5" ASSET_RATI NG=" R" ></ r ow>
<r ow ASSET_RATI NG_I D=" 6" ASSET_RATI NG=" NC- 17" ></ r ow>
<r ow ASSET_RATI NG_I D=" 7" ASSET_RATI NG=" AO" ></ r ow>
<r ow ASSET_RATI NG_I D=" 8" ASSET_RATI NG=" X" ></ r ow>
<r ow ASSET_RATI NG_I D=" 9" ASSET_RATI NG=" XX" ></ r ow>
<r ow ASSET_RATI NG_I D=" 10" ASSET_RATI NG=" XXX" ></ r ow>
</ RS3>
<RS4>
<r ow TV_RATI NG_I D=" 0" TV_RATI NG=" NR" ></ r ow>
<r ow TV_RATI NG_I D=" 1" TV_RATI NG=" TVY" ></ r ow>
<r ow TV_RATI NG_I D=" 2" TV_RATI NG=" TVY7" ></ r ow>
<r ow TV_RATI NG_I D=" 3" TV_RATI NG=" TVG" ></ r ow>
<r ow TV_RATI NG_I D=" 4" TV_RATI NG=" TVPG" ></ r ow>
<r ow TV_RATI NG_I D=" 5" TV_RATI NG=" TV14" ></ r ow>
<r ow TV_RATI NG_I D=" 6" TV_RATI NG=" TVMA" ></ r ow>
</ RS4>
<RS5>
</ RS5>
<RS6>
<r ow STATI ON_NUM=" 10120" STATI ON_NAME=" Ci neMAX" STATI ON_CALL_SI GN=" MAX"
STATI ON_AFFI L=" PAY" STATI ON_TI ME_ZONE=" East er n D. S. " ></ r ow>
<r ow STATI ON_NUM=" 10121" STATI ON_NAME=" Mor eMAX" STATI ON_CALL_SI GN=" MOMAX"
STATI ON_AFFI L=" PAY" STATI ON_TI ME_ZONE=" East er n D. S. " ></ r ow>
<r ow STATI ON_NUM=" 10178" STATI ON_NAME=" ENCORE - Encor e"
STATI ON_CALL_SI GN=" ENCORE" STATI ON_AFFI L=" PAY" STATI ON_TI ME_ZONE=" East er n D. S. " ></ r ow>
<r ow STATI ON_NUM=" 10201" STATI ON_NAME=" Fl i x" STATI ON_CALL_SI GN=" FLI X"
STATI ON_AFFI L=" PAY" STATI ON_TI ME_ZONE=" East er n D. S. " ></ r ow>
<r ow STATI ON_NUM=" 10240" STATI ON_NAME=" Home Box Of f i ce" STATI ON_CALL_SI GN=" HBO"
STATI ON_AFFI L=" PAY" STATI ON_TI ME_ZONE=" East er n D. S. " ></ r ow>
</ RS6>
<RS7>
<r ow STATI ON_NUM=" 22016" STATI ON_NAME=" PPV - PPV001" STATI ON_CALL_SI GN=" PPV001"
STATI ON_AFFI L=" Local Pay- Per - Vi ew" STATI ON_TI ME_ZONE=" East er n D. S. " ></ r ow>
</ RS7>
<RS8>
</ RS8>
<RS9>
<r ow PREVI EW_MODE=" 0" DESCRI PTI ON=" Fi xed" ></ r ow>
<r ow PREVI EW_MODE=" 1" DESCRI PTI ON=" Rel at i ve" ></ r ow>
</ RS9>
</ md_l i v. get _ppv_di ct i onar y>
. . .
</ doc>
www.minervanetworks.com 150
iTVManager BackOffice API Technical Reference Channels
www.minervanetworks.com 151
May 2010 iTVManager BackOffice API Technical Reference
Devices
Concepts
The device functions let you add new database entries that correspond to physical STBs (or, potentially, other
devices), assign devices to customers, retrieve a list of devices, and so on. A device entry comprises:
A unique Device ID. The ID is generated and assigned when the Device is created.
Hardware identifiers: MAC address, serial number, model number, and SmartCard number.
Software version strings for the devices firmware, operating system, and Think application.
Network identifiers: the devices IP address and port, whether the IP address is static or assigned through
DHCP, and the port of the switch through which the device is connected to the network.
A unique registration number that associates the device with a customer and a set of STB capabilities,
such as whether the device is allowed to accept HD or record broadcast TV.
The devices current customer assignment status (assigned or unassigned).
The date and time at which the device was (or will be) activated and the date and time at which it was (or
will be) deactivated, and the devices current activation status.
The devices capabilitiesdoes it support High Definition?, is it a PVR device?, whats the maximum
number of video streams its allowed to open?, and so on.
Device Assignment
In order to be used, a Device must be assigned to a Customer. You can assign Devices to Customers through
the md_dev.assign_device() procedure (or through the BackOffice Console), or you can let the Devices
assign themselves when theyre first booted. In the latter case (called autoprovisioning), the customer is
asked to enter an authentication code in the Authentication Panel thats displayed when the STB is first booted.
If you want to use autoprovisioning, you have to flip the autoprovisioning switch and select the type of
authentication code that the customer will have to enter. This is explained in the System Setup > Business Rules
chapter of the iTVManager 4 BackOffice Console Reference.
If you need to redeploy a device that has previously been autoprovisioned, you must set the Devices MAC
address and IP address to NULL.
Procedure Summary
md_dev.get_device_dictionary() returns information thats used to create a Device.
md_dev.add_device() creates a new Device and adds it to the database.
md_dev.delete_device() removes a Device from the database.
md_dev.edit_device() modifies the Devices attributes.
md_dev.set_callerID_for_device() enables Caller ID on the Device.
152 www.minervanetworks.com
Devices iTVManager BackOffice API Technical Reference
md_dev.set_skin_for_device() sets the Devices Theme and Language.
md_dev.assign_device() assigns a Device to a Customer, or schedules the Device to be enabled or
disabled.
md_dev.unassign_device() removes the association between a Device and a Customer.
md_dev.get_device_list() retrieves a filtered list of Devices.
md_dev.get_unassigned_devices() lists the Devices that havent been assigned to a Customer.
md_dev.get_device_info() returns information about a specific Device.
md_dev.schedule_to_reboot() tells the Device to reboot itself.
www.minervanetworks.com 153
iTVManager BackOffice API Technical Reference Devices
Procedure Specifications
md_dev.add_device()
Creates a new Device and assigns it a unique Device ID number. The ID is returned as the status value. If
you supply a customerID

value, the Device is assigned to that Customer.
PROTOCOL
md_dev.add_device ( sessionID, customerID, registrationNumber, serialNumber,
macAddress, ipAddress, ipPort, switchPort, stbModel, initialStatus, startDate,
startTime, endDate, endTime, smartCardNum, useDHCP, streamCount, hasHD, hasPLT,
hasPVR, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 customerID I D md_cst.get_customer_list():<RS1>.CUSTOMER_ID
The ID of the Customer that you want to assign the Device to.
3 registrationNumber[ 80] STRI NG
Arbitrary registration string. The registration number (if used) must be unique across all Devices.
4 serialNumber[ 80] STRI NG
Arbitrary STB serial number string. The serial number (if used) must be unique across all Devices.
5 macAddress[ 80] STRI NG
The STBs MAC address. The MAC address (if used) must be unique across all Devices.
6 ipAddress[ 64] STRI NG
The STBs IP address. If ipAddress is NULL, its assumed that the device will get its IP address from
DHCP. The IP address, if used, must be unique across all Devices.
IMPORTANT: If you need to redepl oy an STB that has previ ousl y been autoprovi si oned, you must set the
Devi ce s MAC address and IP address to NULL.
7 ipPort I NTEGER
The STBs IP port.
8 switchPort I NTEGER
The port of the switch through which the device connects to the network (if any).
9 stbModel[ 80] STRI NG
The STBs hardware model name.
10 initialStatus I NTEGER [ 1| 3| 5]
An integer that controls the initial status of the Device:
1 The Device is disabled. (This is the default.)
3 The Device is enabled.
5 The Device is scheduled to be enabled and disabled as given by the next four arguments. If the start
time is in the past, the Device is immediately enabled. If the end time is in the past, the disable
arguments are ignored.
11 startDate DATE IPTV Providers date format
12 startTime TI ME IPTV Providers time format
13 endDate DATE IPTV Providers date format
154 www.minervanetworks.com
Devices iTVManager BackOffice API Technical Reference
14 endTime TI ME IPTV Providers time format
See initialStatus=5. If the startDate/startTime are NULL or in the past, the Device is immediately
enabled.
15 smartCardNum[ 80] STRI NG
The STBs SmartCard ID number, if any. The SmartCard ID number (if used) must be unique across all
Devices.
16 useDHCP CHAR [ Y| N]
'Y' if you want the device to use DHCP for its IP address, otherwise 'N'.
17 streamCount I NTEGER
The number of simultaneous video streams the STB can (or is allowed to) accept.
18 hasHD CHAR [ Y| N]
'Y' if the device support High Definition signals, otherwise 'N'.
19 hasPLT CHAR [ Y| N]
'Y' if the device supports Pause Live TV (PLT), otherwise 'N'. Note that PLT, despite the name, applies
to Live and PPV Channels.
20 hasPVR CHAR [ Y| N]
'Y' if the device has a Personal Video Recorder, otherwise 'N'.
OUTPUT ARGUMENTS
21 status I NTEGER
If successful, status is set to the new Device ID. If the procedure fails, status is set to a value
described in STATUS VALUES.
STATUS VALUES
If the addition is successful, status returns the new Device ID; otherwise, status is set to one of these
values:
>0 The new Device ID number.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 registrationNumber

, serialNumber

, macAddress

, ipAddress

, or smartCardNum

isnt unique
across all Devices.
-5 The start time comes after the end time.
-6 startDate

, startTime

, endDate

, or endTime

is in the wrong format.
-7 customerID

is invalid.
-8 macAddress

is invalid.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_dev. add_devi ce( ' mySI D' , ' ' , ' REG002568' , ' ' , ' ' , ' ' , ' ' , ' '
, ' ' , ' 5' , ' 06/ 01/ 2007' , ' ' , ' 10/ 12/ 2007' , ' ' , ' ' , ' N' , ' 2' , ' N' , ' N' , ' N' , ?i nt st at us)
Response:
<doc>
<md_dev. add_devi ce st at us=" 0" >
</ md_dev. add_devi ce>
. . .
</ doc>
www.minervanetworks.com 155
iTVManager BackOffice API Technical Reference Devices
md_dev.assign_device()
Assigns a Device to a Customer. You can also use this procedure to enable or disable the Device without
switching Customers.
PROTOCOL
md_dev.assign_device ( sessionID, deviceID, customerID, enablementMode, startDate,
startTime, endDate, endTime, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *deviceID I D md_dev.get_device_list():<RS1>.DEVICE_ID
The ID of the Device that you want to assign.
3 customerID I D md_cst.get_customer_list():<RS1>.CUSTOMER_ID
The ID of the Customer that you want to assign the Device to.
4 *enablementMode I NTEGER
An integer that controls the way the Device is enabled and disabled:
1 The Device is immediately disabled. The rest of the input arguments are ignored.
2 The Device is immediately enabled, and is scheduled to be disabled as specified by the
endDate/endTime arguments. If the end time has already passed, the Device is immediately disabled.
At least one of the endDate and endTime arguments must be supplied.
3 The Device is immediately enabled. The rest of the input arguments are ignored.
4 The Device is immediately disabled, and is scheduled to be enabled as specified by the
startDate/startTime arguments. If the arguments indicate a time that has already passed, the
Device is immediately enabled. At least one of the startDate and startTime arguments must be
supplied.
5 The Device is scheduled to be enabled and disabled as given by the rest of the arguments. If the start
time is in the past, the Device is immediately disabled. If the end time is in the past or is earlier than
the start time, the end time arguments are ignored. At least one of the startDate and startTime
arguments, and at least one of the endDate and endTime arguments must be supplied.
7 The device is disabled, and its startDate and/or endDate isnt set.
5 #startDate DATE IPTV Providers date format
6 #startTime TI ME IPTV Providers time format
7 #endDate DATE IPTV Providers date format
8 #endTime TI ME IPTV Providers time format
The utility and necessity of these arguments depends on the enablementMode value. If you dont supply
a startDate or endDate, the default is todays date. If you dont supply a startTime or endTime, the
default is midnight plus epsilon (i.e. the first moment of the day).
OUTPUT ARGUMENTS
9 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
156 www.minervanetworks.com
Devices iTVManager BackOffice API Technical Reference
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-5 Invalid deviceID

value.
-6 Invalid customerID

value.
-7 Invalid enablementMode

value.
-8 One of the required date or time arguments is invalid.
-9 enablementMode

is 5, and both startDate

and startTime

are NULL.
-10 enablementMode

is 5, and both endDate

and endTime

are NULL.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_dev. assi gn_devi ce( ' mySI D' , ' 61' , ' MD11619' , ' 1' , ' ' , ' ' , '
' , ' ' , ?i nt st at us)
Response:
<doc>
<md_dev. assi gn_devi ce st at us=" 0" >
</ md_dev. assi gn_devi ce>
. . .
</ doc>
www.minervanetworks.com 157
iTVManager BackOffice API Technical Reference Devices
md_dev.delete_device()
Removes a Device from the system.
PROTOCOL
md_dev.delete_device ( sessionID, deviceID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *deviceID I D md_dev.get_device_list():<RS1>.DEVICE_ID
The ID of the Device that you want to delete.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-5 Invalid deviceID

value.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_dev. del et e_devi ce( ' mySI D' , ' 61' , ?i nt st at us)
Response:
<doc>
<md_dev. del et e_devi ce st at us=" 0" >
</ md_dev. del et e_devi ce>
. . .
</ doc>
158 www.minervanetworks.com
Devices iTVManager BackOffice API Technical Reference
md_dev.edit_device()
Modifies a Devices attributes.
IMPORTANT: If your Condi ti onal Access system uses dynami c encrypti on keys, you mustn t change the Devi ce s
MAC address. If you need to change the MAC address, you have to del ete the Devi ce and then
re-add i t.
IMPORTANT: A devi ce i s deacti vated i f one or more of the fol l owi ng i s true:

1. DHCP was acti vated and you set the useDHCP fl ag to N .
2. DHCP was deacti vated and you set the useDHCP fl ag to Y .
3. useDHCP i s Y and you are changi ng the macAddress.
4. useDHCP i s Y and you are setti ng the i pAddress to a bl ank val ue.
5. useDHCP i s N and you are changi ng the i pAddress.
IMPORTANT: Thi s procedure modi fi es al l of the attri butes that correspond to the i nput arguments. If you onl y
want to change a subset of the attri butes, you have to retri eve and pass i n the current val ues of the
attri butes that you don t want to change.
PROTOCOL
md_dev.edit_device ( sessionID, deviceID, registrationNumber, serialNumber,
macAddress, ipAddress, ipPort, switchPort, stbModel, smartCardNum,
useDHCP, streamCount, hasHD, hasPLT, hasPVR, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *deviceID I D md_dev.get_device_list():<RS1>.DEVICE_ID
The ID of the Device that you want to edit.
NOTE: See md_dev.add_device() for descriptions of the rest of the input arguments:
3 registrationNumber[ 80] STRI NG
4 serialNumber[ 80] STRI NG
5 macAddress[ 80] STRI NG
6 ipAddress[ 64] STRI NG
7 ipPort I NTEGER
8 switchPort I NTEGER
9 stbModel[ 80] STRI NG
10 smartCardNum[ 80] STRI NG
11 useDHCP[ 80] CHAR [ Y| N]
12 streamCount I NTEGER
13 hasHD CHAR [ Y| N]
14 hasPLT CHAR [ Y| N]
15 hasPVR CHAR [ Y| N]
OUTPUT ARGUMENTS
16 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
www.minervanetworks.com 159
iTVManager BackOffice API Technical Reference Devices
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 registrationNumber , serialNumber

, macAddress

, ipAddress

, or smartCardNum

isnt
unique across all Devices.
-5 deviceID

is invalid.
-8 macAddress

is invalid.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_dev. edi t _devi ce( ' mySI D' , ' 61' , ' REG- 001' , ' xxx' , ' ' , ' ' , '
' , ' ' , ' ' , ' ' , ' N' , ' 2' , ' Y' , ' Y' , ' N' , ?i nt st at us)
Response:
<doc>
<md_dev. edi t _devi ce st at us=" 0" >
</ md_dev. edi t _devi ce>
. . .
</ doc>
160 www.minervanetworks.com
Devices iTVManager BackOffice API Technical Reference
md_dev.get_device_info()
Returns all the information thats known about a device. As a convenience, the procedure also returns
information about the customer to whom the device is assigned, and a list of the other Devices that are
assigned to that customer.
PROTOCOL
md_dev.get_device_info ( sessionID, deviceID, ?deviceInfo, ?customerInfo,
?deviceList, ?deviceCapabilities, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *deviceID I D md_dev.get_device_list():<RS1>.DEVICE_ID
The Device ID of the device for which you want information.
OUTPUT ARGUMENTS
3 deviceInfo <RS1>
Device information, given as a single row of attributes:
DEVICE_ID. The Device ID value.
SERIAL. The devices serial number.
MAC_ADDRESS. The devices MAC address.
IP_ADDRESS. The devices (current) IP address.
PORT. The devices IP port.
SWITCH_PORT_ID. The port of the switch through which the device connects to the network (if any).
MODEL_NUMBER. The devices (hardware) model.
STATUS. The devices activation status: A for active, or I for inactive.
TURN_ON_DATE. The date on which the device will be (or was) activated. The value is expressed using
the Providers chosen date format.
TURN_ON_TIME. The time at which the device will be (or was) activated. The value is expressed using
the Providers chosen time format.
TURN_OFF_DATE. The date on which the device will be (or was) deactivated. The value is expressed
using the Providers chosen date format.
TURN_OFF_TIME. The time at which the device will be (or was) deactivated. The value is expressed
using the Providers chosen time format.
SMART_CARD_NUM. The devices SmartCard number (if any).
DHCP. If the device gets its IP address through DHCP, this is Y; otherwise its N.
STB_THINK_VERSION. The version string of the Think application on the device.
STB_FIRMWARE_VERSION. The version string of the devices firmware.
STB_OS_VERSION. The version of the devices operating system.
STB_REBOOT_STATUS. The devices current running status, either Booted or Scheduled to Reboot.
STREAM_COUNT. The number of simultaneous video streams this Device is allowed to accept.
SKIN_ID. The ID of the Skin thats assigned to this Device.
LANGUAGE. The ISO 639-2 code of the language that was used when the Device was last booted.
THEME. The name of the theme that was used when the Device was last booted.
www.minervanetworks.com 161
iTVManager BackOffice API Technical Reference Devices
4 customerInfo <RS2>
Information about the customer to whom this Device is assigned, given as a single row of attributes:
CUSTOMER_ID. The Customer ID value.
CUSTOMER_NAME. The customers name, given as "First Last".
ADDRESS. The customers home address...
CITY. ...city, and ...
STATE_ZIPCODE. ...state and zipcode, given as "state ZIP" (e.g. STATE_ZIPCODE="ca 94536")
WORK_PHONE. The customers work phone...
HOME_PHONE. ...and home phone.
EMAIL. The customers email address.
5 deviceList <RS3>
A list of the Devices that are assigned to this customer, where each Device is given in a separate row, and
each row contains a single named value:
DEVICE_ID. The Device ID.
6 deviceCapabilities <RS4>
A list of this Devices capabilities that are assigned to this customer, where each device is given in a
separate row, and each row contains a single named value:
HAS_HD. Y if the Device supports High Definition, otherwise N.
HAS_PVR. Y if the Device has a Personal Video Recorder, otherwise N.
HAS_PLT. Y if the Device supports Pause Live TV, otherwise N. (Note that PLT, despite the name,
applies to Live and PPV Channels.)
HAS_CALLERID. Y if the Device has Caller ID enabled, otherwise N.
SWITCH_MODE. The Devices enablement mode. For an explanation of the enablement mode values,
see the enablementMode argument to the md_dev.assign_device() procedure.
7 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 Invalid deviceID.
-4 More than one Device has deviceID.
-7 The Device is disabled, and its startDate and/or endDate isnt set.
" " An empty status value means the call wasnt recognized. Ensure that the procedure name is spelled
correctly and that the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_dev. get _devi ce_i nf o( ' mySI D' , ' 1249' , ?, ?, ?, ?, ?i nt
st at us)
Response:
<doc>
<md_dev. get _devi ce_i nf o st at us=" 0" >
<RS1>
<r ow DEVI CE_I D=" 2049"
SERI AL=" 001095700a82" MAC_ADDRESS=" 001095700a82"
I P_ADDRESS=" 10. 1. 120. 2" PORT=" " SWI TCH_PORT_I D=" " MODEL_NUMBER=" "
162 www.minervanetworks.com
Devices iTVManager BackOffice API Technical Reference
STATUS=" A" TURN_ON_DATE=" 01/ 28/ 2006" TURN_ON_TI ME=" 12: 08"
TURN_OFF_DATE=" " TURN_OFF_TI ME=" " SMART_CARD_NUM=" No CA I D" DHCP=" N"
STB_THI NK_VERSI ON=" 2. 1. 67. SP02R" STB_FI RMWARE_VERSI ON=" B04. 06. 00"
STB_OS_VERSI ON=" Thomson SWVer si on: ST03. 25. 00" STB_REBOOT_STATUS=" Boot ed"
STREAM_COUNT=" 1" SKI N_I D=" 1" LANGUAGE=" EN" THEME=" Def aul t " >
</ r ow>
</ RS1>
<RS2>
<r ow CUSTOMER_I D=" MD11609" CUSTOMER_NAME=" J i mBowi e" ADDRESS=" 45 45t h St . "
CI TY=" Pr ovol one" STATE_ZI PCODE=" ca 94536" WORK_PHONE=" 321- 555- 1234 "
HOME_PHONE=" 321- 555- 4321 " EMAI L=" j bOwi e@wow. com" >
</ r ow>
</ RS2>
<RS3>
<r ow DEVI CE_I D=" 2168" ></ r ow>
<r ow DEVI CE_I D=" 2097" ></ r ow>
</ RS3>
<RS4>
<r ow STREAM_COUNT=" 2" HAS_HD=" Y" HAS_PVR=" N" HAS_PLT=" Y" ></ r ow>
</ RS4>
</ md_dev. get _devi ce_i nf o>
. . .
</ doc>
www.minervanetworks.com 163
iTVManager BackOffice API Technical Reference Devices
md_dev.get_device_list()
Finds all Devices that satisfy a search criterion. Although the procedure isnt difficult to understand, it is a bit
quirky and deserves an extended look. If you want to skip this extended introduction, youll probably be able
to get by with a careful reading of the protocol sections.
The Search Attribute and Search Value
The search criterionthe pattern that a Device must match in order to be included in the procedures
output is defined by the second and third arguments:
The second argument is the search attribute. This is the attributesuch as Device ID, serial number,
and IP addressthat the procedure will examine (across all Devices). The search attribute is given as an
integer constant; not all Device attributes can act as search attributes.
The third argument is the search value; this is the value that the attribute must match. The search value
is given as a quoted string.
For example, 7 represents the customer name attribute; to find all Devices that are owned by the customer
named Peter Grimes, you would invoke the procedure like this (well look at the other arguments later):
md_dev. get _devi ce_l i st ( ' mySI D' , 7, 'Grimes, Peter', ' Y' , 1, 200, ?, ?, ?i nt st at us)
Search Patterns and Wildcards
The search value that you supply is compared as an exact match or a case-insensitive substring, depending on
the value of the fourth argument: If the argument is 'Y', the match is exact; if 'N', its a substring. In the
previous examples, the argument was set to 'Y'. We could, for example, rewrite our Peter Grimes search using
a case-insensitive substring:
md_dev. get _devi ce_l i st ( ' mySI D' , 7, 'pete', 'Y', 1, 200, ?, ?, ?i nt st at us)
...and retrieve the same results as before (and, possibly, then some).
An empty string with exact-match set to 'N' is treated as a complete wildcard: It returns all Devices. If youre
using this wildcard, it doesnt matter which search attribute you use, so you should choose the attribute that
returns the output set that youre interested in. For example, if you want the IP addresses of all Devices, you
would invoke the procedure like this (4 means IP address):
md_dev. get _devi ce_l i st ( ' mySI D' , 4, ' ' , 'N', 1, 200, ?, ?, ?i nt st at us)
PROTOCOL
md_dev.get_device_list ( sessionID, searchAttribute, searchValue, exactMatch,
pageNumber, entriesPerPage, ?deviceList, ?deviceCount, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *searchAttribute I NTEGER
An integer constant that represents the Device attribute that the searchValue will be compared to:
1 = Device ID
2 = Customer ID
3 = Serial number
4 = IP address
5 = MAC address
6 = STB activation status
164 www.minervanetworks.com
Devices iTVManager BackOffice API Technical Reference
7 = Customer name
8 = SmartCard number
9 = Registration number
If searchAttribute is invalid, status will report success (0), although the output arguments wont be
defined.
3 searchValue[ 20] STRI NG
The value thats used in the attribute comparison. An empty searchValue is treated as a wildcard (all
Devices are returned).
4 *exactMatch CHAR [ Y| N]
If 'Y' the attribute value must match the searchValue exactly (include case-sensitivity); if 'N', the
attribute needs only to contain the searchValue as a case-insensitive substring.
5 *pageNumber I NTEGER >=1
6 *entriesPerPage I NTEGER >=1
The list of found Devices is divided into pages, where each page contains entriesPerPage Devices.
The pageNumber argument lets you select the page that you want to look at; page numbers start at 1.
Also see the deviceCount output argument.
OUTPUT ARGUMENTS
7 deviceList <RS1>
The set of found Devices, given as a series of rows, where each row represents a single Device. If youre
searching by IP address (searchAttribute
2
= 4), the rows contain these attributes:
DEVICE_ID. The Device ID value.
IP_ADDRESS. The Devices current IP address.
STATUS. The Devices activation status: A for active, or I for inactive.
CUSTOMER_ID. The Customer ID value.
DHCP. If the Device gets its IP address through DHCP, this is Y; otherwise its N.
Otherwise, the rows contain these attributes:
DEVICE_ID. The Device ID value.
SERIAL. The Devices serial number.
MAC_ADDRESS. The Devices MAC address.
IP_ADDRESS. The Devices current IP address.
STATUS. The Devices activation status: A for active, or I for inactive.
SMART_CARD_NUM. The Devices Smart Card number (if any).
CUSTOMER_ID. The Customer ID value.
CST_NAME. The customers name, given as "last, first middle".
DHCP. If the Device gets its IP address through DHCP, this is Y; otherwise its N.
REGISTRATION_NUM. The Devices registration number.
REBOOT_STATUS. The status of the Device with regard to being rebooted.
8 deviceCount <RS2>
Device and page counts, given as a single row of named values. The names are:
PAGES. The number of pages of Devices, where each page describes entriesPerPage
6
Devices.
COUNTS. The total number of Devices (across all pages) that were found.
9 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
www.minervanetworks.com 165
iTVManager BackOffice API Technical Reference Devices
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-5 An error occurred while searching.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_dev. get _devi ce_l i st ( ' mySI D' , ' 1' , ' ' , ' N' , ' 1' , ' 10' , ?, ?,
?i nt st at us)
Response:
<doc>
<md_dev. get _devi ce_i nf o st at us=" 0" >
<RS1>
<r ow ROWNUM=" 1" DEVI CE_I D=" 1" SERI AL=" 1" MAC_ADDRESS=" 0014f 8e2da57" I P_ADDRESS=" "
STATUS=" A" SMART_CARD_NUM=" 0014F8E2DA57" CUSTOMER_I D=" MD11632" CST_NAME=" Madat hi l , Seema
" DHCP=" Y" REGI STRATI ON_NUM=" 123456" REBOOT_STATUS=" " ></ r ow>
<r ow ROWNUM=" 2" DEVI CE_I D=" 2" SERI AL=" 2" MAC_ADDRESS=" 0014f 8e2d781" I P_ADDRESS=" "
STATUS=" A" SMART_CARD_NUM=" 0014f 8e2d781" CUSTOMER_I D=" MD11631" CST_NAME=" Nguyen, Mi nh "
DHCP=" Y" REGI STRATI ON_NUM=" 2345678" REBOOT_STATUS=" " ></ r ow>
<r ow ROWNUM=" 3" DEVI CE_I D=" 3" SERI AL=" 3" MAC_ADDRESS=" 0014f 8e2da5f " I P_ADDRESS=" "
STATUS=" A" SMART_CARD_NUM=" 0014F8E2DA5F" CUSTOMER_I D=" MD11635" CST_NAME=" Mat r i nez,
Ar t hur " DHCP=" Y" REGI STRATI ON_NUM=" 3456789" REBOOT_STATUS=" " ></ r ow>
<r ow ROWNUM=" 4" DEVI CE_I D=" 4" SERI AL=" 4" MAC_ADDRESS=" 0002020f 6111" I P_ADDRESS=" "
STATUS=" A" SMART_CARD_NUM=" 0002020F6111" CUSTOMER_I D=" MD11635" CST_NAME=" Mat r i nez,
Ar t hur " DHCP=" Y" REGI STRATI ON_NUM=" 4567890" REBOOT_STATUS=" " ></ r ow>
<r ow ROWNUM=" 5" DEVI CE_I D=" 41" SERI AL=" 6" MAC_ADDRESS=" 0014f 8e2daf b"
I P_ADDRESS=" 10. 1. 17. 50" STATUS=" I " SMART_CARD_NUM=" " CUSTOMER_I D=" MD11634"
CST_NAME=" Der oze, Gi a " DHCP=" N" REGI STRATI ON_NUM=" 223456" REBOOT_STATUS=" " ></ r ow>
<r ow ROWNUM=" 6" DEVI CE_I D=" 42" SERI AL=" " MAC_ADDRESS=" " I P_ADDRESS=" " STATUS=" A"
SMART_CARD_NUM=" " CUSTOMER_I D=" " CST_NAME=" " DHCP=" N" REGI STRATI ON_NUM=" "
REBOOT_STATUS=" " ></ r ow>
<r ow ROWNUM=" 7" DEVI CE_I D=" 43" SERI AL=" " MAC_ADDRESS=" " I P_ADDRESS=" " STATUS=" A"
SMART_CARD_NUM=" " CUSTOMER_I D=" " CST_NAME=" " DHCP=" N" REGI STRATI ON_NUM=" "
REBOOT_STATUS=" " ></ r ow>
<r ow ROWNUM=" 8" DEVI CE_I D=" 44" SERI AL=" " MAC_ADDRESS=" " I P_ADDRESS=" " STATUS=" A"
SMART_CARD_NUM=" " CUSTOMER_I D=" " CST_NAME=" " DHCP=" N" REGI STRATI ON_NUM=" "
REBOOT_STATUS=" " ></ r ow>
<r ow ROWNUM=" 9" DEVI CE_I D=" 5" SERI AL=" 5" MAC_ADDRESS=" 0014f 8e2da85" I P_ADDRESS=" "
STATUS=" A" SMART_CARD_NUM=" 0014f 8e2da85" CUSTOMER_I D=" MD11636" CST_NAME=" Venkat ar aman,
Apar na " DHCP=" Y" REGI STRATI ON_NUM=" 674532" REBOOT_STATUS=" " ></ r ow>
</ RS1>
<RS2>
<r ow PAGES=" 1" COUNTS=" 9" ></ r ow>
</ RS2>
</ md_dev. get _devi ce_i nf o>
. . .
</ doc>
166 www.minervanetworks.com
Devices iTVManager BackOffice API Technical Reference
md_dev.get_unassigned_devices()
Returns information about all Devices that arent assigned to a Customer.
PROTOCOL
md_dev.get_unassigned_devices ( sessionID, ?deviceList, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
OUTPUT ARGUMENTS
2 deviceList <RS1>
The unassigned Devices, given as a series of rows, where each row represents a single Device:
DEVICE_ID.
REGISTRATION_NUM.
STATUS.
IP_ADDRESS.
MAC_ADDRESS.
SERIAL. Serial number.
STREAM_COUNT.
BLOCK_HD. 'Y' if the STB is not allowed to display High Def signals.
BLOCK_PVR. 'Y' if the STB is not allowed to record.
BLOCK_PLT. 'Y' if the STB is not allowed to offer Pause Live TV. Note that PLT, despite the name,
applies to Live and PPV Channels.
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_dev. get _unassi gned_devi ces( ' mySI D' , ?, ?i nt st at us)
Response:
<doc>
<md_dev. get _unassi gned_devi ces st at us=" 0" >
<RS1>
<r ow DEVI CE_I D=" 4397" REGI STRATI ON_NUM=" 100001" STATUS=" I " I P_ADDRESS=" "
MAC_ADDRESS=" 100000000001" SERI AL=" SERI AL00A1" STREAM_COUNT=" 1" BLOCK_HD=" N"
BLOCK_PVR=" Y" BLOCK_PLT=" Y" ></ r ow>
<r ow DEVI CE_I D=" 4416" REGI STRATI ON_NUM=" 100020" STATUS=" I " I P_ADDRESS=" "
MAC_ADDRESS=" 100000000020" SERI AL=" SERI AL00A20" STREAM_COUNT=" 1" BLOCK_HD=" N"
BLOCK_PVR=" Y" BLOCK_PLT=" Y" ></ r ow>
<r ow DEVI CE_I D=" 141" REGI STRATI ON_NUM=" 500101" STATUS=" I " I P_ADDRESS=" 10. 1. 14. 25"
MAC_ADDRESS=" 110000000128" SERI AL=" SERI AL008101" STREAM_COUNT=" 1" BLOCK_HD=" N"
BLOCK_PVR=" Y" BLOCK_PLT=" Y" ></ r ow>
www.minervanetworks.com 167
iTVManager BackOffice API Technical Reference Devices
<r ow DEVI CE_I D=" 142" REGI STRATI ON_NUM=" 500102" STATUS=" I " I P_ADDRESS=" 10. 1. 14. 25"
MAC_ADDRESS=" 110000000129" SERI AL=" SERI AL008102" STREAM_COUNT=" 1" BLOCK_HD=" N"
BLOCK_PVR=" Y" BLOCK_PLT=" Y" ></ r ow>
<r ow DEVI CE_I D=" 1041" REGI STRATI ON_NUM=" 501001" STATUS=" I " I P_ADDRESS=" 10. 1. 14. 25"
MAC_ADDRESS=" 110000001028" SERI AL=" SERI AL0081001" STREAM_COUNT=" 1" BLOCK_HD=" N"
BLOCK_PVR=" Y" BLOCK_PLT=" Y" ></ r ow>
<r ow DEVI CE_I D=" 1042" REGI STRATI ON_NUM=" 501002" STATUS=" I " I P_ADDRESS=" 10. 1. 14. 25"
MAC_ADDRESS=" 110000001029" SERI AL=" SERI AL0081002" STREAM_COUNT=" 1" BLOCK_HD=" N"
BLOCK_PVR=" Y" BLOCK_PLT=" Y" ></ r ow>
<r ow DEVI CE_I D=" 1050" REGI STRATI ON_NUM=" 501010" STATUS=" I " I P_ADDRESS=" 10. 1. 14. 25"
<r ow DEVI CE_I D=" 10898" REGI STRATI ON_NUM=" " STATUS=" A" I P_ADDRESS=" "
MAC_ADDRESS=" 00114311ef 02" SERI AL=" " STREAM_COUNT=" " BLOCK_HD=" N" BLOCK_PVR=" N"
BLOCK_PLT=" N" ></ r ow>
</ RS1>
</ md_dev. get _unassi gned_devi ces>
. . .
</ doc>
168 www.minervanetworks.com
Devices iTVManager BackOffice API Technical Reference
md_dev.schedule_to_reboot()
Makes a note to tell an STB to reboot itself.
PROTOCOL
md_dev.schedule_to_reboot ( sessionID, deviceID, rebootDate, rebootTime, mandatory,
?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *deviceID I D md_dev.get_device_list():<RS1>.DEVICE_ID
The ID of the Device that you want to reboot.
3 *rebootDate DATE IPTV Providers date format
4 *rebootTime TI ME IPTV Providers time format
The date and time at which the STB will be rebooted, given in the Providers date and time formats. If
the reboot moment is in the past, the STB is immediately rebooted.
5 mandatory CHAR [ Y| N]
If 'Y', the STB is rebooted without consulting the user. If 'N', an STB dialog asks the viewer if the
reboot should be postponed. If there is no viewer, the reboot isnt postponed. The default is 'N'.
OUTPUT ARGUMENTS
6 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 Invalid deviceID

value.
-4 Invalid rebootDate

or rebootTime

value.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_dev. schedul e_t o_r eboot ( ' mySI D' , ' 122' , ' 23/ 01/ 2007' , ' 1
6: 15' , ' Y' , ?i nt st at us)
Response:
<doc>
<md_dev. schedul e_t o_r eboot st at us=" 0" >
</ md_dev. schedul e_t o_r eboot >
. . .
</ doc>
www.minervanetworks.com 169
iTVManager BackOffice API Technical Reference Devices
md_dev.set_callerID_for_device()
Sets the ability of a Device to display caller ID info.
PROTOCOL
md_dev.set_callerID_for_device ( sessionID, deviceID, hasCallerID, ?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *deviceID I D md_dev.get_device_list():<RS1>.DEVICE_ID
The ID of the Device that you want to affect.
3 *hasCallerID CHAR [ Y| N]
If 'Y', the Device will display caller ID info; if 'N', it wont. (Note that the logged-in STB Account must
also have caller ID enabled in order for caller ID info to be displayed.)
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-5 deviceID

doesnt identify a Device.
-7 hasCallerID

is neither 'Y' nor 'N'.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_dev. set _cal l er I D_f or _devi ce( ' mySI D' , ' 97' , ' Y' , ?i nt
st at us)
Response:
<doc>
<md_dev. set _cal l er I D_f or _devi ce st at us=" 0" >
</ md_dev. set _cal l er I D_f or _devi ce>
. . .
</ doc>
170 www.minervanetworks.com
Devices iTVManager BackOffice API Technical Reference
md_dev.set_skin_for_device()
Sets the Skin for a Device. This sets the Theme and Language thats displayed on the STB if the Customer isnt
required to log in. If the Customer does have to log in, the STB displays the skin thats associated with the STB
Account through which the Customer logs in (see md_cst.set_skin_for_account() on page 106).
IMPORTANT: The Devi ce must be assi gned to a Customer before you cal l thi s procedure.
PROTOCOL
md_dev.set_skin_for_device ( sessionID, deviceID, skinID, themeName, languageCode,
?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *deviceID I D md_dev.get_device_list():<RS1>.DEVICE_ID
The ID of the Device that you want to affect.
3 *skinID I D md_sys.get_skins_for_region():<RS1>.SKIN_ID
The ID of the Skin that you want to assign to the Device. The Skin must have already been added to the
Region to which the Devices owner (Customer) belongs.
IMPORTANT: Al though the next two arguments can both be deduced from the ski nID argument, you must suppl y
them anyway.
4 *themeName STRI NG md_sys.get_skins_for_region():<RS1>.THEME
The name of the Skins theme.
5 *languageCode STRI NG md_sys.get_skins_for_region():<RS1>.LANGUAGES
The ISO language code for this Skin.
OUTPUT ARGUMENTS
6 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-4 skinID

doesnt identify a Skin, or themeName/languageCode arent part of the Skin.
-5 deviceID

doesnt identify a Device.
-6 deviceID

isnt assigned to a Customer.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
www.minervanetworks.com 171
iTVManager BackOffice API Technical Reference Devices
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_dev. set _ski n_f or _devi ce( ' mySI D' , ' 97' , ' 2' , ' Swi r l ' , ' FR
' , ?i nt st at us)
Response:
<doc>
<md_dev. set _ski n_f or _devi ce st at us=" 0" >
</ md_dev. set _ski n_f or _devi ce>
. . .
</ doc>
172 www.minervanetworks.com
Devices iTVManager BackOffice API Technical Reference
md_dev.unassign_device()
Immediately deactivates a Device and disassociates it from its Customer.
PROTOCOL
md_dev.unassign_device ( sessionID, deviceID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *deviceID I D md_dev.get_device_list():<RS1>.DEVICE_ID
The ID of the Device that you want to unassign.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-5 Invalid deviceID value.
-6 deviceID

isnt assigned.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_dev. unassi gn_devi ce( ' mySI D' , ' 61' , ?i nt st at us)
Response:
<doc>
<md_dev. unassi gn_devi ce st at us=" 0" >
</ md_dev. unassi gn_f or _devi ce>
. . .
</ doc>
www.minervanetworks.com 173
May 2010 iTVManager BackOffice API Technical Reference
Services
Concepts
A Service is a service or product thats offered to Customers by the IPTV Provider. Services include Channel
Packages, Service Packages, Internet access, and so on. Each instance of a Service has a Service ID (or,
synonymously, a Service Menu ID) thats unique across all Services. This Service ID is in addition to the ID
that identifies the Service within its type. For example, a Channel Package has a Channel Package ID thats
(only) unique across all Channel Packages; the Channel Package also has a Service ID thats unique across all
Services.
Service Codes
Each type of Service is identified by a Service Code:
CHPKG. Non-a la carte Channel Packages
ALACARTE. a la carte Channel Packages
SRPKG. Service Packages
VODSUBPKG. Subscription VOD Packages
OTHER. Miscellaneous Services.
Procedure Summary
md_srv.get_services() lists the available Services.
174 www.minervanetworks.com
Services iTVManager BackOffice API Technical Reference
Procedure Specifications
md_srv.get_services()
Retrieves lists of the available Services. If you supply a Lineup ID, the procedure includes the Channel
Packages that have been added to that Lineup.
PROTOCOL
md_srv.get_services ( sessionID, lineupID, ?servicePackages, ?channelPackages,
?alaCartePackages, ?svodPackages, ?miscServices, ?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 lineupID I D md_liv.get_lineups():<RS1>.LineupID
If you supply a lineupID, the channelPackages

and alaCartePackages lists will contain the narrow
Channel Packages for that Lineup in addition to the wide Channel Packages. If you dont supply a
lineupID, the lists contain wide Channel Packages only.
OUTPUT ARGUMENTS
3 servicePackages

<RS1>
Each row contains:
SERVICE_MENU_ID. The system-wide Service ID.
NAME. The name of the Service.
PRICE. The price of the Service.
SERVICE_PKG_ID. The Service Package ID, unique across all Service Packages (only).
EFFECTIVE_DATE. The date on which the Package will be activated, in the Providers date format.
4 channelPackages <RS2>
Each row contains:
SERVICE_MENU_ID. The system-wide Service ID.
NAME. The name of the Service.
PRICE. The price of the Service.
CHANNEL_PKG_ID. The Channel Package ID, unique across all Channel Packages (only).
EFFECTIVE_DATE. The date on which the Package will be activated, in the Providers date format.
TYPE. 1 if this is a required Package, 2 if its optional. Note that type 3 Channel Packages (a la carte)
arent included. The a la carte Channel Packages are listed (indirectly) in the alaCarteChannels
argument.
LineupID. The ID of the Lineup that the Channel Package is assigned to. If this is a wide Channel
Package, LineupID will be -1.
5 alaCarteChannels

<RS3>
Each row contains information about a single Channel thats included in an a la carte Channel Package
(across all a la carte Packages):
SERVICE_MENU_ID. The system-wide Service ID.
NAME. The name of the Service.
PRICE. The price of the Service.
EFFECTIVE_DATE. The date on which the Channels Channel Package will be activated, in the
Providers date format.
www.minervanetworks.com 175
iTVManager BackOffice API Technical Reference Services
EXPIRE_DATE. The date on which the Channels Channel Package will be deactivated, in the Providers
date format.
LineupID. The ID of the Lineup that the Channels Channel Package is assigned to. If this is a wide
Channel Package, LineupID will be -1.
CHANNEL_PKG_ID. The ID of the Channels Channel Package
CHANNEL_ID. The Channels ID. For more information about the Channel, pass the ID to
md_liv.get_channel_list().
6 svodPackages

<RS4>
Each row contains a description of a stand-alone SVOD:
SERVICE_MENU_ID. The system-wide Service ID.
NAME. The name of the Service.
PRICE. The price of the Service.
SVOD_PKG_ID. The SVOD ID, unique across all SVODs (only).
EFFECTIVE_DATE. The date on which the Package will be activated, in the Providers date format.
IS_STANDALONE. "Y" if this is a stand-alone SVOD; "N" if not.
7 miscServices <RS5>
Each row contains:
SERVICE_MENU_ID. The system-wide Service ID.
NAME. The name of the Service.
DESCRIPTION. A user-friendly description of the Service.
PRICE. The price of the Service.
SERVICE_ID. The Miscellaneous Service ID, unique across all Miscellaneous Services (only).
8 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sr v. get _ser vi ces( ' mySI D' , ' ' , ?, ?, ?, ?, ?, ?i nt st at us)
Response:
<doc>
<md_sr v. get _ser vi ces st at us=" 0" >
<RS1>
</ RS1>
<RS2>
<r ow SERVI CE_MENU_I D=" 121" NAME=" CDK CP" PRI CE=" 2. 99" CHANNEL_PKG_I D=" 21"
EFFECTI VE_DATE=" 2007- 04- 20 00: 00: 00. 0" TYPE=" Requi r ed" Li neupI D=" - 1" ></ r ow>
</ RS2>
<RS3>
</ RS3>
<RS4>
<r ow SERVI CE_MENU_I D=" 864" NAME=" St ar z" PRI CE=" 0" SUBSCRI PTI ON_PKG_I D=" 90877"
I S_STANDALONE=" N" ></ r ow>
<r ow SERVI CE_MENU_I D=" 803" NAME=" HBO_SVOD" PRI CE=" 1" SUBSCRI PTI ON_PKG_I D=" 67"
I S_STANDALONE=" Y" ></ r ow>
176 www.minervanetworks.com
Services iTVManager BackOffice API Technical Reference
</ RS4>
<RS5>
<r ow SERVI CE_MENU_I D=" 5" NAME=" Cal l er I D" DESCRI PTI ON=" Cal l er I D Mont hl y Ser vi ce"
PRI CE=" 5. 95" SERVI CE_I D=" 0" ></ r ow>
<r ow SERVI CE_MENU_I D=" 3" NAME=" Emai l " DESCRI PTI ON=" Emai l Mont hl y Ser vi ce"
PRI CE=" 5. 95" SERVI CE_I D=" 1" ></ r ow>
<r ow SERVI CE_MENU_I D=" 4" NAME=" I nt er net " DESCRI PTI ON=" I nt er net Mont hl y Ser vi ce"
PRI CE=" 5. 95" SERVI CE_I D=" 2" ></ r ow>
<r ow SERVI CE_MENU_I D=" 6" NAME=" PVR" DESCRI PTI ON=" PVR Mont hl y Ser vi ce" PRI CE=" 5. 95"
SERVI CE_I D=" 3" ></ r ow>
</ RS5>
</ md_sr v. get _ser vi ces>
. . .
</ doc>
www.minervanetworks.com 177
May 19, 2010 iTVManager BackOffice API Technical Reference
VOD Assets
Concepts
There are three aspects to a Video on Demand movie:
The video itselfthe actual datafile that the customer playsis called a VOD asset (lowercase). The asset
(file) is stored on a Video Server.
The information that describes the movies content (title, description, rating, and so on) is stored in the
Database. This information is either read from an XML file thats delivered by the VOD supplier, or it
can be entered by an iTVManager administrator, either through the BackOffice Console or BackOffice
API.
Further information that describes the assets location on the Video Server is also stored in the Database.
This information can be generated automatically when the asset is ingested, or it can be created through
the BackOffice Console or BackOffice API.
The term Asset (capitalized) refers to all three aspects of a VOD movie: It represents the asset (video file), the
metadata, and the location information. To avoid confusion, this documentation refers to the video file as a
video (or video file) rather than an asset.
Procedure Summary
md_sam.add_asset() creates a new Asset.
md_sam.delete_asset() removes an Asset from the system.
md_sam.edit_asset() modifies an Assets attributes.
md_sam.get_asset_dictionary() returns information you need to create and edit an Asset.
md_sam.getAssetList() lists the Assets that have been added.
178 www.minervanetworks.com
VOD Assets iTVManager BackOffice API Technical Reference
Procedure Specifications
md_sam.add_asset()
Creates an Asset and assigns it a unique Asset ID. The ID is returned as the status value.
When you create a new Asset, the Assets video file is automatically ingested by the Video Server. .
PROTOCOL
md_sam.add_asset ( sessionID, title, episodeTitle, description, categoryIDs,
priority, duration, encoding, priceSetID, supplierID, sourcePath, sourceFile,
partitionListID, trailerID, posterID, isSvodCapable, startDate, endDate, castNames,
directorNames, isClosedCaptioned, isDolbyDigital, releaseYear, movieRating,
tvRatingID, starRatingID, hasSex, hasLanguage, hasViolence, hasSuggestiveDialog,
hasFantasyViolence, isCopyProtected, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *title[ 240] STRI NG
The name of the movie that this Asset represents.
3 episodeTitle[ 300] STRI NG
An optional additional title. The episode title is typically only used for Assets that were originally TV
programs.
4 description[ 2000] STRI NG
The user-friendly description of the movie. The description is displayed on the customers STB.
5 *categoryIDs[ 500] I D|I D md_sam.get_asset_dictionary():<RS4>.CATEGORY_ID
The list of categories that this movie should be filed under. To assemble a category tree list the
category leaves in sequence without separators. For example, lets say category ID 100 is Comedy, 101
is Romantic, and 102 is New Releases. This construction...
' 100 101 | 102'
...will file the movie under Comedy > Romantic and New Releases.
6 priority I NTEGER [ 1- 99]
Normally, the VOD catalog (displayed by Think) sorts Assets alphabetically by movie title (within a
category). You can use the priority, an integer from 1 to 99, to impose an overriding priority. Assets with
lesser priority values appear before those with greater values. For example, if The General has a
priority of 1 and Spite Marriage is 99, the former will appear closer to the top of the catalog than the
latter. The default is 99.
7 *duration STRI NG 'hh:mm'
The running time of the movie, in hours (hh) and minutes (mm).
8 *encoding STRI NG md_sam.get_asset_dictionary():<RS1>.ENCODE_TYPE
The name of the encoding type.
9 priceSetID I D md_sam.get_asset_dictionary():<RS2>.VOD_SET_ID
The ID of the price set (level) thats used to determine the Assets current price. The levels duration
starts the moment the Asset is added.
www.minervanetworks.com 179
iTVManager BackOffice API Technical Reference VOD Assets
10 supplierID I D md_sam.get_asset_dictionary():<RS5>.SUPPLIER_ID
The ID of the VOD supplier that provides the Asset. To add a VOD supplier to the system, you have to
use the Asset Management > Provider Mgmt module in the BackOffice Console.
11 sourcePath[ 80] STRI NG
The pathname of the directory to the video file as it resides on the VOD suppliers FTP site. The
sourceFile argument is concatenated with this value to create the full path to the file.
12 *sourceFile[ 80] STRI NG
The name of the video file as it resides on the VOD suppliers FTP site. You must include the filename
extension (.mpeg for example). The sourceFile argument is concatenated with this value to create
the full path to the file.
13 *partitionListID I D md_sam.get_asset_dictionary():<RS9>.VS_PARTITION_ID
An ID that identifies the Video Server partition on which the Assets video file resides.
14 trailerID I D md_sam.get_asset_dictionary():<RS10>.TRAILER_ID
An ID that identifies the trailer thats associated with this Asset.
15 posterID I D md_sam.get_asset_dictionary():<RS11>.IMAGE_ID
An ID that identifies the poster thats associated with this Asset.
16 isSvodCapable CHAR [ Y| N]
Declares whether or not the Asset is SVOD-capablein other words, whether or not it can be offered
through a Subscription VOD package (only). Set this to Y if you want the Asset to be offered through an
SVOD; otherwise, set it to N. The default is N.
17 startDate DATE IPTV Providers date format
The date upon which the Asset will be available for purchase. If this argument is NULL, the Asset is
immediately available.
18 endDate DATE IPTV Providers date format
The date upon which the Asset will stop being available for purchase. If this argument is NULL, the Asset
will be available forever. If you supply an endDate value, it must represent a time that comes after the
startDate value.
19 castNames[ 512] STRI NG
A list of the movies cast members. The list can be in any form; its presented, through the STB UI,
without modification.
20 directorNames[ 512] STRI NG
A list of the movies directors. The list can be in any form; its presented, through the STB UI, without
modification.
21 isClosedCaptioned CHAR [ Y| N]
Set this to Y if the Asset is closed captioned, otherwise set it to N. The default is N.
22 isDolbyDigital CHAR [ Y| N]
Set this to Y if the Assets audio track is encoded in Dolby Digital format, otherwise set it to N. The
default is N.
23 releaseYear STRI NG 'yyyy'
The year in which the movie was first released; for example 1996.
24 #movieRating[ 10] STRI NG md_sam.get_asset_dictionary():<RS7>.MOVIE_RATING
The Assets parental control-style movie rating. You must supply a parental control rating, either through
this argument or the tvRatingID argument. If you want to use the tvRatingID instead, set this
argument to -1.
180 www.minervanetworks.com
VOD Assets iTVManager BackOffice API Technical Reference
25 #tvRatingID I D md_sam.get_asset_dictionary():<RS8>.TV_RATING_ID
The Assets parental control-style TV rating. You must supply a parental control rating, either through
this argument or the movieRating argument. If you want to use the movieRating instead, set this
argument to -1. However, if you set this argument to -1, the individual TV content ratings (hasSex,
hasLanguage, et al) will be set to NULL.
26 starRating[ 10] STRI NG md_sam.get_asset_dictionary():<RS6>.STAR_RATING
The Assets critical assessment as expressed in whole and half stars. A whole star is given as an asterisk
('*'); a half star is a plus sign, expressed as the value '%2B'.
27 hasSex CHAR [ Y| N]
28 hasLanguage CHAR [ Y| N]
29 hasViolence CHAR [ Y| N]
30 hasSuggestiveDialogCHAR [ Y| N]
31 hasFantasyViolence CHAR [ Y| N]
Assessments of the Assets inclusion of the named offensive content: Set this to Y if the Asset contains
the named content, otherwise set it to N. The default is N. Note that these values are ignored if the
tvRatingID argument is -1.
32 isCopyProtected CHAR [ Y| N]
Set this to Y if the Asset is copy-protected, otherwise set it to N. The default is N.
OUTPUT ARGUMENTS
33 status
Returns a new Asset ID (positive integer) or indicates failure (negative integer). See STATUS VALUES for a
list of status values.
STATUS VALUES
> 0 The ID of the added Asset.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 endDate is earlier than startDate.
-5 An error occurred while attempting to add the elements in categoryIDs to the Asset record.
-6 An error occurred while attempting to upload the video file to the Video Server.
-7 The endDate or startDate format is invalid.
-9 title is missing.
-10 categoryIDs is missing.
-11 duration is missing or in the wrong format.
-13 encoding is missing.
-14 partitionListID is missing.
-15 Both movieRating and tvRatingID are missing (you must supply at least one of them).
-16 An element in the categoryIDs list is invalid.
-17 sourceFile is missing.
-18 posterID is invalid.
-19 trailerID is invalid.
-31 priceSetID is invalid.
-32 supplierID is invalid.
-33 starRatingID is invalid.
-34 movieRating is invalid.
-35 tvRatingID is invalid.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
www.minervanetworks.com 181
iTVManager BackOffice API Technical Reference VOD Assets
EXAMPLE
Call:
ht t p: / / serverIP:port/ Xml Po. po?SP=md_sam. add_asset ( ' mySI D' , ' Li f e wi t h Bet sy' , ' Bet sy f i nds
a dog. ' , ' When Bet sy f i nds a dog, her nephew st ar t s t o
cr y. ' , ' 5' , ' 1' , ' 00: 10' , ' MPEG2' , ' 2' , ' 1' , ' ' , ' l i f ewi t hbet sy. mpg' , ' 1' , ' 4' , ' 15' , ' N' , ' ' , ' ' , ' j i m
t hi ng, j i mt hi ng2' , ' j ames di r ecot r , j ames
d1' , ' N' , ' N' , ' 2001' , ' G' , ' - 1' , ' ' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ?i nt st at us)
Response:
<doc>
<md_sam. add_asset st at us=" 195" >
</ md_sam. add_asset >
. . .
</ doc>
182 www.minervanetworks.com
VOD Assets iTVManager BackOffice API Technical Reference
md_sam.delete_asset()
Deletes an Asset by removing the Asset record from the Database and deleting the video file on the Video
Server. You cant delete an Asset if:
The Asset is part of a container (an SVOD or a VOD Bundle). You have to remove the VOD from the
container before you can delete it.
A customer currently owns (has rented) the Asset.
The Assets start date hasnt yet been reached.
PROTOCOL
md_sam.delete_asset ( sessionID, assetID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *assetID I D md_sam.getAssetList():<RS1>.ASSET_ID
The ID of the Asset that you want to delete.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-8 assetID is invalid.
-21 The video file couldnt be deleted from the Video Server.
-24 The Asset is currently rented.
-25 The Assets start date hasnt been reached.
-27 The Asset is part of an SVOD.
-28 The Asset is part of a VOD Bundle.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP:port/ Xml Po. po?SP=md_sam. del et e_asset ( ' mySI D' , 195, ?i nt st at us)
Response:
<doc>
<md_sam. del et e_asset st at us=" 0" >
</ md_sam. del et e_asset >
. . .
</ doc>
www.minervanetworks.com 183
iTVManager BackOffice API Technical Reference VOD Assets
md_sam.edit_asset()
Modifies the attributes of an existing Asset. Note that you cant change an Assets encoding type, duration,
VOD supplier, or source location after its been created. Also, you cant modify an Asset if:
The Asset is part of a container (an SVOD or a VOD Bundle). You have to remove the VOD from the
container before you can delete it.
The Assets start date hasnt yet been reached.
The Asset has been deleted, or is scheduled to be deleted.
IMPORTANT: Thi s procedure modi fi es al l of the attri butes that correspond to the i nput arguments. If you onl y
want to change a subset of the attri butes, you have to retri eve and pass i n the current val ues of the
attri butes that you don t want to change.
PROTOCOL
md_sam.edit_asset ( sessionID, assetID, title, episodeTitle, description,
categoryIDs, priority, unused, unused, priceSetID, partitionListID, trailerID,
posterID, isSvodCapable, startDate, endDate, castNames, directorNames,
isClosedCaptioned, isDolbyDigital, releaseYear, movieRating, tvRatingID,
starRatingID, hasSex, hasLanguage, hasViolence, hasSuggestiveDialog,
hasFantasyViolence, isCopyProtected, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *assetID I D md_sam.getAssetList():<RS1>.ASSET_ID
The ID of the Asset that you want to modify.
NOTE: See md_sam.add_asset() for descriptions of the rest of the input arguments.
3 *title[ 240] STRI NG
4 episodeTitle[ 300] STRI NG
5 description[ 2000] STRI NG
6 *categoryIDs[ 500] I D|I D md_sam.get_asset_dictionary():<RS4>.CATEGORY_ID
7 priority I NTEGER [ 1- 99]
8 unused
9 unused
10 priceSetID I D md_sam.get_asset_dictionary():<RS2>.VOD_SET_ID
11 unused
12 trailerID I D md_sam.get_asset_dictionary():<RS10>.TRAILER_ID
13 posterID I D md_sam.get_asset_dictionary():<RS11>.IMAGE_ID
14 unused
15 startDate DATE IPTV Providers date format
16 endDate DATE IPTV Providers date format
17 castNames[ 512] STRI NG
18 directorNames[ 512] STRI NG
19 isClosedCaptioned CHAR [ Y| N]
20 isDolbyDigital CHAR [ Y| N]
21 releaseYear STRI NG 'yyyy'
22 #movieRating[ 10] STRI NG md_sam.get_asset_dictionary():<RS7>.MOVIE_RATING
23 #tvRatingID I D md_sam.get_asset_dictionary():<RS8>.TV_RATING_ID
24 starRating[ 10] STRI NG md_sam.get_asset_dictionary():<RS6>.STAR_RATING
25 hasSex CHAR [ Y| N]
26 hasLanguage CHAR [ Y| N]
27 hasViolence CHAR [ Y| N]
184 www.minervanetworks.com
VOD Assets iTVManager BackOffice API Technical Reference
28 hasSuggestiveDialogCHAR [ Y| N]
29 hasFantasyViolence CHAR [ Y| N]
30 isCopyProtected CHAR [ Y| N]
OUTPUT ARGUMENTS
31 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-5 An error occurred while attempting to add the elements in categoryIDs to the Asset record.
-7 The endDate or startDate format is invalid.
-8 assetID is invalid.
-9 title is missing.
-10 categoryIDs is missing.
-15 Both movieRating and tvRatingID are missing (you must supply at least one of them).
-16 An element in the categoryIDs list is invalid.
-18 posterID is invalid.
-19 trailerID is invalid.
-31 priceSetID is invalid.
-33 starRatingID is invalid.
-34 movieRating is invalid.
-35 tvRatingID is invalid.
-100 The movie file has been deleted.
-102 endDate is earlier than startDate.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP:port/ Xml Po. po?SP=md_sam. edi t _asset ( ' mySI D' , 195, ' Li f e wi t h
Bet sy' , ' ' , ' ' , ' 5' , ' ' , ' 00: 15' , ' MPEG2' , ' 2' , ' 1' , ' 6' , ' 11' , ' N' , ' ' , ' ' , ' cast 1, cast 2' , ' di r ect or ' ,
' Y' , ' N' , ' 2000' , ' - 1' , ' 2' , ' ****%2B' , ' Y' , ' Y' , ' Y' , ' Y' , ' Y' , ' N' , ?i nt st at us)
Response:
<doc>
<md_sam. edi t _asset st at us=" 0" >
</ md_sam. edi t _asset >
. . .
</ doc>
www.minervanetworks.com 185
iTVManager BackOffice API Technical Reference VOD Assets
md_sam.get_asset_dictionary()
Returns the information you need to create or edit an Asset.
PROTOCOL
md_sam.get_asset_dictionary ( sessionID, ?encodings, ?vodPriceSetLevels,
?serverDirectories, ?categoryLeaves, ?suppliers, ?starRatings, ?movieRatingCodes,
?tvRatingCodes, ?videoServerPartitions, ?trailers, ?posters, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
OUTPUT ARGUMENTS
2 encodings <RS1>
Lists the supported video encoding formats. Each row describes these attributes of a single encoding:
ENCODE_TYPE. The name of the encoding.
ENCODE_TYPE_DESC. A description of the encoding.
3 vodPriceSetLevels <RS2>
Lists the VOD price set levels. A price set is a schedule that lets you automatically change the price of
an Asset over time. There can be as many as five levels in a price set, where each level has a price and
an start date. Price sets are created through the BackOffice Console only, in the Service & Pricing > Asset
Pricing module. Each row describes these attributes of a price set level:
VOD_SET_ID. An integer that uniquely identifies this price set level.
NAME. A string that gives the name of the levels price set, the levels index (given as A through E)
among the (potential) five levels, and the levels price. The string is in this form:
" name- [ A- E] (defaultCurrencySymbol amount)"
For example:
" f i veMont hPr i ceSet - C( $ 1. 99) "
4 serverDirectories <RS3>
Lists the Video Server directories. Each row describes these attributes of a directory:
DIRECTORY_ID. An integer that uniquely identifies this directory.
VS_PATH. The full pathname of the directory.
5 categoryLeaves <RS4>
Lists the category leaves that can be used to construct a category tree. Category leaves are created
through the BackOffice Console only, in the Asset Management > Category Mgmt module. Each row
describes these attributes of a category leaf:
CATEGORY_ID. An integer that uniquely identifies this category leaf.
CATEGORY. The name of the category leaf.
6 suppliers <RS5>
Lists the VOD supplier that have been added to the system. VOD suppliers are added to the system
through the BackOffice Console only, in the Asset Management > Provider Mgmt module. Each row
describes these attributes of a VOD supplier:
SUPPLIER_ID. An integer that uniquely identifies this supplier.
SUPPLIER_NAME. The name of the supplier.
186 www.minervanetworks.com
VOD Assets iTVManager BackOffice API Technical Reference
7 starRatings <RS6>
Lists the star ratings that can be applied to an Asset. A star rating is a critical assessment expressed in
stars and half stars. Star ratings hard-coded in the system. Each row describes these attributes of a
star rating:
STAR_RATING. The symbolic representation of the rating expressed in whole and half stars. A whole
star is given as an asterisk ('*'); a half star is a plus sign, expressed as the value '%2B'. These
characters are concatenated to form the symbol; for example, three-and-a-half stars is " ***%2B" .
DESCR. A description of the rating.
L. An integer that gives the ratings rank among all ratings, starting with 0 (worst) and increasing in
monotonic order.
8 movieRatingCodes <RS7>
Lists the parental control-style movie rating codes. Movie ratings are hard-coded in the system. Each
row describes these attributes of a movie rating code:
ASSET_RATING. A string that represents the rating code.
ASSET_RATING1. A description of the rating code.
9 tvRatingCodes <RS8>
Lists the parental control-style TV rating codes. TV ratings are hard-coded in the system. Each row
describes these attributes of a tv rating code:
TV_RATING_ID. An integer that uniquely identifies this rating code.
TV_RATING. A string that represents the rating code.
10 videoServerPartitions<RS9>
Lists the Video Server partitions. Video Server partitions are identified to the system through the
BackOffice Console only, in the IP Headend > Video Servers module. Each row describes these attributes
of a Video Server partition:
VS_PARTITION_ID. An integer that uniquely identifies this partition.
VS_ID. A integer that uniquely identifies the Video Server.
PARTITION_NAME. The name of the partition.
11 trailers <RS10>
Lists the trailers that can be associated with an Asset. Trailers are ingested automatically from VOD
suppliers, and can be added manually through the BackOffice Consoles Asset Management > Trailer Mgmt
module. Each row describes these attributes of a trailer:
TRAILER_ID. An integer that uniquely identifies this trailer.
TITLE. The name of the trailer. This isnt the trailers filename; typically, its the same as the name of
the Asset with which its associated.
12 posters <RS11>
Lists the posters that can be associated with an Asset. Posters are ingested automatically from VOD
suppliers, and can be added manually through the BackOffice Consoles Asset Management > Image Mgmt
module. Each row describes these attributes of a poster:
IMAGE_ID. An integer that uniquely identifies this poster.
IMAGE_NAME. The name of the poster. This isnt the posters filename; typically, its the same as the
name of the Asset with which its associated.
13 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
www.minervanetworks.com 187
iTVManager BackOffice API Technical Reference VOD Assets
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / 192. 168. 5. 20: 9000/ Xml Po. po?SP=md_sam. get _asset _di ct i onar y( ' 714' , ?, ?, ?, ?, ?, ?, ?, ?, ?
, ?, ?, ?i nt %20st at us)
Response:
<doc>
<MD_SAM. get _Asset _Di ct i onar y st at us=" 0" >
<RS1>
<r ow ENCODE_TYPE=" MPEG2" ENCODE_TYPE_DESC=" MPEG2" ></ r ow>
<r ow ENCODE_TYPE=" MPEG1" ENCODE_TYPE_DESC=" MPEG1" ></ r ow>
</ RS1>
<RS2>
<r ow VOD_SET_I D=" 0" NAME=" - No Sel ect i on - " ></ r ow>
<r ow VOD_SET_I D=" 1" NAME=" vod_zk- A( $ 1. 99) " ></ r ow>
<r ow VOD_SET_I D=" 2" NAME=" vod_zk- B( $ 2. 99) " ></ r ow>
<r ow VOD_SET_I D=" 3" NAME=" vod_zk- C( $ 3. 99) " ></ r ow>
</ RS2>
<RS3>
<r ow DI RECTORY_I D=" 1" VS_PATH=" Uncl e Sam" ></ r ow>
</ RS3>
<RS4>
<r ow CATEGORY_I D=" 0" CATEGORY=" - No Sel ect i on - " ></ r ow>
<r ow CATEGORY_I D=" 6" CATEGORY=" Act i on" ></ r ow>
<r ow CATEGORY_I D=" 5" CATEGORY=" Al l Movi es" ></ r ow>
<r ow CATEGORY_I D=" 175" CATEGORY=" Ani mat i on" ></ r ow>
<r ow CATEGORY_I D=" 7" CATEGORY=" Comedy" ></ r ow>
<r ow CATEGORY_I D=" 8" CATEGORY=" Dr ama" ></ r ow>
</ RS4>
<RS5>
<r ow SUPPLI ER_I D=" 0" SUPPLI ER_NAME=" - No Sel ect i on - " ></ r ow>
</ RS5>
<RS6>
<r ow STAR_RATI NG=" " DESCR=" - No Sel ect i on - " L=" 0" ></ r ow>
<r ow STAR_RATI NG=" *" DESCR=" *" L=" 1" ></ r ow>
<r ow STAR_RATI NG=" *+" DESCR=" *+" L=" 2" ></ r ow>
<r ow STAR_RATI NG=" **" DESCR=" **" L=" 3" ></ r ow>
<r ow STAR_RATI NG=" **+" DESCR=" **+" L=" 4" ></ r ow>
<r ow STAR_RATI NG=" ***" DESCR=" ***" L=" 5" ></ r ow>
<r ow STAR_RATI NG=" ***+" DESCR=" ***+" L=" 6" ></ r ow>
<r ow STAR_RATI NG=" ****" DESCR=" ****" L=" 7" ></ r ow>
<r ow STAR_RATI NG=" ****+" DESCR=" ****+" L=" 8" ></ r ow>
<r ow STAR_RATI NG=" *****" DESCR=" *****" L=" 9" ></ r ow>
</ RS6>
<RS7>
<r ow ASSET_RATI NG=" " ASSET_RATI NG1=" - No Sel ect i on - " ></ r ow>
<r ow ASSET_RATI NG=" NR" ASSET_RATI NG1=" NR" ></ r ow>
<r ow ASSET_RATI NG=" G" ASSET_RATI NG1=" G" ></ r ow>
<r ow ASSET_RATI NG=" PG" ASSET_RATI NG1=" PG" ></ r ow>
<r ow ASSET_RATI NG=" PG- 13" ASSET_RATI NG1=" PG- 13" ></ r ow>
<r ow ASSET_RATI NG=" R" ASSET_RATI NG1=" R" ></ r ow>
<r ow ASSET_RATI NG=" NC- 17" ASSET_RATI NG1=" NC- 17" ></ r ow>
<r ow ASSET_RATI NG=" AO" ASSET_RATI NG1=" AO" ></ r ow>
<r ow ASSET_RATI NG=" X" ASSET_RATI NG1=" X" ></ r ow>
<r ow ASSET_RATI NG=" XX" ASSET_RATI NG1=" XX" ></ r ow>
<r ow ASSET_RATI NG=" XXX" ASSET_RATI NG1=" XXX" ></ r ow>
</ RS7>
188 www.minervanetworks.com
VOD Assets iTVManager BackOffice API Technical Reference
<RS8>
<r ow TV_RATI NG_I D=" - 1" TV_RATI NG=" - No Sel ect i on - " ></ r ow>
<r ow TV_RATI NG_I D=" 0" TV_RATI NG=" NR" ></ r ow>
<r ow TV_RATI NG_I D=" 1" TV_RATI NG=" TVY" ></ r ow>
<r ow TV_RATI NG_I D=" 2" TV_RATI NG=" TVY7" ></ r ow>
<r ow TV_RATI NG_I D=" 3" TV_RATI NG=" TVG" ></ r ow>
<r ow TV_RATI NG_I D=" 4" TV_RATI NG=" TVPG" ></ r ow>
<r ow TV_RATI NG_I D=" 5" TV_RATI NG=" TV14" ></ r ow>
<r ow TV_RATI NG_I D=" 6" TV_RATI NG=" TVMA" ></ r ow>
</ RS8>
<RS9>
<r ow VS_PARTI TI ON_I D=" 2" VS_I D=" 1" PARTI TI ON_NAME=" k: Syst emAsset Gr oup" ></ r ow>
<r ow VS_PARTI TI ON_I D=" 1" VS_I D=" 1" PARTI TI ON_NAME=" k: Cache Asset Gr oup" ></ r ow>
</ RS9>
<RS10>
<r ow TRAI LER_I D=" 0" TI TLE=" - No Sel ect i on - " ></ r ow>
<r ow TRAI LER_I D=" 4" TI TLE=" CARS_Pr evi ew" ></ r ow>
<r ow TRAI LER_I D=" 6" TI TLE=" CARS_Pr evi ew" ></ r ow>
</ RS10>
<RS11>
<r ow I MAGE_I D=" 0" I MAGE_NAME=" - No Sel ect i on - " ></ r ow>
<r ow I MAGE_I D=" 15" I MAGE_NAME=" AFRI CANGARDENOFEDENMPEG2HD_Post er " ></ r ow>
<r ow I MAGE_I D=" 14" I MAGE_NAME=" AFRI CANGARDENOFEDENMPEG2SD_Post er " ></ r ow>
<r ow I MAGE_I D=" 5" I MAGE_NAME=" H264HDPES_WV_Post er " ></ r ow>
<r ow I MAGE_I D=" 1" I MAGE_NAME=" Por sche_Post er " ></ r ow>
<r ow I MAGE_I D=" 2" I MAGE_NAME=" Por sche_Post er " ></ r ow>
<r ow I MAGE_I D=" 3" I MAGE_NAME=" Por sche_Post er " ></ r ow>
<r ow I MAGE_I D=" 6" I MAGE_NAME=" Por sche_Post er " ></ r ow>
</ RS11>
</ MD_SAM. get _asset _di ct i onar y>
. . .
</ doc>
www.minervanetworks.com 189
iTVManager BackOffice API Technical Reference VOD Assets
md_sam.getAssetList()
Returns a list of the existing Assets. The input arguments let you establish the criteria that are used to filter the
list. For example, you can ask for only those Assets that belong to a certain category or that have a particular
movie or TV rating.
PROTOCOL
md_sam.getAssetList ( sessionID, pageNumber, entriesPerPage, assetScope,
categoryBranch, unused, unused, unused, creationMethod, availability, title,
unused, includeUnpriced, unused, movieFileStatus, ?assets, ?assetCount,
?int status )
PROTOCOL
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *pageNumber I NTEGER >=1
3 *entriesPerPage I NTEGER [ -1 | >=1]
The list of Assets is divided into pages, where each page contains entriesPerPage Assets. The
pageNumber argument lets you select the page that you want to look at, starting with page 1.
If entriesPerPage is -1, pageNumber is ignored and all matching Assets are returned in a single page.
NOTE: The rest of the input arguments define the criteria that are used to filter the Asset list.
4 assetScope[ 1] CHAR [ V| S]
The assetScope value declares the type of Assets youre interested in. Currently, there are two scopes:
normal VOD ('V') and SVOD-capable ('S'). Normal VOD Assets can be sold on their own;
SVOD-capable Assets can only be sold as part of an SVOD package. If you want both types of Assets
included in the list, set this to NULL.
5 categoryBranch[ 550] I D md_sam.get_asset_dictionary():<RS4>.CATEGORY_ID
The categoryBranch value is one or more category IDs which, taken cumulatively in the form 'ID ID
ID ...', create a category tree branch. To be included in the Asset list, an Asset must belong to a
category tree that contains the specified branch. For example, lets say Asset A is in the '12 45 1'
category tree, and Asset B is in '45 1 12'. If categoryBranch is '1 12', then the Asset list generated
by this procedure will contain Asset B ('45 1 12' is a match) but not Asset A ('12 45 1' isnt).
6 unused
7 unused
8 unused
9 creationMethod[ 3] STRI NG [ FTP| MAN]
If you only want Assets that were ingested automatically from a VOD supplier, set this argument to
'FTP'. If you only want Assets were created manually (through the md_sam.add_asset() procedure, or
through the BackOffice Console) set it to 'MAN'. If you want both, set it to NULL.
10 availability CHAR [ A| P| I| O| E]
The availability value gauges the Assets availability to customers. There are five states:
Active (A) Assets can be rented by customers.
A pending (P) Asset isnt yet available because its start date hasnt yet been reached.
An inactive (I) Asset is no longer available because it has passed its end date.
Obsolete (O) means the Asset has been set to inactive but still appears in a customers Vault.
Error (E) means the Asset couldnt be retrieved.
11 title[ 255] STRI NG
A case-insensitive substring thats compared to the Assets title.
190 www.minervanetworks.com
VOD Assets iTVManager BackOffice API Technical Reference
12 unused
13 includeUnpriced CHAR [ Y| N]
Include Assets that havent had a price set assigned to them.
14 unused
15 movieFileStatus CHAR [ A| P| E]
The movieFileStatus value gauges the status of the movie file. There are three states:
Active (A) movie files are ready to be used.
A pending (P) movie file hasnt been downloaded to the Video Server yet
Error (E) means the movie file cant be found.
OUTPUT ARGUMENTS
16 assets <RS1>
Lists the Assets that pass the criteria expressed by the input arguments. Each row describes these
attributes of a single Asset:
ASSET_ID. The Assets ID.
ASSET_ID1. Ignore this field.
ASSET_TYPE. The Assets creation method: "FTP" for Assets that were ingested automatically from a
VOD supplier, or "MAN" for Assets that were created manually. See the creationMethod input
argument for more information.
TITLE. The movies title.
IMPORTANT: The Asset s ti tl e i s truncated to 25 characters.
CATEGORY. The categories to which the Asset belongs. Category trees are expressed as category leaf
IDs separated by spaces; multiple categories are separated by commas; for example:
"1 2 15,5 6 9"
RESOURCE_TYPE. The Assets scope: "V" for normal VOD, or "S" for SVOD-capable. See the
assetScope input argument for more information.
ASSET_RATING. The Assets movie rating. Note that the TV rating isnt provided.
VS_PARTITION. The IDs of the Video Server partitions on which the movie file resides. Multiple IDs
are separated by spaces.
CONTENT_STATE_CODE. The Assets movie file status: "A" for available, "P" for pending, and "E" for
error. See the movieFileStatus input argument for more information.
SUB_SUB_CATEGORY. Ignore this field.
PRIORITY. The Assets catalog priority. See the priority argument to md_sam.add_asset() for a
description of how priorities work.
ASSET_STATUS. The Assets availability status: "A" for active, "P" for pending, "I" for inactive, "O"
for obsolete, and "E" for error. See the availability input argument for more information.
17 assetCount <RS2>
Asset and page counts, given as a single row:
PAGES. The number of pages of Assets.
COUNTS. The total number of Assets (across all pages) that fit the criteria.
www.minervanetworks.com 191
iTVManager BackOffice API Technical Reference VOD Assets
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 No Assets fit the criteria.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / 192. 168. 5. 20: 9000/ Xml Po. po?SP=MD_SAM. get Asset Li st ( 8105, 1, 100, ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' '
, ' ' , ' ' , ' ' , ' ' , ' ' , ?, ?, ?i nt %20st at us)
Response:
<doc>
<MD_SAM. get Asset Li st st at us=" 0" >
<RS1>
<r ow ROWNUM=" 1" ASSET_I D=" 524611" ASSET_I D1=" 524611" ASSET_TYPE=" MAN"
TI TLE=" Abc&#39; de" CATEGORY=" 12 1 13, 2 6 14 " RESOURCE_TYPE=" S" ASSET_RATI NG=" "
SUB_SUB_CATEGORY=" " PRI ORI TY=" " ASSET_STATUS=" A" ></ r ow>
<r ow ROWNUM=" 2" ASSET_I D=" 525402" ASSET_I D1=" 525402" ASSET_TYPE=" MAN"
TI TLE=" enc_401_aut oent i t l e_ae. . . " CATEGORY=" 23 " RESOURCE_TYPE=" V" ASSET_RATI NG=" G"
SUB_SUB_CATEGORY=" " PRI ORI TY=" " ASSET_STATUS=" A" ></ r ow>
<r ow ROWNUM=" 3" ASSET_I D=" 525458" ASSET_I D1=" 525458" ASSET_TYPE=" MAN"
TI TLE=" expi r ed101607 expi r e" CATEGORY=" 24 " RESOURCE_TYPE=" V" ASSET_RATI NG=" G"
SUB_SUB_CATEGORY=" " PRI ORI TY=" " ASSET_STATUS=" A" ></ r ow>
<r ow ROWNUM=" 4" ASSET_I D=" 525426" ASSET_I D1=" 525426" ASSET_TYPE=" MAN"
TI TLE=" H264HDPBS1012_CL Cl ear . . . " CATEGORY=" 17 22 21 " RESOURCE_TYPE=" V"
ASSET_RATI NG=" G" SUB_SUB_CATEGORY=" " PRI ORI TY=" " ASSET_STATUS=" A" ></ r ow>
<r ow ROWNUM=" 5" ASSET_I D=" 525447" ASSET_I D1=" 525447" ASSET_TYPE=" MAN"
TI TLE=" H264HDPBSV2_WV nopr evi . . . " CATEGORY=" 17 18 21 " RESOURCE_TYPE=" V"
ASSET_RATI NG=" G" SUB_SUB_CATEGORY=" " PRI ORI TY=" " ASSET_STATUS=" A" ></ r ow>
<r ow ROWNUM=" 6" ASSET_I D=" 525428" ASSET_I D1=" 525428" ASSET_TYPE=" MAN"
TI TLE=" H264SD_MARKET_CL" CATEGORY=" 17 22 20 " RESOURCE_TYPE=" V" ASSET_RATI NG=" G"
SUB_SUB_CATEGORY=" " PRI ORI TY=" " ASSET_STATUS=" A" ></ r ow>
</ RS1>
<RS2>
<r ow PAGES=" 1" COUNTS=" 6" ></ r ow>
</ RS2>
</ MD_SAM. get Asset Li st >
. . .
</ doc>
192 www.minervanetworks.com
VOD Assets iTVManager BackOffice API Technical Reference
www.minervanetworks.com 193
May 2010 iTVManager BackOffice API Technical Reference
Subscription VOD
Concepts
Subscription Video On Demand (SVOD) provides customers with subscription-based on-demand content (as
opposed to asset-based content provided by normal VOD). Each SVOD contains one or more VOD Assets;
when the customer subscribes to an SVOD, he or she is given access to all of the VOD Assets that the package
contains.
An SVOD (or SVOD Packagethe terms are synonymous) comprises:
A unique SVOD ID. The ID is generated and assigned when the SVOD is created.
A customer-friendly string name. The name must be unique across all SVODs.
A customer-friendly string description.
A poster image thats displayed in the STB UI.
A price. This applies to standalone SVODs, only (see Standalone and Associated SVODs). For associated
SVODs, the price is subsumed by that of its Service Package or Channel Package.
A list of the Assets that the SVOD contains. See SVOD-Capable Assets for more information on the
Assets that the SVOD can contain.
Standalone and Associated SVODs
Each SVOD is designated as being standalone or associated:
A standalone SVOD is available for purchase as a separate product with its own price.
An associated SVOD doesnt have its own price but, instead, is sold as part of a Service Package or
Channel Package.
SVOD Status
Each SVOD is either active, and thus available to the customer, or its inactive and hidden. All associated
SVODs must be active: Note that when you set an associated SVOD to be inactive, its not removed from the
Service/Channel Package that its associated with.
SVOD-Capable Assets
An SVOD can only contain Assets that are specifically designated as being SVOD-capable. If a VOD is
SVOD-capable, then it (the VOD) cant be rented like a normal VOD. In other words, the VODs that are
contained in an SVOD are accessible only through that SVOD.
Only those VODs that are ingested from a VOD supplier can be declared SVOD-capable. This declaration is
made in the accompanying metadata XML file.
194 www.minervanetworks.com
Subscription VOD iTVManager BackOffice API Technical Reference
Subscribing To An SVOD
To assign an SVOD to a Customer, you invoke the md_cst.set_services_to_customer() procedure.
If the IPTV Provider allows it, a customer can subscribe to a standalone SVOD from the STB. This enable
STB subscription business rule is set through Administration Console, on the System Setup > Business Rules
page. If STB subscription isnt allowed, the customer must call the IPTV Provider in order to subscribe to an
SVOD.
By definition, the customer can never directly subscribe to an associated SVOD. The only way to obtain an
associated SVOD is by subscribing to the Service/Channel Package that the SVOD is part of. Currently,
Service and Channel Package subscription is never allowed through the STBthe customer must call the
IPTV Provider.
Component Integrity
An SVOD is always modified as a single entity. For example, if you attempt to change the name, description,
and price of an SVOD (md_cdk.edit_svod_package()) but the attempt fails because the name isnt unique,
none of the attributes are modified.
Procedure Summary
md_cdk.create_svod_package() creates a new SVOD and adds it to the database.
md_cdk.delete_svod_package() removes an SVOD from the database.
md_cdk.edit_svod_package() modifies an SVODs attributes.
md_cdk.get_svod_package_list() lists the SVODs.
md_cdk.get_svod_asset_list() lists the SVOD-capable Assets.
www.minervanetworks.com 195
iTVManager BackOffice API Technical Reference Subscription VOD
Procedure Specifications
md_cdk.create_svod_package()
Creates a new SVOD Package and assigns it a unique SVOD ID. The ID is returned as the status value.
PROTOCOL
md_cdk.create_svod_package ( sessionID, name, description, price, isStandalone,
vodIDs, svodStatus, posterID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 name[ 80] STRI NG
The user-friendly name thats assigned to the SVOD. The (case-insensitive) name must be unique across
all SVODs, not just across those SVODs that are associated with the same Service/Channel Package, or
that are all standalone. This means, for example, that two Channel Packages cant contain separate
SVODs that have the same name.
3 description[ 500] STRI NG
The user-friendly description thats assigned to the SVOD.
4 price PRI CE IPTV Providers decimal format
If this is a standalone package (isStandalone := 'Y'), the value that you pass is assigned as the price of
the package. If the package isnt standalone, the argument is ignored; in this case, the price is subsumed
by the Channel Package or Service Package that the SVOD is part of.
5 isStandalone CHAR [ Y| N]
Declares that this package is standalone ('Y') or associated ('N'). A standalone package can be
purchased as a separate item; an associated package is available through a Service Package or Channel
Package only. If you set isStandalone to 'N', the price value is ignored. I
6 vodIDs[ 4000] I D|I D md_cdk.get_svod_asset_list()
A list of the Assets that will be included as part of the SVOD, where IDn is a Asset ID. Each Asset in the
list must be SVOD capable (see SVOD-Capable Assets for more on the subject).
7 svodStatus CHAR [ A| I]
The status that you want the SVOD to assume. There are two SVOD states:
'A' (active): The package is made available to the user.
'I' (inactive): The package is hidden from the user until its status is changed (to active).
8 posterID I D BackOffice Console: Asset Management > Image Mgmt
The ID of the poster (image) thats associated with this SVOD. When the user selects this package on the
STB, the poster is displayed.
OUTPUT ARGUMENTS
9 status I NTEGER
If successful, status is set to the new SVOD ID. If the procedure fails, status is set to a value
described in STATUS VALUES.
196 www.minervanetworks.com
Subscription VOD iTVManager BackOffice API Technical Reference
STATUS VALUES
>0 The new SVOD ID number.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 name isnt unique.
-4 name is an empty string.
-5 price is missing or negative. (Note that the price must be supplied, even if the package is
associated.)
-6 vodIDs couldnt be added to the SVOD, but not because one of them isnt SVOD-capable.
-7 isStandalone is neither 'Y' nor 'N'.
-9 posterID identifies a missing or invalid image. This is a warning, not an errorthe SVOD is
created even though the posterID is invalid.
-10 svodStatus is neither 'A' nor 'I'.
-11 At least one of the Assets in vodIDs isnt SVOD-capable.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cdk. cr eat e_svod_package( ' mySI D' , ' FoodOver ' , ' Ext r eme
Food Makeover s' , ' 10. 00' , ' Y' , ' 85| 2689' , ' A' , ' 4' , ?i nt st at us)
Response:
<doc>
<md_cdk. cr eat e_svod_package st at us=" 0" >
</ md_cdk. cr eat e_svod_package>
. . .
</ doc>
www.minervanetworks.com 197
iTVManager BackOffice API Technical Reference Subscription VOD
md_cdk.delete_svod_package()
Removes an SVOD from the database. If the SVOD is associated, its removed from the Service Package or
Channel Package that its part of. All customer subscriptions to the deleted SVOD are removed. The
packages Assets and poster are not removed.
PROTOCOL
md_cdk.delete_svod_package ( sessionID, svodID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 svodID I D md_cdk.get_svod_package_list()
The ID of the SVOD that you want to remove.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 One of the side-effect removals (from an associated Service/Channel Package, or out from under a
customer subscription) failed.
-13 svodID is missing or invalid.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cdk. del et e_svod_package( ' mySI D' , ' 109' , ?i nt st at us)
Response:
<doc>
<md_cdk. del et e_svod_package st at us=" 0" >
</ md_cdk. del et e_svod_package>
. . .
</ doc>
198 www.minervanetworks.com
Subscription VOD iTVManager BackOffice API Technical Reference
md_cdk.edit_svod_package()
Modifies an SVODs attributes. You can change all the attributes that were originally declared in
md_cdk.create_svod_package() except for the standalone/associated designation.
IMPORTANT: Thi s procedure modi fi es al l of the attri butes that correspond to the i nput arguments. If you onl y
want to change a subset of the attri butes, you have to retri eve and pass i n the current val ues of the
attri butes that you don t want to change.
PROTOCOL
md_cdk.edit_svod_package ( sessionID, svodID, name, description, price, vodIDs,
svodStatus, posterID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *svodID I D md_cdk.get_svod_package_list()
The ID of the SVOD that you want to edit.
NOTE: See md_cdk.create_svod_package() for descriptions of the rest of the input arguments.
3 name[ 80] STRI NG
4 description[ 500] STRI NG
5 price PRI CE IPTV Providers decimal format
6 vodIDs[ 4000] I D|I D md_cdk.get_svod_asset_list()
7 svodStatus CHAR [ A| I]
8 posterID I D BackOffice Console: Asset Management > Image Mgmt
OUTPUT ARGUMENTS
9 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 name isnt unique.
-4 name is an empty string.
-5 price is missing or negative. (Note that the price must be supplied, even if the package is
associated.)
-6 vodIDs couldnt be added to the SVOD, but not because one of them isnt SVOD-capable.
-9 posterID identifies a missing or invalid image. This is a warning, not an errorthe SVOD is
created even though the posterID is invalid.
-10 svodStatus is neither 'A' nor 'I'.
-11 At least one of the Assets in vodIDs isnt SVOD-capable.
-13 svodID is missing or invalid.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
www.minervanetworks.com 199
iTVManager BackOffice API Technical Reference Subscription VOD
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cdk. edi t _svod_package( ' mySI D' , ' 109' , ' New
FoodOver ' , ' New Ext r eme Food Makeover s' , ' 10. 00' , ' 85| 2689' , ' A' , ' 4' , ?i nt st at us)
Response:
<doc>
<md_cdk. edi t _svod_package st at us=" 0" >
</ md_cdk. edi t _svod_package>
. . .
</ doc>
200 www.minervanetworks.com
Subscription VOD iTVManager BackOffice API Technical Reference
md_cdk.get_svod_asset_list()
Retrieves a list of SVOD-capable Assets. You can filter the list by supplying the name of the supplier as an
input argument.
PROTOCOL
md_cdk.get_svod_asset_list ( sessionID, supplier, ?vodList, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 supplier[ 100] STRI NG
The supplier name, if supplied, is used to filter the Assets that are returned in the list. If you dont
supply a supplier, all SVOD-capable Assets from all suppliers are returned.
OUTPUT ARGUMENTS
3 vodList <RS1>
The list of Assets. Each row contains information about a single Asset:
ASSET_ID. The Assets ID.
TITLE. The Assets title.
TVN_PROVIDER. The name of the VOD supplier.
START_DATE. The date that the VOD will be (or was) offered.
END_DATE. The VODs end date.
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cdk. get _svod_asset _l i st ( ' mySI D' , ' HBO' , ?, ?i nt st at us)
Response:
<doc>
<md_cdk. get _svod_asset _l i st st at us=" 0" >
<RS1>
<r ow ASSET_I D=" 345" TI TLE=" Li ght Food" TVN_PROVI DER=" HBO"
START_DATE=" 01/ 02/ 2006" END_DATE=" 1/ 30/ 2006" ></ r ow>
<r ow ASSET_I D=" 1463" TI TLE=" Li ght Food" TVN_PROVI DER=" HBO"
START_DATE=" 06/ 01/ 2006" END_DATE=" 06/ 16/ 2006" ></ r ow>
<r ow ASSET_I D=" 1468" TI TLE=" Tr uck Weat her " TVN_PROVI DER=" HBO"
START_DATE=" 04/ 16/ 2005" END_DATE=" 05/ 13/ 2006" ></ r ow>
</ RS1>
</ md_cdk. get _svod_asset _l i st >
. . .
</ doc>
www.minervanetworks.com 201
iTVManager BackOffice API Technical Reference Subscription VOD
md_cdk.get_svod_package_list()
Retrieves a list of all SVODs. Each entry in the list provides a single SVODs ID, name, description, SVOD
status, and price. The entry doesnt include the packages poster or list of VOD Assets.
PROTOCOL
md_cdk.get_svod_package_list ( sessionID, ?svodList, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
OUTPUT ARGUMENTS
2 svodList <RS1>
The list of SVODs. Each row contains information about a single SVOD:
SUBSCRIPTION_PKG_ID. The SVOD ID.
NAME. The SVODs name.
DESCRIPTION. The SVODs description.
STATUS. The SVODs status: "A" for active, "I" for inactive.
PRICE. The price of the SVOD given in the Providers decimal format, but without currency symbol.
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID is invalid.
-2 General error. Call md_cdk.get_error() for details.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cdk. get _svod_package_l i st ( ' mySI D' , ?, ?i nt st at us)
Response:
<doc>
<md_cdk. get _svod_package_l i st st at us=" 0" >
<RS1>
<r ow SUBSCRI PTI ON_PKG_I D=" 1" NAME=" TRUCKS" DESCRI PTI ON=" Tr uck Shows"
STATUS=" A" PRI CE=" 3" ></ r ow>
<r ow SUBSCRI PTI ON_PKG_I D=" 2" NAME=" WEATHER" DESCRI PTI ON=" Ai r and what ' s i n i t "
STATUS=" A" PRI CE=" 59. 99" ></ r ow>
<r ow SUBSCRI PTI ON_PKG_I D=" 3" NAME=" FOOD" DESCRI PTI ON=" Ani mal s and Veget abl es"
STATUS=" A" PRI CE=" 9. 99" ></ r ow>
</ RS1>
</ md_cdk. get _svod_package_l i st >
. . .
</ doc>
202 www.minervanetworks.com
Subscription VOD iTVManager BackOffice API Technical Reference
www.minervanetworks.com 203
May 2010 iTVManager BackOffice API Technical Reference
Channel Packages
Concepts
A Channel Package is a Service that comprises a set of broadcast channels and SVODs that are sold to
customers as a single product. A Channel Package is defined by:
A unique Channel Package ID. The ID is generated and assigned when the Channel Package is created.
A Service ID thats unique across all Services.
A customer-friendly string name. The name must be unique across all Channel Packages.
A customer-friendly string description.
A price.
A start date. This is the date when the Channel Package will be available for purchase. Keep in mind that
each Channel in the Channel Package also has a start date. The start date for a specific Channel is the
latter of these two dates.
A list of Channels. Although a Channel Package will almost certainly contain Channels, it doesnt have to.
A Channel Package can only contain Live Channelsit cant contain PPV or EAS Channels.
A list of SVODs. The SVODs must be designated as associated. (See Standalone and Associated SVODs
for more on associated SVODs.) A Channel Package cant contain standalone SVODs.
Channel Package Scope
A Channel Packages scope is either narrow or wide:
A narrow Channel Package is available to a specific Lineup only.
A wide Channel Package is available to all Lineups.
You declare the scope (and the Lineup, for narrow Packages) when you create the Channel Package.
Whether narrow or wide, the Channels within the Channel Package that will actually appear in a Lineup must
be explicitly added to that Lineup. For example, lets say you create a narrow Channel Package that contains
Channels 1, 3, and 5 (listed by Channel ID), and you assign the Channel Package to a Lineup that contains
Channels 1, 2, and 3. Channel 5 wont appear in the Lineup, even though its part of the Channel Package.
One of the reasons that the Channel must be part of the Lineup is that the Channels channel number is
maintained by the Lineupthe Channel itself doesnt know its own channel number.
Channel Package Types
There are three Channel Package types:
All required Channel Packages must be purchased (by the Customer) before any other Channel Packages
can be purchased.
204 www.minervanetworks.com
Channel Packages iTVManager BackOffice API Technical Reference
Optional Channel Packages can only be purchased after all the required Channel Packages have been
purchased.
An a la carte Channel Package contains a set of Channels (onlyno SVODs) that can be purchased
individually. Like optional Channel Packages, the contents of an a la carte Package can only be purchased
after all the required Channel Packages have been purchased.
IMPORTANT: You can t add SVODs to an a l a carte Channel Package.
Channel Packages and Service Packages
A Channel Package can be made available as a standalone product, or as part of a Service Package. The same
Channel Package can be offered as both: It can be a standalone product and be part of a Service Package. The
relevance of the packages price depends on how its being offered: The price is only significant when the
Channel Package is offered standalone; when its part of a Service Package, the Channel Packages price is
subsumed by that of the Service Package.
You can add the same Channel Package to more than one Service Package.
Although a Service Package knows the (IDs of the) Channel Packages that it contains, a Channel Package
doesnt know which Service Packages its part of (if any). Use md_srv.get_service_package_info() to
retrieve a list of the Channel Packages that are contained by a Service Package.
Procedure Summary
md_cdk.create_channel_package() creates a new Channel Package and adds it to the database.
md_srv.delete_channel_pkg() removes a Channel Package from the database.
md_srv.edit_channel_package() modifies a Channel Packages attributes.
md_srv.edit_channel_package_cas_settings() Sets the CAS key rotation period and the CAS
service period values for the specified channel.
md_srv.get_channel_package_info() retrieves a list of all Channel Packages.
md_srv.get_channel_packages() retrieves a list of all Channel Packages for a specific Lineup.
md_liv.get_channel_package_dictionary() retrieves a list of Channels that have been added to a
Channel Package, and those that can be added to the (same) Channel Package.
md_cdk.update_nrep_channel_pkg_info() adds or replaces NRTC package code and LifeLine values
for existing channel packages.
www.minervanetworks.com 205
iTVManager BackOffice API Technical Reference Channel Packages
Procedure Specifications
md_cdk.create_channel_package()
Creates a new Channel Package and assigns it a unique Channel ID number. The ID is returned as the status
value. You can create an empty Channel Package with this call, and then add Channels and SVODs later
through md_srv.edit_channel_package().
PROTOCOL
NOTE: The md_cdk.create_channel _package() call has been extended to include the two new optional fields,
underlined below. These fields allow you to include channel package data used for NRTC reports. (See
Input Arguments section for details.) For the 4.0 release, you can continue to use the call with the original
set of 10 parameters. However, for subsequent releases, support for sending just 10 parameters will be
discontinued, and you need to configure your CDK tools to pass all 12 parameters (using null values if no
NRTC data is supplied.)
md_cdk.create_channel_package ( sessionID, name, description, price, startDate,
isWide, type, lineupID, channelIDs, svodIDs, packageCode, i sLi f eLi ne, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *name[ 80] STRI NG
The user-friendly name thats assigned to the Channel Package. The name must be unique across all
Channel Packages.
3 description[ 500] STRI NG
The user-friendly description thats assigned to the Channel Package.
4 *price IPTV Providers date format
The price of the Channel Package. The price is ignored (but still required) if the Channel Package is
offered as part of a Service Package; in this case, the price is subsumed by the price of the Service
Package.
5 startDate DATE IPTV Providers date format
The date when the Channel Package will be made available to customers. If startDate is NULL or in the
past, the Package is immediately available.
6 isWide CHAR [ Y| N]
Sets the Channel Packages scope. If you want this Channel Package to be available to all Lineups (a wide
Channel Package), pass 'Y' (and set lineupID to -1). If the Package is meant for a specific Lineup (a
narrow Channel Package), pass 'N' and set lineupID to the Lineups ID. The default is 'N'. You cant
change this attribute if a Customer is already subscribed to this Channel Package.
7 *type I NTEGER [ 1| 2| 3]
One of these integers:
1 means the Channel Package is required. The end user is compelled to purchase the Package.
2 means the Channel Package is optional. After the user has purchased all the required Channel
Packages, he can purchase any number of the optional Packages.
3 means a la carte. The user can buy individual Channels from the a la carte Channel Package. You
cant add SVODs to an a la carte Channel Package; if you set type to 3, the svodIDs argument is ignored.
You cant change this attribute if a Customer is already subscribed to this Channel Package.
206 www.minervanetworks.com
Channel Packages iTVManager BackOffice API Technical Reference
8 *lineupID I D get_ISP_dictionary():<RS2>.LINEUP_ID
If isWide

is 'N', this is the ID of the (single) Lineup that will be able to offer this Channel Package. If is
isWide

is 'Y', you must set lineupID

to -1. You cant change this attribute if a Customer is already
subscribed to this Channel Package.
9 channelIDs[ 4000] I D|I D md_liv.get_channel_list():<RS1>.CHANNEL_ID
A list of the Channels that will be included as part of this Channel Package. The list can only include Live
Channelsit mustnt contain PPV or EAS Channels
If this is a narrow Channel Package (isWide = 'N'), all of the Channels in the channelIDs must be part
of the Lineup identified by lineupID.
10 svodIDs[ 4000] I D|I D md_srv.get_services():<RS5>.SVOD_PKG_ID
A list of the SVODs that will be included as part of this Channel Package, where IDn is an SVOD ID. All
of the SVODs in the list must be designated as associated (i.e. they cant be standalone). If type

is 3 (a la
carte), svodIDs is ignored: You cant add SVODs to an a la carte Channel Package.
NRTC Parameters
Optionally include the following parameters to supply NRTC information for the channel package.
11 packageCode[ 20] STRI NG
The package code for the channel package, which is used in NRTC reporting.
12 isLifeLine[ 1] CHAR [ Y| N]
Whether or not the channel package has LifeLine.
OUTPUT ARGUMENTS
13 status I NTEGER
If successful, st at us is set to the new Channel Package ID. If the procedure fails, st at us is set to a
value described in STATUS VALUES.
STATUS VALUES
>0 The new Channel Package ID number.
-1 sessionID

is invalid.
-2 Unknown SQL error.
-3 name

isnt unique.
-4 name

is an empty string.
-5 price

is missing or negative.
-7 Youre trying to add an SVOD to an a la carte Channel Package.
-8 One of the SVODs in the svodIDs list doesnt exist or is standalone.
-10 Youre trying to change type

, isWide

, or lineupID but the Channel Package already has a
subscriber.
-11 type

is missing or invalid.
-12 isWide

is 'N' and lineupID

is invalid, or

isWide

is 'Y' and lineupID

isnt -1.
-13 One of the Channels in channelIDs

isnt valid, either because it doesnt exist, or because isWide


is 'N' and its not part of lineupID

.
-14 channelIDs contains a PPV, EAS channel, or Promotion channel.
-17 The isLifeLine value is invalid.
-100 DataServices exception.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
www.minervanetworks.com 207
iTVManager BackOffice API Technical Reference Channel Packages
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cdk. cr eat e_channel _package( ' mySI D' , ' Shah' s Al acar t e
Chpkg' , ' Al acar t e Chpkg' , ' 0. 25' , ' ' , ' N' , ' 3' , ' 3001' , ' 14| 13| 15| 16' , ' ' , ' FI CTLBSC01' , ' N' , ?i nt
st at us)
Response:
<doc>
<md_cdk. cr eat e_channel _package st at us=" 0" >
</ md_cdk. cr eat e_channel _package>
. . .
</ doc>
208 www.minervanetworks.com
Channel Packages iTVManager BackOffice API Technical Reference
\
md_srv.delete_channel_package()
Deletes a Channel Package. By default, youre not allowed to delete a Channel Package that has subscribers.
You can override this behavior by setting forceDelete

to 'Y'.
PROTOCOL
md_srv.delete_channel_package ( sessionID, channelPackageID, forceDelete,
?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelPackageID I D md_srv.get_channel_packages():<RS1>.CHANNEL_PKG_ID
The ID of the Channel Package that you want to delete.
3 *forceDelete CHAR [ Y| N]
When set to 'Y', the Channel Package is deleted even if it has subscribers. If the argument is 'N', the
Package is only deleted if it doesnt have subscribers.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 Unknown SQL error.
-3 channelPackageID

is invalid.
-4 The Channel Package has subscribers and forceDelete

isnt 'Y'.
-5 forceDelete

is neither 'Y' nor 'N'.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sr v. del et e_channel _package( ' mySI D' , ' 3' , ' Y' , ?i nt
st at us)
Response:
<doc>
<md_sr v. del et e_channel _package st at us=" 0" >
</ md_sr v. del et e_channel _package>
. . .
</ doc>
www.minervanetworks.com 209
iTVManager BackOffice API Technical Reference Channel Packages
md_srv.edit_channel_package()
Modifies the attributes of a Channel Package. You cant associate the Channel Package with a different Lineup
or change its type (optional, required, a la carte) if the Package already has subscribers.
IMPORTANT: Thi s procedure modi fi es al l of the attri butes that correspond to the i nput arguments. If you onl y
want to change a subset of the attri butes, you have to retri eve and pass i n the current val ues of the
attri butes that you don t want to change.
PROTOCOL
NOTE: The md_cdk.edi t_channel _package() call has been extended to include the two new optional fields,
underlined below. These fields allow you to include channel package data used for NRTC reports. (See
Input Arguments section for details.) For the 4.0 release, you can continue to use the call with the original
set of 11 parameters. However, for subsequent releases, support for sending just 11 parameters will be
discontinued, and you need to configure your CDK tools to pass all 13 parameters (using null values if no
NRTC data is supplied.)
md_srv.edit_channel_package ( sessionID, channelPackageID, name, description, price,
startDate, isWide, type, lineupID, channelIDs, svodIDs, packageCode, i sLi f eLi ne,
?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelPackageID I D md_srv.get_channel_packages():<RS1>.CHANNEL_PKG_ID
The ID of the Channel Package that you want to edit.
NOTE: See md_cdk.create_channel_package() for descriptions of the rest of the input arguments.
3 *name[ 80] STRI NG
IMPORTANT: If a) the Channel Package contai ns Channel s that are encrypted, b) you re usi ng the Channel
Package name to i denti fy the Package i n the Condi ti on Access system, and c) you re usi ng a
dynami c encrypti on key, you mustn t change the Channel Package s name. If you need to change
the name, you must del ete the Channel Package and then re-add i t.
4 description[ 500] STRI NG
5 *price PRI CE IPTV Providers decimal format
6 startDate DATE IPTV Providers date format
7 isWide CHAR [ Y| N]
8 *type I NTEGER [ 1| 2| 3]
9 *lineupID I D get_ISP_dictionary():<RS2>.LINEUP_ID
10 channelIDs[ 4000] I D|I D
md_liv.get_channel_package_dictionary():<RS2>.CHANNEL_ID
11 svodIDs[ 4000] I D|I D md_srv.get_services():<RS5>.SVOD_PKG_ID
NRTC Parameters
Optionally include the following parameters to supply NRTC information for the channel package.
12 packageCode[ 20] STRI NG
The package code for the channel package, which is used in NRTC reporting.
13 isLifeLine[ 1] CHAR [ Y| N]
Whether or not the channel package has LifeLine.
210 www.minervanetworks.com
Channel Packages iTVManager BackOffice API Technical Reference
OUTPUT ARGUMENTS
14 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 Unknown SQL error.
-3 name

isnt unique.
-4 name

is an empty string.
-5 price

is missing or negative.
-6 You attempted to change the Lineup with which the Channel Package is associated, but the Package
already has subscribers.
-7 Youre trying to add an SVOD to an a la carte Channel Package.
-8 One of the SVODs in the svodIDs list doesnt exist or is standalone.
-9 channelPackageID is invalid.
-10 Youre trying to change type

, isWide

, or lineupID but the Channel Package already has a
subscriber.
-11 type

is missing or invalid.
-12 isWide

is 'N' and lineupID

is invalid, or

isWide

is 'Y' and lineupID

isnt -1.
-13 isWide

is 'N' and one of the Channels in channelIDs

isnt part of lineupID

.
-14 channelIDs contains a PPV, EAS channel, or Promotion channel.
-17 The isLifeLine value is invalid.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sr v. edi t _channel _package( ' mySI D' , ' 64' , ' Opt i onal Packa
ge' , ' Opt i onal
Chpkg' , ' 0. 19' , ' 31/ 01/ 2007' , ' N' , ' 2' , ' 3001' , ' 1005| 1002' , ' ' , ' FI CTLBSC01' , ' N' , ?i nt st at us)
Response:
<doc>
<md_sr v. edi t _channel _package st at us=" 0" >
</ md_sr v. edi t _channel _package>
. . .
</ doc>
211 www.minervanetworks.com
Channel Packages iTVManager BackOffice API Technical Reference
md_srv.edit_channel_package_cas_settings()
Sets the CAS key rotation period and the CAS service period values for the specified Channel Package.
md_srv.edit_channel_package_cas_settings ( sessionID, channelPackageID,
cas_key_rotation_period, cas_service_period, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelPackageID I D md_srv.get_channel_packages():<RS1>.CHANNEL_PKG_ID
The ID of the channel package that youre interested in.
3 cas_key_rotation_periodI D I NTEGER
(Widevine environments only.) The frequency, in weeks, with which the Conditional Access decryption
key for this Channel Package is changed. (Occasional key changes help prevent unauthorized access.)
Key rotation only applies to dynamic keys. If youre using a fixed key, this field has no effect.
If you leave the field blank, the key is never changed.
NOTE: - You cant change the key rotation period setting by editing the Channel Package settings of a
previously added Channel Package. Instead, to reset a key rotation period, you must remove the
Channel Package and then re-add it, setting the new key rotation period in the process.
4 cas_service_period I D I NTEGER
The CAS service period in days.
NOTE: Leave this field blank. Instead, set the Service Period for (all) Live and PPV channels, respectively,
by setting the default_live_cas_service_period parameter in the Configuring Conditional
Access chapter of the iTVManager Configuration Guides.
OUTPUT ARGUMENTS
5 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 Unknown error.
-3 channel_pkg_id is invalid.
-15 cas_key_rotation_period is invalid
-16 cas_service_period is invalid.
212 www.minervanetworks.com
Channel Packages iTVManager BackOffice API Technical Reference
EXAMPLE
Call:
ht t p: / / ser ver I P: por t / Xml Po. po?SP=md_sr v. edi t _channel _package_cas_set t i ngs( ' mySI D' ,
82, ' 2' , ' 3' , ?i nt st at us)
Response:
<doc>
<md_sr v. edi t _channel _package_cas_set t i ngs st at us=" 0" >
</ md_sr v. edi t _channel _package_cas_set t i ngs>
. . .
</ doc>
md_liv.get_channel_package_dictionary()
Returns the Channels that have been added to a specific Channel Package, and those that can be added to the
Channel Package.
IMPORTANT: Thi s i sn t real l y a di cti onary procedure. It returns i nformati on about an exi sti ng Channel
Package; i t can t be used to gather i nformati on that you need to create a new Channel Package.
md_liv.get_channel_package_dictionary ( sessionID, channelPackageID, ?usedChannels,
?availableChannels, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelPackageID I D md_srv.get_channel_packages():<RS1>.CHANNEL_PKG_ID
The ID of the Channel Package that youre interested in.
OUTPUT ARGUMENTS
3 usedChannels <RS1>
A list of the Channels that have been added to the Channel Package identified by channelPackageID
2
.
Each row contains information about a single Channel:
CHANNEL_ID. The Channels ID.
CHANNEL_NAME. The Channels name.
CHANNEL_TYPE. The Channels type, one of "LIVE", "PPV", or "EAS".
STATUS. The Channels status: "A" for active, "I" for inactive.
EFFECTIVE_DATE. The date and time upon which the Channel will be (or was) enabled. The date is
expressed using the Providers date format.
LINEUP_ID. The ID of the Lineup that the Channel is part of. If this is a wide Channel Package,
LINEUP_ID will be -1.
4 availableChannels

<RS2>
A list of the Channels that can be added to the Channel Package identified by channelPackageID
2
. If
the Channel Package is wide, then the list includes all Channels; if its narrow, it only includes Channels
that are in the same Lineup as the Channel Package. Each row contains information about a single
Channel:
CHANNEL_ID. The Channels ID.
CHANNEL_NAME. The Channels name.
CHANNEL_TYPE. The Channels type, one of "LIVE", "PPV", or "EAS".
5 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
www.minervanetworks.com 213
iTVManager BackOffice API Technical Reference Channel Packages
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-4 channelPackageID

is invalid.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. get _channel _package_di ct i onar y( ' mySI D' , ' 1' , ?, ?, ?
i nt st at us)
Response:
<doc>
<md_l i v. get _channel _package_di ct i onar y st at us=" 0" >
<RS1>
<r ow CHANNEL_I D=" 10" CHANNEL_NAME=" A &amp; amp; E Net wor k" CHANNEL_TYPE=" LI VE"
STATUS=" A" EFFECTI VE_DATE=" 2007- 04- 12 01: 00: 00. 0" Li neupI D=" 5" ></ r ow>
<r ow CHANNEL_I D=" 11" CHANNEL_NAME=" BALOCA" CHANNEL_TYPE=" LI VE" STATUS=" A"
EFFECTI VE_DATE=" 2007- 04- 12 01: 00: 00. 0" Li neupI D=" 5" ></ r ow>
<r ow CHANNEL_I D=" 21" CHANNEL_NAME=" CBC" CHANNEL_TYPE=" LI VE" STATUS=" A"
EFFECTI VE_DATE=" 2007- 04- 12 01: 00: 00. 0" Li neupI D=" 5" ></ r ow>
<r ow CHANNEL_I D=" 27" CHANNEL_NAME=" ABC Fami l y" CHANNEL_TYPE=" LI VE" STATUS=" A"
EFFECTI VE_DATE=" 2007- 04- 12 01: 00: 00. 0" Li neupI D=" 5" ></ r ow>
<r ow CHANNEL_I D=" 72" CHANNEL_NAME=" ATTN Cabl e 52 Oceani c" CHANNEL_TYPE=" LI VE"
STATUS=" A" EFFECTI VE_DATE=" 2007- 04- 12 01: 00: 00. 0" Li neupI D=" 5" ></ r ow>
<r ow CHANNEL_I D=" 79" CHANNEL_NAME=" AZNTV" CHANNEL_TYPE=" LI VE" STATUS=" A"
EFFECTI VE_DATE=" 2007- 04- 12 01: 00: 00. 0" Li neupI D=" 5" ></ r ow>
</ RS1>
<RS2>
<r ow CHANNEL_I D=" 15" CHANNEL_NAME=" KBLN ( BETTER) " CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 16" CHANNEL_NAME=" Br avo" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 17" CHANNEL_NAME=" CA14SC ( Met r o- Cabl e) " CHANNEL_TYPE=" LI VE"
></ r ow>
<r ow CHANNEL_I D=" 37" CHANNEL_NAME=" CHCH ( Gl obal - Hami l t on) " CHANNEL_TYPE=" LI VE"
></ r ow>
<r ow CHANNEL_I D=" 38" CHANNEL_NAME=" CH Vancouver I sl and" CHANNEL_TYPE=" LI VE"
></ r ow>
<r ow CHANNEL_I D=" 61" CHANNEL_NAME=" CTV" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 62" CHANNEL_NAME=" CUNY" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 63" CHANNEL_NAME=" Di sney Channel " CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 64" CHANNEL_NAME=" ESPN" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 65" CHANNEL_NAME=" Et er nal Wor d Tel evi si on Net wor k"
CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 66" CHANNEL_NAME=" Fami l yNet " CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 67" CHANNEL_NAME=" FFLOCA" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 68" CHANNEL_NAME=" Tel emi ami FL40MI " CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 69" CHANNEL_NAME=" WKFKLP" CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 70" CHANNEL_NAME=" Gal avi si on Cabl e Net wor k" CHANNEL_TYPE=" LI VE"
></ r ow>
<r ow CHANNEL_I D=" 71" CHANNEL_NAME=" Tel emundo Tel evi si on Net wor k"
CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 73" CHANNEL_NAME=" Channel 18 ( USA) " CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 74" CHANNEL_NAME=" Fox Spor t s Sout hwest " CHANNEL_TYPE=" LI VE"
></ r ow>
<r ow CHANNEL_I D=" 75" CHANNEL_NAME=" Fox Spor t s Sout hwest ( Dal l as f eed) "
CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 76" CHANNEL_NAME=" Fox Spor t s Sout hwest ( Houst on f eed) "
CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 77" CHANNEL_NAME=" Home Shoppi ng Net wor k" CHANNEL_TYPE=" LI VE"
></ r ow>
214 www.minervanetworks.com
Channel Packages iTVManager BackOffice API Technical Reference
<r ow CHANNEL_I D=" 78" CHANNEL_NAME=" Comcast Spor t sNet Mi d- At l ant i c"
CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 80" CHANNEL_NAME=" San Di ego&amp; #39; s Lear ni ng Channel "
CHANNEL_TYPE=" LI VE" ></ r ow>
<r ow CHANNEL_I D=" 81" CHANNEL_NAME=" KCFT- LP TV 35" CHANNEL_TYPE=" LI VE" ></ r ow>
</ RS2>
</ md_l i v. get _channel _package_di ct i onar y>
. . .
</ doc>
www.minervanetworks.com 215
iTVManager BackOffice API Technical Reference Channel Packages
md_srv.get_channel_package_info()
Returns a list of all active Channel Packages.
PROTOCOL
md_srv.get_channel_package_info ( sessionID, channelPackageID, ?channelPackages,
?channels, ?SVODs, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelPackageID I D md_srv.get_channel_packages():<RS1>.CHANNEL_PKG_ID
The ID of the Channel Package for which you want information.
OUTPUT ARGUMENTS
3 channelPackages <RS1>
A list of the active Channel Package. Each row describes a single Channel Package:
CHANNEL_PKG_ID. The ID of the Channel Package.
NAME. The Channel Packages name.
DESCRIPTION. unused.
PRICE. The current price of the Channel Package, expressed in the IPTV Providers decimal style and
without a currency symbol.
EFFECTIVE_DATE. The date upon which the Channel Package will be (or was) enabled. The date is
expressed in the Providers date format.
TYPE. The Channel Packages Service Code, either CHPKG for a non-a la carte Package or ALACARTE
for an a la carte Package.
STATUS. "A" for active, "I" for inactive.
LINEUP_ID. The ID of the Lineup that the Channel Package is assigned to. If this is a wide Channel
Package, LINEUP_ID will be -1.
4 channels <RS2>
A list of the Channels in the Channel Package. Each row describes a single Channel:
CHANNEL_ID. The Channels ID. For more information about the Channel, pass the ID to
md_liv.get_channel_list().
5 SVODs <RS3>
A list of the SVODs in the Channel Package. Each row describes a single SVOD:
SUBSCRIPTION_PKG_ID. The SVODs ID.
NAME. The SVODs name.
6 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 channelPackageID

is invalid.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
216 www.minervanetworks.com
Channel Packages iTVManager BackOffice API Technical Reference
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sr v. get _channel _package_i nf o( ' mySI D' , ' 1' , ?, ?, ?, ?i nt
st at us)
Response:
<doc>
<md_sr v. get _channel _package_i nf o st at us=" 0" >
<RS1>
<r ow CHANNEL_PKG_I D=" 1" NAME=" MN A LA CARTE" DESCRI PTI ON=" MN A LA CARTE" PRI CE="
2. 99" EFFECTI VE_DATE=" 12/ 04/ 2007" TYPE=" A l a car t e" STATUS=" A" LI NEUP_I D=" 5" ></ r ow>
</ RS1>
<RS2>
<r ow CHANNEL_I D=" 10" ></ r ow>
<r ow CHANNEL_I D=" 11" ></ r ow>
<r ow CHANNEL_I D=" 21" ></ r ow>
<r ow CHANNEL_I D=" 27" ></ r ow>
<r ow CHANNEL_I D=" 72" ></ r ow>
<r ow CHANNEL_I D=" 79" ></ r ow>
</ RS2>
<RS3>
</ RS3>
</ md_sr v. get _channel _package_i nf o>
. . .
</ doc>
www.minervanetworks.com 217
iTVManager BackOffice API Technical Reference Channel Packages
md_srv.get_channel_packages()
Returns all Channel Packages, only those Channel Packages that are available to a specific Lineup, or only the
wide Channel Packages.
PROTOCOL
md_srv.get_channel_packages ( sessionID, lineupID, ?channelPackages, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 lineupID I D
The ID of the Lineup that youre interested in. If you supply a valid Lineup ID, the output will include all
narrow Channel Packages that are part of that Lineup and all wide Channel Packages. If lineupID is -1,
the output will only include wide Channel Packages. If lineupID is missing, the output will include all
Channel Packages.
OUTPUT ARGUMENTS
3 channelPackages <RS1>
A list of the Channel Packages that are available to lineupID. Each row contains information about a
single Channel Package:
CHANNEL_PKG_ID. The ID of the Channel Package.
NAME. The Channel Packages name.
DESCRIPTION. The Channel Packages description.
TYPE. "Required" for required Channel Packages, "Optional" for optional Channel Packages, and
"A la carte" for a la carte Channel Packages
STATUS. "A" for active, "I" for inactive.
EFFECTIVE_DATE. The date and time upon which the Channel Package will be (or was) enabled. The
date is expressed using the Providers date format.
LNEUP_ID. The ID of the Lineup that the Channel Package is assigned to. If this is a wide Channel
Package, LINEUP_ID will be -1.
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 lineupID

is invalid.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sr v. get _channel _packages( ' mySI D' , ' 5' , ?, ?i nt st at us)
Response:
<doc>
<md_sr v. get _channel _packages st at us=" 0" >
<RS1>
218 www.minervanetworks.com
Channel Packages iTVManager BackOffice API Technical Reference
<r ow CHANNEL_PKG_I D=" 1" NAME=" MN A LA CARTE" DESCRI PTI ON=" MN A LA CARTE" TYPE=" A
l a car t e" STATUS=" A" EFFECTI VE_DATE=" 2007- 04- 12 01: 00: 00. 0" Li neupI D=" 5" ></ r ow>
<r ow CHANNEL_PKG_I D=" 21" NAME=" CDK CP" DESCRI PTI ON=" " TYPE=" Requi r ed" STATUS=" A"
EFFECTI VE_DATE=" 2007- 04- 20 00: 00: 00. 0" Li neupI D=" - 1" ></ r ow>
</ RS1>
</ md_sr v. get _channel _packages>
. . .
</ doc>
www.minervanetworks.com 219
iTVManager BackOffice API Technical Reference Channel Packages
md_cdk.update_nrep_channel_pkg_info()
Adds or replaces NRTC package code (packageCode) values and LifeLine (isLifeLine) values for existing
channel packages.
For more information on this call, see document iTVManager 4.1 Creating NRTC Reports.
PROTOCOL
md_cdk. cr eat e_channel _package ( sessi onI D, PkgI D, packageCode, i sLi f eLi ne,
?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelPackageID I D md_srv.get_channel_packages():<RS1>.CHANNEL_PKG_ID
The ID of the Channel Package that you want to edit.
3 packageCode[ 20] STRI NG
The package code for the channel package, which is used in NRTC reporting.
4 isLifeLine[ 1] CHAR [ Y| N]
Whether or not the channel package has LifeLine.
OUTPUT ARGUMENTS
5 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-9 channelPacakgeID is invalid.
-17 The isLifeLine value is invalid.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cdk. updat e_nr ep_channel _pkg_i nf o( ' mySI D' , ' 64' , ' FI CTL
BSC01' , ' N' , ?i nt st at us)
Response:
<doc>
<md_cdk. UPDATE_NREP_CHANNEL_PKG_I NFO st at us=" 0" >
</ md_cdk. UPDATE_NREP_CHANNEL_PKG_I NFO>
</ doc>
220 www.minervanetworks.com
Channel Packages iTVManager BackOffice API Technical Reference
www.minervanetworks.com 221
May 2010 iTVManager BackOffice API Technical Reference
Service Packages
Concepts
A Service Package is a bundle of Services (email, Web, chat, etc), Channel Packages, and SVODs thats offered
as a single product. A Service Package comprises:
A unique Service Package ID. The ID is generated and assigned when the Service Package is created.
A customer-friendly string name. The name must be unique across all Service Packages.
A customer-friendly string description.
A price.
A start date. This is the date when the Service Package is available for purchase.
A list of the Services that the Service Package contains.
A list of the Channel Packages that the Service Package contains. For more on Channel Packages, see the
Channel Packages chapter. You cant add a la carte Channel Packages to a Service Package.
A list of the SVODs that the Service Package contains. Each SVOD must be designated as associated.
(see the Standalone and Associated SVODs section of the Subscription VOD chapter).
Procedure Summary
md_cdk.create_service_package() creates a new Service Package and adds it to the database.
md_srv.del_service_pkg() removes a Service Package from the database.
md_cdk.edit_service_package() modifies a Service Packages attributes.
md_srv.get_service_package_info() retrieves information about a Service Package.
222 www.minervanetworks.com
Service Packages iTVManager BackOffice API Technical Reference
Procedure Specifications
md_cdk.create_service_package()
Creates a new Service Package and assigns it a new Service Package ID. The ID is returned in the status
argument.
PROTOCOL
md_cdk.create_service_package ( sessionID, name, description, price, startDate,
channelPackageIDs, miscServiceIDs, svodIDs, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *name[ 80] STRI NG
The user-friendly name thats assigned to the Service Package. The name must be unique across all
Service Packages.
3 description[ 500] STRI NG
The user-friendly description thats assigned to the Service Package.
4 *price PRI CE IPTV Providers decimal format
The price of the Service Package.
5 startDate DATE IPTV Providers date format
The date when the Service Package will be made available to customers. If you dont supply a startDate
value, the Package is immediately available.
6 channelPackageIDs I D|I D md_srv.get_services():<RS2>.CHANNEL_PKG_ID
A list of the Channel Packages that will be included as part of this Service Package. Note that youre not
allowed to add a la carte Channel Packages to a Service Package.
7 miscServiceIDs I D|I D md_srv.get_services():<RS5>.SERVICE_ID
A list of the Miscellaneous Services (email, web, wet bar, etc.) that will be included as part of the Service
Package.
8 svodIDs I D|I D md_srv.get_services():<RS4>.SVOD_PKG_ID
A list of the SVODs to which the customer will be subscribed. All of the SVODs in the list must be
associated.
OUTPUT ARGUMENTS
9 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
www.minervanetworks.com 223
iTVManager BackOffice API Technical Reference Service Packages
STATUS VALUES
>0 The new Service Package ID number.
-1 sessionID

is invalid.
-2 Unknown SQL error.
-3 name isnt unique.
-4 name is an empty string.
-5 price

is missing or negative.
-8 One of the SVODs in svodIDs

doesnt exist or is standalone.
-10 An ID in channelPackageIDs

is invalid: Either it doesnt exist, or the Channel Package is a la
carte.
-11 One of the Miscellaneous Services in miscServiceIDs

doesnt exist.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cdk. cr eat e_ser vi ce_package( ' mySI D' , ' SDK Sr vPkg' , ' SDK
Ever yt hi ng Sr vpkg' , ' 35. 99' , ' 21/ 01/ 2007' , ' 362| 365| 363| 364' , ' 2| 3' , ' ' , ?i nt st at us)
Response:
<doc>
<md_cdk. cr eat e_ser vi ce_package st at us=" 0" >
</ md_cdk. cr eat e_ser vi ce_package>
. . .
</ doc>
224 www.minervanetworks.com
Service Packages iTVManager BackOffice API Technical Reference
md_srv.del_service_pkg()
Deletes a Service Package.
PROTOCOL
md_srv.del_service_pkg ( sessionID, servicePackageID, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *servicePackageID I D
The ID of the Service Package that you want to delete.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sr v. del _ser vi ce_pkg( ' mySI D' , ' 2000' , ?i nt st at us)
Response:
<doc>
<md_sr v. del _ser vi ce_pkg st at us=" 0" >
</ md_sr v. del _ser vi ce_pkg>
. . .
</ doc>
www.minervanetworks.com 225
iTVManager BackOffice API Technical Reference Service Packages
md_cdk.edit_service_package()
Modifies a Service Packages attributes.
IMPORTANT: Thi s procedure modi fi es al l of the attri butes that correspond to the i nput arguments. If you onl y
want to change a subset of the attri butes, you have to retri eve and pass i n the current val ues of the
attri butes that you don t want to change.
PROTOCOL
md_cdk.edit_service_package ( sessionID, servicePackageID, name, description, price,
startDate, channelPackageIDs, miscServiceIDs, svodIDs, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *servicePackageID I D
The ID of the Service Package that you want to edit.
3 *name[ 80] STRI NG
The user-friendly name thats assigned to the Service Package. The name must be unique across all
Service Packages.
4 description[ 500] STRI NG
The user-friendly description thats assigned to the Service Package.
5 *price IPTV Providers date format
The price of the Service Package.
6 startDate DATE IPTV Providers date format
The date when the Service Package will be made available to customers. If you dont supply a startDate
value, the Package is immediately available.
7 channelPackageIDs I D|I D md_srv.get_services():<RS2>.CHANNEL_PKG_ID
A list of the Channel Packages that will be included as part of this Service Package. Note that youre not
allowed to add a la carte Channel Packages to a Service Package.
8 miscServiceIDs I D|I D md_srv.get_services():<RS5>.SERVICE_ID
A list of the Miscellaneous Services (email, web, wet bar, etc.) that will be included as part of the Service
Package.
9 svodIDs I D|I D md_srv.get_services():<RS4>.SVOD_PKG_ID
A list of the SVODs to which the customer will be subscribed. All of the SVODs in the list must be
associated.
OUTPUT ARGUMENTS
10 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
226 www.minervanetworks.com
Service Packages iTVManager BackOffice API Technical Reference
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 Unknown SQL error.
-3 name isnt unique.
-4 name is an empty string.
-5 price is missing or negative.
-8 One of the SVODs in svodIDs doesnt exist or is standalone.
-9 Invalid startDate value.
-10 An ID in channelPackageIDs is invalid: Either it doesnt exist, or the Channel Package is a la
carte.
-11 One of the Miscellaneous Services in miscServiceIDs doesnt exist.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sr v. edi t _ser vi ce_pkg( ' mySI D' , ' 3004' , ' 16 Sr vPkg' , ' SDK
Ever yt hi ng Sr vpkg' , ' 9. 99' , ' 30/ 01/ 2007' , ' 1| 2| 3| 4' , ' ' , ' ' , ?i nt st at us)
Response:
<doc>
<md_sr v. edi t _ser vi ce_pkg st at us=" 0" >
</ md_sr v. edi t _ser vi ce_pkg>
. . .
</ doc>
www.minervanetworks.com 227
iTVManager BackOffice API Technical Reference Service Packages
md_srv.get_service_package_info()
Returns information about a Service Package.
PROTOCOL
md_srv.get_service_package_info ( sessionID, servicePackageID, ?servicePackageInfo,
?channelPackages, ?miscServices, ?SVODs, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *servicePackageID I D
The ID of the Service Package for which you want information.
OUTPUT ARGUMENTS
3 servicePackageInfo <RS1>
Information about the Service Package:
SERVICE_PKG_ID. The Service Packages ID; this will always be the same as servicePackageID.
NAME. The Service Packages name.
DESCRIPTION. The Service Packages name.
PRICE. The Service Packages price.
EFFECTIVE_DATE. The date and time upon which the Channel will be (or was) enabled. The date is
expressed using the Providers date format.
STATUS. The Service Packages activation status: A for active, or I for inactive.
4 channelPackages <RS2>
A table that returns information about each of Channel Packages in the Service Package. Each row
describes a single Channel Package:
CHANNEL_PKG_ID. The Channel Packages ID.
NAME. The Channel Packages name.
LINEUP_ID. The ID of the Lineup that the Channel Package is part of. If this is a wide Channel
Package, the value will be -1.
5 miscServices <RS3>
A table that returns information about each of the other Services in the Service Package. Each row
describes a single Service:
SERVICE_ID. The Services Other Service ID. This ID is unique only across the other Miscellaneous
Services.
NAME. The Services name.
6 SVODs <RS4>
A table that returns information about each of the SVODs in the Service Package. Each row describes a
single SVOD:
SUBSCRIPTION_PKG_ID. The SVOD ID.
NAME. The SVODs name.
7 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
228 www.minervanetworks.com
Service Packages iTVManager BackOffice API Technical Reference
STATUS VALUES
0 Success.
-1 sessionID

is invalid.
-2 General error. Call md_cdk.get_error() for details.
-3 servicePackageID

is invalid.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_sr v. get _ser vi ce_package_i nf o( ' mySI D' , ' 21' , ?, ?, ?, ?, ?i
nt st at us)
Response:
<doc>
<md_sr v. get _ser vi ce_package_i nf o st at us=" 0" >
<md_sr v. get _ser vi ce_package_i nf o st at us=" 0" >
<RS1>
<r ow SERVI CE_PKG_I D=" 21" NAME=" New Package" DESCRI PTI ON=" A New Package"
PRI CE=" 5. 45" EFFECTI VE_DATE=" 20/ 09/ 2007" STATUS=" A" NEXT_PRI CE=" "
NEXT_PRI CE_START_DATE=" " ></ r ow>
</ RS1>
<RS2>
</ RS2>
<RS3>
<r ow SERVI CE_I D=" 0" NAME=" Cal l er I D" ></ r ow>
<r ow SERVI CE_I D=" 1" NAME=" Emai l " ></ r ow>
</ RS3>
<RS4>
</ RS4></ md_sr v. get _ser vi ce_package_i nf o>
. . .
</ doc>
www.minervanetworks.com 229
May 2010 iTVManager BackOffice API Technical Reference
Caller ID
Concepts
The SendMessage() procedure lets you send a Caller ID notification to a specific STB.
Procedure Summary
SendMessage() sends a Caller ID notification.
230 www.minervanetworks.com
Caller ID iTVManager BackOffice API Technical Reference
Procedure Specifications
SendMessage()
Sends a Caller ID notification to an STB.
NOTE: Avoid including a pipe (|) symbol in the message or phoneNumber fields. This symbol is rendered as an
erroneous character by the STB.
IMPORTANT: Thi s i s a gl obal functi oni t i sn t part of a package, and so doesn t have an md_<package> prefi x.
Al so, unl i ke the other API procedures, the spel l i ng of SendMessage() i s case-sensi ti ve.
PROTOCOL
SendMessage ( deviceIP, message, phoneNumber, ?int status )
INPUT ARGUMENTS
1 *deviceIP STRI NG
The IP address of the STB to which you want to send the Caller ID message.
2 message[ 128] STRI NG
A message that accompanies the Caller ID phone number. This is expected to be the callers name.
3 phoneNumber[ 16] STRI NG
The callers phone number.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-N General error. Call md_cdk.get_error() for details.
" " An empty status value means the call wasnt recognized. Make sure the procedure name is spelled
correctly, and the argument count is correct.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=SendMessage( ' 192. 168. 4. 4' , ' Someone s cal l i ng
you' , ' 6505551212' , ?i nt st at us)
Response:
<doc>
<SendMessage st at us=" 0" >
</ SendMessage>
. . .
</ doc>
www.minervanetworks.com 231
May 2010 iTVManager BackOffice API Technical Specification
Network DVR
This chapter describes the CDKs that allow you to set Network DVR defaults and the accessibility rules for
Channels and Programs for subscribers.
For a detailed description of the Channel and Program Rules behavior, see chapter Enabling Network DVR
with EPG Manager in document iTVLink 1.2 Network DVR Gateway Configuration Guide.
For a detailed description of the Network DVR system settings, see chapter Configuring Network DVR Settings in
document iTVLink 1.2 Network DVR Gateway Configuration Guide.
Procedure Summary
md_liv.set_channel_rule: For the specified channel, enables or disables the ability of a subscriber
that has one or more of the Network DVR services (RS DVR, Restart TV, and Network Pause Live TV)
to use that service. This call also sets the DVR asset expiration time.
md_liv.set_program_rule: For the specified program or series on the specified channel, allows or
disables the ability of a subscriber that has one or more of the Network DVR services (RS DVR, Restart
TV, and Network Pause Live TV) to use that service. This call also sets the DVR asset expiration time.
md_cst.set_customer_npvr_limit: Sets the default system-wide expiration rule for customers
Network DVR (RS-DVR) assets. This value specifies the number of days, after a program ends, that its
asset will be retained for viewing by the customer before the asset expires.
md_cst.get_customer_npvr_limit: Gets the default system-wide expiration rule for customers
Network DVR (RS-DVR) assets. This value specifies the number of days, after a program ends, that its
asset will be retained for viewing by the customer before the asset expires.
md_pvr.set_system_defaults: Sets Network DVR system defaults for several Network DVR
attributes.
md_cst.set_customer_pause_live_tv_limit: Sets the number of minutes that the specified
customer can pause live TV for when viewing Live TV.
md_pvr.delete_customer_schedule: Deletes a specified schedule record for a specified customer.
md_pvr.delete_customer_asset: Deletes a specified asset for a specified customer.
232 www.minervanetworks.com
Network DVR iTVManager BackOffice API Technical Specification
Procedure Specifications
md_liv.set_channel_rule()
For the specified channel, enables or disables the ability of a subscriber that has one or more of the Network
DVR services (RS DVR, Restart TV, and Network Pause Live TV) to use that service. This call also sets the
DVR asset expiration time.
NOTE: By default, all services are disabled for a channel. You must enable a service for a channel before the
NDVR service can be used on programs in that channel.
md_liv.set_channel_rule ( sessi onI D, *channel I D, *r ul e, *val ue, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *channelIDs[ 4000] I D md_liv.get_lineup_dictionary:<RS2>.CHANNEL_ID
The IDs of the Channels that you want to enable for the Network DVR services.
3 *rule STRI NG
The service that you want to enable or disable for the channel(s). Possible values are:
rs_dvr
rs_dvr_expire
pause_tv
pause_tv_trickplay
restart_tv
restart_tv_trickplay
4 *value STRI NG
The value that you want to specify for the rule specified in the rule position. Possible values are:
For rs_dvr_expire, a valid positive integer representing the number of days after which the asset
should expire for the channel.
NOTE: - When a value for rs_dvr_expire is set, the rs_dvr rule is automatically set to Y.

- If more than one rule type (channel rule, program rule, program-on-channel rule) applies to a
particular program; the value in the rule with the highest expiration days value takes effect.
For all other rules, either Y or N
NOTE: By default, all services are disabled for a channel. You must enable a service for a channel before
the NDVR service can be used on programs in that channel.

- When pause_tv is set to N, the pause_tv_trickplay rule is automatically set to N.
- When pause_tv_trickplay is set to Y, the pause_tv rule is automatically set to Y.
- When restart_tv is set to N, the restart_tv_trickplay rule is automatically set to N.
- When restart_tv_trickplay is set to Y, the restart_tv rule is automatically set to Y.
OUTPUT ARGUMENTS
5 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
www.minervanetworks.com 233
iTVManager BackOffice API Technical Specification Network DVR
STATUS VALUES
0 Success.
-1 The sessionID is invalid.
-2 A Database error has occured.
-3 The channelID is invalid.
-4 The rule is invalid.
-5 The value is invalid.
-6 The rs_dvr_expire value is invalid.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. set _channel _r ul e( ) ( ' mySI D' , ' 12' , ' r s_dvr ' , ' Y' ,
?i nt st at us)
Response:
<doc>
<pl acehol der >

. . .
</ doc>
md_liv.set_program_rule()
For the specified program or series on the specified channel, allows or disables the ability of a subscriber that
has one or more of the Network DVR services (RS DVR, Restart TV, and Network Pause Live TV) to use that
service. This call also sets the DVR asset expiration time.
NOTE: Program rules are restrictive only. That is, they are meant to disable (via N values in the rule field) an
NDVR service that is enabled on the channel that the program is on. If you pass a Y value, you are only
allowing (not disabling) a service that was enabled by a channel rule.
PROTOCOL
md_liv.set_program_rule ( sessi onI D, *pr ogr amI D, *ser i esI D, *channel I D, *r ul e,
*val ue, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *programID [ 24] STRI NG
The ID of the Program that you want to allow for the Network DVR services for the specified channel
(see channelIDs).
NOTE: If you specify a programID, specify a null series ID
3 *seriesID [ 12] STRI NG
The ID of the Series that you want to allow for the Network DVR services for the specified channel (see
channelIDs).
NOTE: If you specify a seriesID, specify a null program ID
4 *channelIDs[ 4000] I D md_liv.get_lineup_dictionary:<RS2>.CHANNEL_ID
The IDs of the Channels that you want to allow for the Network DVR services for the specified program
(programID) or series (seriesID).
5 *rule STRI NG
The service that you want to allow or disable for the channel(s). Possible values are:
234 www.minervanetworks.com
Network DVR iTVManager BackOffice API Technical Specification
rs_dvr
rs_dvr_expire
pause_tv
pause_tv_trickplay
restart_tv
restart_tv_trickplay
6 *value STRI NG
The value that you want to specify for the rule specified in the rule position. Possible values are:
For rs_dvr_expire, a valid positive integer representing the number of days after which the asset
should expire for the program.
NOTE: When a value for rs_dvr_expire is set, the rs_dvr rule is automatically set to Y.
NOTE: If more than one rule type (channel rule, program rule, program-on-channel rule) applies to a
particular program; the value in the rule with the highest expiration days value takes effect.
For all other rules, either Y or N
NOTE: - When pause_tv is set to N, the pause_tv_trickplay rule is automatically set to N.
- When pause_tv_trickplay is set to Y, the pause_tv rule is automatically set to Y.
- When restart_tv is set to N, the restart_tv_trickplay rule is automatically set to N.
- When restart_tv_trickplay is set to Y, the restart_tv rule is automatically set to Y.
OUTPUT ARGUMENTS
7 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 The sessionID is invalid.
-2 A Database error has occured.
-3 The programID, seriesID, or channelID is invalid.
-4 The rule is invalid.
-5 The value is invalid.
-6 The rs_dvr_expire value is invalid.
-7 Both a program ID and an series ID value is provided. (When one is provided, the other must be
null.)
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_l i v. set _pr ogr am_r ul e( ' mySI D' ,
' EP000000060020' , ' ' , ' ' , ' pause_t v' , ' Y' , ? ?i nt st at us)
Response:
<doc>
<pl acehol der >

. . .
</ doc>
www.minervanetworks.com 235
iTVManager BackOffice API Technical Specification Network DVR
md_cst.set_customer_npvr_limit()
Sets the default system-wide expiration rule for customers Network DVR (RS-DVR) assets. This value
specifies the number of days, after a program ends, that its asset will be retained for viewing by the customer
before the asset expires.
NOTE: This CDK overwrites the default asset expiration days for a customer specified by the
md_pvr.set_system_defaults CDK call (used with the npvr_limit parameter).
PROTOCOL
md_cst.set_customer_npvr_limit ( sessi onI D, *cust omer I D, *npvr Li mi t , ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst . get _cust omer _l i st ( ) : <RS1>. CUSTOMER_I D
The ID of the customer whose NPVR limit you want to set.
3 *npvrLimit I NTEGER
The number of days, since a program ends, that an NDVR asset will be retained before expiration.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 The sessionID is invalid.
-2 A Database error has occurred.
-3 The customerID is invalid
-4 The nvrLimit is invalid.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . set _cust omer _npvr _l i mi t ( ' mySI D' , ' MD11609' ,
' 30' , ?i nt st at us)
Response:
<doc>
<pl acehol der >

. . .
</ doc>
236 www.minervanetworks.com
Network DVR iTVManager BackOffice API Technical Specification
md_cst.get_customer_npvr_limit()
Gets the default system-wide expiration rule for customers Network DVR (RS-DVR) assets. This value
specifies the number of days, after a program ends, that its asset will be retained for viewing by the customer
before the asset expires.
PROTOCOL
md_cst.get_customer_npvr_limit ( sessi onI D, *cust omer I D, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst . get _cust omer _l i st ( ) : <RS1>. CUSTOMER_I D
The ID of the customer whose NPVR limit value you want to get.
OUTPUT ARGUMENTS
3 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 The sessionID is invalid.
-2 A Database error has occurred.
-3 The customerID is invalid
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . get _cust omer _npvr _l i mi t ( ' mySI D' , ' MD11609' ,
?i nt st at us)
Response:
<doc>
<pl acehol der >

. . .
</ doc>
md_pvr.set_system_defaults()
Sets Network DVR system defaults for the following Network DVR attributes:
Asset expiration time (asset_expiration) The default number of days that a customers asset will be
retained before it expires. The days are counted starting when the program ends.
If this value is not adjusted after system installation, the expiration time is assumed to be 30 days.
Expired assets are deleted from the system. Assets are deleted at whichever time occurs later of 1) the
trick play expiration time and 2) the asset expiration time of the customer with the longest RS-DVR
expiration time for the asset.
Network DVR limit (npvr_limit) The system-wide storage limit, in hours, available for recording.
(This value is independent of whether programming is SD or HD.)
Trick play expiration (tricktv_expiration) The expiration time, in days, of assets that 1) were
recorded because trick play was enabled for the asset (for Restart TV or network Pause Live TV) and 2)
are not referenced by subscribers CDS records for RS-DVR.
www.minervanetworks.com 237
iTVManager BackOffice API Technical Specification Network DVR
If this value is not adjusted after system installation, the expiration time is assumed to be 24 hours.
Expired assets are deleted from the system.
network Pause Live TV limit (pauselivetv_limit) The default number of minutes that a customer is
allowed to pause a Live TV program.
NOTE: The asset expiration time will be kept with the asset meta-data. If the system-wide setting changes after
the asset is already recorded, it will not affect the existing assets expiration time.
PROTOCOL
md_pvr.set_channel_rule ( sessi onI D, pr oper t y, val ue, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *property
The name of the system defaults property you want to set. Possible values are:
asset_expiration (This value can also be set with the Asset expiration period (days) field in the
BackOffice Console > System Setup > Network DVR interface.)
npvr_limit (This value can also be set with the RS-DVR limit (hours) field in the BackOffice Console
> System Setup > Network DVR interface.)
tricktv_expiration (This value can also be set with the Network Pause Live TV/Restart TV
expiration period (days) field in the BackOffice Console > System Setup > Network DVR interface.)
pauselivetv_limit (This value can also be set with the Network Pause Live TV Limit (hours) field
in the BackOffice Console > System Setup > Network DVR interface.)
3 *value <l engt h/ t ype pl acehol der >
The value of the property. Possible values are any valid positive number for the property.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 The sessionID is invalid.
-2 A Database error has occurred.
-3 The channelID is invalid.
-4 The property is invalid.
-5 The value is negative.
-6 The value is invalid.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_pvr . set _syst emdef aul t s( ' mySI D' , <pl acehol der >, ?i nt
st at us)
Response:
<doc>
<pl acehol der >

. . .
</ doc>
238 www.minervanetworks.com
Network DVR iTVManager BackOffice API Technical Specification
md_cst.set_customer_pause_live_tv_limit()
Sets the number of minutes that the customer can pause live TV for when viewing Live TV.
NOTE: This CDK overwrites the default pause minutes limit for a customer specified by the
md_pvr.set_system_defaults CDK call (used with the pauselivetv_limit parameter).
PROTOCOL
md_cst.set_customer_pause_live_tv_limit ( sessi onI D, *cust omer I D, *pauseLi veTvLi mi t ,
?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *customerID I D md_cst . get _cust omer _l i st ( ) : <RS1>. CUSTOMER_I D
The ID of the customer whose Pause Live TV limit you want to set.
3 *pauseLiveTvLimit<l engt h/ t ype pl acehol der >
The network Pause Live TV limit that you want to set for the customer. Use a valid positive number.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 The sessionID is invalid.
-2 A Database error has occurred.
-3 The customerID is invalid.
-4 The pauseLiveTvLimit is invalid.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_cst . set _cust omer _pause_l i ve_t v_l i mi t ( ' mySI D' ,
<pl acehol der >, ?i nt st at us)
Response:
<doc>
<pl acehol der >

. . .
</ doc>
www.minervanetworks.com 239
iTVManager BackOffice API Technical Specification Network DVR
md_pvr.delete_customer_schedule()
Deletes a specified schedule record for a specified customer.
PROTOCOL
md_pvr.delete_customer_schedule ( sessi onI D, *npvr Ser ver Addr ess, *cust omer I D,
*r ecor dSchedul eI D, ?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *npvrServerAddress STRI NG
The Network DVR Server address.
3 *customerID I D md_cst . get _cust omer _l i st ( ) : <RS1>. CUSTOMER_I D
The ID of the customer whose schedule you want to delete.
4 *recordScheduleID <l engt h/ t ype pl acehol der >
The ID of the schedule you want to delete.
OUTPUT ARGUMENTS
5 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 The sessionID is invalid.
-2 A Database error has occurred.
-3 The customerID is invalid.
-4 The npvrServerAddress is invalid.
-5 Unknown error.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_pvr . del et e_cust omer _schedul e( ' mySI D' , <pl acehol der >
, ?i nt st at us)
Response:
<doc>
<pl acehol der >

. . .
</ doc>
240 www.minervanetworks.com
Network DVR iTVManager BackOffice API Technical Specification
md_pvr.delete_customer_asset()
Deletes a specified asset for a specified customer.
PROTOCOL
md_pvr.delete_customer_asset ( sessi onI D, *npvr Ser ver Addr ess, *cust omer I D, *asset I D,
?int status )
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *npvrServerAddress STRI NG
The Network DVR Server address.
3 *customerID I D md_cst . get _cust omer _l i st ( ) : <RS1>. CUSTOMER_I D
The ID of the customer whose asset you want to delete.
4 *assetID I D md_sam. get Asset Li st ( ) : <RS1>. ASSET_I D
The ID of the asset that you want to delete for the customer.
OUTPUT ARGUMENTS
5 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
0 Success.
-1 The sessionID is invalid.
-2 A Database error has occurred.
-3 The customerID is invalid.
-4 The npvrServerAddress is invalid.
-5 Unknown error.
EXAMPLE
Call:
ht t p: / / serverIP: port/ Xml Po. po?SP=md_pvr . del et e_cust omer _asset ( ' mySI D' , <pl acehol der > ,
?i nt st at us)
Response:
<doc>
<pl acehol der >

. . .
</ doc>
www.minervanetworks.com 241
May 2010 iTVManager BackOffice API Technical Reference
Set-Top Box Restart Tool
(STBRT)
Concepts
This chapter describes the Set-Top Box Reboot Tool (STBRT) CDK calls that you can use to:
Send messages to customers by customer, region, ZIP code, city, and state;
Reboot STBs by device ID, device IP address, device MAC address, Think version, and region.
Data supplied in the CDK calls should be in URL format. This means that special characters, such as the
percent (%) character thats used to specify a wildcard string in the STBRT GUI, must be written as %25 in
the CDK. For example:
ht t p: / / l ocal host : 7780/ dat aser vi ces/ cdk?SP=md_st br t . st ar t _message_j ob( ' mySI D' , ' Hel l o%20Wo
r l d' , ' %25' , ' %25' , ' %259' , ' %25' , ' %25' , ' 02/ 25/ 2010' , ' 04: 45' , ' 22' , ' 5' , ?i nt %20st at us)
Note the following:
All fields with asterisks (*) are required.
There are no default values for any field.
Except for the scheduleDate and scheduleTime fields, you cant specify a null value by simply
providing no text. If you, say, want to send a message to all STBs regardless of the owners ZIP code, out
the wildcard %25 in the zipcode field.
Procedure Summary
md_stbrt.send_message_to_region()
md_stbrt.send_message_to_customer()
md_stbrt.start_message_job()
md_stbrt.start_reboot_job()
md_dev.schedule_to_reboot()
242 www.minervanetworks.com
Set-Top Box Restart Tool (STBRT) iTVManager BackOffice API Technical Reference
Procedure Specifications
md_stbrt.send_message_to_region()
Sends a specified text message to a specified region.
To filter message targets based on additional parameters, such as city or ZIP code, use CDK
md_stbrt.start_message_job().
PROTOCOL
md_stbrt.send_message_to_region (sessi onI D, message, r egi onI d, gr oupSi ze,
mul t i cast Ti me, ?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *message STRI NG
The text of the message. The recommended maximum length is 250 characters.
Use the string %20 to indicate a space.
3 *regionId I D get_ISP_dictionary():<RS3>.Region_ID
The ID of the region whose customers should be sent the message.
4 *groupSize I NTEGER
The number of messages (receiving STBs) that should be sent out at one time.
5 *multicastTime
The number of seconds delay after the sending of the last message to one group before the first message
to the next group is sent.
OUTPUT ARGUMENTS
6 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
-0 Success. (Job scheduled.)
-1 sessionID

is invalid.
-2 A web service call exception has occurred.
-3 regionID

is invalid.
EXAMPLE
Send the message Hello world to customers in all regions whose IDs start with the text ca, and send
messages in groups of 5 separated by 10 seconds between groups:
Call:
ht t p: / / l ocal host : 7780/ dat aser vi ces/ cdk?SP=md_st br t . send_message_t o_r egi on( ' mySI D' , ' Hel l o
%20Wor l d' , ' ca%25' , ' 5' , ' 10' , ?i nt %20st at us)
Response:
doc>
<md_st br t . send_message_t o_r egi on st at us=' 0' >
<RS1 execut i onI d=' 84' / >
</ md_st br t . send_message_t o_r egi on>
www.minervanetworks.com 243
iTVManager BackOffice API Technical Reference Set-Top Box Restart Tool (STBRT)
</ doc>
md_stbrt.send_message_to_customer()
Sends a specified text message to one or more specified customers.
PROTOCOL
md_stbrt.send_message_to_customer( sessionID, message, customerId, ?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *message
The text of the message. The recommended maximum length is 250 characters.
Use the string %20 to indicate a space.
3 *customerID
The ID of the customer to whom the message should be sent.
OUTPUT ARGUMENTS
4 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
-0 Success. (Job scheduled.)
-1 sessionID

is invalid.
-2 A web service call exception has occurred.
-3 customerID

is invalid.
EXAMPLE
Send the message Hello world to the customers with ID MD11610.
Call:
ht t p: / / l ocal host : 7780/ dat aser vi ces/ cdk?SP=md_st br t . send_message_t o_cust omer ( ' mySI D' , ' Hel
l o%20Wor l d' , ' MD11610' , ?i nt %20st at us)
Response:
<doc>
<md_st br t . send_message_t o_cust omer st at us=' 0' >
<RS1 execut i onI d=' 82' / >
</ md_st br t . send_message_t o_cust omer >
</ doc>
md_stbrt.start_message_job()
Sends a specified text message to STBs based on region, customerID, last name, social security number, phone
number, ZIP code, city, and state.
244 www.minervanetworks.com
Set-Top Box Restart Tool (STBRT) iTVManager BackOffice API Technical Reference
PROTOCOL
md_stbrt.start_message_job(sessionID, message, customerId, regionId, zipcode, city,
state, scheduleDate, scheduleTime, groupSize, multicastTime, ?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *message
The text of the message. The recommended maximum length is 250 characters.
Use the string %20 to indicate a space.
3 *CustomerID
The ID of the customer(s) to whom the message should be sent.
4 *regionId
The ID of the region whose customers should be sent the message.
5 *zipcode
The zip code of the customer(s) to whom the message should be sent.
6 *city
The city of the customer(s) to whom the message should be sent.
7 *state
The state of the customer(s) to whom the message should be sent.
8 scheduleDate DATE IPTV Providers date format
The date that the message should be sent to STBs.
9 scheduleTime TI ME IPTV Providers time format
The time (on day scheduleDate) that the message should start being sent to STBs
10 *groupSize
The number of messages (receiving STBs) that should be sent out at one time.
11 *multicastTime
The delay, in seconds, between the sending of the last message in one group to the sending of the first
message to the next group.
OUTPUT ARGUMENTS
12 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
-0 Success. (Job scheduled.)
-1 sessionID

is invalid.
-2 A web service call exception has occurred.
-3 scheduleDate or multicastTime is invalid.
www.minervanetworks.com 245
iTVManager BackOffice API Technical Reference Set-Top Box Restart Tool (STBRT)
EXAMPLE
1. Start sending, immediately, the message Hello world to all customers whose ZIP codes start with 9.
Call:
ht t p: / / l ocal host : 7780/ dat aser vi ces/ cdk?SP=md_st br t . st ar t _message_j ob( ' mySI D' , ' Hel l o%20Wo
r l d' , ' %25' , ' %25' , ' 9%25' , ' %25' , ' %25' , ' ' , ' ' , ' 20' , ' 5' , ?i nt %20st at us)
2. Start sending, at 4:45am on February 25, 2010, the message Hello world to all customers whose ZIP
codes end with 9.
ht t p: / / l ocal host : 7780/ dat aser vi ces/ cdk?SP=md_st br t . st ar t _message_j ob( ' mySI D' , ' Hel l o%20Wo
r l d' , ' %25' , ' %25' , ' %259' , ' %25' , ' %25' , ' 02/ 25/ 2010' , ' 04: 45' , ' 22' , ' 5' , ?i nt %20st at us)
Response:
<doc>
<md_st br t . st ar t _message_j ob st at us=' 0' >
<RS1 execut i onI d=' 41' / >
</ md_st br t . st ar t _message_j ob>
</ doc>
md_stbrt.start_reboot_job()
Reboots STBs based on device ID, Device IP address, device MAC address, and Think version.
PROTOCOL
md_stbrt.start_reboot_job (sessi onI D, devi ceI d, i pAddr ess, macAddr ess, t hi nkVer si on,
schedul eDat e, schedul eTi me, mandat or y, gr oupSi ze, mul t i cast Ti me, ?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *deviceID I D md_dev.get_device_list():<RS1>.DEVICE_ID
The ID of the device to be rebooted.
3 *deviceIP STRI NG
The IP address of the device to be rebooted.
4 *deviceMAC STRI NG
The MAC address of the device to be rebooted.
5 *thinkVersion STRI NG
The Think version of the device(s) to be rebooted.
6 scheduleDate DATE IPTV Providers date format
The date that the STB should be rebooted.
7 scheduleTime TI ME IPTV Providers time format
The time (on day scheduleDate) that the STB should be rebooted.
8 *mandatory CHAR [ 0|1]
Whether or not the reboot is mandatory:
0 is not mandatory. The user is prompted to OK the reboot process.
1 is mandatory. The user is not prompted to OK the reboot process. The reboot occurs
unconditionally.
246 www.minervanetworks.com
Set-Top Box Restart Tool (STBRT) iTVManager BackOffice API Technical Reference
9 *groupSize I NTEGER
The number of STBs that are to be rebooted at one time.
10 *multicastTime
The delay, in seconds, between the rebooting of the last STB in one group and the first STB in the next
group.
OUTPUT ARGUMENTS
11 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
-0 Success. (Job scheduled.)
-1 sessionID

is invalid.
-2 A web service call exception has occurred.
-3 scheduleDate or scheduleTime is invalid.
EXAMPLE
Reboot all devices that have Think version 4.1.0.14 installed. Reboot in groups of 20 STBs at a time, pausing
4 seconds between groups of 5 STBs. Start the reboot job on the morning of December 19, 2009, at 1:30am.
Call:
ht t p: / / l ocal host : 7780/ dat aser vi ces/ cdk?SP=md_st br t . st ar t _r eboot _j ob( ' mySI D' , ' 10' , ' %25' , '
%25' , ' 4. 1. 0. 14' , ' 12/ 19/ 2009' , ' 01: 30' , ' 0' , ' 5' , ' 4' , %20?i nt %20st at us)
Response:
<doc>
<md_st br t . st ar t _r eboot _j ob st at us=' 0' >
<RS1 execut i onI d=' 46' / >
</ md_st br t . st ar t _r eboot _j ob>
</ doc>
md_dev.schedule_to_reboot()
Reboots STBs based on device ID.
md_dev.schedule_to_reboot (sessi onI D, devi ceI D, schedul eDat e, schedul eTi me,
mandat or y, ?int status)
INPUT ARGUMENTS
1 *sessionID[ 80] STRI NG md_adm.login_with_session()
The current session ID as set through md_adm.login_with_session().
2 *deviceID I D md_dev.get_device_list():<RS1>.DEVICE_ID
The ID of the device to be rebooted.
3 scheduleDate DATE IPTV Providers date format
The date that the STB should be rebooted.
4 scheduleTime TI ME IPTV Providers time format
The time (on day scheduleDate) that the STB should be rebooted.
5 *mandatory CHAR [ 0|1]
Whether or not the reboot is mandatory:
0 is not mandatory.
www.minervanetworks.com 247
iTVManager BackOffice API Technical Reference Set-Top Box Restart Tool (STBRT)
1 is mandatory.
OUTPUT ARGUMENTS
6 status I NTEGER
Returns success (0) or failure (non-0). See STATUS VALUES for a list of status values.
STATUS VALUES
-0 Success. (Job scheduled.)
-1 sessionID

is invalid.
-2 A web service call exception has occurred.
-3 deviceID is invalid.
-4 scheduleDate or scheduleTime is invalid.
EXAMPLE
Reboot the STB with deviceId 1 on May 1, 2010 at 6 pm:
Call:
ht t p: / / l ocal host : 7780/ dat aser vi ces/ cdk?SP=md_dev. schedul e_t o_r eboot ( ' mySI D' , ' 1' , ' 05/ 01/ 2
010' , ' 06: 00%20pm' , ' Y' , ?i nt %20st at us)
Response:
<doc>
<md_dev. schedul e_t o_r eboot st at us=' 0' >
<RS1 execut i onI d=' 51' / >
</ md_dev. schedul e_t o_r eboot >
</ doc>
248 www.minervanetworks.com
Set-Top Box Restart Tool (STBRT) iTVManager BackOffice API Technical Reference

Das könnte Ihnen auch gefallen