This document summarises the options available to integrate with Future Anthem, for both data ingress and egress.
Future Anthem offers Standard as well as Client Bespoke integration options for either Real-time or Batch Data.
This document also outlines the options available to provide large datasets to Future Anthem on a one-off or irregular basis.
The standard Integration of Future Anthem products with client systems is via API’s:
Future Anthem’s Standard Real-time Data Integration uses Azure Event Hubs, which provide clients with a widely supported standard technology to integrate with Anthem’s Real-time Engine.
Sending Events to Anthem Azure Event Hubs supports sending event data via
Method | Request URI |
POST | https://{clientEndpointId}- fane01.servicebus.windows.net/{eventTypeName}/messages?timeout=60&api -version=2014-01 |
Parameter | Example | Description |
clientEndpointId | casinomagic | Future Anthem provides the clientEndpointId for the integration. |
eventTypeName | spins | The client can set the eventTypeName to match the client’s terminology |
Content-Type | application/vnd.microsoft.servicebus.json |
Authorization | Future Anthem provided SharedAccessSignature token |
x-ms-retrypolicy | NoRetry |
JSON formatted event data. Either a single event or a list of batched events.
All JSON payloads have to be String escaped and passed as the value to the “Body” key
JSON Schema |
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "http://example.com/example.json",
"type": "array",
"title": "Real-time Event Upload",
"description": "Schema definition for real-time events uploaded to Future Anthem",
"default": [],
"examples": [
[
{
"Body": "{\"GameId\":\"1\",\"PlayerId\":\"123\",\"SpinId\": 1,\"Amount\": 0.25}"
}
]
],
"additionalItems": true,
"items": {
"$id": "#/items",
"anyOf": [
{
"$id": "#/items/anyOf/0",
"type": "object",
"title": "Event Schema",
"description": "The schema of a single event",
"default": {},
"examples": [
{
"Body": "{\"GameId\":\"1\",\"PlayerId\":\"123\",\"SpinId\": 1,\"Amount\": 0.25}"
}
],
"required": [
"Body"
], "properties": {
"Body": {
"$id": "#/items/anyOf/0/properties/Body",
"type": "string",
"title": "Event Body Schema",
"description": "The event Payload",
"default": "",
"examples": [
"{\"GameId\":\"1\",\"PlayerId\":\"123\",\"SpinId\": 1,\"Amount\": 0.25}"
]
}
},
"additionalProperties": true
}
]
}
}
JSON (single event) | JSON (batch events) |
[{“Body”:”{\"Key1\":\"Value1\"}”}] | [{“Body”:”{\"Key1\":\"Value1\"}”}, {“Body”:”{\"Key1\":\"Value2\"}”}] |
Future Anthem will translate the client's data schema to the internal data schema used by Anthem’s Real-time Engine
The event data provided can follow any schema and can be nested
Clients should provide their schema documentation, allowing Anthem to configure their internal schema transformation
The response includes:
an HTTP status code
a set of response headers
a response body
If the request is successful, the response body is empty
If the request isn't successful, the body contains an error code and error message
Response Code | Description |
201 | Created |
401 | Authorization Failure |
500 | Internal Error |
POST /spins/messages?timeout=60&api-version=2014-01 HTTP/1.1
Host: https://casinomagic-fane01.servicebus.windows.net
Authorization: SharedAccessSignature sr=casinomagicfane01.servicebus.windows.net&sig=casinomagic-token&se=1657122931&skn=upload
Content-Type: application/vnd.microsoft.servicebus.json
[{"Body": "{\"GameId\":\"1\",\"PlayerId\":\"123\",\"SpinId\": 1,\"Amount\": 0.25}"}]
curl --location --request POST 'https://casinomagic-
fane01.servicebus.windows.net/spins/messages?timeout=60&api-version=2014-01' \
--header 'Content-Type: application/vnd.microsoft.servicebus.json' \
--header 'Authorization: SharedAccessSignature sr=https%3A%2F%2Fcasinomagic
fane01.servicebus.windows.net%2Fspins&sig=casinomagic-token&se=1657122931&skn=upload' \
--data-raw '[{"Body": "{\"GameId\":\"1\",\"PlayerId\":\"123\",\"SpinId\": 1,\"Amount\": 0.25}"}]'
AMQP integration is documented as part of Azure’s Service Bus: https://docs.microsoft.com/enus/azure/service-bus-messaging/service-bus-amqp-overview
The Azure SDK exists for all major programming languages:
Python: https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-python-getstarted-send
.NET https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-dotnet-standardgetstarted-send
Java https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-java-get-started-send
JS https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-node-get-started-send
Others https://docs.microsoft.com/en-us/azure/event-hubs/
To receive real-time events, an API should be provided for Anthem to call
Anthem integrates with the Client API’s based on their provided specifications and requirements
POST method to APIs
Static IPs for IP whitelisting
SSL with self-signed client certificates
If clients do not have an API available we offer bespoke integrations, such as hosting a webhook - for examples see the section on bespoke integration options.
For provisions of large datasets (e.g. an initial set of historic data), Anthem’s standard pattern is to enable client’s to upload via Azure Storage Explorer {GUI}.
Other options are:
AzCopy
Pulling data from client environment (e.g. from S3 bucket)
SFTP can be made available on request
Regular data provision is handled via API.
Request
Method | Request URI |
POST | https://{clientEndpointId}- fane01.azurewebsites.net/api/upload/{date}/{filename}?code={token} |
Parameter | Example | Description |
clientEndpointId | casinomagic | Future Anthem provides the clientEndpointId for the integration. |
date | 2021-01-01 | The corresponding date for the uploaded data in YYYY-MM-DD format |
filename | spins_01.csv | The target filename of the upload. Reusing the filename allows data to be overwritten |
token | Abc123Z== | Future Anthem provides the required API key for Authorization |
Request Headers
Content-Type | multipart/form-data |
Body
Binary multipart form data
Response
Response Code | Description |
200 | Success |
401 | Authorization Failure |
500 | Internal Error |
Example
POST /api/upload/2021-01-01/spins_01.csv?code=ABC123Z== HTTP/1.1
Host: https://casinomagic-fane01.azurewebsites.net
Content-Length: 198
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name=""; filename="spins_01.csv"
Content-Type: text/csv (data) ----WebKitFormBoundary7MA4YWxkTrZu0gW
curl --location --request POST 'https://casinomagic-fane01.azurewebsites.net/api/upload/2021-01-
01/spins01.csv?code=ABC123Z==' \
--form '=@"/path/to/file/spins-048046c6b0cf-c000.csv"'
Request
Method | Request URI |
GET | https://{clientEndpointId}- fane01.azurewebsites.net/api/download/{date}/{templateId}?code={token} |
Parameter | Example | Description |
clientEndpointId | casinomagic | Future Anthem provides the clientEndpointId for the integration. |
Product | personalize | Future Anthem product |
Date | 2021-01-01 | The corresponding date for the uploaded data in YYYY-MM-DD format |
TemplateID | 0 | The template ID specifies the clients configured output format |
Token | Abc123Z== | Future Anthem provides the required API key for Authorization |
Body
Returned file based on the configured templateId which includes:
Lookup
Results are cached by Anthem – via either real-time or batch engines – and made available for client systems to lookup.
Request
Method | Request URI |
GET | https://{clientEndpointId}- fane01.azurewebsites.net/api/lookup/{product}/{playerId}?code={token} |
Parameter | Example | Description |
clientEndpointId | casinomagic | Future Anthem provides the clientEndpointId for the integration. |
Product | personalize | Future Anthem product |
PlayerID | player123 | PlayerID is to lookup |
Token | Abc123Z== | Future Anthem provides the required API key for Authorization |
Body
JSON payload
Where the standard integration options are not suitable, Anthem will deliver a bespoke integration based on client requirements.
Future Anthem has built a range of successful client integrations which required bespoke solutions.
Future Anthem can ingest real-time data directly from client systems via a bespoke connection.
Future Anthem has successfully integrated clients via a direct connection to:
Anthem’s bespoke connectors support:
Clients can receive real-time data from Future Anthem’s real-time engine without providing an API
Clients can connect to Future Anthem’s systems to poll data directly via a bespoke connection
Hosting a client webhook
Providing a message broker to connect to e.g. Kafka or AMQP
Static IPs for IP whitelisting
Authentication via username and password or certificates
Future Anthem can ingest files with batch data directly from client file servers or blob storage, and can also host a file server or blob storage on a client’s behalf.
Future Anthem has successfully integrated clients via:
Future Anthem can deliver files directly to client systems using a wide range of bespoke integration options.