# Responsible Gaming Requests

<table><thead><tr><th width="115.0677490234375" align="center">Source</th><th width="55.919189453125" align="center"></th><th width="114.782958984375" align="center">Destination</th></tr></thead><tbody><tr><td align="center"><strong>Client</strong></td><td align="center"><strong>→</strong></td><td align="center"><strong>MTS</strong></td></tr></tbody></table>

Responsible gaming requests include the following specific requests:

* **Account Limit Inform** **Request** provides information information whenever there is a change in a player's financial or session limits. The information includes elements such as: end customer identification, the type of limit that is being changed, the frequency it applies to as well as the amount and currency of the limit. The information ensures that all updates to the player's financial and session boundaries are accurately recorded.
* **Limit Reached Inform** **Request** provides information whenever a player hits their set limit. The information includes elements such as: end customer identification and the type of limit that has been reached. The information ensures that all instances of players reaching their limits are accurately recorded.
* **Account Status Inform** **Request** provides information whenever there is either an automatic or manual change in a player's account status. The information includes elements such as: end customer identification, the new account status, the duration of the status (if applicable), the initiator of the status change, reason for the change and relevant dates. The information ensures that all updates to the player's account status are accurately recorded.
* **Intervention Inform Request** provides information whenever an intervention is triggered based on Bettor Sense's provided risk scores. The bookmaker performs the intervention for a specific end customer with the aim of promoting safer gaming practices and the use of responsible gaming tools. Various intervention methods include pop-ups, RG messaging, emails, limit updates, care calls, or other methods. The information includes elements such as end customer identification, the intervention method used, and whether the intervention was initiated by the model.

{% hint style="info" %}
**Note**

Although not included in the Responsible Gaming requests, the [Deposit Inform and Withdrawal Inform requests](https://docs.sportradar.com/transaction30api/api-description/ticket-json-format-description/payment-requests) are also instrumental to Bettor Sense and should therefore be sent as part of the Bettor Sense integration update. Similarly, as part of the Bettor Sense integration, the client should also send its betting tickets, either as tickets to be validated by MTS ("ticket-placement" operation, described in [Ticket Placement Request ](https://docs.sportradar.com/transaction30api/api-description/ticket-json-format-description/ticket-placement-request)), or as tickets without validation ("ticket-placement-inform" operation, described in [Pre-validated Ticket Placement Request ](https://docs.sportradar.com/transaction30api/api-description/ticket-json-format-description/pre-validated-ticket-placement-request)).

This data helps Bettor Sense maintain a more accurate risk profile of the end customer, which in turn enables Bettor Sense's clients to conduct more effective customer interventions, analyse the effect of their actions, manage their RG policies and more.
{% endhint %}

**Envelope and Content table:**

The Envelope provides the content's context and contains the following fields (besides Content):

* operatorId
* correlationId
* timestampUtc
* operation
* version

<table data-full-width="true"><thead><tr><th width="351">Example</th><th width="135.466064453125">Field Name</th><th>Field Description</th><th width="100">Mandatory/ Optional</th><th width="100">Data Type</th></tr></thead><tbody><tr><td><pre><code>{
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><pre><code>  "operatorId": 19036,
</code></pre></td><td>operatorId</td><td>ID to uniquely identify the client from which the ticket originated,<br>ID is provided to the client by Sportradar,<br>The client is obliged to include it in every ticket</td><td>M</td><td>Integer</td></tr><tr><td><pre><code>  "content": {
        .......
        .......
         },  
</code></pre></td><td>content</td><td>See Content object description below</td><td>M</td><td>Object</td></tr><tr><td><pre><code>  "correlationId": "bhwL37b1",
</code></pre></td><td>correlationId</td><td>Client defined string to facilitate the request-response pairing,<br>Sportradar is obliged to return the same string in the corresponding response</td><td>M</td><td>String</td></tr><tr><td><pre><code>  "timestampUtc": 1739271971000,
</code></pre><p><br><br></p></td><td>timestampUtc</td><td>Timestamp of transaction placement as submitted by the client (Unix time in milliseconds format),<br>minimal: 1,<br>maximum: 9223372036854776000</td><td>M</td><td>Integer</td></tr><tr><td><pre data-overflow="wrap"><code>  "operation": "account-limit-inform",
</code></pre></td><td>operation</td><td><p>Declaration of operation type, should be<br>"account-limit-inform" in the case of an Account Limit Inform Request or</p><p>"account-limit-reached-inform" in the case of a Limit Reached Inform Request or</p><p>"account-status-inform" in the case of an Account Status Inform Request or</p><p>"account-intervention-inform" in the case of an Intervention Inform Request</p></td><td>M</td><td>String</td></tr><tr><td><pre><code>  "version": "3.0"
</code></pre></td><td>version</td><td>Indicates the ticket format version</td><td>M</td><td>String</td></tr><tr><td>}</td><td><br></td><td><br></td><td><br></td><td><br></td></tr></tbody></table>

### Content object <a href="#mtsresponsiblegamingrequests-v3.0-contentcontentobject" id="mtsresponsiblegamingrequests-v3.0-contentcontentobject"></a>

The following tables describe the fields of each of the four different types of Responsible Gaming requests.

**Account Limit Inform** content object consists of the following fields:

* type
* endCustomer
* limit

<table data-full-width="true"><thead><tr><th width="351">Example</th><th width="150.7135009765625">Field Name</th><th>Field Description</th><th width="100">Mandatory/ Optional</th><th width="100">Data Type</th></tr></thead><tbody><tr><td><pre><code>"content": {
</code></pre></td><td><br></td><td><br></td><td><br></td><td>Object</td></tr><tr><td><pre><code>    "type": "account-limit-inform",
</code></pre></td><td>type</td><td>Declaration of content type, should be "account-limit-inform" in the case of an Account Limit Inform Request</td><td>M</td><td>String</td></tr><tr><td><pre><code>    "endCustomer": {
</code></pre></td><td>endCustomer</td><td>Data about client's end customer (bettor)</td><td>M</td><td>Object</td></tr><tr><td><pre><code>        "id": "endCustomer_e34t45",
</code></pre></td><td><ul><li>id</li></ul></td><td>End customer's unique ID (in client's system). It should be an anonymous value which cannot be used to identify a physical person.<br>minimal string length = 1,<br>maximum length = 36,<br>allowed characters are : uppercase and lowercase letters, numerals, #, :, -, _, \<br>Java regex: ^[0-9A-Za-z#:\\-_]{1,36}$</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "confidence": "1.15"
         },
</code></pre></td><td><ul><li>confidence</li></ul></td><td>End customer's suggested CCF,<br>Java regex: ^\\d{1,8}(\\.\\d{1,8})?$</td><td>O</td><td>String</td></tr><tr><td><pre><code>    "limit": {
</code></pre></td><td>limit</td><td><br></td><td>M</td><td>Object</td></tr><tr><td><pre><code>       "type": "stake",
</code></pre></td><td><ul><li>type</li></ul></td><td><p>Enumerator that defines the type of the account limit:</p><ul><li>deposit</li><li>stake</li><li>loss</li><li>session</li></ul></td><td>M</td><td>String</td></tr><tr><td><pre><code>       "period": "daily",
</code></pre></td><td><ul><li>period</li></ul></td><td><p>Not present if "type": "session",</p><p>enumerator that defines the frequency of the account limit:</p><ul><li>daily</li><li>weekly</li><li>monthly</li></ul></td><td><p>M</p><p>Not M if "type": "session"</p></td><td>String</td></tr><tr><td><pre><code>       "duration": 20,
</code></pre></td><td><ul><li>duration</li></ul></td><td><p>Only present if "type": "session",</p><p>duration of the session limit in minutes.</p><p>minumum 0, maximum 2147483647</p></td><td><p>M</p><p>Only if "type": "session"</p></td><td>Integer</td></tr><tr><td><pre><code>       "amount": {
</code></pre></td><td><ul><li>amount</li></ul></td><td><p>Not present if "type": "session",</p><p>amount of the account limit set by the end-user,</p><p>nullable, if null (or the amount object is not present), it means the end-user has removed their limit</p></td><td>M<br>Not M if "type": "session"</td><td>Object</td></tr><tr><td><pre><code>          "value": "1890.05",
</code></pre></td><td><ul><li><p></p><ul><li>value</li></ul></li></ul></td><td>String pattern: 1 up to 8 digits, optionally followed by a decimal point and 1 up to 8 digits,<br>Java regex: ^\\d{1,8}(\\.\\d{1,8})?$</td><td>M</td><td>String</td></tr><tr><td><pre><code>          "currency": "EUR"
          }
      }    
 },         
</code></pre></td><td><ul><li><p></p><ul><li>currency</li></ul></li></ul></td><td>3 or 4 letter currency code, BTC and mBTC are also supported (4 letters only apply to mBTC).<br>For more details please check<br><a href="https://www.iso.org/iso-4217-currency-codes.html">https://www.iso.org/iso-4217-currency-codes.html</a></td><td>M</td><td>String</td></tr></tbody></table>

<br>

**Limit Reached Inform** content object consists of the following fields:

* type
* endCustomer
* reachedLimit

<table data-full-width="true"><thead><tr><th width="351">Example</th><th width="151.49041748046875">Field Name</th><th>Field Description</th><th width="100">Mandatory/ Optional</th><th width="100">Data Type</th></tr></thead><tbody><tr><td><pre><code>"content": {
</code></pre></td><td><br></td><td><br></td><td><br></td><td>Object</td></tr><tr><td><pre data-overflow="wrap"><code>    "type": "account-limit-reached-inform",
</code></pre></td><td>type</td><td>Declaration of content type, should be "account-limit-reached-inform" in the case of a Limit Reached Inform Request</td><td>M</td><td>String</td></tr><tr><td><pre><code>     "endCustomer": {
</code></pre></td><td>endCustomer</td><td>Data about client's end customer (bettor)</td><td>M</td><td>Object</td></tr><tr><td><pre data-overflow="wrap"><code>         "id": "endCustomer_e34t45",
</code></pre></td><td><ul><li>id</li></ul></td><td>End customer's unique ID (in the client's system). It should be an anonymous value that cannot be used to identify a physical person.<br>minimal string length = 1,<br>maximum length = 36,<br>allowed characters are: uppercase and lowercase letters, numerals, #, :, -, _, \<br>Java regex: ^[0-9A-Za-z#:\\-_]{1,36}$</td><td>M</td><td>String</td></tr><tr><td><pre><code>         "confidence": "1.15"
          },
</code></pre></td><td><ul><li>confidence</li></ul></td><td>End customer's suggested CCF,<br>Java regex: ^\\d{1,8}(\\.\\d{1,8})?$</td><td>O</td><td>String</td></tr><tr><td><pre><code>     "reachedLimit": "stake"
},     
</code></pre></td><td>reachedLimit</td><td><p>Enumerator that defines which type of limit was reached:</p><ul><li>deposit</li><li>stake</li><li>loss</li><li>session</li></ul></td><td>M</td><td>String</td></tr></tbody></table>

**Account Status Inform** content object consists of the following fields:

* type
* endCustomer
* status
* initiator
* duration
* reason
* periodStartUtc
* periodEndUtc

<table data-full-width="true"><thead><tr><th width="351">Example</th><th width="149.259521484375">Field Name</th><th>Field Description</th><th width="100">Mandatory/ Optional</th><th width="100">Data Type</th></tr></thead><tbody><tr><td><pre><code>"content": {
</code></pre></td><td><br></td><td><br></td><td><br></td><td>Object</td></tr><tr><td><pre data-overflow="wrap"><code>    "type": "account-status-inform",
</code></pre></td><td>type</td><td>Declaration of content type, should be "account-status-inform" in the case of a Account Status Inform Request</td><td>M</td><td>String</td></tr><tr><td><pre><code>    "endCustomer": {
</code></pre></td><td>endCustomer</td><td>Data about client's end customer (bettor)</td><td>M</td><td>Object</td></tr><tr><td><pre><code>        "id": "endCustomer_e34t45",
</code></pre></td><td><ul><li>id</li></ul></td><td>End customer's unique ID (in client's system). It should be an anonymous value which cannot be used to identify a physical person.<br>minimal string length = 1,<br>maximum length = 36,<br>allowed characters are : uppercase and lowercase letters, numerals, #, :, -, _, \<br>Java regex: ^[0-9A-Za-z#:\\-_]{1,36}$</td><td>M</td><td>String</td></tr><tr><td><pre><code>        "confidence": "1.15"
        },
</code></pre></td><td><ul><li>confidence</li></ul></td><td>End customer's suggested CCF,<br>Java regex: ^\\d{1,8}(\\.\\d{1,8})?$</td><td>O</td><td>String</td></tr><tr><td><pre><code>    "status": "active",
</code></pre></td><td>status</td><td><p>Enumerator that defines the customer's new status:</p><ul><li>active</li><li>disabled</li><li>excluded</li></ul></td><td>M</td><td>String</td></tr><tr><td><pre><code>    "initiator": "player",
</code></pre></td><td>initiator</td><td><p>Enumerator that defines who initiated the new status:</p><ul><li>operator</li><li>regulator</li><li>player</li><li>other</li></ul></td><td>O</td><td>String</td></tr><tr><td><pre><code>    "duration": "permanent",
</code></pre></td><td>duration</td><td><p>Enumerator that defines the duration of the new status:</p><ul><li>temporary</li><li>permanent</li></ul></td><td>O</td><td>String</td></tr><tr><td><pre data-overflow="wrap"><code>    "reason": "Bettor initiated action",
</code></pre></td><td>reason</td><td><p>Reason for the status change. Mandatory if initiator is "other".</p><p>may be null, min length: 1, max length 128</p></td><td>O</td><td>String</td></tr><tr><td><pre data-overflow="wrap"><code>    "periodStartUtc": 1703869950000,
</code></pre></td><td>periodStartUtc</td><td>Timestamp of the start of the new status (Unix time in milliseconds format),<br>minimum: 1,<br>maximum: 9223372036854776000</td><td>M</td><td>Integer</td></tr><tr><td><pre><code>    "periodEndUtc": 1703917850000
},    
</code></pre></td><td>periodEndUtc</td><td><p>Timestamp of the end of the new status. Should be Non-null for temporary status changes.</p><p>(Unix time in milliseconds format),<br>minimum: 1,<br>maximum: 9223372036854776000</p></td><td>O</td><td>Integer</td></tr></tbody></table>

**Intervention Inform** content object consists of the following fields:

* type
* endCustomer
* method
* modelInitiated
* comment

<table data-full-width="true"><thead><tr><th width="351">Example</th><th width="148.28729248046875">Field Name</th><th>Field Description</th><th width="100">Mandatory/ Optional</th><th width="100">Data Type</th></tr></thead><tbody><tr><td><pre><code>"content": {
</code></pre></td><td><br></td><td><br></td><td><br></td><td>Object</td></tr><tr><td><pre data-overflow="wrap"><code>    "type": "account-intervention-inform",
</code></pre></td><td>type</td><td>Declaration of content type, should be "account-intervention-inform" in the case of an Intervention Inform Request</td><td>M</td><td>String</td></tr><tr><td><pre><code>    "endCustomer": {
</code></pre></td><td>endCustomer</td><td>Data about client's end customer (bettor)</td><td>M</td><td>Object</td></tr><tr><td><pre data-overflow="wrap"><code>         "id": "endCustomer_e34t45",
</code></pre></td><td><ul><li>id</li></ul></td><td>End customer's unique ID (in client's system). It should be an anonymous value which cannot be used to identify a physical person.<br>minimal string length = 1,<br>maximum length = 36,<br>allowed characters are : uppercase and lowercase letters, numerals, #, :, -, _, \<br>Java regex: ^[0-9A-Za-z#:\\-_]{1,36}$</td><td>M</td><td>String</td></tr><tr><td><pre><code>         "confidence": "1.15"
          },
</code></pre></td><td><ul><li>confidence</li></ul></td><td>End customer's suggested CCF,<br>Java regex: ^\\d{1,8}(\\.\\d{1,8})?$</td><td>O</td><td>String</td></tr><tr><td><pre><code>    "method": "pop-up",
</code></pre></td><td>method</td><td><p>Enumerator that defines which intervention method was used:</p><ul><li>pop-up</li><li>rg-messaging</li><li>email</li><li>limits-update</li><li>care-call</li><li>other</li></ul></td><td>M</td><td>String</td></tr><tr><td><pre><code>    "modelInitiated": true,
</code></pre></td><td>modelInitiated</td><td>Indicates if the intervention was initiated by the Bettor Sense's risk score.</td><td>O</td><td>Boolean</td></tr><tr><td><pre><code>    "comment": "Testing purpose"
},    
</code></pre></td><td>comment</td><td><p>Optional intervention comment that provides additional context to the intervention.</p><p>minimal string length = 1,<br>maximum length = 128</p></td><td>O</td><td>String</td></tr></tbody></table>
