การจัดการกลุ่ม
สร้างกลุ่ม
URL
https://email.api.engagelab.cc/v1/marketing/lists/segments
วิธีการร้องขอ HTTP
POST
Content-Type
application/json; charset=utf-8
ส่วนหัวของคำขอ
ส่วนหัว | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
Authorization | string | true | Basic base64(api_user:api_key) |
พารามิเตอร์ในเนื้อหา
พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
segment_name | string | true | ชื่อกลุ่ม (สูงสุด 48 ตัวอักษร ไม่รองรับอักขระพิเศษ ^,?,+,.,*,\,[,],(,) ) |
type | integer | true | ประเภทกลุ่ม (0 หรือ 1) 0. โดยฟิลด์ (จัดกลุ่มตามคุณลักษณะ); 1. โดยแคมเปญ (จัดกลุ่มตามประสิทธิภาพของแคมเปญ) |
condition | object | true | เงื่อนไขของกลุ่ม |
relation | string | true | ความสัมพันธ์ของเงื่อนไข (and หรือ or) |
items | object[] | true | เงื่อนไข (รองรับเงื่อนไขตัวกรองสูงสุด 10 เงื่อนไข ความสัมพันธ์ (relation) ระหว่างเงื่อนไขตัวกรองต้องเป็น "and" ทั้งหมดหรือ "or" ทั้งหมด) |
campaign_id | integer | false | รหัสแคมเปญ หาก field_name=campaign ค่านี้เป็นสิ่งจำเป็น และสถานะแคมเปญที่เกี่ยวข้องต้องเป็น "sending" หรือ "completed" |
field_name | string | true | 1. หาก type=0 field_name คือชื่อคุณลักษณะ value คือค่าคุณลักษณะ; field_name คือ "tag" เมื่อ value=ชื่อแท็ก 2. หาก type=1 field_name ต้องเป็น campaign, value คือหนึ่งใน "sent","open","click","unopen","unclick","notsent", และ campaign_id เป็นสิ่งจำเป็นในฐานะรหัสแคมเปญ |
op | string | true | ตัวดำเนินการ (== , != , > , >= , < , <= , contain , does not contain) เมื่อ field_name=campaign, op ต้องเป็น ==; เมื่อ field_name เป็นชื่อคุณลักษณะหรือแท็ก ให้ดูที่ เงื่อนไขตัวกรอง สำหรับ op |
value | string | true | เมื่อ fieldName คือ "tag", value=ชื่อแท็ก; เมื่อ fieldName เป็นชื่อคุณลักษณะ ให้ดูที่ เงื่อนไขตัวกรอง สำหรับรูปแบบ; เมื่อ fieldName = "campaign", value คือหนึ่งใน sent, open, click, unopen, unclick, notsent |
หมายเหตุ
- ดูที่ เงื่อนไขตัวกรอง สำหรับความสัมพันธ์ระหว่าง field_name และ op.
ตัวอย่างคำขอ
curl -X POST -H 'Content-Type: application/json; charset=utf-8' -H 'Authorization:Basic YXBpX3VzZXI6YXBpX2tleQ==' -i https://email.api.engagelab.cc/v1/marketing/lists/segments --data '{
"segment_name": "Hubei user",
"type": 0,
"condition": {
"relation": "and",
"items": [
{
"field_name": "Name",
"op": "contain",
"value": "Lei Li"
}
]
}
}'
ตัวอย่างการตอบกลับ
Response-Success
HttpStatus: 200
{
"result": {
"segment_id": "6566f6392c16e71300b1b1e9",
"user_id": 104201,
"segment_name": "MyCustomField",
"type": 0,
"list_id": 96112,
"status": "2",
"create_time": "2023-11-29 16:28:41+0800",
"update_time": "2023-11-29 16:33:58+0800",
"member_total": 1,
"condition": {
"relation": "and",
"items": [
{
"field_name": "Name",
"op": "contain",
"value": "Lei li"
}
]
},
"process": {
"statusDesc": "segmentation completed",
"complete": true,
"percent": 100
}
}
}
Response-Error
{
"code": 30035,
"message": "[segment_name]:Special characters such as ^, ?, +, ., \\, [, ], (, ), cannot be used"
}
ลบกลุ่ม
URL
https://email.api.engagelab.cc/v1/marketing/lists/segments/{segment_id}
วิธีการร้องขอ HTTP
DELETE
Content-Type
application/x-www-form-urlencoded;charset=utf-8
ส่วนหัวของคำขอ
ส่วนหัว | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
Authorization | string | true | Basic base64(api_user:api_key) |
ตัวอย่างคำขอ
curl -X DELETE -H 'Authorization:Basic YXBpX3VzZXI6YXBpX2tleQ==' -i https://email.api.engagelab.cc/v1/marketing/lists/segments/6566f12d1e9adc15e3efd4
ส่วนหัวของคำขอ
ส่วนหัว | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
Authorization | string | true | Basic base64(api_user:api_key) |
ตัวอย่างคำขอ
Response-Success
HttpStatus: 200
{
"count": 1
}
Response-Error
{
"code": 30036,
"message": "not found"
}
อัปเดตกลุ่ม
URL
https://email.api.engagelab.cc/v1/marketing/lists/segments/{segment_id}
วิธีการร้องขอ HTTP
PUT
Content-Type
application/json; charset=utf-8
ส่วนหัวของคำขอ
ส่วนหัว | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
Authorization | string | true | Basic base64(api_user:api_key) |
พารามิเตอร์ในเนื้อหา
พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
segment_name | string | false | ชื่อกลุ่ม (สูงสุด 48 ตัวอักษร) |
type | integer | true | ประเภทกลุ่ม (0 หรือ 1) 0. โดยฟิลด์ (จัดกลุ่มตามคุณลักษณะ); 1. โดยแคมเปญ (จัดกลุ่มตามประสิทธิภาพของแคมเปญ) |
condition | object | true | เงื่อนไขของกลุ่ม |
relation | string | true | ความสัมพันธ์ของเงื่อนไข (and หรือ or) |
items | object[] | true | เงื่อนไข (รองรับเงื่อนไขตัวกรองสูงสุด 10 เงื่อนไข ความสัมพันธ์ (relation) ระหว่างเงื่อนไขตัวกรองต้องเป็น "and" ทั้งหมดหรือ "or" ทั้งหมด) |
campaign_id | integer | false | รหัสแคมเปญ หาก field_name=campaign ค่านี้เป็นสิ่งจำเป็น และสถานะแคมเปญที่เกี่ยวข้องต้องเป็น "sending" หรือ "completed" |
field_name | string | true | 1. หาก type=0 2. หาก type=1 field_name ต้องเป็น campaign, value คือหนึ่งใน "sent","open","click","unopen","unclick","notsent", และ campaignId เป็นสิ่งจำเป็นในฐานะรหัสแคมเปญ |
op | string | true | ตัวดำเนินการ (== , != , > , >= , < , <= , contain , does not contain) เมื่อ field_name=campaign, op ต้องเป็น ==; เมื่อ field_name เป็นชื่อคุณลักษณะหรือแท็ก ให้ดูที่ เงื่อนไขตัวกรอง สำหรับ op |
value | string | true | เมื่อ field_name คือ "tag", value=ชื่อแท็ก; เมื่อ field_name เป็นชื่อคุณลักษณะ ให้ดูที่ เงื่อนไขตัวกรอง สำหรับรูปแบบ; เมื่อ field_name = "campaign", value คือหนึ่งใน sent, open, click, unopen, unclick, notsent |
หมายเหตุ
- ดูที่ เงื่อนไขตัวกรอง สำหรับความสัมพันธ์ระหว่าง field_name และ op.
ตัวอย่างคำขอ
curl -X PUT -H 'Content-Type: application/json; charset=utf-8' -H 'Authorization:Basic YXBpX3VzZXI6YXBpX2tleQ==' -i https://email.api.engagelab.cc/v1/marketing/lists/segments/62849dc690d79d4947dd033d --data '{
"segment_name": "Age between 13 and 45",
"type": 0,
"condition": {
"relation": "and",
"items": [
{
"field_name": "Age",
"op": ">=",
"value": "13"
},
{
"field_name": "Age",
"op": "<=",
"value": "45"
}
]
}
}'
คำอธิบายการตอบกลับ
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
segment_id | string | รหัสกลุ่ม |
segment_name | string | ชื่อกลุ่ม |
list_id | integer | รหัสรายการที่เกี่ยวข้อง |
status | string | สถานะกลุ่ม (-1. ล้มเหลว 1. กำลังอัปเดต 2. อัปเดตแล้ว) |
create_time | string | เวลาที่สร้าง (UTC+8) |
update_time | string | เวลาที่อัปเดต (UTC+8) |
member_total | integer | สมาชิกกลุ่มทั้งหมด |
type | integer | ประเภทกลุ่ม (0 หรือ 1) 0. โดยฟิลด์ (จัดกลุ่มตามคุณลักษณะ); 1. โดยแคมเปญ (จัดกลุ่มตามประสิทธิภาพของแคมเปญ) |
condition | object | เงื่อนไขของกลุ่ม |
relation | string | ความสัมพันธ์ของเงื่อนไข and, or |
items | object[] | เงื่อนไข |
campaign_id | integer | รหัสแคมเปญ |
field_name | string | ชื่อคุณลักษณะ |
op | string | ตัวดำเนินการ |
value | string | ค่าคุณลักษณะ |
process | object | ความคืบหน้าการประมวลผลของกลุ่ม |
status_desc | string | คำอธิบายสถานะการประมวลผล |
complete | Boolean | true เสร็จสิ้น, false ไม่เสร็จสิ้น |
percent | integer | เปอร์เซ็นต์การประมวลผล |
ตัวอย่างการตอบกลับ
Response-Success
HttpStatus: 200
{
"result": {
"segment_id": "6566f91fceac8f702f24dbba",
"user_id": 104201,
"segment_name": "Age between 13 and 45",
"type": 0,
"list_id": 96112,
"status": "2",
"create_time": "2023-11-29 16:41:03+0800",
"update_time": "2023-11-29 17:08:43+0800",
"member_total": 10,
"condition":{
"relation": "and",
"items":[
{
"campaign_id": null,
"field_name": "Age",
"op": ">=",
"value": "13"
},
{
"campaign_id": null,
"field_name": "Age",
"op": "<=",
"value": "45"
}
]
},
"process": {
"statusDesc": "segmentation completed",
"complete": true,
"percent": 100
}
}
}
Response-Error
{
"code": 30036,
"message": "not found"
}
รายละเอียดกลุ่ม
URL
https://email.api.engagelab.cc/v1/marketing/lists/segments/{segment_id}
วิธีการร้องขอ HTTP
GET
Content-Type
application/x-www-form-urlencoded;charset=utf-8
ส่วนหัวของคำขอ
ส่วนหัว | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
Authorization | string | true | Basic base64(api_user:api_key) |
ตัวอย่างคำขอ
curl -X GET -H 'Authorization:Basic YXBpX3VzZXI6YXBpX2tleQ==' -i https://email.api.engagelab.cc/v1/marketing/lists/segments/62849dc690d79d4947dd033d
คำอธิบายการตอบกลับ
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
segment_id | string | รหัสกลุ่ม |
segment_name | string | ชื่อกลุ่ม |
list_id | integer | รหัสรายการที่เกี่ยวข้อง |
status | string | สถานะกลุ่ม (-1. ล้มเหลว 1. กำลังอัปเดต 2. อัปเดตแล้ว) |
create_time | string | เวลาที่สร้าง (UTC+8) |
update_time | string | เวลาที่อัปเดต (UTC+8) |
member_total | integer | สมาชิกกลุ่มทั้งหมด |
type | integer | ประเภทกลุ่ม (0 หรือ 1) 0. โดยฟิลด์ (จัดกลุ่มตามคุณลักษณะ); 1. โดยแคมเปญ (จัดกลุ่มตามประสิทธิภาพของแคมเปญ) |
condition | object | เงื่อนไขของกลุ่ม |
relation | string | ความสัมพันธ์ของเงื่อนไข and, or |
items | object[] | เงื่อนไข |
campaign_id | integer | รหัสแคมเปญ |
field_name | string | ชื่อคุณลักษณะ |
op | string | ตัวดำเนินการ |
value | string | ค่าคุณลักษณะ |
process | object | ความคืบหน้าการประมวลผลของกลุ่ม |
status_desc | string | คำอธิบายสถานะการประมวลผล |
complete | Boolean | true เสร็จสิ้น, false ไม่เสร็จสิ้น |
percent | integer | เปอร์เซ็นต์การประมวลผล |
ตัวอย่างการตอบกลับ
Response-Success
HttpStatus:200
{
"result": {
"segment_id": "6566f6392c16e71300b1b1e9",
"user_id": 104201,
"segment_name": "MyCustomField",
"relation": "and",
"type": 0,
"list_id": 96112,
"status": "2",
"create_time": "2023-11-29 16:28:41+0800",
"update_time": "2023-11-29 16:33:58+0800",
"member_total": 1,
"condition": {
"relation": "and",
"items":[{
"campaign_id": null,
"field_name": "CustomField",
"op": "contain",
"value": "CustomField"
}
]
},
"process": {
"statusDesc": "segmentation completed",
"complete": true,
"percent": 100
}
}
}
Response-Error
{
"code": 30036,
"message": "not found"
}
รายการกลุ่ม
URL
https://email.api.engagelab.cc/v1/marketing/lists/segments
วิธีการร้องขอ HTTP
GET
Content-Type
application/x-www-form-urlencoded;charset=utf-8
ส่วนหัวของคำขอ
ส่วนหัว | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
Authorization | string | true | Basic base64(api_user:api_key) |
พารามิเตอร์การค้นหา
พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
segment_name | string | false | ชื่อกลุ่ม รองรับการค้นหาแบบคลุมเครือ |
type | integer | false | ประเภทกลุ่ม (0 หรือ 1) 0.ตามฟิลด์ (จัดกลุ่มตามคุณสมบัติ); 1.ตามแคมเปญ (จัดกลุ่มตามประสิทธิภาพแคมเปญ) |
offset | integer | false | ตำแหน่งเริ่มต้นของการค้นหา ช่วง [0-], ค่าเริ่มต้นคือ 0 |
limit | integer | false | จำนวนการค้นหา ช่วง [1-100], ค่าเริ่มต้นคือ 10 |
ตัวอย่างคำขอ
curl -X GET -H 'Authorization:Basic YXBpX3VzZXI6YXBpX2tleQ==' -i https://email.api.engagelab.cc/v1/marketing/lists/segments?offset=0&limit=10&segmentName=abc_by_name&type=0
คำอธิบายการตอบกลับ
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
list | array | รายการผู้ติดต่อ |
segment_id | string | รหัสกลุ่ม |
segment_name | string | ชื่อกลุ่ม |
list_id | integer | รหัสการเชื่อมโยงรายการ |
status | string | สถานะกลุ่ม (-1: ล้มเหลว, 1: กำลังอัปเดต, 2: อัปเดตเสร็จสิ้น) |
create_time | string | เวลาสร้าง (UTC+8) |
update_time | string | เวลาอัปเดต (UTC+8) |
member_total | integer | จำนวนผู้ติดต่อในกลุ่มทั้งหมด |
type | integer | ประเภทกลุ่ม (0 หรือ 1) 0.ตามฟิลด์ (จัดกลุ่มตามคุณสมบัติ); 1.ตามแคมเปญ (จัดกลุ่มตามประสิทธิภาพแคมเปญ) |
condition | object | เงื่อนไขของกลุ่ม |
relation | string | ความสัมพันธ์ของเงื่อนไข and, or |
items | object[] | เงื่อนไข |
campaign_id | integer | รหัสแคมเปญ |
field_name | string | ชื่อคุณสมบัติ |
op | string | ตัวดำเนินการ |
value | string | ค่าคุณสมบัติ |
process | object | ความคืบหน้าการประมวลผลกลุ่ม |
status_desc | string | คำอธิบายสถานะการประมวลผล |
complete | Boolean | true เสร็จสิ้น, false ยังไม่เสร็จสิ้น |
percent | integer | เปอร์เซ็นต์การประมวลผล |
total | integer | บันทึกทั้งหมด |
count | integer | จำนวนบันทึกผลลัพธ์ |
ตัวอย่างการตอบกลับ
Response-Success
HttpStatus: 200
{
"result": [
{
"segment_id": "6566f6392c16e71300b1b1e9",
"segment_name": "MyCustomField",
"type": 0,
"list_id": 96112,
"status": "2",
"create_time": "2023-11-29 16:28:41+0800",
"update_time": "2023-11-29 16:33:58+0800",
"member_total": 1,
"condition": {
"relation": "and",
"items": [
{
"campaign_id": null,
"field_name": "CustomField",
"op": "contain",
"value": "CustomField"
}
]
},
"process": {
"statusDesc": "segmentation completed",
"complete": true,
"percent": 100
}
},
{
"segment_id": "6566f2dd1e9adc15e3efd47e",
"segment_name": "Age>=20用户组",
"type": 0,
"list_id": 96112,
"status": "2",
"create_time": "2023-11-29 16:14:21+0800",
"update_time": "2023-11-29 16:14:23+0800",
"member_total": 10,
"condition": {
"relation": "and",
"items": [
{
"campaign_id": null,
"field_name": "Age",
"op": ">=",
"value": "20"
}
]
},
"process": {
"statusDesc": "segmentation completed",
"complete": true,
"percent": 100
}
}
],
"total": 4,
"count": 2
}
Response-Error
{
"code": 30035,
"message": "type only be 0 (by field) or 1 (by campaign)"
}
ตรวจสอบความคืบหน้าการประมวลผลกลุ่ม
URL
https://email.api.engagelab.cc/v1/marketing/lists/segments/{segment_id}/process
วิธีการร้องขอ HTTP
GET
Content-Type
application/x-www-form-urlencoded;charset=utf-8
ส่วนหัวของคำขอ
ส่วนหัว | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
Authorization | string | true | Basic base64(api_user:api_key) |
ตัวอย่างคำขอ
curl -X GET -H 'Authorization:Basic YXBpX3VzZXI6YXBpX2tleQ==' -i https://email.api.engagelab.cc/v1/marketing/lists/segments/62849dc690d79d4947dd033d/process
ตัวอย่างการตอบกลับ
Response-Success
HttpStatus: 200
{
"result": {
"percent": 68,
"complete": false,
"statusDesc": "is being segmented, please do not use this segment to send mail"
}
}
Response-Error
{
"code": 30036,
"message": "not found"
}
รายการสมาชิกของกลุ่ม
URL
https://email.api.engagelab.cc/v1/marketing/lists/segments/{segment_id}/members
วิธีการร้องขอ HTTP
POST
Content-Type
application/json; charset=utf-8
ส่วนหัวของคำขอ
ส่วนหัว | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
Authorization | string | true | Basic base64(api_user:api_key) |
พารามิเตอร์การค้นหา
พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
offset | integer | false | ตำแหน่งเริ่มต้นของการค้นหา ช่วง [0-], ค่าเริ่มต้นคือ 0 |
limit | integer | false | จำนวนการค้นหา ช่วง [1-100], ค่าเริ่มต้นคือ 10 |
พารามิเตอร์ในเนื้อหา
พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
condition | object | false | เงื่อนไขของกลุ่ม |
relation | string | true | ความสัมพันธ์ของเงื่อนไข (and หรือ or) |
items | object[] | true | เงื่อนไข (สูงสุด 10 เงื่อนไข ตัวความสัมพันธ์ระหว่างเงื่อนไข (relation) ต้องเป็น and หรือ or ทั้งหมด) |
field_name | string | true | field_name คือชื่อคุณสมบัติ value คือค่าคุณสมบัติ; เมื่อ field_name คือ "tag", value=ชื่อแท็ก |
op | string | true | ตัวดำเนินการ (== , != , > , >= , < , <= , contain , does not contain) |
value | string | true | เมื่อ field_name = "tag", value = ชื่อแท็ก; เมื่อ field_name เป็นชื่อคุณสมบัติ โปรดดู Filter Conditions |
คำอธิบาย
- ความสัมพันธ์ระหว่าง field_name และ op โปรดดู Filter Conditions
ตัวอย่างคำขอ
curl -X POST -H 'Content-Type: application/json; charset=utf-8' -H 'Authorization:Basic YXBpX3VzZXI6YXBpX2tleQ==' -i https://email.api.engagelab.cc/v1/marketing/lists/segments/62908150eb5e955d6d214da6/members?offset=0&limit=10 --data '{
"condition": {
"relation": "and",
"items": [
{
"field_name": "Email",
"op": "contain",
"value": "tw"
}
]
}
}'
คำอธิบายการตอบกลับ
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
list | array[object] | อาร์เรย์รายการ |
id | string | รหัสผู้ติดต่อ |
list_id | integer | รหัสรายการ |
string | ที่อยู่อีเมล | |
phone | string | หมายเลขโทรศัพท์ |
name | string | ชื่อ |
create_time | string | เวลาสร้าง (UTC+8) |
update_time | string | เวลาอัปเดตการสมัคร (UTC+8) |
unsubscribe_time | string | เวลายกเลิกการสมัคร (UTC+8) |
fields | object | คุณสมบัติผู้ติดต่อ |
tag_ids | string[] | คอลเลกชันรหัสแท็ก |
tag_names | string[] | คอลเลกชันชื่อแท็ก |
total | integer | บันทึกทั้งหมด |
ตัวอย่างการตอบกลับ
Response-Succes
HttpStatus: 200
{
"result": [
{
"id": "629d6650490f33c5eef1caa6",
"list_id": 63486,
"email": "paulchen0518@yahoo.com.tw",
"phone": null,
"name": "shanshan",
"create_time": "2022-06-06T10:28:32+0800",
"update_time": "2022-06-06T10:28:32+0800",
"unsubscribe_time": null,
"fields": {
"Gender": "Female"
},
"tags": null,
"tag_names": []
},
{
"id": "629d665a490f33c5eef2932f",
"list_id": 63486,
"email": "q510518@yahoo.com.tw",
"phone": null,
"name": "",
"create_time": "2022-06-06T10:28:42+0800",
"update_time": "2022-06-06T10:28:42+0800",
"unsubscribe_time": null,
"fields": {
"Gender": ""
},
"tag_ids": null,
"tag_names": []
}
],
"total": 2
}
Response-Error
{
"code": 30000,
"message": "Authentication failed"
}
ลบผู้ติดต่อในกลุ่ม
URL
https://email.api.engagelab.cc/v1/marketing/lists/segments/{segment_id}/members
วิธีการร้องขอ HTTP
DELETE
Content-Type
application/json; charset=utf-8
ส่วนหัวของคำขอ
ส่วนหัว | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
Authorization | string | true | Basic base64(api_user:api_key) |
พารามิเตอร์ในเนื้อหา
พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
member_ids | string[] | true | รายการรหัสผู้ติดต่อ |
ตัวอย่างคำขอ
curl -X DELETE -H 'Content-Type: application/json; charset=utf-8' -H 'Authorization:Basic YXBpX3VzZXI6YXBpX2tleQ==' -i https://email.api.engagelab.cc/v1/marketing/lists/segments/ 62849dc690d79d4947dd033d/members --data '{
"member_ids": [
"asdfsdf2211212aa",
"2sadfs288332223s"
]
}'
ตัวอย่างการตอบกลับ
Response-Success
HttpStatus: 200
{
"count": 100
}
Response-Error
{
"code": 30000,
"message": "Authentication failed"
}