# Yasaklar

Yasaklar için REST API rotaları.

## Yasakları listele (`listBans`)

**`GET https://noluyo.net/api/v1/guilds/{guild_id}/bans`** (`GET /guilds/{guild_id}/bans`)

Sunucunun yasaklarını nedenleriyle döndürür. Listede sayfalama yoktur.

- **Kimlik:** Bot token'ı (`Authorization: Bot <BOT_TOKEN>`)
- **İzinler:** `BanMembers`
- **Hız sınırı:** `read` (30 / 5s)

### Parametreler

| Ad | Konum | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- | --- |
| `guild_id` | `path` | `string` | evet | Sunucu ID'si. |

### Örnek çağrılar

```bash
curl -X GET "https://noluyo.net/api/v1/guilds/111500000000000000/bans" \
  -H "Authorization: Bot $BOT_TOKEN"
```

```js
// JavaScript (noluyo-bot)
await bot.rest.listBans("111500000000000000");
```

```py
# Python (noluyo_bot)
await bot.rest.list_bans("111500000000000000")
```

### Yanıt (200)

```json
[
  {
    "user": {
      "id": "111400000000000000",
      "username": "ayse",
      "display_name": "Ayşe",
      "avatar": null,
      "cosmetics": null
    },
    "reason": "Spam"
  }
]
```

### Hata kodları

- **HTTP 401:** `unauthorized`
- **HTTP 403:** `missing_permissions`, `temporarily_banned`
- **HTTP 404:** `unknown_guild`
- **HTTP 429:** `rate_limited`
- **HTTP 503:** `maintenance`

## Kullanıcıyı yasakla (`createBan`)

**`PUT https://noluyo.net/api/v1/guilds/{guild_id}/bans/{user_id}`** (`PUT /guilds/{guild_id}/bans/{user_id}`)

Kullanıcıyı yasaklar, üyeyse sunucudan çıkarır; üye, çağıranın altında olmalıdır. Üye olmayan biri önceden yasaklanabilir. Gövde isteğe bağlıdır. delete_message_seconds, kişinin o kadar saniye öncesine kadarki mesajlarını da siler; en fazla 604800 (yedi gün). reason en çok 512 karakterdir.

- **Kimlik:** Bot token'ı (`Authorization: Bot <BOT_TOKEN>`)
- **İzinler:** `BanMembers`
- **Hız sınırı:** `write` (10 / 10s)

### Parametreler

| Ad | Konum | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- | --- |
| `guild_id` | `path` | `string` | evet | Sunucu ID'si. |
| `user_id` | `path` | `string` | evet | Kullanıcı ID'si. |

### Gövde alanları

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `reason` | `string | null` | - | (<= 512) |
| `delete_message_seconds` | `integer` | - | (0–604800) |

### Örnek çağrılar

```bash
curl -X PUT "https://noluyo.net/api/v1/guilds/111500000000000000/bans/111400000000000000" \
  -H "Authorization: Bot $BOT_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"reason":"Spam","delete_message_seconds":3600}'
```

```js
// JavaScript (noluyo-bot)
await bot.rest.createBan("111500000000000000", "111400000000000000", { reason: "Spam", delete_message_seconds: 3600 });
```

```py
# Python (noluyo_bot)
await bot.rest.create_ban("111500000000000000", "111400000000000000", {"reason": "Spam", "delete_message_seconds": 3600})
```

### Yanıt (204)

Yanıt gövdesi yok.

### Hata kodları

- **HTTP 400:** `validation_failed`, `invalid_body`, `cannot_target_self`
- **HTTP 401:** `unauthorized`
- **HTTP 403:** `missing_permissions`, `role_hierarchy`, `temporarily_banned`
- **HTTP 404:** `unknown_guild`, `unknown_user`
- **HTTP 413:** `body_too_large`
- **HTTP 429:** `rate_limited`
- **HTTP 503:** `maintenance`

## Yasağı kaldır (`deleteBan`)

**`DELETE https://noluyo.net/api/v1/guilds/{guild_id}/bans/{user_id}`** (`DELETE /guilds/{guild_id}/bans/{user_id}`)

Yasağı kaldırır. Yasaklı olmayan kullanıcı için unknown_ban döner.

- **Kimlik:** Bot token'ı (`Authorization: Bot <BOT_TOKEN>`)
- **İzinler:** `BanMembers`
- **Hız sınırı:** `write` (10 / 10s)

### Parametreler

| Ad | Konum | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- | --- |
| `guild_id` | `path` | `string` | evet | Sunucu ID'si. |
| `user_id` | `path` | `string` | evet | Kullanıcı ID'si. |

### Örnek çağrılar

```bash
curl -X DELETE "https://noluyo.net/api/v1/guilds/111500000000000000/bans/111400000000000000" \
  -H "Authorization: Bot $BOT_TOKEN"
```

```js
// JavaScript (noluyo-bot)
await bot.rest.deleteBan("111500000000000000", "111400000000000000");
```

```py
# Python (noluyo_bot)
await bot.rest.delete_ban("111500000000000000", "111400000000000000")
```

### Yanıt (204)

Yanıt gövdesi yok.

### Hata kodları

- **HTTP 401:** `unauthorized`
- **HTTP 403:** `missing_permissions`, `temporarily_banned`
- **HTTP 404:** `unknown_ban`, `unknown_guild`
- **HTTP 429:** `rate_limited`
- **HTTP 503:** `maintenance`
