Login
Mutation · login
login(input: LoginInput!): AuthPayload!
Đăng nhập tài khoản dùng mật khẩu sau khi email đã được xác minh. Khi thành công, API tạo một phiên mới gồm access token và refresh token.
Gửi qua HTTP POST /graphql. Không cần access token hoặc quyền thành viên workspace/conversation. Các mutation xác thực dùng chung giới hạn 20 lần/phút theo IP trên mỗi tiến trình API; vượt giới hạn trả RATE_LIMITED.
Input
| Đối số | Kiểu GraphQL | Bắt buộc | Ý nghĩa |
|---|---|---|---|
input | LoginInput! | Có | Thông tin đăng nhập; schema không khai báo giá trị mặc định. |
LoginInput
| Trường | Kiểu GraphQL | Bắt buộc | Quy tắc |
|---|---|---|---|
email | String! | Có | Email hợp lệ, tối đa 254 ký tự. Server chuyển thành chữ thường khi tìm tài khoản. |
password | String! | Có | Từ 1 đến 72 ký tự và không quá 72 byte UTF-8. |
rememberMe | Boolean | Không | Bỏ qua hoặc gửi null đều được xử lý như true (đây là hành vi server, không phải mặc định trong schema). true dùng JWT_REFRESH_TTL, mặc định 30 ngày; false dùng JWT_SESSION_TTL, mặc định 12 giờ và không dài hơn JWT_REFRESH_TTL. Với false, client nên chỉ giữ token trong phiên trình duyệt. |
Output
Trả về AuthPayload!: một đối tượng không null khi thành công.
AuthPayload
| Trường | Kiểu GraphQL | Ý nghĩa |
|---|---|---|
accessToken | String! | JWT dùng cho yêu cầu tiếp theo; thời hạn theo JWT_ACCESS_TTL, mặc định 15 phút. |
refreshToken | String! | Token của phiên mới, dùng với refreshToken. |
user | UserProfile! | Hồ sơ người dùng; xem UserProfile. |
UserProfile
| Trường | Kiểu GraphQL | Ý nghĩa |
|---|---|---|
id | ID! | ID người dùng. |
username | String! | Tên người dùng. |
displayName | String! | Tên hiển thị. |
email | String! | Email của tài khoản. |
avatarUrl | String | URL ảnh đại diện hoặc null. |
Ví dụ
mutation Login($input: LoginInput!) {
login(input: $input) {
accessToken
refreshToken
user { id username displayName email avatarUrl }
}
}
Biến:
{
"input": {
"email": "[email protected]",
"password": "example-password-123",
"rememberMe": false
}
}
Phản hồi minh họa:
{
"data": {
"login": {
"accessToken": "example.access.token",
"refreshToken": "example-refresh-token",
"user": {
"id": "user_123",
"username": "lan_nguyen",
"displayName": "Lan Nguyễn",
"email": "[email protected]",
"avatarUrl": null
}
}
}
}
Sai email hoặc mật khẩu trả UNAUTHENTICATED. Mật khẩu đúng nhưng email chưa xác minh trả EMAIL_NOT_VERIFIED. Đầu vào không hợp lệ trả BAD_USER_INPUT.
Chữ ký operation được tạo từ GraphQL schema.