ข้อมูลอ้างอิง API: องค์กร
เอกสารอ้างอิง API สำหรับ endpoint การจัดการองค์กรและผู้ใช้.
Endpoint: GET /v1/tenant/{tenantId}
การยืนยันตัวตน: API key ที่กำหนดขอบเขตตาม tenant · read scope
พารามิเตอร์:
| ชื่อ | ประเภท | ตำแหน่ง | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| tenantId | string | path | ใช่ | รูปแบบ: uuid |
คำตอบ (200):
รายละเอียด tenant
{
"id": "00000000-0000-0000-0000-000000000000",
"createdBy": "00000000-0000-0000-0000-000000000000",
"createdAt": "2024-03-15T16:30:00Z",
"displayName": "string",
"contactEmail": "string",
"isActive": true,
"shortName": "string",
"useOrganizationTheme": true,
"description": "string",
"organizationId": "00000000-0000-0000-0000-000000000000",
"allowedLogins": {
"Microsoft": true,
"Google": true,
"LinkedIn": true
},
"tenantType": "normal",
"url": "string"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| id | string | ใช่ | รูปแบบ: uuid |
| createdBy | string | ใช่ | รูปแบบ: uuid |
| createdAt | string | ใช่ | รูปแบบ: date-time |
| displayName | string | ใช่ | ค่าเริ่มต้น: ""ความยาวสูงสุด: 128 |
| contactEmail | string | ใช่ | รูปแบบ: email |
| isActive | boolean | ใช่ | ค่าเริ่มต้น: true |
| shortName | string | ใช่ | |
| useOrganizationTheme | boolean | ใช่ | ค่าเริ่มต้น: true |
| description | string | ใช่ | ความยาวสูงสุด: 200 |
| organizationId | string | ใช่ | รูปแบบ: uuid |
| allowedLogins | object | ใช่ | |
| tenantType | normal | sandbox | demo | ใช่ | ค่าที่อนุญาต: normal, sandbox, demoค่าเริ่มต้น: normal |
| url | string | ใช่ | รูปแบบ: uri |
ข้อผิดพลาด:
Endpoint: PUT /v1/tenant/{tenantId}
การยืนยันตัวตน: API key ที่กำหนดขอบเขตตาม tenant · write scope
พารามิเตอร์:
| ชื่อ | ประเภท | ตำแหน่ง | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| tenantId | string | path | ใช่ | รูปแบบ: uuid |
เนื้อหาคำขอ:
{
"id": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"contactEmail": "string",
"shortName": "string",
"description": "string"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| id | string | ไม่ | รูปแบบ: uuid |
| displayName | string | ไม่ | |
| contactEmail | string | ไม่ | |
| shortName | string | ไม่ | |
| description | string | ไม่ |
คำตอบ (200):
อัปเดต tenant แล้ว
{
"id": "00000000-0000-0000-0000-000000000000",
"createdBy": "00000000-0000-0000-0000-000000000000",
"createdAt": "2024-03-15T16:30:00Z",
"displayName": "string",
"contactEmail": "string",
"isActive": true,
"shortName": "string",
"useOrganizationTheme": true,
"description": "string",
"organizationId": "00000000-0000-0000-0000-000000000000",
"allowedLogins": {
"Microsoft": true,
"Google": true,
"LinkedIn": true
},
"tenantType": "normal",
"url": "string"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| id | string | ใช่ | รูปแบบ: uuid |
| createdBy | string | ใช่ | รูปแบบ: uuid |
| createdAt | string | ใช่ | รูปแบบ: date-time |
| displayName | string | ใช่ | ค่าเริ่มต้น: ""ความยาวสูงสุด: 128 |
| contactEmail | string | ใช่ | รูปแบบ: email |
| isActive | boolean | ใช่ | ค่าเริ่มต้น: true |
| shortName | string | ใช่ | |
| useOrganizationTheme | boolean | ใช่ | ค่าเริ่มต้น: true |
| description | string | ใช่ | ความยาวสูงสุด: 200 |
| organizationId | string | ใช่ | รูปแบบ: uuid |
| allowedLogins | object | ใช่ | |
| tenantType | normal | sandbox | demo | ใช่ | ค่าที่อนุญาต: normal, sandbox, demoค่าเริ่มต้น: normal |
| url | string | ใช่ | รูปแบบ: uri |
ข้อผิดพลาด:
Endpoint: GET /v1/tenant/{tenantId}/statistics
การยืนยันตัวตน: API key ที่กำหนดขอบเขตตาม tenant · read scope
พารามิเตอร์:
| ชื่อ | ประเภท | ตำแหน่ง | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| tenantId | string | path | ใช่ | รูปแบบ: uuid |
คำตอบ (200):
สถิติ tenant
{
"tenantId": "00000000-0000-0000-0000-000000000000",
"uploadedDataSize": 0,
"uploadedDataCount": 0,
"modelCount": 0,
"simulationCount": 0,
"userCount": 0
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| tenantId | string | ใช่ | รูปแบบ: uuid |
| uploadedDataSize | number | ใช่ | |
| uploadedDataCount | number | ใช่ | |
| modelCount | number | ใช่ | |
| simulationCount | number | ใช่ | |
| userCount | number | ใช่ |
ข้อผิดพลาด:
ส่งคืนผู้ใช้ที่ตรงกับเงื่อนไขเป็น JSON array โดยตรง ไม่มีจำนวนรายการทั้งหมด หากต้องการแบ่งหน้าให้ใช้ limit/offset.
Endpoint: GET /v1/tenant/{tenantId}/users
การยืนยันตัวตน: API key ที่กำหนดขอบเขตตาม tenant · read scope
พารามิเตอร์:
| ชื่อ | ประเภท | ตำแหน่ง | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| tenantId | string | path | ใช่ | รูปแบบ: uuid |
| limit | integer | query | ไม่ | จำนวนรายการสูงสุดที่ส่งคืน |
| offset | integer | query | ไม่ | จำนวนรายการที่ข้ามไป |
คำตอบ (200):
รายชื่อผู้ใช้
[
{
"id": "00000000-0000-0000-0000-000000000000",
"email": "string",
"firstName": "string",
"lastName": "string",
"createdAt": "2024-03-15T16:30:00Z",
"lastLoginAt": "2024-03-15T16:30:00Z",
"tenantId": "00000000-0000-0000-0000-000000000000",
"isActiveInTenant": true,
"isAdminInTenant": true,
"access": "none",
"isDashboardViewer": true,
"organizationId": "00000000-0000-0000-0000-000000000000",
"isActiveInOrganization": true,
"isAdminInOrganization": true
}
] ข้อผิดพลาด:
ระบบจะใช้ค่าฟิลด์บทบาทใน body ตามที่ระบุทุกประการ (isAdminInTenant, access: none|portalViewer|designer|architect|intelligence, isDashboardViewer) endpoint นี้ให้สิทธิ์จัดการ tenant ได้เต็มรูปแบบ จึงควรออก API key ที่มีสิทธิ์เขียนให้เฉพาะผู้เรียกที่เชื่อถือได้ การดู dashboard กำหนดด้วยค่า boolean isDashboardViewer ส่วนระดับสิทธิ์ viewer แบบอ่านอย่างเดียวเดิมถูกยกเลิกแล้ว.
Endpoint: POST /v1/tenant/{tenantId}/users
การยืนยันตัวตน: API key ที่กำหนดขอบเขตตาม tenant · write scope
พารามิเตอร์:
| ชื่อ | ประเภท | ตำแหน่ง | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| tenantId | string | path | ใช่ | รูปแบบ: uuid |
เนื้อหาคำขอ:
{
"email": "string",
"firstName": "string",
"lastName": "string",
"isActiveInTenant": true,
"isAdminInTenant": true,
"access": "none",
"isDashboardViewer": true,
"preferredLocale": "en"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| string | ใช่ | ที่อยู่อีเมลของผู้ใช้ (ใช้เป็นข้อมูลเข้าสู่ระบบด้วย) รูปแบบ: email | |
| firstName | string | ไม่ | ชื่อต้น (ไม่บังคับ) ความยาวสูงสุด: 64 |
| lastName | string | ไม่ | นามสกุล (ไม่บังคับ) ความยาวสูงสุด: 64 |
| isActiveInTenant | boolean | ไม่ | ระบุว่าผู้ใช้ใช้งานอยู่ใน Tenant นี้หรือไม่ |
| isAdminInTenant | boolean | ไม่ | สิทธิ์ผู้ดูแลระบบใน Tenant นี้ (ใช้ตามที่ระบุทุกประการ: สิทธิ์ผู้ดูแลระบบ Tenant อย่างเต็มรูปแบบ) |
| access | none | portalViewer | designer | architect | intelligence | ไม่ | เลือกที่นั่งผู้ใช้ได้หนึ่งรายการ: none | portalViewer | designer | architect | intelligence ค่าที่อนุญาต: none, portalViewer, designer, architect, intelligence |
| isDashboardViewer | boolean | ไม่ | ระบุว่าผู้ใช้ดู dashboard ได้อย่างเดียวหรือไม่ |
| preferredLocale | en | zh | es | fr | de | pt | it | nl | ja | tr | pl | cs | hu | id | ko | vi | th | ไม่ | ภาษาของส่วนติดต่อผู้ใช้ที่ต้องการ ค่าที่อนุญาต: en, zh, es, fr, de, pt, it, nl, ja, tr, pl, cs, hu, id, ko, vi, th |
คำตอบ (201):
เพิ่มผู้ใช้แล้ว
{
"id": "string",
"message": "string"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| id | string | ใช่ | ID ของผู้ใช้ที่เพิ่มใหม่ |
| message | string | ใช่ |
ข้อผิดพลาด:
Endpoint: PUT /v1/tenant/{tenantId}/users/{userId}
การยืนยันตัวตน: API key ที่กำหนดขอบเขตตาม tenant · write scope
พารามิเตอร์:
| ชื่อ | ประเภท | ตำแหน่ง | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| tenantId | string | path | ใช่ | รูปแบบ: uuid |
| userId | string | path | ใช่ | รูปแบบ: uuid |
เนื้อหาคำขอ:
{
"isActiveInTenant": true,
"isAdminInTenant": true,
"access": "none",
"isDashboardViewer": true
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| isActiveInTenant | boolean | ไม่ | ระบุว่าผู้ใช้เปิดใช้งานใน tenant นี้หรือไม่ |
| isAdminInTenant | boolean | ไม่ | สิทธิ์ผู้ดูแลระบบใน tenant นี้ (ใช้ค่าตามที่ระบุทุกประการ: มีสิทธิ์จัดการ tenant ได้เต็มรูปแบบ) |
| access | none | portalViewer | designer | architect | intelligence | ไม่ | เลือกที่นั่งได้หนึ่งรายการ: none | portalViewer | designer | architect | intelligence การดู dashboard กำหนดด้วยค่า boolean isDashboardViewer ค่าที่อนุญาต: none, portalViewer, designer, architect, intelligence |
| isDashboardViewer | boolean | ไม่ | ระบุว่าผู้ใช้ดู dashboard ได้อย่างเดียวหรือไม่ |
คำตอบ (200):
อัปเดตแล้ว
{
"message": "string"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| message | string | ใช่ |
ข้อผิดพลาด:
Endpoint: DELETE /v1/tenant/{tenantId}/users/{userId}
การยืนยันตัวตน: API key ที่กำหนดขอบเขตตาม tenant · write scope
พารามิเตอร์:
| ชื่อ | ประเภท | ตำแหน่ง | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| tenantId | string | path | ใช่ | รูปแบบ: uuid |
| userId | string | path | ใช่ | รูปแบบ: uuid |
คำตอบ (200):
นำผู้ใช้ออกแล้ว
{
"message": "string"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| message | string | ใช่ |
ข้อผิดพลาด:
ส่งคืนโทเค็นที่ใช้ได้ครั้งเดียว (มีอายุ 60 วินาที) ซึ่งผูกกับผู้ใช้ tenant และ organization พร้อม url สำหรับส่งเบราว์เซอร์ของผู้ใช้ไปยัง URL นี้ เมื่อเปิด URL ในเบราว์เซอร์ ผู้ใช้จะเข้าสู่ ProcessMind โดยยืนยันตัวตนไว้แล้ว ไม่ต้องใช้ลิงก์ทางอีเมลหรือสวมสิทธิ์ผู้ใช้ และผู้ใช้จะได้เซสชันของตนเอง ต้องใช้ scope sessions โดยเฉพาะใน API key: key ที่กำหนดขอบเขตตาม organization สร้างโทเค็นให้ผู้ใช้ใน tenant ใดก็ได้ของ organization นั้น ส่วน key ที่กำหนดขอบเขตตาม tenant ใช้ได้เฉพาะกับผู้ใช้ใน tenant ของตนเอง ให้ถือว่าโทเค็นนี้มีความสำคัญเทียบเท่ารหัสผ่าน ระบบส่งคืนโทเค็นเพียงครั้งเดียว ไม่บันทึกลง log และเพิกถอนโทเค็นได้โดยปิดใช้งาน key หรือผู้ใช้.
Endpoint: POST /v1/tenant/{tenantId}/users/{userId}/login-token
การยืนยันตัวตน: API key ที่กำหนดขอบเขตตาม tenant หรือ organization · sessions scope · จำกัดอัตรา 2 req/s (สูงสุดชั่วขณะ 4)
พารามิเตอร์:
| ชื่อ | ประเภท | ตำแหน่ง | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| tenantId | string | path | ใช่ | รูปแบบ: uuid |
| userId | string | path | ใช่ | รูปแบบ: uuid |
เนื้อหาคำขอ:
เส้นทางปลายทาง (ไม่บังคับ เป็นเส้นทางสัมพัทธ์ภายในแอป เช่น “app” หรือ “app/dashboards”)
{
"path": "string"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| path | string | ไม่ | ความยาวสูงสุด: 512 |
คำตอบ (200):
โทเค็นส่งต่อการเข้าสู่ระบบ
{
"token": "string",
"url": "string",
"expiresInSeconds": 0,
"expiresAt": "2024-03-15T16:30:00Z"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| token | string | ใช่ | |
| url | string | ใช่ | |
| expiresInSeconds | number | ใช่ | |
| expiresAt | string | ใช่ | รูปแบบ: date-time |
ข้อผิดพลาด:
API key ใช้ยืนยันตัวตนให้กับการเชื่อมต่อของคุณ API key ที่กำหนดขอบเขตตาม organization สามารถสร้างและจัดการ key ของ tenant ใดก็ได้ใน organization นั้น.
ต้องใช้ API key ที่กำหนดขอบเขตตาม organization ระบบจะไม่ส่งคืน secret.
Endpoint: GET /v1/tenant/{tenantId}/api-keys
การยืนยันตัวตน: API key ที่กำหนดขอบเขตตาม organization · read scope
พารามิเตอร์:
| ชื่อ | ประเภท | ตำแหน่ง | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| tenantId | string | path | ใช่ | รูปแบบ: uuid |
| limit | integer | query | ไม่ | จำนวนรายการสูงสุดที่ส่งคืน |
| offset | integer | query | ไม่ | จำนวนรายการที่ข้ามไป |
คำตอบ (200):
รายการ API key
[
{
"id": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"organizationId": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"partialKey": "string",
"enabled": true,
"createdAt": "2024-03-15T16:30:00Z",
"lastUsedAt": "2024-03-15T16:30:00Z",
"expiresAt": "2024-03-15T16:30:00Z",
"scope": {
"read": true,
"write": true,
"uploadData": true,
"sessions": true
}
}
] ข้อผิดพลาด:
ต้องใช้ API key สำหรับเขียนที่กำหนดขอบเขตตาม organization ระบบสร้าง secret บนเซิร์ฟเวอร์และส่งคืนในคำตอบเพียงครั้งเดียว โปรดจัดเก็บไว้อย่างปลอดภัย ระบบเก็บไว้เฉพาะค่าแฮชเท่านั้น.
Endpoint: POST /v1/tenant/{tenantId}/api-keys
การยืนยันตัวตน: API key ที่กำหนดขอบเขตตาม organization · write scope
พารามิเตอร์:
| ชื่อ | ประเภท | ตำแหน่ง | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| tenantId | string | path | ใช่ | รูปแบบ: uuid |
เนื้อหาคำขอ:
{
"displayName": "string",
"scope": {
"read": true,
"write": true,
"uploadData": true,
"sessions": true
},
"enabled": true,
"expiresAt": "2024-03-15T16:30:00Z"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| displayName | string | ใช่ | ความยาวสูงสุด: 128 |
| scope | object | ไม่ | |
| enabled | boolean | ไม่ | |
| expiresAt | string | ไม่ | รูปแบบ: date-time |
คำตอบ (201):
สร้าง API key แล้ว (มี secret ที่ใช้ได้ครั้งเดียว)
{
"id": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"organizationId": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"partialKey": "string",
"enabled": true,
"createdAt": "2024-03-15T16:30:00Z",
"lastUsedAt": "2024-03-15T16:30:00Z",
"expiresAt": "2024-03-15T16:30:00Z",
"scope": {
"read": true,
"write": true,
"uploadData": true,
"sessions": true
},
"secret": "string"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| id | string | ใช่ | รูปแบบ: uuid |
| tenantId | string | ใช่ | รูปแบบ: uuid |
| organizationId | string | ใช่ | รูปแบบ: uuid |
| displayName | string | ใช่ | ความยาวสูงสุด: 128 |
| partialKey | string | ใช่ | ความยาวสูงสุด: 128 |
| enabled | boolean | ใช่ | ค่าเริ่มต้น: true |
| createdAt | string | ใช่ | รูปแบบ: date-time |
| lastUsedAt | string | ใช่ | รูปแบบ: date-time |
| expiresAt | string | ใช่ | รูปแบบ: date-time |
| scope | object | ใช่ | |
| secret | string | ใช่ | ความยาวสูงสุด: 128 |
ข้อผิดพลาด:
ต้องใช้ API key สำหรับเขียนที่กำหนดขอบเขตตาม organization ระบบจะรวมฟิลด์ scope เข้ากับ scope ที่จัดเก็บไว้.
Endpoint: PUT /v1/tenant/{tenantId}/api-keys/{keyId}
การยืนยันตัวตน: API key ที่กำหนดขอบเขตตาม organization · write scope
พารามิเตอร์:
| ชื่อ | ประเภท | ตำแหน่ง | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| tenantId | string | path | ใช่ | รูปแบบ: uuid |
| keyId | string | path | ใช่ | รูปแบบ: uuid |
เนื้อหาคำขอ:
{
"displayName": "string",
"scope": {
"read": true,
"write": true,
"uploadData": true,
"sessions": true
},
"enabled": true,
"expiresAt": "2024-03-15T16:30:00Z"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| displayName | string | ไม่ | ความยาวสูงสุด: 128 |
| scope | object | ไม่ | |
| enabled | boolean | ไม่ | |
| expiresAt | string | ไม่ | รูปแบบ: date-time |
คำตอบ (200):
อัปเดต API key แล้ว
{
"id": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"organizationId": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"partialKey": "string",
"enabled": true,
"createdAt": "2024-03-15T16:30:00Z",
"lastUsedAt": "2024-03-15T16:30:00Z",
"expiresAt": "2024-03-15T16:30:00Z",
"scope": {
"read": true,
"write": true,
"uploadData": true,
"sessions": true
}
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| id | string | ใช่ | รูปแบบ: uuid |
| tenantId | string | ใช่ | รูปแบบ: uuid |
| organizationId | string | ใช่ | รูปแบบ: uuid |
| displayName | string | ใช่ | ความยาวสูงสุด: 128 |
| partialKey | string | ใช่ | ความยาวสูงสุด: 128 |
| enabled | boolean | ใช่ | ค่าเริ่มต้น: true |
| createdAt | string | ใช่ | รูปแบบ: date-time |
| lastUsedAt | string | ใช่ | รูปแบบ: date-time |
| expiresAt | string | ใช่ | รูปแบบ: date-time |
| scope | object | ใช่ |
ข้อผิดพลาด:
ต้องใช้ API key สำหรับเขียนที่กำหนดขอบเขตตาม organization ระบบจะลบ key แบบไม่ถาวร และหยุดใช้ key นี้ยืนยันตัวตนทันที.
Endpoint: DELETE /v1/tenant/{tenantId}/api-keys/{keyId}
การยืนยันตัวตน: API key ที่กำหนดขอบเขตตาม organization · write scope
พารามิเตอร์:
| ชื่อ | ประเภท | ตำแหน่ง | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| tenantId | string | path | ใช่ | รูปแบบ: uuid |
| keyId | string | path | ใช่ | รูปแบบ: uuid |
คำตอบ (200):
ลบ API key แล้ว
{
"message": "string"
} | ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| message | string | ใช่ |
ข้อผิดพลาด:
เริ่มใช้งานได้ทันที ไม่ต้องใช้บัตรเครดิตและไม่ต้องรอ เปลี่ยนวิธีทำงานขององค์กรให้เป็นแบบจำลองกระบวนการที่ชัดเจนและเชื่อมโยงกัน.
สร้างสถาปัตยกรรมกระบวนการ กำหนดเจ้าของและการควบคุม พร้อมจัดบทบาทและความรับผิดชอบให้สอดคล้องกันในทุกระดับ.
เริ่มทดลองใช้ฟรี แล้วสร้างรากฐานที่เชื่อถือได้สำหรับกำกับดูแล จัดการ และปรับปรุงกระบวนการอย่างต่อเนื่อง.
เราใช้คุกกี้เพื่อปรับปรุงประสบการณ์ของคุณ ปรับเนื้อหาให้เหมาะกับคุณ และวิเคราะห์การเข้าชมเว็บไซต์ เรายังวัดจำนวนการเข้าชมหน้าเว็บแบบไม่ระบุตัวตนได้โดยไม่ใช้คุกกี้ หากคุณยินยอมให้ใช้คุกกี้วิเคราะห์ เราจะใช้ตัวระบุเพื่อเชื่อมโยงการเข้าชมของคุณ เมื่อคลิก "ยอมรับทั้งหมด" ถือว่าคุณยินยอมให้เราใช้คุกกี้.