Giter Club home page Giter Club logo

edu-backend's Introduction

Lists of all available requests and what they are return.

Auth


POST: /auth/login

Login to account.

Request

{
  "username": "login",
  "password": "password"
}

Response

  • OK/200
{
  "message": "Successfully logged in.",
  "data": {
    "user": {
      "username": "username",
      "email": "[email protected]",
      "type": "USERTYPE",
      "courses": null, // user courses array
      "avatarPath": null // avatar storing path
    },
    "tokenPair": {
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJlNTJkZDQ4MC0zMGIyLTQ2NGUtYTFmMy0wNjAyZGMxNzkzN2IiLCJpYXQiOjE2NTI3NTA1NDN9.gGLUeTmVTbPAZiplH2Ucl_7owWmpsT19E4Kwc042fgM",
      "refreshToken": "93a7c215-b378-48d8-862c-0f09c33c3dc5"
    }
  }
}
  • Bad Request/400 - Invalid creds
{
  "message": "Invalid username or password"
}

POST: /auth/register

Register new account

Request

{
  "username": "login",
  "password": "password",
  "email": "[email protected]",
  "type": "USERTYPE"
}
  • OK/200
{
  "message": "Successfully register."
}
  • Conflict/409 - User already exist.
{
  "message": "User already exist"
}
  • Bad request/400 - Something not provided.
{
  "message": "Some or one of require field doesn't provided."
}

GET: /auth/logout

Log out from account.

Request

Require: Bearer Token.

Response

  • OK/200
{
  "message": "Successfully logged out"
}
  • Unauthorized/401 - Not logged in
{
  "message": "Log in to your account."
}

User


GET: /user/get

Get info about logged in user

Request

Require: Bearer Token.

Response

  • OK/200
{
  "message": "User data returned successfully",
  "data": {
    "user": {
      "username": "username",
      "email": "[email protected]",
      "type": "USERTYPE",
      "courses": null, // user courses array
      "avatarPath": null // avatar storing path
    }
  }
}
  • Not Found/404 - User not found.
{
  "message": "No such user"
}
  • Unauthorized/401 - Not logged in
{
  "message": "Log in to your account."
}

PATCH: /user/updateUsername

Change username.

Request:

Require: Bearer Token.

{
  "newUsername": "name"
}
  • OK/200
{
  "message": "Username was successfully updated"
}
  • Not Found/404 - User not found.
{
  "message": "No such user"
}
  • Unauthorized/401 - Not logged in
{
  "message": "Log in to your account."
}
  • Bad request/400 - Something not provided.
{
  "message": "Some or one of require field doesn't provided."
}

PATCH: /user/updateUserEmail

Change email.

Request

Require: Bearer Token.

{
  "newEmail": "name"
}
  • OK/200
{
  "message": "Email was successfully updated"
}
  • Not Found/404 - User not found.
{
  "message": "No such user"
}
  • Unauthorized/401 - Not logged in
{
  "message": "Log in to your account."
}
  • Bad request/400 - Something not provided.
{
  "message": "Some or one of require field doesn't provided."
}

PATCH: /user/updateAvatar

Change avatar

Request

Require: Bearer Token

KEY VALUE
userId string
avatar png file

Response

  • OK/200
{
  "message": "Avatar updated successfully"
}
  • Not Found/404 - User not found
{
  "message": "No such user"
}
  • Unauthorized/401 - Not logged in
{
  "message": "Log in to your account."
}

Bad request/400 - Something not provided

{
  "message": "Some or one of require field doesn't provided."
}

PATCH: /user/updateUserPassword

Change password

Request

Require: Bearer Token

	"oldPassword": "oldPassword",
	"newPassword": "newPassword"
  • OK/200
{
  "message": "Password was updated successfully"
}
  • Not Found/404 - User not found
{
  "message": "No such user"
}
  • Unauthorized/401 - Not logged in
{
  "message": "Log in to your account."
}

Bad request/400 - Something not provided.

{
  "message": "Some or one of require field doesn't provided."
}

PATCH: /user/subscribeOnCourse

Subscribe user on course

Request

Require: Bearer Token

{
  "courseId": "courseId"
}

Response

  • OK/200
{
  "message": "Successfully subscribe"
}
  • Unauthorized/401 - Not logged in
{
  "message": "No such user"
}
  • Bad request/400 - Something not provided
{
  "message": "Some or one of require field doesn't provided."
}
  • Not Found/404 - Course not found
{
  "message": "Course doesn't exist."
}
  • Not Found/404 - User not found.
{
  "message": "No such user"
}

Bad Request/400 - Invalid user type

{
  "message": "This course not avaliable"
}

PATCH: /user/unsubscribeOnCourse

Unsubscribe user on course

Request

Require: Bearer Token

{
  "courseId": "courseId"
}

Response

  • OK/200
{
  "message": "Successfully subscribe"
}
  • Unathorized/401 - Not logged in
{
  "message": "No such user"
}
  • Bad request/400 - Something not provided.
{
  "message": "Some or one of require field doesn't provided."
}
  • Not Found/404 - Course not found
{
  "message": "Course doesn't exist."
}
  • Not Found/404 - User not found.
{
  "message": "No such user"
}
  • Bad request/400 - Invalid user type
{
  "message": "This course not avaliable"
}

Course


POST: /course/create

Create course

Request

{
	"name": "course name"
	"description": "course desc"
	"author": "author"
	"userType" "TEACHER"
}

Response

  • OK/200
{
  "message": "Course created successfully"
}
  • Conflict/409 - Course already exist
{
  "message": "Similar course already exist"
}
  • Bad request/400 - Something not provided
{
  "message": "Some or one of require field doesn't provided"
}
  • Bad request/400 - User don't have permission, wrong userType
{
  "message": "You don't have permission for this"
}

PATCH /course/update

Update course information

Request

{
  "courseId": "course id",
  "newDescription": "new description",
  "oldDescription": "old description"
}

Response

  • OK/200
{
  "message": "Course updated successfully"
}
  • Bad request/400 - Something not provided
{
  "message": "Some or one of require field doesn't provided"
}
  • Not Found/404 - Course not found
{
  "message": "Course doesn't exist."
}

GET: /course/get/all

Get all courses in system

  • OK/200
{
  "message": "Course returned successfully",
  "data": [
    {
      "id": "course id",
      "name": "course name",
      "description": "course description",
      "studentCount": 0,
      "author": "course author"
    }
  ]
}
  • Not Found/404 - Course not found
{
  "message": "Course doesn't exist."
}

GET: /course/get/id/:courseId

Get course by courseId

Response

  • OK/200
{
  "message": "Course returned successfully",
  "data": {
    "id": "course id",
    "name": "course name",
    "description": "course description",
    "studentCount": 0,
    "author": "course author"
  }
}
  • Bad request/400 - Something not provided
{
  "message": "Some or one of require field doesn't provided"
}
  • Not Found/404 - Course not found
{
  "message": "Course doesn't exist."
}

GET: /course/get/name/:partcoursename

Search course by part of full name

Response

  • OK/200
{
  "message": "Course returned successfully",
  "data": [
    {
      "id": "078ac9ec-d80e-465f-b460-115466dba709",
      "name": "test",
      "description": "test course",
      "studentCount": 0,
      "author": "admin"
    }
  ]
}
  • Bad request/400 - Something not provided
{
  "message": "Some or one of require field doesn't provided"
}
  • Not Found/404 - Course not found
{
  "message": "Course doesn't exist."
}

GET: /course/get/author/:author

Get courses by specific author

Response

  • OK/200
{
  "message": "Course returned successfully",
  "data": [
    {
      "id": "078ac9ec-d80e-465f-b460-115466dba709",
      "name": "test",
      "description": "test course",
      "studentCount": 0,
      "author": "admin"
    }
  ]
}
  • Bad request/400 - Something not provided
{
  "message": "Some or one of require field doesn't provided"
}
  • Not Found/404 - Course not found
{
  "message": "Course doesn't exist."
}

DELETE: /course/delete

Delete specific course

Request

{
  "courseId": "course id"
}

Response

  • OK/200
{
  "message": "Course deleted successfully"
}
  • Bad request/400 - Something not provided
{
  "message": "Some or one of require field doesn't provided"
}
  • Not Found/404 - Course not found
{
  "message": "Course doesn't exist."
}

Video


POST: /video/upload

Upload video on course

Request

KEY VALUE
video mp4 file
lessonNumber number
courseId string
videoName string

Response

  • OK/200
{
  "message": "Video uploaded successfully.",
  "data": {
    "statusCode": 200,
    "message": "Video uploaded successfully.",
    "success": true,
    "data": {
      "name": "super video",
      "path": "/server/dist/public/texts/testvideo.mp4",
      "lessonNumber": 1,
      "courseId": "078ac9ec-d80e-465f-b460-115466dba709"
    }
  }
}
  • Bad Request/400 - Video file not provided
{
  "message": "Files not provided"
}
  • Bad request/400 - Something not provided
{
  "message": "Some or one of require field doesn't provided"
}
  • Conflict/409 - Video already exist
{
  "message": "Similar video already exist"
}

GET: /video/get/:courseId/:lessonNumber

Get video

Response

  • OK/206 - Partial message

  • Bad Request/400 - Provide range headers

{
  "message": "Requires range headers"
}
  • Not Found/404 - Video not found
{
  "message": "Video isn't exist"
}

DELETE: /video/delete

Delete video

Request

{
  "courseId": "course id",
  "lessonNumber": "lesson number"
}

Response

  • OK/200
{
	"message": "Video deleted successfully.
}
  • Bad request/400 - Something not provided
{
  "message": "Some or one of require field doesn't provided"
}
  • Not Found/404 - Video not found
{
  "message": "Video isn't exist"
}

PATCH: /video/update

Update video information

Request

{
  "courseId": "course id",
  "lessonNumber": "lesson number",
  "newName": "new video name",
  "newLessonNumber": 1 // new lesson number
}

Response

  • OK/200
{
  "message": "Video updated successfully"
}
  • Not Found/404 - Video not found
{
  "message": "Video isn't exist"
}
  • Conflict/409 - Same video name/video already exist
{
  "message": "Similar video already exist"
}

Text


POST: /text/upload

Upload text on course

Request

KEY VALUE
text markdown file
lessonNumber number
courseId string
videoName string

Response

  • OK/200
{
  "message": "Video uploaded successfully.",
  "data": {
    "statusCode": 200,
    "message": "Text uploaded successfully.",
    "success": true,
    "data": {
      "name": "super text",
      "path": "/server/dist/public/texts/supettext.md",
      "lessonNumber": 2,
      "courseId": "078ac9ec-d80e-465f-b460-115466dba709"
    }
  }
}
  • Bad Request/400 - Video file not provided
{
  "message": "Files not provided"
}
  • Bad request/400 - Something not provided
{
  "message": "Some or one of require field doesn't provided"
}
  • Conflict/409 - Video already exist
{
  "message": "Similar text already exist"
}

GET: /text/get/:courseId/:lessonNumber

Get text

Response

  • OK/200 - Partial message
{
	"message": "Text found successfully."
	"data": "markdown text"
}
  • Bad Request/400 - Provide range headers
{
  "message": "Requires range headers"
}
  • Not Found/404 - Video not found
{
  "message": "Text isn't exist"
}

DELETE: /video/delete

Delete text

Request

{
  "courseId": "course id",
  "lessonNumber": "lesson number"
}

Response

  • OK/200
{
	"message": "Text deleted successfully.
}
  • Bad request/400 - Something not provided
{
  "message": "Some or one of require field doesn't provided"
}
  • Not Found/404 - Video not found
{
  "message": "Text isn't exist"
}

PATCH: /video/update

Update video information

Request

{
  "courseId": "course id",
  "lessonNumber": "lesson number",
  "newName": "new text name",
  "newLessonNumber": 1 // new text number
}

Response

  • OK/200
{
  "message": "Text updated successfully"
}
  • Not Found/404 - Video not found
{
  "message": "Text isn't exist"
}
  • Conflict/409 - Same video name/video already exist
{
  "message": "Similar text already exist"
}

edu-backend's People

Contributors

dr3al avatar siyoga avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.