Skip to content

Latest commit

 

History

History
693 lines (619 loc) · 13.6 KB

API_DOCS.md

File metadata and controls

693 lines (619 loc) · 13.6 KB

All the APIs except register api are intercepted and checked for token either via cookie as below:

access_token=********; Path=/; Domain=jira-clone.com; HttpOnly; Expires=Mon, 04 Apr 2022 15:55:06 GMT;

OR as a Authentication Header

Authorization: Bearer ********.

Backend APIs Endpoints

  • Any request that goes without token gets 401 status code in reply and response as follows:

    {
    "message": "ACTION_NOT_AUTHORIZED",
    "status": false
    }
    
  • Any request with expired token gets 400 status code in reply and response as follows:

    {
    "message": "EXPIRED_TOKEN",
    "status": false
    }
    
  • Create Projects
    Request Format -

	POST /api/project/create
	{
        "name" :"Project 6"
    }

           Response Format -

    {
        "message": "",
        "resp": {
            "project_name": "Project 6",
            "project_id": 7,
            "created_at": "2022-04-02T01:41:11.449013-04:00"
        },
    "status": true
    }

  • List Projects
    Request Format -
	POST /api/project/list

           Response Format -

         {
        "message": "",
        "resp": {
            "projects": [
                {
                    "name": "Project 1",
                    "id": 1,
                    "created_at": "2022-03-23T15:05:23.536313-04:00",
                    "user_role": 1
                },
                {
                    "name": "Project 5",
                    "id": 5,
                    "created_at": "2022-03-31T19:12:09.045909-04:00",
                    "user_role": 1
                },
                {
                    "name": "Project Sample PS1",
                    "id": 6,
                    "created_at": "2022-04-01T18:33:53.976626-04:00",
                    "user_role": 1
                },
                {
                    "name": "Project 6",
                    "id": 7,
                    "created_at": "2022-04-02T01:41:11.449013-04:00",
                    "user_role": 1
                }
            ]
        },
        "status": true
    }

  • To get a project's info
    Request Format -
    GET /api/project/info
    {
     "project_id": 6,
    }

           Response Format -

    {
        "message": "",
        "resp": {
            "project_id": 6,
            "project_name": "Project Sample PS1",
            "owner_uname": "pypalkar23",
            "owner_id": 1,
            "owner_fname": "Mandar",
            "owner_lname": "Palkar",
            "created_at": "2022-04-01T18:33:53.976626-04:00"
        },
        "status": true
    }

  • Delete a Project
    Request Format -
    POST /api/project/delete
    {
        "project_id": 7,
    }

           Response Format -

    {
        "message": "PROJECT_DELETE_SUCCESS",
        "resp": "",
        "status": true
    }
  • List Members
    Request Format -
    POST /api/project/members
    {
        "project_id": 1,
    }

           Response Format -

    {
    "message": "",
    "resp": {
        "members": [
            {
                "user_id": 1,
                "first_name": "Mandar",
                "last_name": "Palkar",
                "user_role": 1
            },
            {
                "user_id": 2,
                "first_name": "Ashish",
                "last_name": "Mhaske",
                "user_role": 2
            }
        ]
    },
    "status": true
}
  • View Project Stats
    Request Format -
    POST /api/project/stats
    {
        "project_id": 1,
    }

           Response Format -

    {
        "message": "",
        "resp": {
            "member_count": 2,
            "issue_count": 3,
            "comment_count": 1
        },
        "status": true
    }
  • Create Sprints
    Request Format -
	POST /api/sprint/create
	{   
        "sprint_name" :"Sprint 5",
        "project_id" : 1,
        "start_date": "2021-03-07",
        "end_date" : "2021-03-21"
    }

           Response Format -

	{
    "message": "",
    "resp": {
        "sprint_name": "Sprint 5",
        "sprint_id": 6
    },
    "status": true
    }

  • List Sprints
    Request Format -
	GET /api/sprint/list
	{
    	  "project_id":1
	}

           Response Format -

{
    "message": "",
    "resp": {
        "sprints": [
            {
                "name": "Sprint 1",
                "id": 1,
                "start_date": "2021-03-06T00:00:00Z",
                "end_date": "2021-03-21T00:00:00Z",
                "created_at": "2022-03-23T15:23:01.116584-04:00",
                "project_id": 1
            },
            {
                "name": "Sprint 3",
                "id": 3,
                "start_date": "2021-03-07T00:00:00Z",
                "end_date": "2021-03-21T00:00:00Z",
                "created_at": "2022-03-29T19:55:12.21721-04:00",
                "project_id": 1
            }
        ]
    },
    "status": true
}

  • To get a sprint's info
    Request Format -
    POST /api/sprint/info
    {   
        "sprint_id" :3
    }

           Response Format -

    {
        "message": "",
        "resp": {
            "sprint_id": 3,
            "sprint_name": "Sprint 1",
            "created_at": "2022-03-29T19:55:12.21721-04:00",
            "start_date": "2021-03-07T00:00:00Z",
            "end_date": "2021-03-21T00:00:00Z"
        },
        "status": true
    }

  • Delete a Sprint
    Request Format -
    POST /api/sprint/delete
    {
     "sprint_id": 6,
    }

           Response Format -

    {
        "message": "SPRINT_DELETE_SUCCESS",
        "resp": "",
        "status": true
    }

  • To list issues for sprint
    Request Format -
    GET api/issue/list
    {
        "sprint_id": 1
    }

           Response Format -

    {
        "message": "",
        "resp": {
            "issues": [
                {
                    "issue_id": 1,
                    "title": "issue title",
                    "status": 1,
                    "created_at": "2022-03-23T16:39:17.532173-04:00"
                },
                {
                    "issue_id": 4,
                    "title": "issue title 4",
                    "status": 1,
                    "created_at": "2022-03-29T22:53:55.005758-04:00"
                },
                {
                    "issue_id": 5,
                    "title": "sample issue title",
                    "status": 1,
                    "created_at": "2022-04-02T02:01:04.593536-04:00"
                }
            ]
        },
        "status": true
    }

  • To Create an Issue. Request Format -
    POST /api/issue/create
   {    
        "issue_title":"sample issue title",
        "issue_description": "sample issue description",
        "issue_type": 1,
        "creator": 2,
        "assignee": 1,
        "sprint_id": 1,
        "project_id": 1
    }

           Response Format -

    {
        "message": "",
        "resp": {
            "issue_id": 0,
            "issue_title": "sample issue title",
            "issue_description": "sample issue description",
            "issue_type": 1,
            "creator_name": "amhaske32",
            "assignee_name": "pypalkar23",
            "created_at": "2022-04-02T02:01:04.593536-04:00",
            "issue_status": 1
        },
        "status": true
    }


  • To get a issue’s info
    Request Format -
    POST api/issue/info
    {
        "issue_id": 3
    }

           Response Format -

    {
        "message": "",
        "resp": {
            "issue_id": 3,
            "title": "Sample Issue Edited 1",
            "type": 1,
            "sprint_id": 3,
            "sprint_name": "Sprint 1",
            "project_id": 1,
            "description": "Sample Text Edited 5",
            "assignee_id": 1,
            "assignee_name": "pypalkar23",
            "creator_id": 2,
            "creator_name": "amhaske32",
            "created_at": "2022-03-23T18:05:00.58531-04:00",
            "project_name": "Project 1",
            "issue_status": 2
        },
        "status": true
    }

  • To delete an issue
    Request Format -
    POST /api/issue/delete
    {
        "issue_id": 4
    }

           Response Format -

    {
        "message": "ISSUE_DELETE_SUCCESS",
        "resp": "",
        "status": true
    }
  • To update an issue
    Request Format -
    POST /api/issue/update
    {
        "issue_id": 3,
        "issue_title": "Sample Issue Edited 1",
        "issue_description": "Sample Text Edited 5",
        "issue_type": 1,
        "creator": 1,
        "assignee": 2,
        "sprint_id": 3,
        "project_id": 1
    }   

           Response Format -

    {
        "message": "ISSUE_UPDATE_SUCCESS",
        "resp": {},
        "status": true
    }
  • To update an issue
    Request Format -
    POST /api/issue/move
    {
        "issue_id":3,
	    "project_id":1,
	    "status":2
    }

           Response Format -

    {
        "message": "ISSUE_UPDATE_SUCCESS",
        "resp": {},
        "status": true
    }
  • To Register a User
    Request Format -
    POST /register
    {
        "username": "dipesh97",
        "password": "1c1d15237b2433f18f588d8bf6984751",
        "firstname": "Dipesh",
        "lastname": "Palkar",
        "email_id": "[email protected]"
    }

           Response Format -

    {
        "message": "REGISTERATION_SUCCESSFUL",
        "resp": "",
        "status": true
    }

  • To Login
    Request Format -
    POST /login
    {
        "username":"pypalkar23",
        "password":"**********"
    }

           Response Format -

   {
        "message": "LOGIN_SUCCESSFUL",
        "resp": {
            "access_token": "******"
        },
        "status": true
    }

  • To Add Comments To An Issue
    Request Format -
    POST /api/comment/add
    {
        "issue_id": 3,
        "comment": "This is a comment for issue_id: 3"
    }

           Response Format -

    {
        "message": "",
        "resp": {
            "comment" : "This is a comment for issue_id: 3"
        },
        "status": true
    }

  • View Comments
    Request Format -
    POST /api/comment/view
    {
        "issue_id": 3
    }

           Response Format -

   {
        "message": "",
        "resp": {
            "comments": [
                {
                    "comment_id": 1,
                    "comment": "This is a comment for issue_id: 3"
                }
            ]
        },
        "status": true
    }

  • View User Profile
    Request Format -
    GET /api/user/info

           Response Format -

   {
        "message": "USER_FOUND",
        "resp": {
            "user_id": 0,
            "username": "vaish1",
            "firstname": "v1",
            "lastname": "d1",
            "email_id": "[email protected]"
        },
        "status": true
    }

  • Update User Profile
    Request Format -
    PATCH /api/user/info
    {
        "username": "vaish4.",
        "firstname": "v4",
        "lastname": "d4",
        "email_id": "[email protected]"
    }
    

           Response Format -

   {
        "message": "USER_PROFILE_UPDATE_SUCCESS",
        "resp": {
            "user_id": 0,
            "username": "vaish4.",
            "firstname": "v4",
            "lastname": "d4",
            "email_id": "[email protected]"
        },
        "status": true
    }

  • Change Password
    Request Format -
    PUT /api/user/change-password
    {
        "old_password": "e807f1fcf82d132f9bb018ca6738a19f",
        "new_password": "e10adc3949ba59abbe56e057f20f883e"
    }
    

           Response Format -

   {
        "message": "PASSWORD_CHANGE_SUCCESSFUL",
        "resp": "",
        "status": true
    }

  • Send User Invite
    Request Format -
    POST /api/user/invite
    {
        "email_id":"[email protected]",
        "project_id": 1
    }

           Response Format -

   {
        "message": "INVITATION_SENT",
        "resp": {},
        "status": true
    }

  • Accept User Invite
    Request Format -
    POST /api/user/verify
    {
        "invite_link":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJFbWFpbElkIjoibWFuZHlwYWxrYXJAZ21haWwuY29tIiwiUHJvamVjdElkIjoxLCJleHAiOjE2NDk2NTgxNTgsImlhdCI6MTY0OTY1ODE1OH0.v1Dx1E9DB5IqfaiiGlS7vzgKpfN1Pk1deyzx6V4-KZbl4"
    }

           Response Format -

   {
        "message": "INVITATION_ACCEPTED",
        "resp": {}
        "status": true
    }