Ủy quyền tài khoản
Trạng thái xác thực
Trả về trạng thái luồng xác thực hiện tại, gồm code, QR, Passkey, mật khẩu, import session hoặc đã xác thực. Với Passkey, trạng thái có thể là passkey_required, passkey_pending, passkey_confirmation hoặc passkey_confirmation_sent; auth_payload.public_key chứa WebAuthn challenge và auth_payload cũng có thể chứa lời nhắc xác nhận. expires_at cho biết khi payload hết hiệu lực.
https://api.unifyport.ai/v1/accounts/{account_id}/authKênh được hỗ trợ
Trước khi gọi
Dùng X-Api-Key của workspace sở hữu tài nguyên trên máy chủ. Thay mọi giá trị mẫu trước khi chạy.
Nguồn tham số
- account_id
- Lấy data.id từ phản hồi tạo hoặc truy vấn tài khoản. ID thuộc workspace của X-Api-Key. Lấy tài khoản
Tham số yêu cầu
Tiêu đề
X-Api-KeyAPI key của không gian làm việc. Không gian làm việc được xác định từ tiêu đề này.
Tham số đường dẫn
account_idĐịnh danh dùng cho route authentication.
Nội dung yêu cầu
Điểm cuối này không cần nội dung JSON.
Hiểu kết quả
Đọc status/auth_status và auth_payload thực sự trả về cho thao tác xác thực này. Nếu cần người dùng thao tác, làm theo hướng dẫn của kênh. authorized nghĩa là xác thực hoàn tất; trước khi gửi vẫn phải kiểm tra runtime_status.
Phản hồi 200 OK
{
"request_id": "<REQUEST_ID>",
"data": {
"account_id": "acc_example",
"status": "awaiting_qr_scan",
"auth_fields": [
{
"type": "qr_code",
"required": true
}
],
"auth_payload": {
"qr_code": "https://example.com/qr"
},
"expires_at": "2026-01-01T00:00:00Z",
"last_error": ""
}
}
Nội dung phản hồi
account_idTài khoản nhà cung cấp mà phản hồi này tham chiếu tới.
statusTrạng thái hiện tại của luồng ủy quyền, ví dụ pending_auth, awaiting_qr_scan, awaiting_code, pending, passkey_required, passkey_pending, passkey_confirmation, passkey_confirmation_sent, authorized hoặc failed.
auth_fields[]object[]Mô tả những gì bước tiếp theo yêu cầu — mỗi mục mang một type và việc nó có bắt buộc hay không.
auth_fields[]Mô tả những gì bước tiếp theo yêu cầu — mỗi mục mang một type và việc nó có bắt buộc hay không.
typeLoại dữ liệu đầu vào cần cho bước xác thực tiếp theo, như code hoặc password.
requiredDữ liệu xác thực này có bắt buộc phải cung cấp hay không.
labelNhãn hiển thị do provider cung cấp, nếu có.
placeholderGợi ý nhập liệu do provider cung cấp, nếu có.
auth_payloadPayload chuẩn cần cho bước hiện tại. QR dùng qr_code; bước xác minh mã dùng type=code; Passkey có thể trả về type=passkey và public_key, hoặc type=passkey_confirmation kèm lời nhắc xác nhận. Payload của các bước loại trừ nhau không xuất hiện cùng lúc. TikTok session có thể trả về lời nhắc QR hoặc mã xác minh khi cần tương tác; HTTP 200 không có nghĩa là ủy quyền thành công.
expires_atDấu thời gian RFC3339 mà sau đó auth_payload hiện tại không còn hợp lệ.
format: date-time
last_errorLỗi xác thực gần nhất, hoặc chuỗi rỗng khi không có lỗi nào.
Phản hồi
200200 OK
Yêu cầu thành công. Xem ví dụ nội dung phản hồi.
400Bad Request
Body, đường dẫn hoặc tham số yêu cầu không hợp lệ.
401Unauthorized
Header X-Api-Key thiếu hoặc không hợp lệ.
403Forbidden
Yêu cầu đã được nhận diện nhưng thao tác không được phép.
404Not Found
Không tìm thấy tài nguyên được yêu cầu. Kiểm tra error.code cùng với thao tác hiện tại.
500Internal Server Error
Dịch vụ gặp lỗi không mong muốn.
Khi yêu cầu thất bại
Kiểm tra HTTP và error.code/numeric_code, giữ request_id. Sửa tham số, tiếp tục xác thực hoặc kiểm tra runtime tùy nguyên nhân. Xác nhận kết quả cũ trước khi thử lại thao tác gửi hoặc ghi. Tham chiếu mã lỗi
Đọc trạng thái HTTP, error.code và error.numeric_code theo thao tác đang gọi. Mã số có kiểu chuỗi. Giữ request_id để chẩn đoán; đây không phải khóa chống lặp hay mã tác vụ.
- invalid_request · 10000 · 400
Kiểm tra JSON và các trường bắt buộc.
Điều kiện: Áp dụng khi phần thân yêu cầu không rỗng nhưng Content-Type không phải application/json.
Xử lý và thử lại: Sửa tham số theo thao tác và điều kiện của kênh rồi mới gọi lại. Lặp lại yêu cầu sai y nguyên không khắc phục lỗi.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 400 · 10000
{ "request_id": "req_example", "error": { "code": "invalid_request", "numeric_code": "10000", "message": "Content-Type must be application/json" } }- invalid_target_workspace · 11003 · 400
Đích ghi đè workspace trống hoặc sai định dạng. Bỏ tiêu đề ghi đè và dùng API Key thuộc workspace đích.
Điều kiện: Áp dụng khi yêu cầu có tiêu đề X-Workspace-Id để ghi đè workspace.
Xử lý và thử lại: Sửa tham số theo thao tác và điều kiện của kênh rồi mới gọi lại. Lặp lại yêu cầu sai y nguyên không khắc phục lỗi.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 400 · 11003
{ "request_id": "req_example", "error": { "code": "invalid_target_workspace", "numeric_code": "11003", "message": "Invalid target workspace" } }- invalid_api_key · 11001 · 401
Kiểm tra API Key có đúng và được bật hay không.
Xử lý và thử lại: Giữ request_id và mã lỗi có cấu trúc; kiểm tra thao tác hiện tại trước khi chọn hành động tiếp theo.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 401 · 11001
{ "request_id": "req_example", "error": { "code": "invalid_api_key", "numeric_code": "11001", "message": "Invalid API key" } }- missing_api_key · 11000 · 401
Thêm tiêu đề X-Api-Key.
Xử lý và thử lại: Giữ request_id và mã lỗi có cấu trúc; kiểm tra thao tác hiện tại trước khi chọn hành động tiếp theo.
Ví dụ · 401 · 11000
{ "request_id": "req_xxx", "error": { "code": "missing_api_key", "numeric_code": "11000", "message": "Missing X-Api-Key header" } }- workspace_override_forbidden · 11002 · 403
Yêu cầu cố ghi đè workspace mà API Key không được phép dùng. Bỏ tiêu đề ghi đè và dùng API Key thuộc workspace đích.
Điều kiện: Áp dụng khi yêu cầu có tiêu đề X-Workspace-Id để ghi đè workspace.
Xử lý và thử lại: Giữ request_id và mã lỗi có cấu trúc; kiểm tra thao tác hiện tại trước khi chọn hành động tiếp theo.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 403 · 11002
{ "request_id": "req_example", "error": { "code": "workspace_override_forbidden", "numeric_code": "11002", "message": "Workspace override is not allowed" } }- target_workspace_not_found · 11004 · 404
Không tìm thấy workspace được ghi đè hoặc workspace không khả dụng. Kiểm tra chủ sở hữu, bỏ tiêu đề ghi đè và dùng API Key của workspace đích; gọi lặp không cấp thêm quyền.
Điều kiện: Áp dụng khi yêu cầu có tiêu đề X-Workspace-Id để ghi đè workspace.
Xử lý và thử lại: Kiểm tra mã đích, chủ sở hữu tài nguyên và workspace hiện tại. Không coi đích đã xác nhận thiếu hoặc không truy cập được là lỗi dịch vụ tạm thời để tự thử lại.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 404 · 11004
{ "request_id": "req_example", "error": { "code": "target_workspace_not_found", "numeric_code": "11004", "message": "Target workspace not found" } }- get_auth_state_failed · 20006 · 500
Trạng thái xác thực: dịch vụ không tạo được kết quả truy vấn hợp lệ.
Xử lý và thử lại: Giữ request_id, kiểm tra mã định danh và quyền truy cập của tài khoản. Chỉ thử đọc lại sau khi kiểm tra nguyên nhân; truy vấn thất bại không chứng minh dữ liệu rỗng hay không tồn tại.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 500 · 20006
{ "request_id": "req_example", "error": { "code": "get_auth_state_failed", "numeric_code": "20006", "message": "Failed to get account auth state" } }- get_auth_state_failed · 20020 · 500
Kiểm tra account_id và dùng X-Api-Key của không gian làm việc sở hữu tài khoản. Khóa hiện tại không truy cập được tài khoản không tìm thấy trong không gian này.
Điều kiện: Áp dụng khi không tìm thấy tài khoản; giữ trạng thái HTTP và code của thao tác, dùng numeric_code để làm rõ tài khoản bị thiếu.
Xử lý và thử lại: Kiểm tra mã đích, chủ sở hữu tài nguyên và workspace hiện tại. Không coi đích đã xác nhận thiếu hoặc không truy cập được là lỗi dịch vụ tạm thời để tự thử lại.
JSON minh họa; message thay đổi theo nguyên nhân thực tế · 500 · 20020
{ "request_id": "req_example", "error": { "code": "get_auth_state_failed", "numeric_code": "20020", "message": "Account not found" } }