008-388 - GN503 - Orion Integration V 1 00
008-388 - GN503 - Orion Integration V 1 00
008-388 - GN503 - Orion Integration V 1 00
General Notification
GN503
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.
List of Figures
Introduction
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.
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.
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.
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
All packets to and from the API server are wrapped in the corresponding
<methodCall> or <methodResponse> tag as follows:
Or:
Method Requests
Method call packets have a method name tag as the first child of the method
call tag as follows:
The params tag follows the method call tag as the next child node as follows:
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.
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.
Batch response:
Non-batch response:
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.
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
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>
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
Request packet:
<methodCall>
<methodName>GetRollbackQueueData</methodName>
<params>
<param>
<value>
<array>
<data>
<value>
<int>5001</int>
</value>
</data>
</array>
</value>
</param>
</params>
</methodCall>
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>
GetCommitQueueData
Request packet:
<methodCall>
<methodName>GetCommitQueueData</methodName>
<params>
<param>
<value>
<array>
<data>
<value>
<int>5001</int>
</value>
</data>
</array>
</value>
</param>
</params>
</methodCall>
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>
ManuallyValidateBet
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>
<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>
VanguardAdmin2
GetFailedEndGameQueue
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>
</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>
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>
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>
GetVoidedFundsInPlay
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>
<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>
ProcessVoidedFundsInPlay
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>
</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>
</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>
GamingAdmin
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>
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>
</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>
Sample Code
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";
rsp = req.GetResponse();
Stream stream = rsp.GetResponseStream();
stream.Flush();
StreamReader reads = new StreamReader(stream);
xmlPacket = reads.ReadToEnd();