# Pre-validated Ticket Placement Request

<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>

This type of ticket placement contains bets that do not require any validation on Sportradar's side. The bets have been validated on the client's side, and information about this is passed over in the Bet Validation object (see below).

To respond to it, Insight Tech / MTS sends a Pre-validated ticket placement response containing "operation": "ticket-placement-inform" and the content including "type": "ticket-inform-reply". The "status" can be either "accepted" or "rejected" according to the status reported by the client in the betValidations' code field.

With this type of request, only the validation process on Sportradar's side is skipped. The ticket still requires a proper settlement.

**Envelope and Content table:**

The envelope provides the Content's (Pre-validated ticket placement request) 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="161.6900634765625">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": 9985,
</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": "62ka01mxre",
</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 every response</td><td>M</td><td>String</td></tr><tr><td><pre><code>  "timestampUtc": 1689752903000,
</code></pre></td><td>timestampUtc</td><td>Timestamp of ticket placement as submitted by the client (Unix time milliseconds format),<br>minimal: 1,<br>maximum: 9223372036854776000</td><td>M</td><td>Integer</td></tr><tr><td><pre data-overflow="wrap"><code>  "operation": "ticket-placement-inform",
</code></pre></td><td>operation</td><td>Declaration of ticket content type, should be "ticket-placement-inform" in the case of a Pre-validated ticket placement request</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 (Pre-validated ticket placement request) <a href="#mtsprevalidatedticketplacementrequest-v3.0-contentcontentobject-pre-validatedticketplacementrequest" id="mtsprevalidatedticketplacementrequest-v3.0-contentcontentobject-pre-validatedticketplacementrequest"></a>

This object constitutes the ticket itself and includes the following fields:

* type
* ticket
* betValidations

**Content object table:**

<table data-full-width="true"><thead><tr><th width="351">Example</th><th width="141.6771240234375">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": "ticket-inform",
</code></pre></td><td>type</td><td>Declaration of content type, should be "ticket-inform" in the case of a Pre-validated ticket placement request</td><td>M</td><td>String</td></tr><tr><td><pre><code>   "ticket": {
</code></pre></td><td>ticket</td><td><p>This field corresponds to the content object of the original ticket placement request,</p><p>for syntax, see the content object description (of the <a href="../ticket-placement-request#mtsticketplacementrequest-v3.0-contentcontentobject-ticketplacementrequest">Ticket placement request</a>)</p></td><td>M</td><td>Object</td></tr><tr><td><pre><code>      "type: "ticket",
</code></pre></td><td><br></td><td><br></td><td><br></td><td><br></td></tr><tr><td><pre><code>      "ticketId: "Ticket_10150",
          ..............
          ..............
     },     
</code></pre></td><td><br></td><td><br></td><td></td><td><br></td></tr><tr><td><pre><code>   "betValidations": [
</code></pre></td><td>betValidations</td><td>Bet validation information as provided by the client,<br>minimal number of bets per content (ticket) = 1,<br>maximum number = 50</td><td>M</td><td>Array</td></tr><tr><td><pre data-overflow="wrap"><code>     { "betId": "Ticket_10150_bet0",
</code></pre></td><td><ul><li>betId</li></ul></td><td>Unique bet id (in the client's system),<br>minimal string length = 1,<br>maximum length = 128</td><td>O</td><td>String</td></tr><tr><td><pre><code>       "code": 1100,
</code></pre></td><td><ul><li>code</li></ul></td><td>Bet validation information as provided by the client,<br>minimum = 0,<br>maximum = 10000</td><td>M</td><td>Integer</td></tr><tr><td><pre data-overflow="wrap"><code>       "message": "Prevalidated, OK",
</code></pre></td><td><ul><li>message</li></ul></td><td>Readable bet validation code as provided by the client,<br>minimal string length = 1,<br>maximum string length = 128</td><td>O</td><td>String</td></tr><tr><td><pre><code>       "rejected": false
       }
     ]
}       
</code></pre></td><td><ul><li>rejected</li></ul></td><td>Clients' indication if the bet has been rejected on the client side<br>(missing field means not rejected)</td><td>O</td><td>Boolean</td></tr></tbody></table>
