# Tự động hóa Webhooks

Webhooks cho phép bạn theo dõi các thay đổi mới trên các kho lưu trữ hoặc bucket cụ thể, hoặc trên tất cả các kho lưu trữ thuộc một nhóm người dùng/tổ chức nhất định (không chỉ các kho của bạn, mà là bất kỳ kho nào) trên Hugging Face.

Sử dụng `create_webhook` trong client Python `huggingface_hub` để tạo một webhook kích hoạt một Job khi có thay đổi xảy ra trong một kho Hugging Face:

```python
from huggingface_hub import create_webhook

# Example: Creating a webhook that triggers a Job
webhook = create_webhook(
    job_id=job_id,
    watched=[{"type": "user", "name": "your-username"}, {"type": "org", "name": "your-org-name"}],
    domains=["repo", "discussion"],
    secret="your-secret"
)
```

Để chạy một Job khi có tệp được thêm vào hoặc xóa khỏi [bucket](./storage-buckets), hãy theo dõi bucket:

```python
webhook = create_webhook(
    job_id=job_id,
    watched=[{"type": "bucket", "name": "your-username/your-bucket"}],
    domains=["repo"],
    secrets={"HF_TOKEN": "hf_***"},
)
```

Để xem một ví dụ hoàn chỉnh, hãy xem [Xử lý các tệp mới trong một bucket với Jobs](./webhooks-guide-bucket-jobs).

Webhook kích hoạt Job với các biến môi trường sau:

- `WEBHOOK_PAYLOAD`: toàn bộ webhook payload dưới dạng chuỗi JSON
- `WEBHOOK_REPO_ID`: tên kho hoặc bucket (ví dụ: `user/repo-name`)
- `WEBHOOK_REPO_TYPE`: loại kho (`model`, `dataset`, `space` hoặc `bucket`)
- `WEBHOOK_SECRET`: bí mật webhook, nếu có được cấu hình
- `WEBHOOK_ID`: một định danh duy nhất cho lần giao, ổn định qua các lần thử lại của lần giao đó

> [!WARNING]
> Một lần chạy webhook không giữ lại các volume hay secrets của Job. Hãy truyền các secrets mà Job cần, chẳng hạn như `HF_TOKEN`, bằng cách dùng `secrets=` trong `create_webhook`. Để chạy một script UV từ webhook, hãy định nghĩa job của bạn bằng `hf jobs run <image> uv run <url>`, vì nếu không, `hf jobs uv run` sẽ tải script lên một volume, mà lần chạy webhook không có.

Trang tải webhook chứa nhiều trường, dưới đây là một số trường hữu ích:

```
- event:
  - action: one of "create", "delete", "move", "update"
  - scope: string
- repo:
  - owner: string
  - headSha: string (not sent for buckets)
  - name: string
  - type: one of "dataset", "model", "space", "bucket"
- updatedFiles: for bucket file changes, the list of added and deleted files
```

Bạn có thể tìm thêm thông tin về webhooks trong tài liệu Webhooks của [`huggingface_hub`](https://huggingface.co/docs/huggingface_hub/en/guides/webhooks).

