Skip to content

UBCDUB/ideadateapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Idea-Date API Documentation


Account Creation


/user/create

Functional?: ✅
Type: POST
Consumes:
JSON Object with

  • Name (String)
  • Role (String), one of: 'designer', 'developer', 'project manager'
  • GitHub Username (String)
  • Email Address (String)
  • Description (String)
  • Tech Stack (JSON Array of String)

e.g. call create endpoint for a new user {"Name": "Will", "Role": "developer", "GitHub": "wjwalcher", "Email": "[email protected]", "Description": "A really cool dude 😎", "TechStack": ["c#", "java", "python", "c"]}

Produces:

  • UID to store in cookie for quick 'authentication' purposes

/api/user/edit

Functional?: ❌
Consumes:
JSON Object containing fields of user to edit/update

  • Name (String)
  • Role (String), one of: 'designer', 'developer', 'project manager'
  • GitHub Username (String)
  • Description (String)
  • Tech Stack (List of String) Any of these that are not empty will get updated

e.g. {"Name": "new_name", "Role": "", "GitHub": "", "Description": "", "TechStack": "", "UID": ""} will update only the name of the user

Produces:

  • On success, return code 200 OK
  • On failure, return code 403 UNAUTHORIZED

/api/user/delete

Functional?: ❌
Consumes:
(Hacky and not smart) a 'user id' to delete

Produces:

  • On success, return code 200 OK
  • On failure, return code 403 UNAUTHORIZED

Project Management View


/api/project/create

Functional?: ✅
Consumes:
JSON Object containing

  • Project name (String)
  • GitHub URL (String)
  • Project description (String)
  • Tech Stack (List of String)

Produces:

  • project_uid which should be saved client-side in a cookie to be passed to project-related API calls

e.g. {"Name": "Super Cool Project", "GitHubURL": "https://www.github.com/username/someproject", "Description": "Test Description", "Founder": "Insert Founder's UID here when they create project"}

/api/project/edit

Functional?: ❌
Consumes:
JSON Object containing the fields of edits to be made

  • Project name (String)
  • GitHub URL (String)
  • Project description (String)
  • Tech Stack (List of String) Any of these that are not empty will get updated

Produces:

  • On success, return code 200 OK
  • On failure, return code 403 UNAUTHORIZED

/api/project/delete

Functional?: ❌
Consumes:
(Again, not smart) Project UID (String)

Produces:

  • On success, return code 200 OK
  • On failure, return code 403 UNAUTHORIZED

Collaborator View


/api/collaborator/getprojects/{uid}

Functional?: ✅
Get the next project for a given user. The backend tracks which projects a user has seen so far, and will deliver a new project each time this is called.
Type: GET
Consumes:

  • Collaborator's UID

Produces:
(On success - status code 200 OK)

  • A JSON response containing all the attributes of a project (as specified above)
  • This will also include the unique ID of the project (which you will pass to likeProject and dismissProject)

(On failure, return status code 403 UNAUTHORIZED)

/api/collaborator/likeProject

Functional?: ✅
Type: POST
Consumes:
JSON object containing collaborator's UID and project's UID

Effects:

  • Adds user ID of user to project's like list
  • Adds project ID to user's seen list

e.g. {"User": "2c5f5ccc36fb43f2a38c34af29ff5485", "Project": "f64dab1cae5c4dbb9963254bac298510"}

/api/collaborator/dismissProject

Functional?: ✅
Type: POST
Consumes:
JSON object containing collaborator's UID and project's UID

Effects:

  • Adds project ID to user's seen list

e.g. {"User": "2c5f5ccc36fb43f2a38c34af29ff5485", "Project": "f64dab1cae5c4dbb9963254bac298510"}

Recruiting View


/api/recruiter/{projectId}

Gets all the users (and their info) who liked this project
Functional?: ✅
Returns a list of the users (and user IDs) of the users that liked the given project
Type: GET
Consumes:

  • ProjectId (path variable) of the project to get the likes for

Produces:

  • On success (status code 200 OK), list of JSON objects containing usernames, GitHub profiles, and UIDs of each user

e.g.

    {
        "uid": "2c5f5ccc36fb43f2a38c34af29ff5485",
        "name": "Will",
        "role": "developer",
        "gitHub": "wjwalcher",
        "description": "A really cool guy",
        "email": null,
        "techStack": [
            "java",
            "c#",
            "python"
        ],
        "likedProjects": [
            "f64dab1cae5c4dbb9963254bac298510",
            "bea9d42d1057409dbaa1bd2fa8380e23"
        ],
        "dismissedProjects": []
    }
]

/api/recruiter/likeuser

Functional?: ✅
Type: POST
Consumes:

  • User ID of the user to like

Effects:

  • Sends an email with info to the collaborator

e.g. {"project_uid": "bea9d42d1057409dbaa1bd2fa8380e23","user_uid": "e97a9f7bafbc42b9b1a3adf982c68a8f"}

/api/recruiter/dismissUser

Functional?: ✅
Type: POST
Consumes:

  • User ID of the user to dismiss

Effects:

  • Remove user from project list

e.g. {"project_uid": "bea9d42d1057409dbaa1bd2fa8380e23","user_uid": "e97a9f7bafbc42b9b1a3adf982c68a8f"}

About

Dubhacks 2019 Project API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages