Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

Orion Integration

General Notification
GN503

Distribution: All Clients

Document number: 008-388


Version: 1.00

Release Date:
16 May 2011
Confidential

Table of Contents

INTRODUCTION ........................................................................................ 4
OVERVIEW .............................................................................................. 5
XML-RPC PACKET SPECIFICATIONS ............................................................. 6
PACKET ARCHITECTURE .............................................................................. 6
METHOD REQUESTS .................................................................................. 6
METHOD RESPONSES ................................................................................. 7
API AUTHORISATION ................................................................................. 9
ENDPOINTS AND METHOD EXPLANATIONS..................................................... 10
VANGUARDADMIN.................................................................................... 10
ValidateApiUser ................................................................................... 10
GetRollbackQueueData......................................................................... 11
GetCommitQueueData ......................................................................... 13
ManuallyValidateBet ............................................................................ 15
VANGUARDADMIN2 .................................................................................. 17
GetFailedEndGameQueue ..................................................................... 17
ManuallyCompleteGame ....................................................................... 19
GetVoidedFundsInPlay ......................................................................... 21
ProcessVoidedFundsInPlay .................................................................... 23
GAMINGADMIN ....................................................................................... 26
GetUsersBetsOnTable .......................................................................... 26
SAMPLE CODE ........................................................................................ 29

This document is intended for the use of Microgaming. It contains privileged information that is the intellectual
property of Microgaming. You may neither copy nor use it, nor disclose it to anyone else.

Version: 1.00 Page 2 16 May 2011


Confidential

List of Figures

FIGURE 1 - DATA FLOW.............................................................................. 5

Version: 1.00 Page 3 16 May 2011


Confidential

Introduction

This document is intended as a reference for third parties that want to


interface their gaming system with the Microgaming gaming system, using
Orion.

The document describes the format and calling convention of the Orion
Application Programming Interface (API) and outlines an example of an
implementation for third party integration users. The document focuses on
Orion API house administrative methods, not gameplay methods.

Version: 1.00 Page 4 16 May 2011


Confidential

Overview

This section provides a high level view of the interaction between players, third
party gaming systems and Orion.

Orion is a standard request response API that is built using Microsoft Windows
Communication Foundation (WCF) technologies. These technologies currently
only support XML-RPC communications.

Figure 1 - Data Flow

At the most basic level, the API sits as a layer between the proprietary
Microgaming systems and any authorised third party. This enables the API to
accept requests in an open, neutral format, and make the appropriate
translations to and from the Microgaming system.

Version: 1.00 Page 5 16 May 2011


Confidential

XML-RPC Packet Specifications

The API uses XML-RPC to communicate with the third party gaming systems.
The API receives instructions from the third party systems in the form of XML
packets that are unique for every method that is executed.

The structure of these packets is outlined in this section. The methods are
defined and explained in greater detail in the Endpoints and Method
Explanations section.

Packet Architecture

There are two types of packets in the API:

 Method call packets


 Method response packets

All packets to and from the API server are wrapped in the corresponding
<methodCall> or <methodResponse> tag as follows:

<?xml version="1.0" encoding="utf-8"?>


<methodCall>
</methodCall>

Or:

<?xml version="1.0" encoding="utf-8"?>


<methodResponse>
</methodResponse>

Method Requests

Method call packets have a method name tag as the first child of the method
call tag as follows:

<?xml version="1.0" encoding="utf-8"?>


<methodCall>
<methodName>GetRollbackQueueData</methodName>
</methodCall>

Version: 1.00 Page 6 16 May 2011


Confidential

The params tag follows the method call tag as the next child node as follows:

<?xml version="1.0" encoding="utf-8"?>


<methodCall>
<methodName>GetRollbackQueueData</methodName>
<params>
</params>
</methodCall>

An array of params tags sit inside the initial params tag.

Note:
It is important that the array of params tags is in the sequential order shown
in the method definitions. See the Endpoints and Method Explanations
section.

Each params tag’s first child node is a value tag:

<?xml version="1.0" encoding="utf-8"?>


<methodCall>
<methodName>GetRollbackQueueData</methodName>
<params>
<param>
<value>
</value>
</param>
<param>
<value>
</value>
</param>
</params>
</methodCall>

Inside the value tag, you can have a number of other tags, such as int, string,
struct and array. Array is the most common.

Method Responses

Method responses do not have a method name tag. Method responses start
with the params tag and then follow the same structure as method call packets
up to the individual params tags. The params tags must display in the
sequential order specified in the method definitions. See the Endpoints and
Method Explanations section.

ETI defined method responses have a struct with two arrays - one for success
responses and one for error responses for batch methods. Or, they have a
single value return or an error return for non-batch methods. The single value
return may have a struct.

Version: 1.00 Page 7 16 May 2011


Confidential

An example of a method response packet, showing both batch and non-batch


responses, is shown below.

Batch response:

<?xml version="1.0" encoding="utf-8"?>


<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>resps</name>
<value>
<array>
<data></data>
</array>
</value>
</member>
<member>
<name>errors</name>
<value>
<array>
<data></data>
</array>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>

Non-batch response:

<?xml version="1.0" encoding="utf-8"?>


<methodResponse>
<params>
<param>
<value>
<string>String data example</string>
</value>
</param>
</params>
</methodResponse>

Version: 1.00 Page 8 16 May 2011


Confidential

API Authorisation

All calls to the Orion service must include three items in the request header:

1. Username
2. Password
3. Request ID

The username and password are your API credentials as a third party vendor,
and the request ID is the Globally Unique Identifier (GUID) that you generate.

Note:
These three items are mandatory for your Orion calls to work. To assist you
with the integration, we have included sample C# code on how to include
these items in the Sample Code section.

Version: 1.00 Page 9 16 May 2011


Confidential

Endpoints and Method Explanations

This section provides a detailed explanation of each method, including a


sample method call and method response packet for reference purposes.

Orion currently contains two logical services:

 VanguardAdmin
 PlayerAdmin

The XML-RPC endpoints are used to interact with these services. We may add
more services to this API in the future.

VanguardAdmin

This service is used to administer the Vanguard service.

ValidateApiUser

This method validates an API user. It returns the Server IDs that the user is
authorised on.

Request packet:

<methodCall>
<methodName>ValidateApiUser</methodName>
<params>
<param>
<value>
<string>VanguardAdmin</string>
</value>
</param>
<param>
<value>
<string>test</string>
</value>
</param>
</params>
</methodCall>

Version: 1.00 Page 10 16 May 2011


Confidential

Response packet:

<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>IsValid</name>
<value>
<boolean>1</boolean>
</value>
</member>
<member>
<name>ValidServerIds</name>
<value>
<array>
<data>
<value>
<int>5001</int>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>

GetRollbackQueueData

This method fetches the Vanguard rollback queue records.

Request packet:

<methodCall>
<methodName>GetRollbackQueueData</methodName>
<params>
<param>
<value>
<array>
<data>
<value>
<int>5001</int>
</value>
</data>
</array>
</value>
</param>
</params>
</methodCall>

Version: 1.00 Page 11 16 May 2011


Confidential

Response packet:

<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>LoginName</name>
<value>
<string>demo</string>
</value>
</member>
<member>
<name>UserId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>ChangeAmount</name>
<value>
<int>222333</int>
</value>
</member>
<member>
<name>TransactionCurrency</name>
<value>
<string>US Dollar</string>
</value>
</member>
<member>
<name>Status</name>
<value>
<string>Unknown</string>
</value>
</member>
<member>
<name>RowId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>TransactionNumber</name>
<value>
<int>2234</int>
</value>
</member>
<member>
<name>GameName</name>
<value>
<string>Feature Slot - Robot Butler</string>
</value>
</member>
<member>
<name>DateCreated</name>
<value>

Version: 1.00 Page 12 16 May 2011


Confidential

<string>2009/12/13 01:41:43 PM</string>


</value>
</member>
<member>
<name>MgsReferenceNumber</name>
<value>
<string>333222</string>
</value>
</member>
<member>
<name>ServerId</name>
<value>
<int>5001</int>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>

GetCommitQueueData

This method fetches the Vanguard commit queue records.

Request packet:

<methodCall>
<methodName>GetCommitQueueData</methodName>
<params>
<param>
<value>
<array>
<data>
<value>
<int>5001</int>
</value>
</data>
</array>
</value>
</param>
</params>
</methodCall>

Version: 1.00 Page 13 16 May 2011


Confidential

Response packet:

<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>LoginName</name>
<value>
<string>demo</string>
</value>
</member>
<member>
<name>UserId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>ChangeAmount</name>
<value>
<int>111</int>
</value>
</member>
<member>
<name>TransactionCurrency</name>
<value>
<string>US Dollar</string>
</value>
</member>
<member>
<name>Status</name>
<value>
<string>Unknown</string>
</value>
</member>
<member>
<name>RowId</name>
<value>
<int>2</int>
</value>
</member>
<member>
<name>TransactionNumber</name>
<value>
<int>125</int>
</value>
</member>
<member>
<name>GameName</name>
<value>
<string>Feature Slot - Robot Butler</string>
</value>
</member>
<member>
<name>DateCreated</name>
<value>

Version: 1.00 Page 14 16 May 2011


Confidential

<string>2009/12/13 01:08:30 PM</string>


</value>
</member>
<member>
<name>MgsReferenceNumber</name>
<value>
<string>1111</string>
</value>
</member>
<member>
<name>ServerId</name>
<value>
<int>5001</int>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>

ManuallyValidateBet

This method is used to manually unlock a player from either a Vanguard


commit or rollback queue.

The UnlockType parameter’s value is either RollbackQueue or


CommitQueue, depending on the queue updated.

Request packet:

<methodCall>
<methodName>ManuallyValidateBet</methodName>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>UserId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>ServerId</name>
<value>
<int>5001</int>
</value>
</member>
<member>
<name>RowId</name>

Version: 1.00 Page 15 16 May 2011


Confidential

<value>
<long>2</long>
</value>
</member>
<member>
<name>UnlockType</name>
<value>
<string>RollbackQueue</string>
</value>
</member>
<member>
<name>ExternalReference</name>
<value>
<string>aaaa</string>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodCall>

Response packet:

<methodResponse>
<params>
<param>
<value>
<boolean>1</boolean>
</value>
</param>
</params>
</methodResponse>

Version: 1.00 Page 16 16 May 2011


Confidential

VanguardAdmin2

The VanguardAdmin2 service contains all the methods from VanguardAdmin,


including the following additional methods:

GetFailedEndGameQueue

This method is used to retrieve Vanguard’s list of games that failed to


complete.

Request packet:

<methodCall>
<methodName>GetFailedEndGameQueue</methodName>
<params>
<param>
<value>
<array>
<data>
<value>
<int>5001</int>
</value>
<value>
<int>5003</int>
</value>
<value>
<int>5004</int>
</value>
</data>
</array>
</value>
</param>
</params>
</methodCall>

Response packet:

<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>ServerId</name>
<value>
<int>5004</int>
</value>
</member>
<member>
<name>RowId</name>
<value>
<long>1</long>

Version: 1.00 Page 17 16 May 2011


Confidential

</value>
</member>
<member>
<name>UniqueId</name>
<value>
<string>1102</string>
</value>
</member>
<member>
<name>UserId</name>
<value>
<int>103</int>
</value>
</member>
<member>
<name>ModuleId</name>
<value>
<int>105</int>
</value>
</member>
<member>
<name>ClientId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>TransNumber</name>
<value>
<int>12345</int>
</value>
</member>
<member>
<name>SessionId</name>
<value>
<int>10</int>
</value>
</member>
<member>
<name>TimeCreated</name>
<value>
<dateTime.iso8601>2010-09-06T11:34:58.157</dateTime.iso8601>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>

Version: 1.00 Page 18 16 May 2011


Confidential

ManuallyCompleteGame

This method is used to mark failed items from Vanguard's Complete Game
Queue as complete.

Request packet:

<methodCall>
<methodName>ManuallyCompleteGame</methodName>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>RowId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>ServerId</name>
<value>
<int>5004</int>
</value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>RowId</name>
<value>
<int>2</int>
</value>
</member>
<member>
<name>ServerId</name>
<value>
<int>5004</int>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodCall>

Version: 1.00 Page 19 16 May 2011


Confidential

Response packet:

<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>RowId</name>
<value>
<long>1</long>
</value>
</member>
<member>
<name>ServerId</name>
<value>
<int>5004</int>
</value>
</member>
<member>
<name>Success</name>
<value>
<boolean>1</boolean>
</value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>RowId</name>
<value>
<long>2</long>
</value>
</member>
<member>
<name>ServerId</name>
<value>
<int>5004</int>
</value>
</member>
<member>
<name>Success</name>
<value>
<boolean>1</boolean>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>

Version: 1.00 Page 20 16 May 2011


Confidential

GetVoidedFundsInPlay

This method fetches any incomplete bets that were voided.

Request packet:

<methodCall>
<methodName>GetVoidedFundsInPlay</methodName>
<params>
<param>
<value>
<array>
<data>
<value>
<int>5001</int>
</value>
<value>
<int>5003</int>
</value>
<value>
<int>5004</int>
</value>
</data>
</array>
</value>
</param>
</params>
</methodCall>

Response packet:

<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>ServerId</name>
<value>
<int>5004</int>
</value>
</member>
<member>
<name>UserId</name>
<value>
<int>100</int>
</value>
</member>
<member>
<name>UserTransNumber</name>
<value>
<int>123</int>
</value>
</member>
<member>

Version: 1.00 Page 21 16 May 2011


Confidential

<name>ModuleId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>ClientId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>BetDate</name>
<value>
<dateTime.iso8601>2010-09-05T13:54:19.573</dateTime.iso8601>
</value>
</member>
<member>
<name>BetAmount</name>
<value>
<int>5000</int>
</value>
</member>
<member>
<name>LastUpdateTime</name>
<value>
<dateTime.iso8601>2010-09-06T16:13:53.4</dateTime.iso8601>
</value>
</member>
<member>
<name>IsProcessed</name>
<value>
<boolean>0</boolean>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>

Version: 1.00 Page 22 16 May 2011


Confidential

ProcessVoidedFundsInPlay

This method is used to mark voided funds as processed.

Request packet:

<methodCall>
<methodName>ProcessVoidedFundsInPlay</methodName>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>ClientId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>ModuleId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>ServerId</name>
<value>
<int>5004</int>
</value>
</member>
<member>
<name>UserId</name>
<value>
<int>100</int>
</value>
</member>
<member>
<name>UserTransNumber</name>
<value>
<int>123</int>
</value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>ClientId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>ModuleId</name>
<value>
<int>1</int>

Version: 1.00 Page 23 16 May 2011


Confidential

</value>
</member>
<member>
<name>ServerId</name>
<value>
<int>5004</int>
</value>
</member>
<member>
<name>UserId</name>
<value>
<int>120</int>
</value>
</member>
<member>
<name>UserTransNumber</name>
<value>
<int>113</int>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodCall>

Response packet:

<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>ServerId</name>
<value>
<int>0</int>
</value>
</member>
<member>
<name>UserId</name>
<value>
<int>100</int>
</value>
</member>
<member>
<name>ModuleId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>ClientId</name>
<value>
<int>1</int>

Version: 1.00 Page 24 16 May 2011


Confidential

</value>
</member>
<member>
<name>UserTransNumber</name>
<value>
<int>123</int>
</value>
</member>
<member>
<name>Success</name>
<value>
<boolean>1</boolean>
</value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>ServerId</name>
<value>
<int>0</int>
</value>
</member>
<member>
<name>UserId</name>
<value>
<int>120</int>
</value>
</member>
<member>
<name>ModuleId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>ClientId</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>UserTransNumber</name>
<value>
<int>113</int>
</value>
</member>
<member>
<name>Success</name>
<value>
<boolean>1</boolean>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>

Version: 1.00 Page 25 16 May 2011


Confidential

GamingAdmin

The GamingAdmin service currently contains one method to retrieve players’


bets on the table.

GetUsersBetsOnTable

Request packet:

<methodCall>
<methodName>GetUsersBetsOnTable</methodName>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>LoginName</name>
<value>
<string>user123</string>
</value>
</member>
<member>
<name>ServerId</name>
<value>
<int>5002</int>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodCall>

Version: 1.00 Page 26 16 May 2011


Confidential

Response packet:
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>ClientId</name>
<value>
<int>20151</int>
</value>
</member>
<member>
<name>ModuleId</name>
<value>
<int>70548</int>
</value>
</member>
<member>
<name>ModuleName</name>
<value>
<string>Avalon</string>
</value>
</member>
<member>
<name>TotalAmountOnTable</name>
<value>
<int>400</int>
</value>
</member>
<member>
<name>TotalPayoutOnTable</name>
<value>
<int>600</int>
</value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>ClientId</name>
<value>
<int>26252</int>
</value>
</member>
<member>
<name>ModuleId</name>
<value>
<int>28371</int>
</value>
</member>
<member>
<name>ModuleName</name>
<value>
<string>Lady in Red</string>
</value>

Version: 1.00 Page 27 16 May 2011


Confidential

</member>
<member>
<name>TotalAmountOnTable</name>
<value>
<int>5000</int>
</value>
</member>
<member>
<name>TotalPayoutOnTable</name>
<value>
<int>5800</int>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>

Version: 1.00 Page 28 16 May 2011


Confidential

Sample Code

A sample snippet of C# code for integration with ETI:

WebRequest req = null;


WebResponse rsp = null;
string xmlPacket = "";

req = WebRequest.Create(“http://address”);
req.Credentials = new NetworkCredential(“UserName”, “Password”);
req.Headers.Add("Request-Id", Guid.NewGuid().ToString());
req.Method = "POST";
req.ContentType = "text/xml";

StreamWriter writer = new StreamWriter(req.GetRequestStream());


writer.WriteLine(“MY XML REQUEST GOES HERE”);
writer.Close();

rsp = req.GetResponse();
Stream stream = rsp.GetResponseStream();
stream.Flush();
StreamReader reads = new StreamReader(stream);
xmlPacket = reads.ReadToEnd();

Version: 1.00 Page 29 16 May 2011

You might also like