{"id":20115549,"url":"https://github.com/mutualmobile/harvestapispring","last_synced_at":"2025-03-02T19:19:21.486Z","repository":{"id":37823283,"uuid":"495298342","full_name":"mutualmobile/HarvestAPISpring","owner":"mutualmobile","description":null,"archived":false,"fork":false,"pushed_at":"2022-06-16T08:48:12.000Z","size":267,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-13T06:26:34.655Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mutualmobile.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-23T07:15:15.000Z","updated_at":"2022-06-09T07:04:22.000Z","dependencies_parsed_at":"2022-08-19T15:40:28.954Z","dependency_job_id":null,"html_url":"https://github.com/mutualmobile/HarvestAPISpring","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mutualmobile%2FHarvestAPISpring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mutualmobile%2FHarvestAPISpring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mutualmobile%2FHarvestAPISpring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mutualmobile%2FHarvestAPISpring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mutualmobile","download_url":"https://codeload.github.com/mutualmobile/HarvestAPISpring/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241557463,"owners_count":19981919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T18:35:37.383Z","updated_at":"2025-03-02T19:19:21.461Z","avatar_url":"https://github.com/mutualmobile.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Harvest API\n\nThis repo showcase API development using Spring-Boot Technology stack using pure Kotlin.\nCurrently, the APIs are in WIP and being used in this [HarvestKMM](\"https://github.com/mutualmobile/HarvestTimeKMP)\nproject.\n\n**Servers**\n\n| Name       | URL                                            | Description                                                                       |\n|:-----------|:-----------------------------------------------|:----------------------------------------------------------------------------------|\n| Production | WIP                                            | The public API server                                                             |\n| Staging    | https://harvestkmp.mmharvest.com/api/v1/public | The master branch automatically deploys to the staging server after every commit. |\n\n# Contents\n\n- [Getting Started](#-getting-started)\n- [Spring Framework](#-spring-frameworks-used)\n- [Prerequisite](#-prerequisite)\n- [TODO](#-todo)\n- [API References](#-api-references)\n\n## Getting started\n-----------\n\n1. Clone this project\n2. Run following command\n   ```sh\n   mvn install\n   ```\n3. Run project and Enjoy!\n   ```sh\n   mvn spring-boot:run\n   ```\n\n## Spring Frameworks used\n----------\n\n1. [Spring Boot](https://projects.spring.io/spring-boot/)\n2. [Spring Boot Actuator](https://spring.io/guides/gs/actuator-service/)\n3. [Spring Data JPA](https://docs.spring.io/spring-data/jpa/docs/current/reference/html/)\n4. [Spring Data REST](https://projects.spring.io/spring-data-rest/)\n5. [Hibernate](http://hibernate.org/)\n6. [Spring REST Docs](https://projects.spring.io/spring-restdocs/)\n\n## Prerequisite\n-------------\n\n1. Kotlin\n2. H2 DB\n3. Maven\n\n## TODO\n--------------\n\n# API References\n--------------------- \n\n- [Auth Api](#auth-api)\n- [Forgot Password Api](#forgot-password-api)\n- [Organization Api](#organization-api)\n- [Organization Projects Api](#organization-projects-api)\n- [Organization Users Api](#organization-users-api)\n- [User project Api](#user-project-api)\n- [User Work Api](#user-work-api)\n\n### Auth Api\n\n- [Login User](#-login-user)\n- [Register User / SignUp User](#-register-user)\n- [Logout user](#-logout-user)\n- [Change Password](#-change-password)\n- [Get User](#-get-user)\n- [Update User](#-update-user)\n- [Fcm Token](#-fcm-token)\n- [Refresh Token](#-refresh-token)\n\n--------------\n### Login User\n--------------\n\n```HTTP\nPOST BASE_URL/api/v1/public/login\n```\n\n**Request Body**\n\n| param    | type     | Description                             |\n|:---------|:---------|:----------------------------------------|\n| Email    | `String` | Users official email id.                |\n| Password | `String` | Password, which user set while sign up. |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n  \"token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhNTA1MjYwZi03YmZhLTRiZDUtODBjZS04MDBmOGE0M2IzZmMiLCJpYXQiOjE2NTM5Mzg2NzUsImV4cCI6MTY1Mzk0MjI3NX0.1CydFVIwoWq4gaqUhhEBy9XpQVaed-XW0s9qn0uFkUIg4h3WXiQkZrYUqULU0ZxeFMX1jfEMqO9FtTwt3zD5Zw\",\n  \"message\": \"User logged in Successfully\",\n  \"refreshToken\": \"958ede86-163c-4e80-8d8f-ed81ff1d7421\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| token        | `String` | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n| message      | `String` | Returns info for every type of request.                                               |\n| refreshToken | `String` | Unique Token for each user                                                            |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n--------------\n### Register User\n--------------\n\n```HTTP\nPOST BASE_URL/api/v1/public/signup\n```\n\n**Request Body**\n\n1. For New Organization User SignUp -\u003e\n\n```ts\n{\n    \"email\":\"yugesh@mutualmobile.com\",\n    \"password\":\"password\",\n    \"firstName\":\"Yugesh\",\n    \"lastName\":\"Jain\",\n    \"harvestOrganization\":{\n        \"name\":\"mm\",\n        \"website\":\"mm.com\",\n        \"identifier\":\"com.mm.org\"\n    }\n}\n```\n\n| param               | type                  | Description                             |\n|:--------------------|:----------------------|:----------------------------------------|\n| email               | `String`              | Users official email id.                |\n| password            | `String`              | Password, which user set while sign up. |\n| firstName           | `String`              | First Name of the user Signing Up       |\n| lastName            | `String`              | Last Name of the user Signing Up        |\n| harvestOrganization | `HarvestOrganization` | Organization Details                    |\n| name                | `String`              | User's Organization Name                |\n| website             | `String`              | Web Address for the Organization        |\n| identifier          | `String`              | Unique Identifier for the Organization  |\n\n2. For Existing Organization User SignUp -\u003e\n\n```ts\n{\n    \"email\":\"yugesh@mutualmobile.com\",\n    \"password\":\"password\",\n    \"firstName\":\"Yugesh\",\n    \"lastName\":\"Jain\",\n    \"orgId\": \"151d11a3-780d-4f03-bbad-889bd3707b02\",\n    \"role\": String,\n}\n```\n\n| param     | type                  | Description                                                    |\n|:----------|:----------------------|:---------------------------------------------------------------|\n| email     | `String`              | Users official email id.                                       |\n| password  | `String`              | Password, which user set while sign up.                        |\n| firstName | `String`              | First Name of the user Signing Up                              |\n| lastName  | `String`              | Last Name of the user Signing Up                               |\n| orgId     | `String`              | Auto Generated Unique ID assigned to the Organization          |\n| role      | `String`              | Role of user in the organization like Admin or normal employee |\n\n**Response**\n\n1. When -\u003e 200 OK : Registration Successful! Please verify your email before getting started!\n\n```ts\n{\n   \"message\": \"Registration Successful! Please verify your email before getting started!\",\n   \"data\": {\n      \"id\": \"f8296e81-6d5b-4a5e-9de4-9d60459a1997\",\n      \"firstName\": \"Yugesh\",\n      \"lastName\": \"Jain\",\n      \"email\": \"yugesh@mutualmobile.com\",\n      \"modifiedTime\": \"Sat Jun 04 12:03:52 UTC 2022\",\n      \"orgId\": \"151d11a3-780d-4f03-bbad-889bd3707b02\",\n      \"harvestOrganization\": {\n         \"name\": \"mm\",\n         \"website\": \"mm.com\",\n         \"id\": \"151d11a3-780d-4f03-bbad-889bd3707b02\",\n         \"identifier\": \"com.mm.org\"\n      }\n   }\n}\n```\n\n| param               | type                  | Description                                           |\n|:--------------------|:----------------------|:------------------------------------------------------|\n| message             | `String`              | Returns info for every type of request.               |\n| data                | `Data`                | Details of the User Just Signed Up                    |\n| id                  | `String`              | Auto Generated Unique ID assigned to a User           |\n| firstName           | `String`              | First Name of the User Just Signed Up                 |\n| lastName            | `String`              | Last Name of the User Just Signed Up                  |\n| email               | `String`              | Email of the User Just Signed Up                      |\n| modifiedTime        | `String`              | Time of successful Signup                             |\n| orgId               | `String`              | Auto Generated Unique ID assigned to the Organization |\n| harvestOrganization | `HarvestOrganization` | Organization Details                                  |\n| name                | `String`              | User's Organization Name                              |\n| website             | `String`              | Auto Generated Unique ID assigned to the Organization |\n| id                  | `String`              | Returns info for every type of request.               |\n| identifier          | `String`              | Unique Identifier for the Organization                |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n--------------\n### Logout User\n--------------\n\n```HTTP\nPOST BASE_URL/api/v1/logout\n```\n\n**Request Body**\n\n```ts\n{\n    \"userId\": String\n}\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param        | type                  | Description                                                                           |\n|:-------------|:----------------------|:--------------------------------------------------------------------------------------|\n| userId       | `String`              | Auto Generated Unique ID assigned to a User                                           |\n| Bearer Token | `String`              | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK : Registration Successful! Please verify your email before getting started!\n\n```ts\n{\n   \"message\": \"Logged Out Successfully!!\"\n}\n```\n\n| param               | type                  | Description                                           |\n|:--------------------|:----------------------|:------------------------------------------------------|\n| message             | `String`              | Returns info for every type of request.               |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n--------------\n### Change Password\n--------------\n\n```HTTP\nPOST BASE_URL/api/v1/changePassword\n```\n\n**Request Body**\n\n```ts\n{\n    \"password\": String,\n    \"oldPassword\": String\n}\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| password     | `String` | New Password that we want to set for the account Logged in                            |\n| oldPassword  | `String` | Existing Password of the account Logged in                                            |\n| Bearer Token | `String` | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK : Password Changed\n\n```ts\n{\n   \"message\": String\n}\n```\n\n| param               | type                  | Description                                           |\n|:--------------------|:----------------------|:------------------------------------------------------|\n| message             | `String`              | Returns info for every type of request.               |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n--------------\n### Get User\n--------------\n\n```HTTP\nGET BASE_URL/api/v1/user\n```\n\n**Request Body**\n\n```ts\n   No Body\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param        | type                  | Description                                                                           |\n|:-------------|:----------------------|:--------------------------------------------------------------------------------------|\n| Bearer Token | `String`              | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK : Password Changed\n\n```ts\n{\n   \"message\": String,\n   \"data\":{\n      \"email\": String,\n      \"firstName\": String,\n      \"id\": String,\n      \"lastName\": String,\n      \"modifiedTime\": String,\n      \"orgId\": String,\n      \"role\": String\n   }   \n}\n```\n\n| param        | type                  | Description                                           |\n|:-------------|:----------------------|:------------------------------------------------------|\n| message      | `String`              | Returns info for every type of request.               |\n| data         | `Data`                | Details of the User Just Signed Up                    |\n| id           | `String`              | Auto Generated Unique ID assigned to a User           |\n| firstName    | `String`              | First Name of the User Just Signed Up                 |\n| lastName     | `String`              | Last Name of the User Just Signed Up                  |\n| email        | `String`              | Email of the User Just Signed Up                      |\n| modifiedTime | `String`              | Time of successful Signup                             |\n| orgId        | `String`              | Auto Generated Unique ID assigned to the Organization |\n| role         | `String`              | Role of the user in the Organization                  |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n--------------\n### Update User\n--------------\n\n```HTTP\nPUT BASE_URL/api/v1/user\n```\n\n**Request Body**\n\n```ts\n{\n   \"id\": \"f8296e81-6d5b-4a5e-9de4-9d60459a1997\",\n   \"firstName\": \"Yugesh\",\n   \"lastName\": \"Jain\",\n   \"email\": \"yugesh@mutualmobile.com\",\n   \"orgId\": \"151d11a3-780d-4f03-bbad-889bd3707b02\",\n   \"role\": String,\n   \"pushToken\": String,\n   \"profilePic\": String,\n   \"harvestOrganization\": {\n      \"name\": \"mm\",\n      \"website\": \"mm.com\",\n      \"id\": \"151d11a3-780d-4f03-bbad-889bd3707b02\",\n      \"identifier\": \"com.mm.org\"\n   }\n}]\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param               | type                  | Description                                                                           |\n|:--------------------|:----------------------|:--------------------------------------------------------------------------------------|\n| id                  | `String`              | Auto Generated Unique ID assigned to a User                                           |\n| firstName           | `String`              | First Name of the User Just Signed Up                                                 |\n| lastName            | `String`              | Last Name of the User Just Signed Up                                                  |\n| email               | `String`              | Email of the User Just Signed Up                                                      |\n| orgId               | `String`              | Auto Generated Unique ID assigned to the Organization                                 |\n| role                | `String`              | Role of user in the organization like Admin or normal employee                        |\n| pushToken           | `String`              | Auto Generated Unique ID assigned to the User                                         |\n| profilePic          | `String`              | Url to the Uploaded Profile Picture                                                   |\n| harvestOrganization | `HarvestOrganization` | Organization Details                                                                  |\n| name                | `String`              | User's Organization Name                                                              |\n| website             | `String`              | Auto Generated Unique ID assigned to the Organization                                 |\n| id                  | `String`              | Returns info for every type of request.                                               |\n| identifier          | `String`              | Unique Identifier for the Organization                                                |\n| BearerToken         | `String`              | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK : Password Changed\n\n```ts\n{\n   \"message\": String\n}\n```\n\n| param               | type                  | Description                                           |\n|:--------------------|:----------------------|:------------------------------------------------------|\n| message             | `String`              | Returns info for every type of request.               |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n--------------\n### Fcm Token\n--------------\n\n```HTTP\nPOST BASE_URL/api/v1/fcmToken\n```\n\n**Request Body**\n\n```ts\n{\n   \"id\": \"f8296e81-6d5b-4a5e-9de4-9d60459a1997\",\n   \"firstName\": \"Yugesh\",\n   \"lastName\": \"Jain\",\n   \"email\": \"yugesh@mutualmobile.com\",\n   \"orgId\": \"151d11a3-780d-4f03-bbad-889bd3707b02\",\n   \"role\": String,\n   \"pushToken\": String,\n   \"profilePic\": String,\n   \"harvestOrganization\": {\n      \"name\": \"mm\",\n      \"website\": \"mm.com\",\n      \"id\": \"151d11a3-780d-4f03-bbad-889bd3707b02\",\n      \"identifier\": \"com.mm.org\"\n   }\n}]\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param               | type                  | Description                                                                           |\n|:--------------------|:----------------------|:--------------------------------------------------------------------------------------|\n| id                  | `String`              | Auto Generated Unique ID assigned to a User                                           |\n| firstName           | `String`              | First Name of the User Just Signed Up                                                 |\n| lastName            | `String`              | Last Name of the User Just Signed Up                                                  |\n| email               | `String`              | Email of the User Just Signed Up                                                      |\n| orgId               | `String`              | Auto Generated Unique ID assigned to the Organization                                 |\n| role                | `String`              | Role of user in the organization like Admin or normal employee                        |\n| pushToken           | `String`              | Auto Generated Unique ID assigned to the User                                         |\n| profilePic          | `String`              | Url to the Uploaded Profile Picture                                                   |\n| harvestOrganization | `HarvestOrganization` | Organization Details                                                                  |\n| name                | `String`              | User's Organization Name                                                              |\n| website             | `String`              | Auto Generated Unique ID assigned to the Organization                                 |\n| id                  | `String`              | Returns info for every type of request.                                               |\n| identifier          | `String`              | Unique Identifier for the Organization                                                |\n| BearerToken         | `String`              | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n  \"token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhNTA1MjYwZi03YmZhLTRiZDUtODBjZS04MDBmOGE0M2IzZmMiLCJpYXQiOjE2NTM5Mzg2NzUsImV4cCI6MTY1Mzk0MjI3NX0.1CydFVIwoWq4gaqUhhEBy9XpQVaed-XW0s9qn0uFkUIg4h3WXiQkZrYUqULU0ZxeFMX1jfEMqO9FtTwt3zD5Zw\",\n  \"message\": \"User logged in Successfully\",\n  \"refreshToken\": \"958ede86-163c-4e80-8d8f-ed81ff1d7421\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| token        | `String` | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n| message      | `String` | Returns info for every type of request.                                               |\n| refreshToken | `String` | Unique Token for each user                                                            |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n--------------\n### Refresh Token\n--------------\n\n```HTTP\nPOST BASE_URL/api/v1/refreshToken\n```\n\n**Request Body**\n\n```ts\n{\n   \"refreshToken\": String,\n}\n```\n\n| param        | type     | Description                |\n|:-------------|:---------|:---------------------------|\n| refreshToken | `String` | Unique Token for each user |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n  \"token\": \"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhNTA1MjYwZi03YmZhLTRiZDUtODBjZS04MDBmOGE0M2IzZmMiLCJpYXQiOjE2NTM5Mzg2NzUsImV4cCI6MTY1Mzk0MjI3NX0.1CydFVIwoWq4gaqUhhEBy9XpQVaed-XW0s9qn0uFkUIg4h3WXiQkZrYUqULU0ZxeFMX1jfEMqO9FtTwt3zD5Zw\",\n  \"message\": String,\n  \"refreshToken\": \"958ede86-163c-4e80-8d8f-ed81ff1d7421\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| token        | `String` | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n| message      | `String` | Returns info for every type of request.                                               |\n| refreshToken | `String` | Unique Token for each user                                                            |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n### Forgot Password Api\n\n- [Forgot Password](#-forgot-password)\n- [Reset Password](#-reset-password)\n\n--------------\n### Forgot Password\n--------------\n\n```HTTP\nPOST BASE_URL/api/v1/public/forgotPassword\n```\n\n**Parameters**\n\n```ts\n   email: String\n```\n\n| param | type     | Description                                                          |\n|:------|:---------|:---------------------------------------------------------------------|\n| email | `String` | Email Address of the account for the one who's password is forgotten |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n  \"message\": \"Email to reset the password sent to your Email\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n--------------\n### Reset Password\n--------------\n\n```HTTP\nPOST BASE_URL/api/v1/resetPassword\n```\n\n**Request Body**\n\n```ts\n{\n   \"token\": String,\n   \"password\": String\n}\n```\n\n| param    | type     | Description                                                                |\n|:---------|:---------|:---------------------------------------------------------------------------|\n| token    | `String` | JWT Token for security purpose. We will get this from the email deep link. |\n| password | `String` | New Password that we want to set for the account                           |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n  \"message\": String\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\\\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n### Organization Api\n\n- [Find Organization By Identifier](#-find-organization-by-identifier)\n\n--------------\n### Find Organization By Identifier\n--------------\n\n```HTTP\nGET BASE_URL/api/v1/public/organization\n```\n\n**Parameters**\n\n```ts\n   identifier: String\n```\n\n| param      | type     | Description                            |\n|:-----------|:---------|:---------------------------------------|\n| identifier | `String` | Unique Identifier for the Organization |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n   \"message\": String\n   \"harvestOrganization\": {\n      \"name\": \"mm\",\n      \"website\": \"mm.com\",\n      \"imgUrl\": \"www.someimg.png\"\n      \"id\": \"151d11a3-780d-4f03-bbad-889bd3707b02\",\n      \"identifier\": \"com.mm.org\"\n   }\n}\n```\n\n| param               | type                  | Description                                           |\n|:--------------------|:----------------------|:------------------------------------------------------|\n| message             | `String`              | Returns info for every type of request.               |\n| harvestOrganization | `HarvestOrganization` | Organization Details                                  |\n| name                | `String`              | User's Organization Name                              |\n| website             | `String`              | Auto Generated Unique ID assigned to the Organization |\n| imgUrl              | `String`              | Url to the Organization uploaded Logo                 |\n| id                  | `String`              | Returns info for every type of request.               |\n| identifier          | `String`              | Unique Identifier for the Organization                |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n### Organization Projects Api\n\n- [Create Project](#-create-project)\n- [Update Project](#-update-project)\n- [Delete Project](#-delete-project)\n- [Find Projects In Organization](#-find-projects-in-organization)\n- [List of Users in a Project](#-list-of-users-in-a-project)\n\n--------------\n### Create Project\n--------------\n\n```HTTP\nGET BASE_URL/api/v1/organization/project\n```\n\n**Request Body**\n\n```ts\n{\n   \"name\": String,\n   \"client\": String,\n   \"isIndefinite\": Boolean,\n   \"startDate\": String,\n   \"endDate\": String\n}\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param        | type      | Description                                                                           |\n|:-------------|:----------|:--------------------------------------------------------------------------------------|\n| name         | `String`  | Name of the project to be created                                                     |\n| client       | `String`  | Name of the client who's project is thisClient                                        |\n| isIndefinite | `Boolean` | Is the project indefinite or not                                                      |\n| startDate    | `String`  | Start date of the Project                                                             |\n| endDate      | `String`  | End date of the Project                                                               |\n| Bearer Token | `String`  | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n   \"message\": String\n   \"data\": {\n      \"id\": String,\n      \"name\": String,\n      \"client\": String,\n      \"isIndefinite\": Boolean,\n      \"startDate\": String,\n      \"endDate\": String,\n      \"organizationId\": String\n   }\n}\n```\n\n| param        | type      | Description                                                           |\n|:-------------|:----------|:----------------------------------------------------------------------|\n| message      | `String`  | Returns info for every type of request.                               |\n| id           | `String`  | Unique Auto generated Id for the project                              |\n| name         | `String`  | Name of the project to be created                                     |\n| client       | `String`  | Name of the client who's project is thisClient                        |\n| isIndefinite | `Boolean` | Is the project indefinite or not                                      |\n| startDate    | `String`  | Start date of the Project                                             |\n| endDate      | `String`  | End date of the Project                                               |\n| orgId        | `String`  | Unique Auto generated Organization Id in which the project is created |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n--------------\n### Update Project\n--------------\n\n```HTTP\nPUT BASE_URL/api/v1/organization/project\n```\n\n**Request Body**\n\n```ts\n{\n   \"id\": String,\n   \"name\": String,\n   \"client\": String,\n   \"isIndefinite\": Boolean,\n   \"startDate\": String,\n   \"endDate\": String,\n   \"organizationId\": String\n}\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param          | type      | Description                                                                           |\n|:---------------|:----------|:--------------------------------------------------------------------------------------|\n| id             | `String`  | Unique Auto generated Id for the project                                              |\n| name           | `String`  | Name of the project to be created                                                     |\n| client         | `String`  | Name of the client who's project is thisClient                                        |\n| isIndefinite   | `Boolean` | Is the project indefinite or not                                                      |\n| startDate      | `String`  | Start date of the Project                                                             |\n| endDate        | `String`  | End date of the Project                                                               |\n| organizationId | `String`  | Unique Auto generated Organization Id in which the project is created                 |\n| Bearer Token   | `String`  | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n   \"message\": String\n}\n```\n\n| param        | type     | Description                             |\n|:-------------|:---------|:----------------------------------------|\n| message      | `String` | Returns info for every type of request. |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                             |\n|:-------------|:---------|:----------------------------------------|\n| message      | `String` | Returns info for every type of request. |\n\n--------------\n### Delete Project\n--------------\n\n```HTTP\nDELETE BASE_URL/api/v1/organization/project\n```\n\n**Parameters**\n\n```ts\n   projectId: String\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| projectId    | `String` | Unique Auto generated Id for the project                                              |\n| Bearer Token | `String` | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n   \"message\": String\n}\n```\n\n| param        | type     | Description                             |\n|:-------------|:---------|:----------------------------------------|\n| message      | `String` | Returns info for every type of request. |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                             |\n|:-------------|:---------|:----------------------------------------|\n| message      | `String` | Returns info for every type of request. |\n\n--------------\n### Find Projects In Organization\n--------------\n\n```HTTP\nGET BASE_URL/api/v1/public/organization/project\n```\n\n**Parameters**\n\n```ts\n   orgId: String,\n   offset: Int,\n   limit: Int,\n   search: String\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| orgId        | `String` | Unique Auto generated Organization Id in which the project is created                 |\n| offSet       | `Int`    | Offset                                                                                |\n| limit        | `Int`    | Limit per Page                                                                        |\n| search       | `String` | Name of the project you want to search in the searchbar                               |\n| Bearer Token | `String` | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n   \"message\": String\n   \"data\": [\n      {\n         \"id\": String,\n         \"name\": String,\n         \"client\": String,\n         \"isIndefinite\": Boolean,\n         \"startDate\": String,\n         \"endDate\": String,\n         \"organizationId\": String\n      }\n   ]\n}\n```\n\n| param          | type      | Description                                                           |\n|:---------------|:----------|:----------------------------------------------------------------------|\n| message        | `String`  | Returns info for every type of request.                               |\n| id             | `String`  | Unique Auto generated Id for the project                              |\n| name           | `String`  | Name of the project to be created                                     |\n| client         | `String`  | Name of the client who's project is thisClient                        |\n| isIndefinite   | `Boolean` | Is the project indefinite or not                                      |\n| startDate      | `String`  | Start date of the Project                                             |\n| endDate        | `String`  | End date of the Project                                               |\n| organizationId | `String`  | Unique Auto generated Organization Id in which the project is created |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| message      | `String` | Returns info for every type of request.                                               |\n\n--------------\n### List of users in a Project\n--------------\n\n```HTTP\nGET BASE_URL/api/v1/organization/project/list-users\n```\n\n**Parameters**\n\n```ts\n   projectId: String\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| projectId    | `String` | Unique Auto generated Id for the project                                              |\n| Bearer Token | `String` | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n   \"message\": String\n   \"data\": [\n      {\n         \"email\": String,\n         \"firstName\": String,\n         \"id\": String,\n         \"lastName\": String,\n         \"modifiedTime\": String,\n         \"orgId\": String,\n         \"role\": String\n      }\n   ]\n}\n```\n\n| param        | type                  | Description                                           |\n|:-------------|:----------------------|:------------------------------------------------------|\n| message      | `String`              | Returns info for every type of request.               |\n| data         | `Data`                | Details of the User Just Signed Up                    |\n| id           | `String`              | Auto Generated Unique ID assigned to a User           |\n| firstName    | `String`              | First Name of the User Just Signed Up                 |\n| lastName     | `String`              | Last Name of the User Just Signed Up                  |\n| email        | `String`              | Email of the User Just Signed Up                      |\n| modifiedTime | `String`              | Time of successful Signup                             |\n| orgId        | `String`              | Auto Generated Unique ID assigned to the Organization |\n| role         | `String`              | Role of the user in the Organization                  |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param    | type     | Description                             |\n|:---------|:---------|:----------------------------------------|\n| message  | `String` | Returns info for every type of request. |\n\n### Organization Users Api\n\n- [Find Users in Organization](#-find-users-in-organization)\n\n--------------\n### Find Users in Organization\n--------------\n\n```HTTP\nGET BASE_URL/api/v1/organization/users\n```\n\n**Parameters**\n\n```ts\n   userType: Int,\n   orgIdentifier: String,\n   isUserDeleted: Boolean,\n   offset: Int,\n   limit: Int,\n   search: String\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param         | type      | Description                                                                           |\n|:--------------|:----------|:--------------------------------------------------------------------------------------|\n| userType      | `Int`     | Role of the user                                                                      |\n| orgIdentifier | `String`  | Unique identifier for an Organization                                                 |\n| isUserDeleted | `Boolean` | Boolean to see if the user is Deleted or not                                          |\n| offSet        | `Int`     | Offset                                                                                |\n| limit         | `Int`     | Limit per Page                                                                        |\n| search        | `String`  | Name of the user you want to search in the searchbar                                  |\n| Bearer Token  | `String`  | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n   \"message\": String\n   \"data\": [\n      {\n         \"email\": String,\n         \"firstName\": String,\n         \"id\": String,\n         \"lastName\": String,\n         \"modifiedTime\": String,\n         \"orgId\": String\n      }\n   ]\n}\n```\n\n| param        | type                  | Description                                           |\n|:-------------|:----------------------|:------------------------------------------------------|\n| message      | `String`              | Returns info for every type of request.               |\n| data         | `Data`                | Details of the User Just Signed Up                    |\n| id           | `String`              | Auto Generated Unique ID assigned to a User           |\n| firstName    | `String`              | First Name of the User Just Signed Up                 |\n| lastName     | `String`              | Last Name of the User Just Signed Up                  |\n| email        | `String`              | Email of the User Just Signed Up                      |\n| modifiedTime | `String`              | Time of successful Signup                             |\n| orgId        | `String`              | Auto Generated Unique ID assigned to the Organization |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param    | type     | Description                             |\n|:---------|:---------|:----------------------------------------|\n| message  | `String` | Returns info for every type of request. |\n\n### User project Api\n\n- [Assign Projects to User](#-assign-projects-to-user)\n- [Log Work Time](#-log-work-time)\n- [Get Projects Assigned to a user](#-get-projects-assigned-to-a-user)\n\n--------------\n### Assign Projects to User\n--------------\n\n```HTTP\nPOST BASE_URL/api/v1/org-admin/assign-user-project\n```\n\n**Request Body**\n\n```ts\n   {\n      \"projectMap\": HashMap\u003cprojectId, List\u003cuserId\u003e\u003e\n   }\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| projectId    | `String` | Unique Auto Generated ID for Project                                                  |\n| userId       | `String` | Unique Auto Generated ID for User                                                     |\n| Bearer Token | `String` | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n   \"message\": String\n}\n```\n\n| param    | type      | Description                             |\n|:---------|:----------|:----------------------------------------|\n| message  | `String`  | Returns info for every type of request. |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param    | type     | Description                             |\n|:---------|:---------|:----------------------------------------|\n| message  | `String` | Returns info for every type of request. |\n\n--------------\n### Log Work Time\n--------------\n\n```HTTP\nPOST BASE_URL/api/v1/user/project/log-work\n```\n\n**Request Body**\n\n```ts\n   {\n      \"id\": String,\n      \"projectId\": String,\n      \"userId\": String,\n      \"workDate\": String,\n      \"workHours\": Float,\n      \"note\": String\n   }\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param        | type     | Description                                                                           |\n|:-------------|:---------|:--------------------------------------------------------------------------------------|\n| id           | `String` | ID                                                                                    |\n| projectId    | `String` | Unique Auto Generated ID for Project                                                  |\n| userId       | `String` | Unique Auto Generated ID for User                                                     |\n| workDate     | `String` | Date on which the work is done                                                        |\n| workHours    | `String` | Number of hours dedicated to the particular work                                      |\n| Bearer Token | `String` | JWT Token for security purpose. This get generated once users Logged In Successfully. |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n   \"message\": String\n}\n```\n\n| param    | type     | Description                             |\n|:---------|:---------|:----------------------------------------|\n| message  | `String` | Returns info for every type of request. |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param    | type     | Description                             |\n|:---------|:---------|:----------------------------------------|\n| message  | `String` | Returns info for every type of request. |\n\n--------------\n### Get Projects Assigned to a user\n--------------\n\n```HTTP\nGET BASE_URL/api/v1/user/assigned-projects\n```\n\n**Parameters**\n\n```ts\n   userId: String\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param  | type     | Description                         |\n|:-------|:---------|:------------------------------------|\n| userId | `String` | Unique Auto Generated Id for a User |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n   \"message\": String\n   \"data\": [\n      {\n         \"id\": String,\n         \"name\": String,\n         \"client\": String,\n         \"isIndefinite\": Boolean,\n         \"startDate\": String,\n         \"endDate\": String,\n         \"organizationId\": String\n      }\n   ]\n}\n```\n\n| param          | type      | Description                                                           |\n|:---------------|:----------|:----------------------------------------------------------------------|\n| message        | `String`  | Returns info for every type of request.                               |\n| id             | `String`  | Unique Auto generated Id for the project                              |\n| name           | `String`  | Name of the project to be created                                     |\n| client         | `String`  | Name of the client who's project is thisClient                        |\n| isIndefinite   | `Boolean` | Is the project indefinite or not                                      |\n| startDate      | `String`  | Start date of the Project                                             |\n| endDate        | `String`  | End date of the Project                                               |\n| organizationId | `String`  | Unique Auto generated Organization Id in which the project is created |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param    | type     | Description                             |\n|:---------|:---------|:----------------------------------------|\n| message  | `String` | Returns info for every type of request. |\n\n### User Work Api\n\n- [Get Work Logs for a Date Range](#-get-work-logs-for-a-date-range)\n\n--------------\n### Get Work Logs for a Date Range\n--------------\n\n```HTTP\nGET BASE_URL/api/v1/user/project/log-work\n```\n\n**Request Body**\n\n```ts\n   {\n      \"startDate\": String,\n      \"endDate\": String,\n      \"userIds\": List\u003cString\u003e \n   }\n```\n\n**Authorization**\n\n```ts\n   BearerToken: String\n```\n\n| param     | type           | Description                          |\n|:----------|:---------------|:-------------------------------------|\n| startDate | `String`       | Date from which you want the logs    |\n| endDate   | `String`       | Date till which you want the logs    |\n| userIds   | `List\u003cString\u003e` | user Ids for those you want the logs |\n\n**Response**\n\n1. When -\u003e 200 OK\n\n```ts\n{\n   \"message\": String\n   \"data\": [\n      {\n         \"id\": String,\n         \"projectId\": String,\n         \"userId\": String,\n         \"workDate\": String,\n         \"workHours\": Float,\n         \"note\": String\n      }\n   ]\n}\n```\n\n| param          | type     | Description                                        |\n|:---------------|:---------|:---------------------------------------------------|\n| message        | `String` | Returns info for every type of request.            |\n| projectId      | `String` | Unique Auto generated Id for the project           |\n| userId         | `String` | Unique Auto generated Id for the user              |\n| workDate       | `String` | Date on which the work is done                     |\n| workHours      | `Float`  | Number of hours dedicated to the work on that date |\n| note           | `String` | Note                                               |\n\n2. When -\u003e 400 BAD REQUEST\n\n```ts\n{\n  \"message\": \"ERROR\"\n}\n```\n\n| param    | type     | Description                             |\n|:---------|:---------|:----------------------------------------|\n| message  | `String` | Returns info for every type of request. |","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmutualmobile%2Fharvestapispring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmutualmobile%2Fharvestapispring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmutualmobile%2Fharvestapispring/lists"}