Table Of Contents
Using the Cisco Content Storage Interface
Cisco CSI Overview
Cisco CSI Data Types
AssetId
AssetInfoType
AssetStatusType
AssetType
CallbackAddressType
CallbackMessageType
ErrorResponseType
TransferProtocolType
Cisco CSI Requests and Responses
DeleteAsset
GetAssetCount
GetAssetInventoryList
GetAssetsInfo
GetAssetsStatus
GetAvailableSpace
SetAssetAction
Using the Cisco CSI to Update CDS Applications
Updating CDS Applications with the Latest Assets upon Sign-On and Registration
Updating CDS Applications with the Catalog and Poster Art
VBO Registration APIs
SignOn
SignOff
XSD for SignOn and SignOff Request and Response Pair
Required ADI Metadata in Catalog
Cisco CSI XSD
Using the Cisco Content Storage Interface
This chapter discusses the Cisco Content Storage Interface (CSI), and presents the following major topics:
•
Cisco CSI Overview
•
Cisco CSI Data Types
•
Cisco CSI Requests and Responses
•
Using the Cisco CSI to Update CDS Applications
•
VBO Registration APIs
•
Required ADI Metadata in Catalog
•
Cisco CSI XSD
Cisco CSI Overview
The basic functionality of Cisco CSI is introduced in the "Cisco Content Storage Interface Overview" section on page 1-5. The CSI uses detailed metadata for the VOD catalog in conformance with the CableLabs Video-On-Demand Content Specification, Version 1.1.
Cisco CSI Data Types
This section describes the following data types used with the Cisco CSI, presents their schemas, and defines their elements and attributes:
•
AssetId
•
AssetInfoType
•
AssetStatusType
•
AssetType
•
CallbackAddressType
•
CallbackMessageType
•
ErrorResponseType
•
TransferProtocolType
AssetId
AssetId represents the ID of an asset and is unique for each AssetType.
Schema
<xs:simpleType name="AssetId">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="128" />
<xs:pattern value="[a-zA-Z0-9-_]+" />
Element
|
Type
|
Description
|
AssetId
|
xs:string
|
String from 1 to 128 characters
|
AssetInfoType
AssetInfoType provides a detailed description of an asset.
Schema
<xs:complexType name="AssetInfoType">
<xs:attribute name="id" type="tns:AssetId "use="required" />
<xs:attribute name="state" type="xs:int "use="required" />
<xs:attribute name="reason" use="optional">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="64" />
<xs:attribute name="version" type="xs:string "use="optional" />
<xs:attribute name="size" type="xs:long "use="optional" />
Attribute
|
Type
|
Description
|
id
|
AssetId
|
Unique ID or name of the asset (for example, funny.jpg) within a specific AssetType
|
state
|
xs:int
|
Possible states:
• Pending (0)—Asset transfer process has not started.
• Transferring (1)—Asset is being transferred.
• Transferring-Playable (2)—Asset is being transferred but a PLAY request can start. Applicable only to AssetType:content.
• Completed (3)—Asset transfer has completed.
• Failed (4)—Asset transfer has failed.
• NonExist (5)—Asset does not exist in the system.
|
reason
|
xs:string
|
Reason why asset is in current state. Not used if state = NonExist. String from 1 to 64 characters.
|
version
|
xs:string
|
Not used if state = NonExist.
|
size
|
xs:long
|
Size of asset in Kbytes. Not used if state = NonExist.
|
AssetStatusType
AssetStatusType represents the state of an asset.
Schema
<xs:complexType name="AssetStatusType">
<xs:attribute name="id" type="tns:AssetId" use="required" />
<xs:attribute name="state" type="xs:int" use="required" />
<xs:attribute name="reason" use="optional">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="64" />
Attribute
|
Type
|
Description
|
id
|
AssetId
|
Unique ID or name of the item within a specific AssetType
|
state
|
xs:int
|
Possible states:
• Pending (0)—Asset transfer process has not been started.
• Transferring (1)—Asset is being transferred.
• Transferring-Playable (2)—Asset is being transferred but a PLAY request can start. Applicable only to AssetType:content.
• Completed (3)—Asset transfer has completed.
• Failed (4)—Asset transfer has failed.
• NonExist (5)—Asset does not exist in the system.
|
reason
|
xs:string
|
Reason why the assset is in the current state. Not used if state = NonExist. String from 1 to 64 characters.
|
AssetType
AssetType represents the type of asset.
Schema
<xs:simpleType name="AssetType">
<xs:restriction base="xs:string">
<xs:enumeration value="catalog" />
<xs:enumeration value="poster" />
<xs:enumeration value="content" />
Element
|
Type
|
Description
|
AssetType
|
xs:string
|
Type of the asset. Possible values:
• catalog
• poster
• content
|
CallbackAddressType
CallbackAddressType contains information about where the CDS should send the callback message.
Schema
<xs:complexType name="CallbackAddressType">
<xs:attribute name="ipAddress" type="xs:string" use="required" />
<xs:attribute name="port" type="xs:unsignedShort " use="required" />
<xs:attribute name="path" type="xs:string" use="required" />
Attribute
|
Type
|
Description
|
ipAddress
|
xs:string
|
IP address specifying the video backoffice (VBO) to which the CDS should send the callback message. Address can be in dotted decimal notation (IPv4) or colon-separated format (IPv6).
|
port
|
xs:unsignedShort
|
Number of the VBO port to which the CDS should send the callback message
|
path
|
xs:string
|
Full pathname specifying where to send the callback message
|
CallbackMessageType
CallbackMessageType describes the callback message made to the specified VBO location (CallbackAddressType) after the requested operation is finished. Each callback message contains status for only one asset.
Schema
<xs:complexType name="CallbackMessageType">
<xs:attribute name="type" type="tns:AssetType" use="required" />
<xs:attribute name="id" type="tns:AssetId" use="required" />
<xs:attribute name="status" type="xs:string" use="required" />
<xs:attribute name="reason" type="xs:string" use="required" />
Attribute
|
Type
|
Description
|
type
|
AssetId
|
Type of asset
|
id
|
AssetType
|
Unique ID or name of the item within a specific AssetType
|
status
|
xs:string
|
Result of the operation. Possible values:
• succeed
• failed
|
reason
|
xs:string
|
Reason for the result
|
ErrorResponseType
ErrorResponseType describes the error message that is returned if there is problem servicing a request.
Schema
<xs:complexType name="ErrorResponseType">
<xs:attribute name="code" type="xs:string" />
<xs:attribute name="reason" type="xs:string" />
Attribute
|
Type
|
Description
|
code
|
xs:string
|
Error code (see Table 4-1)
|
reason
|
xs:string
|
Reason for the error (see Table 4-1)
|
Table 4-1 lists error codes and associated reasons.
Table 4-1 CSI Error Codes and Reasons
Error Code
|
Reason
|
InvalidAssetType
|
Asset type specified is invalid
|
InvalidId
|
ID is in invalid format
|
VersionAlreadyExists
|
Version of this asset already exists in the system
|
VersionDoesNotExist
|
Version specified does not exist in the system
|
InvalidTransferProtocol
|
Invalid transfer protocol specified
|
InvalidAddressType
|
Invalid callback address specified
|
InternalError
|
Internal processing error
|
VBORepositoryError
|
VBO repository error, cannot access data
|
ExistingOperationInProgress
|
Operation on the asset is currently in progress
|
InvalidXMLFormat
|
XML data in the message is incorrectly formed
|
InvalidContentFormat
|
Content (poster and movie) format is not valid
|
TransferProtocolType
TransferProtocolType describes the protocol to be used for fetching assets.
Schema
<xs:complexType name="TransferProtocolType">
<xs:attribute name="protocol" type="xs:string" use="required" />
<xs:attribute name="ipAddress" type="xs:string" use="required" />
<xs:attribute name="port" type="xs:unsignedShort" use="required" />
<xs:attribute name="userName" type="xs:string" use="optional" />
<xs:attribute name="password" type="xs:string" use="optional" />
<xs:attribute name="path" type="xs:string" use="required" />
Attribute
|
Type
|
Description
|
protocol
|
xs:string
|
Possible values:
• FTP
• HTTP GET
|
ipAddress
|
xs:string
|
IP address in dotted decimal notation (IPv4) or colon-separated format (IPv6)
|
port
|
xs:unsignedShort
|
Port number
|
username
|
xs:string
|
Used for certain protocols (FTP)
|
password
|
xs:string
|
Used for certain protocols (FTP)
|
path
|
xs:string
|
Full pathname to the asset, for example, ~/posters/example_1.jpg
|
Cisco CSI Requests and Responses
This section describes the following requests and responses for Cisco CSI:
•
DeleteAsset
•
GetAssetCount
•
GetAssetInventoryList
•
GetAssetsInfo
•
GetAssetsStatus
•
GetAvailableSpace
•
SetAssetAction
Note
The namespace for the above requests and responses is com.cisco.csi.
DeleteAsset
DeleteAsset requests the deletion of an asset.
Note
The request is carried out asynchronously. A requester wanting to be notified when the operation is completed should register for a callback notification by using the callback element.
Message Summary
Message
|
XML Element
|
Request
|
DeleteAssetRequest
|
Response
|
DeleteAssetResponse
|
Request
Element: DeleteAssetRequest
Schema:
<xs:element name="DeleteAssetRequest">
<xs:element name="type" type="tns:AssetType" />
<xs:element name="id" type="tns:AssetId" />
<xs:element name="version" type="xs:string" />
<xs:element minOccurs="0" name="callback" type="tns:CallbackAddressType" />
Element
|
Type
|
Description
|
type
|
AssetType
|
Type of asset
|
id
|
AssetId
|
Unique ID of the asset. Maximum length is set to 128.
|
version
|
xs:string
|
Version of the asset
|
callback
|
CallbackAddressType
|
Callback address. Notification is made to the address provided after the delete asset process is finished. This parameter is optional. Without it, no notification is made.
Note The requester can request only one callback location.
|
Example Request:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DeleteAssetRequest xmlns="com.cisco.csi">
Response
Element: DeleteAssetResponse
Schema:
<xs:element name="DeleteAssetResponse">
<xs:element name="status" type="tns:AssetStatusType" />
Element
|
Type
|
Description
|
status
|
AssetStatusType
|
Status of an asset. Possible values:
• will get state—pending
• exists—false with this operation
|
Example Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DeleteAssetResponse xmlns="com.cisco.csi">
<status reason="Pending" state="0" exists="false" id="1234567"/>
Error Codes
•
InvalidAssetType
•
InvalidXMLFormat
•
InvalidContentFormat
•
InvalidId
•
VersionDoesNotExist
•
InvalidTransferProtocol
•
InvalidCallbackAddress
•
InternalError
Note
For definitions of the above error codes, see Table 4-1.
GetAssetCount
GetAssetCount returns the number of the requested asset type that exists in the system.
Message Summary
Message
|
XML Element
|
Request
|
GetAssetCountRequest
|
Response
|
GetAssetCountResponse
|
Request
Element: GetAssetCountRequest
Schema:
<xs:element name="GetAssetCountRequest">
<xs:element name="type" type="tns:AssetType" />
Element
|
Type
|
Description
|
type
|
AssetType
|
Type of asset
|
Example Request:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetAssetCountRequest xmlns="com.cisco.csi">
Response
Element: GetAssetCountResponse
Schema:
<xs:element name="GetAssetCountResponse">
<xs:element name="count" type="xs:int" />
Element
|
Type
|
Description
|
count
|
xs:int
|
Number of assets
|
Example Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetAssetCountResponse xmlns="com.cisco.csi">
Error Codes
•
InvalidAssetType
•
Invalid XMLFormat
•
InternalError
Note
For definitions of the above error codes, see Table 4-1.
GetAssetInventoryList
GetAssetInventoryList returns an inventory list for the requested asset type.
Message Summary
Message
|
XML Element
|
Request
|
GetAssetInventoryListRequest
|
Response
|
GetAssetInventoryListResponse
|
Request
Element: GetAssetInventoryListRequest
Schema:
<xs:element name="GetAssetInventoryListRequest">
<xs:element name="type" type="tns:AssetType" />
Element
|
Type
|
Description
|
type
|
AssetType
|
Type of asset
|
Example Request:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetAssetInventoryListRequest xmlns="com.cisco.csi">
</GetAssetInventoryListRequest>
Response
Element: GetAssetInventoryListResponse
Schema:
<xs:element name="GetAssetInventoryListResponse">
<xs:element minOccurs="0" maxOccurs="unbounded" name="info"
type="tns:AssetInfoType" />
Element
|
Type
|
Description
|
type
|
AssetInfoType
|
Information about the type of asset
|
Example Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetAssetInventoryListResponse xmlns="com.cisco.csi">
<info size="84000" version="1.1" reason="Pending" state="0" id="1234567"/>
<info size="44000" version="1.1" reason="Completed" state="3" id="7654321"/>
</GetAssetInventoryListResponse>
Error Codes
•
InvalidAssetType
•
InvalidXMLFormat
•
InternalError
Note
For definitions of the above error codes, see Table 4-1.
GetAssetsInfo
GetAssetsInfo returns the description of the requested asset.
Message Summary
Message
|
XML Element
|
Request
|
GetAssetsInfoRequest
|
Response
|
GetAssetsInfoResponse
|
Request
Element: GetAssetsInfoRequest
Schema:
<xs:element name="GetAssetsInfoRequest">
<xs:element name="type" type="tns:AssetType" />
<xs:element maxOccurs="unbounded" name="id" type="tns:AssetId" />
Element
|
Type
|
Description
|
type
|
AssetType
|
Type of asset
|
id
|
AssetId
|
Unique ID of the asset. Maximum length is set to 128.
|
Example Request:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetAssetsInfoRequest xmlns="com.cisco.csi">
Response
Element: GetAssetsInfoResponse
Schema:
<xs:element name="GetAssetsInfoResponse">
<xs:element maxOccurs="unbounded" name="info" type="tns:AssetInfoType" />
Element
|
Type
|
Description
|
info
|
AssetInfoType
|
Information about the asset
|
Example Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetAssetsInfoResponse xmlns="com.cisco.csi">
<info size="84000" version="1.1" reason="Pending" state="0" id="1234567"/>
<info size="44000" version="1.1" reason="Completed" state="3" id="7654321"/>
Error Codes
•
InvalidAssetType
•
InvalidXMLFormat
•
InvalidId
•
InternalError
Note
For definitions of the above error codes, see Table 4-1.
GetAssetsStatus
GetAssetsStatus returns the state of the requested asset.
Message Summary
Message
|
XML Element
|
Request
|
GetAssetsStatusRequest
|
Response
|
GetAssetsStatusResponse
|
Request
Element: GetAssetsStatusRequest
Schema:
<xs:element name="GetAssetsStatusRequest">
<xs:element name="type" type="tns:AssetType" />
<xs:element maxOccurs="unbounded" name="id" type="tns:AssetId" />
Element
|
Type
|
Description
|
type
|
AssetType
|
The type of asset
|
id
|
AssetId
|
Unique ID of the asset. Maximum length is set to 128.
|
Example Request:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetAssetsStatusRequest xmlns="com.cisco.csi">
</GetAssetsStatusRequest>
Response
Element: GetAssetsStatusResponse
Schema:
<xs:element name="GetAssetsStatusResponse">
<xs:element maxOccurs="unbounded" name="status" type="tns:AssetStatusType" />
Element
|
Type
|
Description
|
status
|
AssetStatusType
|
Status of an asset. Possible values:
• If exists = false, the asset is NOT in the CDS system.
• If exists = true, the asset is in the CDS system.
|
Example Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetAssetsStatusResponse xmlns="com.cisco.csi">
<status reason="Pending" state="0" exists="true" id="1234567"/>
<status reason="Completed" state="3" exists="false" id="7654321"/>
</GetAssetsStatusResponse>
Error Codes
•
InvalidAssetType
•
InvalidXMLFormat
•
InvalidId
•
InternalError
Note
For definitions of the above error codes, see Table 4-1.
GetAvailableSpace
GetAvailableSpace returns the quantity of space available for an asset type.
Message Summary
Message
|
XML Element
|
Request
|
GetAvailableSpaceRequest
|
Response
|
GetAvailableSpaceResponse
|
Request
Element: GetSpaceAvailableRequest
Schema:
<xs:element name="GetAvailableSpaceRequest">
<xs:element name="type" type="tns:AssetType" />
Element
|
Type
|
Description
|
type
|
AssetType
|
Type of asset
|
Example Request:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetAvailableSpaceRequest xmlns="com.cisco.csi">
</GetAvailableSpaceRequest>
Response
Element: GetAvailableSpaceResponse
Schema:
<xs:element name="GetAvailableSpaceResponse">
<xs:element name="totalSpace" type="xs:long" />
<xs:element name="freeSpace" type="xs:long" />
Element
|
Type
|
Description
|
totalSpace
|
xs:long
|
Total space in kilobytes
|
freeSpace
|
xs:long
|
Free space in kilobytes
|
Example Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetAvailableSpaceResponse xmlns="com.cisco.csi">
<totalSpace>200000</totalSpace>
<freeSpace>100000</freeSpace>
</GetAvailableSpaceResponse>
Error Codes
•
InvalidAssetType
•
InvalidXMLFormat
•
InternalError
Note
For definitions of the above error codes, see Table 4-1.
SetAssetAction
SetAssetAction requests the ingestion or update of an asset. The CDS component uses the protocol provided to fetch the asset.
Note
The request is carried out asynchronously. A requester wanting to be notified when the operation is completed should register for a callback notification by using the callback element.
Message Summary
Message
|
XML Element
|
Request
|
SetAssetRequest
|
Response
|
SetAssetResponse
|
Request
Element: SetAssetRequest
Schema:
<xs:element name="SetAssetRequest">
<xs:element name="type" type="tns:AssetType" />
<xs:element name="id" type="tns:AssetId" />
<xs:element name="version" type="xs:string" />
<xs:element name="protocol" type="tns:TransferProtocolType" />
<xs:element minOccurs="0 " name="callback" type="tns:CallbackAddressType" />
Element
|
Type
|
Description
|
type
|
AssetType
|
Type of asset
|
id
|
AssetId
|
Unique ID of the asset. Maximum length is set to 128.
|
version
|
xs:string
|
Version of the asset
|
protocol
|
TransferProtocolType
|
Transfer protocol for getting the image
|
callback
|
CallbackAddressType
|
Callback address. Notification is made to the address provided after the add asset process is finished. This parameter is optional. Without it, no notification is made.
Note The requester can request only one callback location.
|
Example Request:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SetAssetRequest xmlns="com.cisco.csi">
<protocol path="/poster" password="ingestqa" userName="ingest" port="21"
ipAddress="192.168.1.88" protocol="ftp"/>
<callback path="/callback" port="1234" ipAddress="192.168.1.100"/>
Response
Element: SetAssetResponse
Schema:
<xs:element name="SetAssetResponse">
<xs:element name="status" type="tns:AssetStatusType" />
Element
|
Type
|
Description
|
status
|
AssetStatusType
|
Status of an asset. Possible values:
• will get state—pending
• exists—true with this operation
|
Example Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SetAssetResponse xmlns="com.cisco.csi">
<status reason="Pending" state="0" exists="false" id="1234567"/>
Error Codes
•
InvalidAssetType
•
InvalidXMLFormat
•
InvalidContentFormat
•
InvalidId
•
VersionAlreadyExist
•
InvalidTransferProtocol
•
InvalidCallbackAddress
•
ExistingOperationInProgress
•
VBORepositoryError
•
InternalError
Note
For definitions of the above error codes, see Table 4-1.
Using the Cisco CSI to Update CDS Applications
This section provides the following detailed use cases for the Cisco Content Storage Interface:
•
Updating CDS Applications with the Latest Assets upon Sign-On and Registration
•
Updating CDS Applications with the Catalog and Poster Art
Updating CDS Applications with the Latest Assets upon Sign-On and Registration
This section describes a typical interaction used for updating Cisco CDS applications (Video Navigator or Poster Art Server) when the application first signs on or registers with the VBO. Requests from the VBO for the CDS application to add or delete an asset are performed asynchronously. If the VBO requires notification that the add or delete operation has completed, the VBO must provide callback information in the add or delete request.
The following is a sequence of typical CSI API interactions between the VBO and the CDS application when the application registers (signs on) with the VBO.
1.
When the application starts up, it sends a SignOn request to the VBO.
2.
The VBO uses GetAssetInventoryList to get an inventory list of the appropriate asset type (for example, catalog or poster) from the application. The response from the application includes asset information such as ID, current state, version, and size.
3.
In a loop operation, the VBO uses DeleteAsset to request that the application delete assets that are not part of the internal list of the VBO. Using the asset ID specified in the request, the application starts processing the delete request and then sends a DeleteAssetResponse to the VBO.
4.
Optionally, as part of the loop operation, the application performs a callback to notify the VBO that the delete operation is completed. If a callback is used, the details of how to perform the callback are provided by the VBO in a DeleteAssetRequest.
5.
In a loop operation, the VBO uses SetAsset to request that the application add missing assets. The application starts processing the request and then sends a SetAssetResponse to the VBO.
6.
The application fetches the asset by using information provided in the VBO SetAssetRequest, such as the protocol, IP address, and port number.
7.
Optionally, as part of the loop operation, the application performs a callback to notify the VBO that the add operation is completed. If a callback is used, the details of how to perform the callback are provided by the VBO in the SetAssetRequest.
8.
In a loop operation, the VBO uses SetAsset to request that the application update assets that are out of date. The application starts processing the update request and then sends a SetAssetResponse to the VBO. (The update process is very similar to the add process, but includes deleting each out-of-date asset.)
9.
The application fetches the updated asset by using information provided in the SetAssetRequest.
10.
Optionally, as part of the loop operation, the component performs a callback to notify the VBO that the update operation is completed. If a callback is used, the details of how to perform the callback are provided by the VBO in the SetAssetRequest.
Updating CDS Applications with the Catalog and Poster Art
This section describes a typical interaction used in updating the catalog in Video Navigator and updating the poster art in Poster Art Server. The following conditions must be met before an update can take place:
•
Filename of the asset detail data is AssetID.xml, where AssetID is a unique asset ID.
•
Filename of the product detail data is ProductID.xml, where ProductID is a unique product ID.
•
Filename of the poster is defined in AssetID.xml.
•
When the asset detail information is updated in the asset detail file, the asset version is updated in the catalog file.
•
When the product detail information of the asset is updated in the product detail file, the asset version is updated in the catalog file.
•
Asset detail files, product detail files, and posters specified by one catalog file are located in the same directory as that catalog file.
•
Transport protocol of the asset detail files, the product detail files, and the posters is the same as the transport protocol for the catalog.
•
In a poster update, because the poster's version is embedded in the response of the GetAssetInventoryList request, the VBO can determine whether posters need to be updated. It is assumed that Poster Art Server always downloads the poster when it receives an AddAsset request.
The following is a sequence of typical interactions between the VBO and the CDS application during the catalog and poster art updates:
1.
The VBO uses SetAssetAction to request that Video Navigator add the catalog. As part of this request, the VBO provides the asset type, ID, and version, as well as the protocol to use for the transfer. If a callback is used, the details for the callback are provided by the VBO in the SetAssetAction request.
2.
Video Navigator downloads the catalog through the transport protocol defined in the SetAssetAction request.
3.
Video Navigator parses the catalog file, and then compares the asset version with the version that currently exists in the Video Navigator system, as follows:
a.
If the asset version in the catalog is newer than the one in the Video Navigator system, Video Navigator downloads the asset. If the asset version is not newer than the one already in the system, Video Navigator processes the next asset.
b.
If the asset version in the catalog is newer than the one in the system, Video Navigator downloads AssetID.xml first, parses the metadata, and then stores the metadata in the database for future retrieval.
c.
If the asset version in the catalog is newer than the one in the system, Video Navigator also downloads, parses, and stores ProductID.xml.
4.
After processing all of the assets, Video Navigator uses a callback to notify the VBO that ingestion is completed. The use of a callback is optional.
The sequence for updating a poster art asset on Poster Art Server is as follows:
Note
To ensure that the most recent poster art is available, the VBO checks the poster art version before using SetAssetAction.
1.
The VBO uses SetAssetAction to request that Poster Art Server add a poster. As part of SetAssetAction, the VBO provides the asset type, ID, and version, as well as the protocol to use for the transfer. If a callback is used, the details for the callback are provided by the VBO in the SetAssetAction request.
2.
Poster Art Server downloads the poster through the transport protocol defined in the SetAssetAction request.
3.
After the poster is downloaded and resized, Poster Art Server uses a callback to notify the VBO that ingestion is completed. The use of a callback is optional.
VBO Registration APIs
This section documents a reference registration interface provided by VBO vendors. Cisco CDS applications such as Video Navigator and Poster Art Server use this interface to register and deregister themselves with the VBO. The following registration APIs are presented:
•
SignOn
•
SignOff
•
XSD for SignOn and SignOff Request and Response Pair
Note
The namespace for the VBO registration API is defined by the VBO.
SignOn
Message Summary
Message
|
XML Element
|
Request
|
SignOnRequest
|
Response
|
SignOnResponse
|
Request
Element: SignOnRequest
Schema:
<element name="SignOnRequest">
<attribute name="ipAddress" type="xs:string" use="required"/>
<attribute name="port" type="xs:string" use="required"/>
<attribute name="name" type="xs:string" use="optional"/>
<attribute name="type" type="AssetType" use="required"/>
Element
|
Type
|
Description
|
ipAddress
|
xs:string
|
Dotted-decimal notation (IPv4) or colon-separated (IPv6) format
|
port
|
xs:int
|
Port number
|
name
|
xs:string
|
Name of the CDS application
|
type
|
AssetType
|
Asset type of interest to the CDS application
|
Example Request:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SignOnRequest xmlns="com.cisco.csi" type="poster" name="poster art server" port="6666"
ipAddress="192.168.1.66"/>
Response
Element: SignOnResponse
Schema:
<element name="SignOnResponse" />
<element name="status" type="xs:string" minOccurs="1" maxOccurs="1">
<restriction base="xs:string" />
<enumeration value="Success" />
<enumeration value="Failed" />
<enumeration value="InvaidParameters" />
Element
|
Type
|
Description
|
status
|
xs:string
|
Status of the response to the SignOn request. Possible responses:
• Success
• Failed
• Invalid parameters
|
Example Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SignOnResponse xmlns="com.cisco.csi">
SignOff
Message Summary
Message
|
XML Element
|
Request
|
SignOffRequest
|
Response
|
SignOffResponse
|
Request
Element: SignOffRequest
Schema:
<element name="SignOffRequest">
<attribute name="ipAddress" type="xs:string" use="required"/>
<attribute name="port" type="xs:int" use="required"/>
<attribute name="name" type="xs:string" use="optional"/>
Element
|
Type
|
Description
|
ipAddress
|
xs:string
|
Dotted-decimal notation (IPv4) or colon-separated (IPv6) format
|
port
|
xs:int
|
Port number
|
name
|
xs:string
|
Name of the CDS application
|
Example Request:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SignOffRequest xmlns="com.cisco.csi" name="poster art server" port="6666"
ipAddress="192.168.1.66"/>
Response
Element: SignOffResponse
Schema:
<element name="SignOffResponse" />
<element name="status" type="xs:string" minOccurs="1" maxOccurs="1">
<restriction base="xs:string" />
<enumeration value="Success" />
<enumeration value="Failed" />
<enumeration value="InvaidParameters" />
Element
|
Type
|
Description
|
status
|
xs:string
|
Status of the response to the SignOff request. Possible responses:
• Success
• Failed
• Invalid parameters
|
Example Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SignOffResponse xmlns="com.cisco.csi">
XSD for SignOn and SignOff Request and Response Pair
The following schema is a sample XSD for the SignOn and SignOff Request and Response pair.
Schema
<xs:element name="SignOnRequest">
<xs:attribute name="ipAddress" type="xs:string" />
<xs:attribute name="port" type="xs:int" />
<xs:attribute name="name" type="xs:string" use="optional" />
<xs:attribute name="type" type="tns:AssetType" />
<xs:element name="SignOnResponse">
<xs:element name="status" type="xs:string" />
<xs:element name="SignOffRequest">
<xs:attribute name="ipAddress" type="xs:string" />
<xs:attribute name="port" type="xs:int" />
<xs:attribute name="name" type="xs:string" />
<xs:element name="SignOffResponse">
<xs:element name="status" type="xs:string" />
Required ADI Metadata in Catalog
This section provides information related to the required Asset Distribution Interface (ADI) metadata in the catalog. The ADI is the means by which assets, both content and metadata describing the content, are transported from the provider to the asset management system (AMS). The ADI specification defines the logical organization of metadata structures (Group Asset, Metadata Asset, Content Asset), as well as the operations that put content assets in context with one or more service offerings.
Note
See the following CableLabs documents:
CableLabs Asset Distribution Interface Specification Version 1.1
CableLabs Video-On-Demand Content 1.0 Specification
Table 4-2 shows the specific ADI metadata in the catalog, with abbreviations and definitions as listed in Table 4-3.
Table 4-2 Required ADI Metadata
Name
|
Type
|
Specification
|
Required by ADI
|
Required by VN
|
Actors
|
Title
|
MOD/SVOD
|
O
|
Y
|
Actors_Display
|
Title
|
MOD/SVOD
|
O
|
Y
|
Advisories
|
Title
|
MOD/SVOD
|
O
|
N
|
Audience
|
Title
|
MOD/SVOD
|
O
|
Y
|
Audio_Type
|
Movie
|
MOD/SVOD
|
R
|
Y
|
Audio_Type
|
Preview
|
MOD/SVOD
|
R
|
N
|
Chapter
|
Title
|
MOD/SVOD
|
O
|
N
|
Country_of_Origin
|
Title
|
MOD/SVOD
|
O
|
N
|
Director
|
Title
|
MOD/SVOD
|
O
|
Y
|
Display_Run_Time
|
Title
|
MOD/SVOD
|
R
|
N
|
Dubbed_Langauges
|
Movie
|
MOD/SVOD
|
O
|
N
|
Dubbed_Langauges
|
Preview
|
MOD/SVOD
|
O
|
N
|
Episode_ID
|
Title
|
MOD/SVOD
|
O
|
Y
|
Episode_Name
|
Title
|
MOD/SVOD
|
O
|
Y
|
Genre
|
Title
|
MOD/SVOD
|
O
|
Y
|
HDContent
|
Movie
|
MOD/SVOD
|
R
|
Y
|
HDContent
|
Preview
|
MOD/SVOD
|
O
|
N
|
ISAN
|
Title
|
MOD/SVOD
|
O
|
N
|
Languages
|
Movie
|
MOD/SVOD
|
O
|
N
|
Languages
|
Preview
|
MOD/SVOD
|
O
|
N
|
MSORating
|
Title
|
MOD/SVOD
|
O
|
N
|
Producers
|
Title
|
MOD/SVOD
|
O
|
Y
|
Provider
|
Movie
|
AMS
|
R
|
Y
|
Rating
|
Title
|
MOD/SVOD
|
R
|
Y
|
Rating
|
Preview
|
MOD/SVOD
|
R
|
N
|
Run_Time
|
Title
|
MOD/SVOD
|
R
|
Y
|
Run_Time
|
Preview
|
MOD/SVOD
|
R
|
Y
|
Screen_Format
|
Movie
|
MOD/SVOD
|
O
|
Y
|
Screen_Format
|
Preview
|
MOD/SVOD
|
O
|
N
|
Season_Finale
|
Title
|
MOD/SVOD
|
O
|
Y
|
Season_Premiere
|
Title
|
MOD/SVOD
|
O
|
N
|
Studio
|
Title
|
MOD/SVOD
|
O
|
Y
|
Subtitle_Languages
|
Movie
|
MOD/SVOD
|
O
|
N
|
Subtitle_Languages
|
Preview
|
MOD/SVOD
|
O
|
N
|
Summary_Long
|
Title
|
MOD/SVOD
|
O
|
N
|
Summary_Medium
|
Title
|
MOD/SVOD
|
O
|
N
|
Summary_Short
|
Title
|
MOD/SVOD
|
R
|
Y
|
Title
|
Title
|
MOD/SVOD
|
R
|
Y
|
Title_Brief
|
Title
|
MOD/SVOD
|
R
|
Y
|
Title_Sort_Name
|
Title
|
MOD/SVOD
|
O
|
N
|
Writer_Display
|
Title
|
MOD/SVOD
|
O
|
Y
|
Year
|
Title
|
MOD/SVOD
|
O
|
Y
|
Year
|
Preview
|
MOD/SVOD
|
O
|
Y
|
Table 4-3 Abbreviations and Definitions for ADI Metadata
Abbreviation
|
Definition
|
MOD
|
Movie on Demand
|
SVOD
|
Subscriber Video on Demand
|
AMS
|
Asset Management System
|
ADI
|
Asset Distribution Interface
|
VN
|
Cisco CDS Video Navigator
|
O
|
Optional
|
R
|
Required
|
Y
|
Yes
|
N
|
No
|
Cisco CSI XSD
This section provides the complete Cisco CSI schema. XML is used for data exchange, and object representation is documented in "XML Schema Definition (XSD)."
Schema
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:tns="com.cisco.csi" elementFormDefault="qualified"
targetNamespace="com.cisco.csi" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="AssetType">
<xs:restriction base="xs:string">
<xs:enumeration value="catalog" />
<xs:enumeration value="poster" />
<xs:enumeration value="content" />
<xs:simpleType name="AssetId">
<xs:restriction base="xs:string">
<xs:maxLength value="128" />
<xs:minLength value="1" />
<xs:pattern value="[a-zA-Z0-9-_]+" />
<xs:complexType name="AssetInfoType">
<xs:attribute name="id" type="tns:AssetId" use="required" />
<xs:attribute name="state" type="xs:int" use="required" />
<xs:attribute name="reason" use="optional">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="64" />
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="size" type="xs:long" use="optional" />
<xs:complexType name="AssetStatusType">
<xs:attribute name="id" type="tns:AssetId" use="required" />
<xs:attribute name="state" type="xs:int" use="required" />
<xs:attribute name="reason" use="optional">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="64" />
<xs:complexType name="TransferProtocolType">
<xs:attribute name="protocol" type="xs:string" use="required" />
<xs:attribute name="ipAddress" type="xs:string" use="required" />
<xs:attribute name="port" type="xs:unsignedShort" use="required" />
<xs:attribute name="userName" type="xs:string" use="optional" />
<xs:attribute name="password" type="xs:string" use="optional" />
<xs:attribute name="path" type="xs:string" use="required" />
<xs:complexType name="CallbackAddressType">
<xs:attribute name="ipAddress" type="xs:string" use="required" />
<xs:attribute name="port" type="xs:unsignedShort" use="required" />
<xs:attribute name="path" type="xs:string" use="required" />
<xs:complexType name="CallbackMessageType">
<xs:attribute name="type" type="tns:AssetType" use="required" />
<xs:attribute name="id" type="tns:AssetId" use="required" />
<xs:attribute name="status" type="xs:string" use="required" />
<xs:attribute name="reason" type="xs:string" use="required" />
<xs:complexType name="ErrorResponseType">
<xs:attribute name="code" type="xs:string" />
<xs:attribute name="reason" type="xs:string" />
<xs:element name="GetAssetCountRequest">
<xs:element name="type" type="tns:AssetType" />
<xs:element name="GetAssetCountResponse">
<xs:element name="count" type="xs:int" />
<xs:element name="GetAssetInventoryListRequest">
<xs:element name="type" type="tns:AssetType" />
<xs:element name="GetAssetInventoryListResponse">
<xs:element minOccurs="0" maxOccurs="unbounded" name="info"
type="tns:AssetInfoType" />
<xs:element name="GetAvailableSpaceRequest">
<xs:element name="type" type="tns:AssetType" />
<xs:element name="GetAvailableSpaceResponse">
<xs:element name="totalSpace" type="xs:long" />
<xs:element name="freeSpace" type="xs:long" />
<xs:element name="SetAssetRequest">
<xs:element name="type" type="tns:AssetType" />
<xs:element name="id" type="tns:AssetId" />
<xs:element name="version" type="xs:string" />
<xs:element name="protocol" type="tns:TransferProtocolType" />
<xs:element minOccurs="0" name="callback" type="tns:CallbackAddressType" />
<xs:element name="SetAssetResponse">
<xs:element name="status" type="tns:AssetStatusType" />
<xs:element name="DeleteAssetRequest">
<xs:element name="type" type="tns:AssetType" />
<xs:element name="id" type="tns:AssetId" />
<xs:element name="version" type="xs:string" />
<xs:element minOccurs="0" name="callback" type="tns:CallbackAddressType" />
<xs:element name="DeleteAssetResponse">
<xs:element name="status" type="tns:AssetStatusType" />
<xs:element name="GetAssetsStatusRequest">
<xs:element name="type" type="tns:AssetType" />
<xs:element maxOccurs="unbounded" name="id" type="tns:AssetId" />
<xs:element name="GetAssetsStatusResponse">
<xs:element maxOccurs="unbounded" name="status" type="tns:AssetStatusType" />
<xs:element name="GetAssetsInfoRequest">
<xs:element name="type" type="tns:AssetType" />
<xs:element maxOccurs="unbounded" name="id" type="tns:AssetId" />
<xs:element name="GetAssetsInfoResponse">
<xs:element maxOccurs="unbounded" name="info" type="tns:AssetInfoType" />