Tài liệu API

Tài liệu này mô tả các endpoint của API cho ứng dụng.

Base URL

https://reactjs-api-unicode.online/api

Tài liệu này cung cấp cái nhìn tổng quan về các endpoint của API. Vui lòng liên hệ với bộ phận hỗ trợ nếu bạn có bất kỳ câu hỏi nào.

1. Đăng nhập

Phương thức: POST

Endpoint: /auth/login

Mô tả: Đăng nhập với email và password.

Tham số:

  • email (string, bắt buộc): Email.
  • password (string, bắt buộc): Mật khẩu.

Body:


{
        "email": "unicode@gmail.com",
        "password": "unicode"
}
        

Response:

200 OK:


{
        "status": "success",
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ...",
        "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2l...",
        "token_type": "bearer"
}
        

2. Đăng ký

Phương thức: POST

Endpoint: /auth/register

Mô tả: Đăng ký tài khoản.

Tham số:

  • name (string, bắt buộc): Tên.
  • email (string, bắt buộc): Email.
  • avatar_path (file): Ảnh đại diện người dùng.
  • password (string, bắt buộc): Mật khẩu.
  • password_confirmation (string, bắt buộc): Xác nhận mật khẩu.

Body:


{
        "name": "Unicode Academy",
        "email": "unicode@gmail.com",
        "avatar_path": {file_avatar},
        "password": "unicode",
        "password_confirmation": "unicode"
}
        

Response:

201 Created:


{
        "status": "success",
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOi...",
        "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX...",
        "token_type": "bearer"
}
        

3. Lấy thông tin profile

Phương thức: GET

Endpoint: /auth/profile

Mô tả: Lấy thông tin profile của người dùng.

Tham số: Không có

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
        "status": "success",
        "data": {
                "id": 1,
                "name": "Unicode Academy",
                "email": "unicodeacademy@gmail.com",
                "avatar_path": {avatar_path}
        }
}
        
    

4. Cập nhật thông tin profile

Phương thức: POST

Tham số:

  • name (string): Tên.
  • email (string): Email.
  • password (string): Mật khẩu.
  • avatar_path (file): Ảnh đại diện người dùng.
  • _method (PUT/PATCH, bắt buộc): phương thức thực hiện.

Header:


Authorization: Bearer {your_token}
        

Body:


{
    "name": "Unicode Academy Update",
    "email": "unicodeacademyupdate@gmail.com",
    "password": "unicode",
    "avatar_path": {file_avatar},
    "_method": PUT/PATCH
}
        

Response:

200 OK:


{
    "status": "success",
    "message": "User updated successfully!"
}
        
    

5. Refresh Token

Phương thức: POST

Endpoint: /auth/refresh

Mô tả: Cấp lại Access Token và Refresh Token mới.

Tham số:

  • refresh_token (string, bắt buộc): Refresh Token.

Body:


{
        "refresh_token": {your_token},
}
        

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
        "status": "success",
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwO...",
        "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjox...",
        "token_type": "bearer"
}
        
    

6. Đăng xuất

Phương thức: POST

Endpoint: /auth/logout

Mô tả: Đăng xuất.

Tham số: Không có

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
        "status": "success",
        "message": "Successfully logged out"
}
        
    

1. Lấy danh sách người dùng

Phương thức: GET

Endpoint: /users

Mô tả: Lấy danh sách tất cả người dùng.

Tham số:

  • page (string, integer): Lấy dữ liệu từng trang, mặc định là trang 1.
  • limit (string, integer): Users ở mỗi trang, mặc định là 10.
  • keyword (string): Từ khóa tìm kiếm.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Users fetched successfully.",
    "data": {
        "current_page": 1,
        "last_page": {last_page},
        "per_page": {user_per_page},
        "total": {total_users},
        "data": [
            {
                "id": 1,
                "name": "Unicode Academy",
                "email": "unicodeacademy@gmail.com",
                "avatar_path": null
            },
            ...
        ]
    }
}
        
    

2. Lấy chi tiết người dùng

Phương thức: GET

Endpoint: /users/{id}

Mô tả: Lấy thông tin chi tiết người dùng.

Tham số:

  • id (string): ID người dùng.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "User fetched successfully.",
    "data": {
        "id": 1,
        "name": "Unicode Academy",
        "email": "unicodeacademy@gmail.com",
        "avatar_path": null
    },
}
        
    

3. Cập nhật thông tin người dùng (???)

Phương thức: POST

Endpoint: /users/{id}

Mô tả: Cập nhật thông tin người dùng.

Tham số:

  • name (string): Tên.
  • email (string): Email.
  • password (string): Mật khẩu.
  • avatar_path (file): Ảnh đại diện người dùng.
  • _method (PUT/PATCH, bắt buộc): phương thức thực hiện.

Header:


Authorization: Bearer {your_token}
        

Body:


{
    "name": "Unicode Academy Update",
    "email": "unicodeacademyupdate@gmail.com",
    "password": "unicode",
    "avatar_path": {file_avatar},
    "_method": PUT/PATCH
}
        

Response:

200 OK:


{
    "status": "success",
    "message": "User updated successfully!",
    "data": {
        "id": 1,
        "name": "Unicode Academy Update",
        "email": "unicodeacademyupdate@gmail.com",
        "avatar_path": {avatar_path}
    }
}
        
    

4. Xóa người dùng {???}

Phương thức: DELETE

Endpoint: /users/{id}

Mô tả: Xóa người dùng.

Tham số:

  • id (string): ID người dùng.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "User deleted successfully!",
    "data": null
}
        
    

5. Lấy danh sách followers

Phương thức: GET

Endpoint: /follows

Mô tả: Lấy danh sách những người mình đã follow.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Follow fetched successfully.",
    "data": [
        {
            "id": 2,
            "name": "Unicode Academy 2",
            "email": "unicodeacademy2@gmail.com",
            "avatar_path": null
        }
    ]
}
        
    

6. Follow hoặc hủy follow

Phương thức: POST

Endpoint: /follows/{id}

Mô tả: Follow hoặc hủy follow user, nếu chưa follow thì sẽ follow và ngược lại.

Tham số:

  • id (string): ID user.

Header:


Authorization: Bearer {your_token}
        

Response:

201 OK:


{
    "status": "success",
    "message": "Unfollowed successfully.",
    "data": null
}
        
    

1. Lấy danh sách bài viết

Phương thức: GET

Endpoint: /posts

Mô tả: Lấy danh sách tất cả bài viết.

Tham số:

  • page (string, integer): Lấy dữ liệu từng trang, mặc định là trang 1.
  • limit (string, integer): Posts ở mỗi trang, mặc định là 10.
  • keyword (string): Từ khóa tìm kiếm.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Retrieve all posts successfully!",
    "data": {
        "current_page": 1,
        "last_page": {last_page},
        "per_page": {post_per_page},
        "total": {total_posts},
        "data": [
            {
                "id": 1,
                "content": "Post 1",
                "total_favorites": 0,
                "total_comments": 0,
            },
            ...
        ]
    }
}

    

2. Lấy danh sách bài viết của 1 user

Phương thức: GET

Endpoint: /posts/user/{user_id}

Mô tả: Lấy danh sách tất cả bài viết của 1 user cụ thể.

Tham số:

  • user_id (string, integer): ID user.
  • page (string, integer): Lấy dữ liệu từng trang, mặc định là trang 1.
  • limit (string, integer): Posts ở mỗi trang, mặc định là 10.
  • keyword (string): Từ khóa tìm kiếm.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Retrieve all posts successfully!",
    "data": {
        "current_page": 1,
        "last_page": {last_page},
        "per_page": {post_per_page},
        "total": {total_posts},
        "data": [
            {
                "id": 1,
                "content": "Post 1",
                "total_favorites": 0,
                "total_comments": 0,
            },
            ...
        ]
    }
}

    

3. Lấy chi tiết bài viết

Phương thức: GET

Endpoint: /posts/{post_id}

Mô tả: Lấy chi tiết bài viết.

Tham số:

  • post_id (string, integer): ID bài viết.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Retrieve all posts successfully!",
    "data": {
        "id": 1,
        "content": "Post 1",
        "total_favorites": 0,
        "total_comments": 0,
        "user": null
    }
}

    

4. Tạo bài viết

Phương thức: POST

Endpoint: /posts

Mô tả: Tạo bài viết.

Header:


Authorization: Bearer {your_token}
        

Tham số:

  • content (string, bắt buộc): Refresh Token.
  • images (array): Mảng chứa các file ảnh.
  • videos (array): Mảng chứa các file video.

Body:


{
    "content": Unicode Academy,
    "images": [{file_image}],
    "videos": [{file_video}]
}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Post published successfully!",
    "data": null
}

    

5. Cập nhật bài viết

Phương thức: POST

Endpoint: /posts/{post_id}

Mô tả: Cập nhật bài viết.

Tham số:

  • post_id (string, integer, bắt buộc): ID bài viết.
  • _method (PUT/PATCH, bắt buộc): Phương thức thực hiện.
  • content (string): Nội dung bài viết.
  • images (array): Mảng chứa các file ảnh.
  • videos (array): Mảng chứa các file video.
  • keep_images (string): Mảng chứa các id ảnh cần giữ lại, không có sẽ xóa.
  • keep_videos (string): Mảng chứa các id video cần giữ lại, không có sẽ xóa.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Post updated successfully.",
    "data": null
}

    

6. Xóa bài viết

Phương thức: DELETE

Endpoint: /posts/{post_id}

Mô tả: Xóa bài viết.

Tham số:

  • post_id (string, integer): ID bài viết muốn xóa.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Post deleted successfully.",
    "data": null
}

    

7. Lấy danh sách bài viết đã thích

Phương thức: GET

Endpoint: /like/list

Mô tả: Lấy danh sách những bài viết đã thêm vào yêu thích của mình.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Retrieve post successfully!",
    "data": [
        "current_page": 1,
        "last_page": {last_page},
        "per_page": {post_per_page},
        "total": {total_posts},
        "data": [
            {
                "id": 1,
                "content": "Post 1",
                "favorites_count": 0,
                "comments_count": 0,
            },
            ...
        ]
    ]
}
        
    

8. Thích hoặc bỏ thích bài viết

Phương thức: POST

Endpoint: /posts/{post_id}/like

Mô tả: Thích hoặc bỏ thích bài viết, nếu bài viết chưa thích thì sẽ thêm vào yêu thích và ngược lại.

Tham số:

  • post_id (string, integer): ID bài viết.

Header:


Authorization: Bearer {your_token}
        

Response:

201 OK:


{
    "status": "success",
    "message": "Post liked successfully.",
    "data": null
}

    

9. Lấy danh sách bài viết đã lưu

Phương thức: GET

Endpoint: /like/list

Mô tả: Lấy danh sách những bài viết đã lưu của mình.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Retrieve post successfully!",
    "data": [
        "current_page": 1,
        "last_page": {last_page},
        "per_page": {post_per_page},
        "total": {total_posts},
        "data": [
            {
                "id": 1,
                "content": "Post 1",
                "favorites_count": 0,
                "comments_count": 0,
            },
            ...
        ]
    ]
}
        
    

8. Lưu hoặc bỏ lưu bài viết

Phương thức: POST

Endpoint: /posts/{post_id}/saved

Mô tả: Thích hoặc bỏ thích bài viết, nếu bài viết chưa thích thì sẽ thêm vào yêu thích và ngược lại.

Tham số:

  • post_id (string, integer): ID bài viết.

Header:


Authorization: Bearer {your_token}
        

Response:

201 OK:


{
    "status": "success",
    "message": "Post saved successfully.",
    "data": null
}

    

9. Lấy Metadata

Phương thức: GET

Endpoint: /posts/share/link

Mô tả: Lấy các thẻ Metadata.

Tham số:

  • url (string, bắt buộc): Đường dẫn muốn lấy.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Get metadata successfully.",
    "data": {
        "og:title": "Open Graph protocol",
        "og:type": "website",
        "og:url": "https://ogp.me/",
        "og:image": "https://ogp.me/logo.png",
        "og:image:type": "image/png",
        "og:image:width": "300",
        "og:image:height": "300",
        "og:image:alt": "The Open Graph logo",
        "og:description": "The Open Graph protocol enables any web page to become a rich object in a social graph."
    }
}

    

1. Lấy chi tiết bình luận

Phương thức: GET

Endpoint: /posts/comment/{comment_id}

Mô tả: Lấy chi tiết bình luận.

Tham số:

  • comment_id (string, integer): ID Comment.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Comment fetched successfully.",
    "data": {
        "id": 18,
        "content": "hihi",
        "favorites_count": 1
    }
}
        
    

2. Tạo bình luận

Phương thức: POST

Endpoint: /posts/{post_id}/comment

Mô tả: Tạo bình luận.

Tham số:

  • post_id (string, integer): ID Bài viết.

Header:


Authorization: Bearer {your_token}
        

Tham số:

  • parent_id (number): Bình luận cha (Mặc định là 0).
  • content (string, bắt buộc): Refresh Token.
  • images (array): Mảng chứa các file ảnh.
  • videos (array): Mảng chứa các file video.

Body:


{
    "parent_id": 0,
    "content": Unicode Academy,
    "images": [{file_image}],
    "videos": [{file_video}]
}
        

Response:

201 OK:


{
    "status": "success",
    "message": "Comment published successfully.",
    "data": null
}
        
    

3. Cập nhật bình luận

Phương thức: POST

Endpoint: /posts/comment/{comment_id}

Mô tả: Cập nhật comment.

Tham số:

  • comment_id (string, integer, bắt buộc): ID Comment.
  • _method (PUT/PATCH, bắt buộc): Phương thức thực hiện.
  • content (string): Nội dung comment.
  • images (array): Mảng chứa các file ảnh.
  • videos (array): Mảng chứa các file video.
  • keep_images (string): Mảng chứa các id ảnh cần giữ lại, không có sẽ xóa.
  • keep_videos (string): Mảng chứa các id video cần giữ lại, không có sẽ xóa.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Comment updated successfully.",
    "data": null
}

    

4. Xóa bình luận

Phương thức: DELETE

Endpoint: /posts/comment/{comment_id}

Mô tả: Xóa bình luận.

Tham số:

  • comment_id (string, integer): ID Comment.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Comment deleted successfully.",
    "data": null
}
        
    

5. Thích hoặc bỏ thích bình luận

Phương thức: POST

Endpoint: /posts/comment/{comment_id}/like

Mô tả: Thích hoặc bỏ thích bình luận, chưa thích sẽ thêm vào danh sách yêu thích và ngược lại.

Tham số:

  • comment_id (string, integer): ID Comment.

Header:


Authorization: Bearer {your_token}
        

Response:

200 OK:


{
    "status": "success",
    "message": "Comment liked successfully.",
    "data": null
}