# Chặn hoặc cho phép IP

`POST /v1/service/@id/waf/ip-rules` · quyền `waf:write`

Body `value` (IP hoặc dải IP), `action` (chặn hoặc cho phép), `note` (không bắt buộc). Mục đã có thì trả HTTP 200 thay vì 201.

## HTTP request

| Mục | Giá trị |
| --- | --- |
| URL | `https://api.tino.vn/v1/service/@id/waf/ip-rules` |
| Method | `POST` |
| Quyền (scope) | `waf:write` |
| Header | `Authorization: Bearer <token>` |
| Content-Type | `application/json` |
| Token gọi được | token ứng dụng (`tinoat_`), token API cá nhân (`tinopat_`) |

## Tham số

| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả |
| --- | --- | --- | --- | --- |
| `id` | đường dẫn | int | có | ID dịch vụ |
| `value` | body | string | có | IP address or range (CIDR), e.g. `203.0.113.10` or `203.0.113.0/24`. |
| `action` | body | string | có | `block` or `allow`. |
| `note` | body | string | không | Note shown in the list. |

## Example request

```bash
curl -X POST "https://api.tino.vn/v1/service/100001/waf/ip-rules" \
  -H "Authorization: Bearer $TINO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "value": "203.0.113.0/24",
  "action": "block",
  "note": "Quét cổng"
}'
```

`$TINO_TOKEN` là token có quyền `waf:write`. Tham số đường dẫn trong ví dụ là giá trị mẫu.

SDK ([SDK & Ví dụ](/docs/sdk)): chưa có hàm riêng, dùng `client.request("POST", "/service/@id/waf/ip-rules")`.

## Example response

Chưa có mẫu thật: route thay đổi dữ liệu thật hoặc tài khoản thử không có dữ liệu cho route này. Câu trả lời là một đối tượng JSON; lỗi theo dạng chung ở [Gọi API Tino](/docs/api#loi).
