# ขอบเขตของคีย์

## การจำกัดโปรเจกต์

ฟิลด์โปรเจกต์ (Project) จำกัดคีย์ API ให้ใช้กับโปรเจกต์ที่กำหนด:

* **ใดก็ได้ (Any)** — คีย์เข้าถึงทุกโปรเจกต์ในบัญชีได้
* **โปรเจกต์ที่กำหนด** — คีย์ทำงานกับข้อมูลของโปรเจกต์ที่เลือกเท่านั้น

ข้อจำกัดนี้ทำงานต่างกันตามเมธอด ในเมธอดแสดงรายการ มันทำหน้าที่เป็นตัวกรอง: การตอบกลับสำเร็จแต่มีเฉพาะข้อมูลของโปรเจกต์นั้น ส่วนในเมธอดที่ระบุใบแจ้งหนี้หรือกระเป๋าเงินเจาะจง คำขอที่ชี้ไปยังออบเจ็กต์ของโปรเจกต์อื่นจะถูกปฏิเสธด้วย `Restricted project`

| เมธอด | คีย์ที่จำกัดไว้กับโปรเจกต์ |
| --- | --- |
| `billing/balances` | ข้อมูลระดับบัญชี ข้อจำกัดไม่มีผล |
| `billing/history` | การดำเนินการของโปรเจกต์ บวกการดำเนินการระดับบัญชี — การเติมเงินและโบนัส |
| `billing/tariffs` | อัตราค่าธรรมเนียมและยอดหมุนเวียนเฉพาะของโปรเจกต์ของคีย์ |
| `invoices/list` | ผลลัพธ์เฉพาะของโปรเจกต์ของคีย์ |
| `payments/list` | ผลลัพธ์เฉพาะของโปรเจกต์ของคีย์ |
| `statistics/invoices` | คำนวณเฉพาะจากโปรเจกต์ของคีย์ |
| `statistics/payments` | คำนวณเฉพาะจากใบแจ้งหนี้ของโปรเจกต์ของคีย์ |
| `invoices/create` | `projectId` ในคำขอต้องตรงกับโปรเจกต์ของคีย์ |
| `invoices/cancel` | ใบแจ้งหนี้ของโปรเจกต์อื่นเข้าถึงไม่ได้ |
| `invoices/bindPayment` | ใบแจ้งหนี้ของโปรเจกต์อื่นเข้าถึงไม่ได้ |

## การจำกัดขอบเขต

ขอบเขตกำหนดว่าคีย์ใช้เมธอด API ใดได้บ้าง เป็นฟิลด์ที่จำเป็นและเลือกได้หลายค่า

การเรียกเมธอดนอกขอบเขตของคีย์จะถูกปฏิเสธด้วย `Restricted scope`

## การใช้ข้อจำกัดร่วมกัน

ข้อจำกัดโปรเจกต์และขอบเขตทำงานร่วมกัน ตัวอย่างเช่น หากคีย์ถูกจำกัดไว้ที่เมธอดใบแจ้งหนี้และผูกกับโปรเจกต์ที่กำหนด ผลคือ:

* ใช้ได้เฉพาะเมธอดใบแจ้งหนี้
* ข้อมูลถูกกรองเหลือเฉพาะโปรเจกต์ที่ระบุ
* คำขอการชำระเงินหรือสถิติถูกปฏิเสธ
* คำขอข้อมูลของโปรเจกต์อื่นถูกปฏิเสธ
