# Katılımcı Ekleme

{% hint style="info" %}
Bir kullanıcıyı bir oturuma katılımcı olarak eklemeden önce ilgili kullanıcının USER\_ID verisi ve ilgili oturumun SESSION\_ID verilerine ihtiyacınız olacaktır.
{% endhint %}

Aşağıdaki listede gerekli parametreleri görebilirsiniz:

| Parameter | Tip    | Açıklama                               |
| --------- | ------ | -------------------------------------- |
| user\_id  | string |                                        |
| role      | string | <p>a=Admin<br>u=User<br>e=Öğretmen</p> |
|           |        |                                        |

A**şağıdaki şekilde bir kullanıcıyı bir oturuma katılımcı olarak ekleyebilirsiniz:**

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

```bash
curl --location 'https://<DOMAIN>/xapi/session/<SESSION_ID>/attendees' \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--header 'Content-Type: application/json' \
--data '[{
    "user_id": "<USER_ID>",
    "role": "u"
}]'
```

{% endtab %}

{% tab title="Python" %}
İlk olarak Python SDK'sı yüklenmelidir:

```bash
pip install perculus-sdk
```

SDK'nın yüklendiğinden emin olunduktan sonra aşağıdaki şekilde kullanıcılarınızı oturumlarınıza katılımcı olarak ekleyebilirsiniz:

```python
from perculus_sdk.client import APIClient

# API client
client = APIClient()

# Set your domain (if you haven't set it before)
client.set_domain("<DOMAIN>")

# Set your credentials(if you haven't set it before)
client.set_credentials(
    access_key="<EMAIL>",
    secret_key="<PASSWORD>",
    account_id="<ACCOUNT_ID>"
)

#Add an Attendee
attendee = client.attendees.add_by_user_id("<SESSION_ID>", "<USER_ID>")
print(attendee)

#Add Multiple Attendees
attendees = client.attendees.add_multiple_by_user_id("<SESSION_ID>", [
    {
        "user_id": "<USER_ID1>",
    },{
        "user_id": "<USER_ID2>",
    }
])
print(attendees)
```

{% endtab %}

{% tab title="C#" %}

```
// ASAP :)
```

{% endtab %}

{% tab title="NodeJS" %}

```
// ASAP :)
```

{% endtab %}

{% tab title="GO" %}

```
// ASAP :)
```

{% endtab %}
{% endtabs %}

Aşağıda örnek bir response model görebilirsiniz:

<pre class="language-json"><code class="lang-json">{
    "approved": [
        {
            "session_id": "&#x3C;SESSION_ID>",
            "user_id": "&#x3C;USER_ID>",
            "attendee_id": "***",
            <a data-footnote-ref href="#user-content-fn-1">"attendance_code": "&#x3C;ATTENDANCE_CODE>"</a>,
            "name": "john",
            "surname": "Doe",
            "email": "john@doe.com",
            "role": "u",
            "mobile": "",
            "avatar": null,
            "creation_date": "2024-08-16T01:55:15.7991084Z",
            "updating_date": null
        }
    ],
    "rejected": []
}
</code></pre>

{% hint style="danger" %}
İlgili katılımcının ilgili oturumdaki ayarları ile ilgili bir düzenleme yapacak olursanız, yukarıda gördüğünüz response içerisinde bulunan"***ATTENDANCE\_CODE"*** verisi ile işlem yapmanız gerekecektir. Bu nedenle bu veriyi güvenli bir şekilde saklanız gerekmektedir.
{% endhint %}

:red\_circle: Response içerisinde approved ve rejected olarak iki obje göreceksiniz, bunların detaylarını aşağıda görebilirsiniz:

* approved:
  * Katılımcı olarak eklenmeye çalışılan kullanıcılardan başarılı bir şekilde eklene kayıtları listeler.
* rejected:
  * Katılımcı olarak eklenmeye çalışılan kullanıcılardan başarılı bir şekilde eklenemeyen kayıtları hata kodları ve hata mesajları ile birlikte listeler, aşağıda hatalı eklenmeye çalışılan bir kaydın response'unu görebilirsiniz

```json
{
    "approved": [],
    "rejected": [
        {
            "model": null,
            "state": {
                "code": 10,
                "details": "Object reference not set to an instance of an object."
            }
        }
    ]
}
```

[^1]: İlgili katılımcının, ilgili oturumdaki kimlik numarası anlamına gelir.
