# Authentication

API ในระบบของ Casino Game ใช้มาตราฐานความปลอดภัย OAuth 2.0

## Get access token

<mark style="color:green;">`POST`</mark> `https://{api-domain}/v1/operator/oauth`

ใช้สำหรับขอโทเค็น เพื่อเข้าถึง API ต่างๆ ของ Casino Game

**Body**

<table><thead><tr><th width="196">Name</th><th width="91">Type</th><th width="336">Description</th><th>Required</th></tr></thead><tbody><tr><td>grant_type</td><td>string</td><td>ประเภทการให้สิทธิ์ ต้องมีค่าเป็น "client_credentials"</td><td>Yes</td></tr><tr><td>client_id</td><td>string</td><td>client id ในระบบ Casino Game</td><td>Yes</td></tr><tr><td>client_secret</td><td>string</td><td>client_secret ในระบบ Casino Game</td><td>Yes</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="200" %}

```json
HTTP Status: 200 OK
Content-Type: application/json
{
      "status": "success",
      "data": {
            "type": "bearer",
            "token": "Y2xtZnNlZGdnMDA4eGl6a2o2OG5tNTh5cA.BoAuxdEyxDALRE703GbHzJKkNf-xBvw",
            "expires_at": "2023-09-17T19:19:00.230+00:00"
      }
}
```

{% endtab %}

{% tab title="400" %}

```json
HTTP Status: 400
Content-Type: application/json
{
       "status": "error",
       "error": {
              "code": "E_INVALID_AUTH_PASSWORD",
              "message": "E_INVALID_AUTH_PASSWORD: Password mis-match"
       }
}
```

{% endtab %}
{% endtabs %}

## Revoke access token

<mark style="color:red;">`DELETE`</mark> `https://{api-domain}/v1/operator/oauth`

ใช้สำหรับเพิกถอนโทเค็นที่ใช้งานอยู่ ซึ่งจะยุติเซสชั่นที่ใช้งานอยู่ทันที

**Headers**

<table><thead><tr><th width="217">Name</th><th>Value</th></tr></thead><tbody><tr><td>Content-Type</td><td><code>application/json</code></td></tr><tr><td>Authorization</td><td><code>Bearer &#x3C;token></code></td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="204" %}

```json
 HTTP Status: 204 No Content
```

{% endtab %}

{% tab title="401" %}

```json
HTTP Status: 401
Content-Type: application/json
{
       "status": "error",
       "error": {
              "code": "UNAUTHORIZED_ACCESS",
              "message": "E_UNAUTHORIZED_ACCESS: Unauthorized access"
       }
}
```

{% endtab %}
{% endtabs %}

## Get game URL

<mark style="color:green;">`POST`</mark> `https://{api-domain}/v1/operator/launch`

ใช้สำหรับขอ URL เข้าหน้าเกมและหน้าล็อบบี้

**Headers**

<table><thead><tr><th width="205">Name</th><th>Value</th></tr></thead><tbody><tr><td>Content-Type</td><td><code>application/json</code></td></tr><tr><td>Authorization</td><td><code>Bearer &#x3C;token></code></td></tr></tbody></table>

**Body**

<table><thead><tr><th width="173">Name</th><th>Type</th><th width="372">Description</th><th>Required</th></tr></thead><tbody><tr><td>lobby_url</td><td>string</td><td>URL หน้าล็อบบี้ของโอเปอเรเตอร์</td><td>No</td></tr><tr><td>deposit_url</td><td>string</td><td>URL หน้าฝากเครดิตของโอเปอเรเตอร์</td><td>No</td></tr><tr><td>withdraw_url</td><td>string</td><td>URL หน้าถอนเครดิตของโอเปอเรเตอร์</td><td>No</td></tr><tr><td>game_key</td><td>string</td><td><p>รหัสประเภทเกม ตามระบบของ Casino Game <a href="../appendix/game-list">Game list</a> </p><p>*จำเป็นต้องส่งค่า หากต้องการเข้าโต๊ะเกมตรง</p></td><td>No</td></tr><tr><td>table_id</td><td>string</td><td>ไอดีโต๊ะเกม (Live casino) <br>*จำเป็นต้องส่งค่า หากต้องการเข้าโต๊ะเกมตรง</td><td>No</td></tr><tr><td>player</td><td>object</td><td></td><td>Yes</td></tr><tr><td>     id</td><td>string</td><td>ไอดี ผู้เล่น รองรับความยาว 30 ตัวอักษร (Lower case)</td><td>Yes</td></tr><tr><td>     display_name</td><td>string</td><td>ชื่อผู้เล่น รองรับความยาว 50 ตัวอักษร</td><td>Yes</td></tr><tr><td>     language</td><td>string</td><td>ภาษา 2 หลัก ตามมาตราฐาน ISO 3166-1 alpha-2 (Ex. TH, EN)</td><td>Yes</td></tr><tr><td>     currency</td><td>string</td><td>สกุลเงิน 3 หลัก ตามมาตราฐาน ISO 4217 (Ex. THB)</td><td>Yes</td></tr><tr><td>     ip</td><td>string</td><td>ไอพี</td><td>Yes</td></tr><tr><td>wallet</td><td>object</td><td></td><td>Yes</td></tr><tr><td>     session_id</td><td>string</td><td>เซสชั่นไอดีของผู้เล่น ที่โอเปอเรเตอร์สร้าง</td><td>Yes</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="200" %}

```json
HTTP Status: 200 OK
Content-Type: application/json
{
    "status": "success",
    "data": {
        "launch_url": "https://game.casinogame.com/launch/baccarat/dejeiotjeyhuigwyrguyg"
    }
}
```

{% endtab %}

{% tab title="401" %}

```json
HTTP Status: 401
Content-Type: application/json
{
      "status": "error",
      "error": {
            "code": "UNAUTHORIZED_ACCESS",
            "message": "E_UNAUTHORIZED_ACCESS: Unauthorized access"
      }
}
```

{% endtab %}
{% endtabs %}
