- 
                Notifications
    
You must be signed in to change notification settings  - Fork 8
 
API documentation
- 401: Invalid token (Unauthorised)
 - 403: Access error
 - 400: Validation error or URL is incorrect for APIs (POST, PUT)
 - 404: Incorrect URLs (id incorrect) for GET API
 - 422: Unprocessable entity
 - 500: Internal server error
 
- 201: Status created (POST Requests)
 - 200: Status ok
 
{
 error: {
   code: "invalid_data"
   message: "Please provide valid form data"
   fields: {
     "field_name": "Error message",
     "field_name": "Error message"
   }
 }
}
Note: fields section in error response will be present only when token is valid and there are form validation errors
{
  "Content-Type": "application/json",
  "Accept": "application/vnd.peerly.v1",
  "Authorization": `Bearer ${apiToken}`
}
POST /oauth/google
access_token: "" (required)
Note: Validation must be present to check if signin email used for login belongs to valid organisation domain
Status code: 200 (ok)
{
  data: {
    token: <string>
  }
}
### Claims inside JWT token:
iss: "node.peerly.com"
sub: <user-id> or <uuid> to uniquely identify a user
aud: <base url of react ui> (for now it can be "peerly.com")
exp: epoch (seconds) - on or after which it will not be accepted
nbf: epoch (seconds) - token older than this time won't be accepted
iat: epoch (seconds) - time of issuing the token
"https://peerly.com": {
   "roleId": <role-id>,
   "orgId": <org-id>,
   "orgName": "<name of org>"
 }
Status Code: 401 (Unauthorized)
{ 
  "error": {
    code: "invalid_organization"
    message: "unauthorized user"
  }
}
Status Code: 500 (InternalServerError)
{ 
  "error": {
     message: "internal server error"
  }
}
POST /logout
Status code: 200 (ok)
Status Code: 500 (InternalServerError)
{ 
  "error": {
     message: "internal server error"
  }
}
POST /core_values
"description": "" (required)
"text": "" (required)
"parent_core_value_id": null (optional)
"thumbnail_url" : <s3_bucket_url_after_image_upload>
Status code: 201 (created)
{
  data: {
    "id": <id>,
    "description": <description>,
    "text": <core_value_text>,
    "parent_core_value_id": <parent_id> (default null)
    "org_id": <organisation_id>
  } 
}
Status Code: 401 (Unauthorized)
{ 
  "error": {
    code: "invalid_token"
    message: "unauthorized user"
  }
}
Status Code: 403 (forbidden)
{ 
  "error": {
     code: "access_denied"
     message: "Permission required"
  }
}
Status Code: 400 (Invalid request)
{
 error: {
   code: "invalid_data"
   message: "Invalid core value data"
   fields: {
     "field_name": "Error message",
     "field_name": "Error message"
   }
 }
}
PUT /core_values/:id
"description": "" (required)
"text": "" (required)
"thumbnail_url" : <s3_bucket_url_after_image_upload>
Status code: 200 (ok)
{
  data: {
    "id": <id>
    "description": <description>
    "text": <core_value_text>,
    "parent_core_value_id": <parent_id>
    "org_id": <organisation_id>
  }
}
Status Code: 401 (Unauthorized)
{ 
  "error": {
    code: "invalid_token"
    message: "unauthorized user"
  }
}
Status Code: 403 (forbidden)
{ 
  "error": {
     code: "access_denied"
     message: "Permission required"
  }
}
Status Code: 400 (Invalid request)
{
 error: {
   code: "invalid_data"
   message: "Invalid core value data"
   fields: {
     "field_name": "Error message",
     "field_name": "Error message"
   }
 }
}
GET /core_values
Status code: 200 (ok)
{
  data: [{
    "id":<id>,
    "description": <description>,
    "text": <core_value_text>,
    "parent_core_value_id": <parent_id>,
    "org_id": <organisation_id>,
    "thumbnail_url": <thumbnail_url_string>
  }.
  {
    "id":<id>,
    "description": <description>,
    "text": <core_value_text>,
    "parent_core_value_id": <parent_id>,
    "org_id": <organisation_id>,
    "thumbnail_url": <thumbnail_url_string>
  }]
}
Status Code: 401 (Unauthorized)
{ 
  "error": {
    code: "invalid_token"
    message: "unauthorized user"
  }
}
Status Code: 403 (forbidden)
{ 
  "error": {
     code: "access_denied"
     message: "Permission required"
  }
}
GET /core_values/:id
Status code: 200 (ok)
{
  data: {
    "id":<id>
    "description": <description>
    "text": <core_value_text>,
    "parent_core_value_id": <parent_id>
    "org_id": <organisation_id>
    "thumbnail": <thumbnail_url_string>
  }
}
Status Code: 401 (Unauthorized)
{ 
  "error": {
    code: "invalid_token"
    message: "unauthorized user"
  }
}
Status Code: 403 (forbidden)
{ 
  "error": {
     code: "access_denied"
     message: "Permission required"
  }
}
GET /users
- limit (optional)
 - offset (optional)
 - starts_with (optional) search by text
 - org_id (optional only for super admin access)
 
Status code: 200 (ok)
{
  data: [{
    "id":<id>
    "first_name": <first_name>
    "last_name": <last_name>
    "email": <email>,
    "display_name": <display_name>
    "profile_image_url": <profile_image_url>
    "role_id": <role_id>
    "hi5_quota_balance":<hi5_quota_balance>
    "org_id": <organisation_id>
    "soft_delete_by": <user_id>
    "soft_delete_at": <timestamp>
  }.
  {
    "id":<id>
    "first_name": <first_name>
    "last_name": <last_name>
    "email": <email>,
    "display_name": <display_name>
    "profile_image_url": <profile_image_url>
    "role_id": <role_id>
    "hi5_quota_balance":<hi5_quota_balance>
    "org_id": <organisation_id>
    "soft_delete_by": <user_id>
    "soft_delete_at": <timestamp>
  }]
}
Status Code: 401 (Unauthorized)
{ 
  "error": {
    code: "invalid_token"
    message: "unauthorized user"
  }
}
Status Code: 403 (forbidden)
{ 
  "error": {
     code: "access_denied"
     message: "Permission required"
  }
}
GET /users/:id (For admin only)
Note: For fetching profile information of a logged in user API endpoint should be
GET /users/me
Status code: 200 (ok)
{
  data: {
    "id":<id>
    "first_name": <first_name>
    "last_name": <last_name>
    "email": <email>,
    "display_name": <display_name>
    "profile_image_url": <profile_image_url>
    "role_id": <role_id>
    "hi5_quota_balance":<hi5_quota_balance>
    "org_id": <organisation_id>
  }
}
Status Code: 401 (Unauthorized)
{ 
  "error": {
    code: "invalid_token"
    message: "unauthorized user"
  }
}
Status Code: 403 (forbidden)
{ 
  "error": {
     code: "access_denied"
     message: "Permission required"
  }
}
PUT /users/me
"first_name": <first_name> (required)
"last_name": <last_name> (required)
"display_name": <display_name> (required)
"profile_image_url": <profile_image_url> (optional)
Status code: 200 (ok)
{
  data: {
    "id":<id>
    "first_name": <first_name>
    "last_name": <last_name>
    "email": <email>,
    "display_name": <display_name>
    "profile_image_url": <profile_image_url>
    "role_id": <role_id>
    "hi5_quota_balance":<hi5_quota_balance>
    "org_id": <organisation_id>
  }
}
PUT /users/:id (for admin only)
"role_id": <role_id> (required)
Status code: 200 (ok)
DELETE /users/:id (for admin only)
Soft deletes the user
Status code: 200 (ok)
Note: No POST API for users they will be created by login
GET /recognitions
- given_by (optional)
 - given_for (optional)
 - core_value_id (optional)
 - limit (optional)
 - offset (optional)
 
Status code: 200 (ok)
{
  data: [{
    "id":<id>
    "text": <recognition_text>,
    "givenFor": {
          id: <user_id>,
          first_name: <string>,
          last_name: <string>
          profile_image_url:<url_string>
     },
    "givenBy": : {
          id: <user_id>,
          first_name: <string>,
          last_name: <string>
          profile_image_url:<url_string>
    },
    "given_at": <timestamp>,
    "coreValue":{
         "id": <core_value_id>,
         "text": <core_value_text>,
         "description": <desc>
         "thumbnail": <icon_img_url>
    }
  }.
  {
    "id":<id>,
    "text": <recognition_text>,
    "givenFor": {
          id: <user_id>,
          first_name: <string>,
          last_name: <string>
          profile_image_url:<url_string>
     },
    "givenBy": : {
          id: <user_id>,
          first_name: <string>,
          last_name: <string>
          profile_image_url:<url_string>
    },
    "given_at": <timestamp>,
    "coreValue":{
         "id": <core_value_id>,
         "text": <core_value_text>,
         "description": <desc>
         "thumbnail": <icon_img_url>
    }
  }]
}
Status Code: 401 (Unauthorized)
{ 
  "error": {
    code: "invalid_token"
    message: "unauthorized user"
  }
}
Status Code: 403 (forbidden)
{ 
  "error": {
     code: "access_denied"
     message: "Permission required"
  }
}
POST /recognitions
- given_for (required)
 - core_value_id (required)
 - text (required)
 
Status code: 201 (created)
{
  data: {
    "id":<id>
    "core_values_id": <core_value_id>
    "text": <recognition_text>,
    "given_for": <user_id>
    "given_by": <user_id>
    "given_at": <timestamp>
  } 
}
Status Code: 401 (Unauthorized)
{ 
  "error": {
    code: "invalid_token"
    message: "unauthorized user"
  }
}
Status Code: 403 (forbidden)
{ 
  "error": {
     code: "access_denied"
     message: "Permission required"
  }
}
POST /recognitions/:recognition_id/hi5
- comment (optional)
 
Status code: 201 (created)
Status Code: 401 (Unauthorized)
{ 
  "error": {
    code: "invalid_token"
    message: "unauthorized user"
  }
}
Status Code: 403 (forbidden)
{ 
  "error": {
     code: "access_denied"
     message: "Permission required"
  }
}
Status Code: 400
{ 
  "error": {
     code: "insufficient_hi5_balance"
     message: "Hi5 quota balance is insufficient for this action"
  }
}
POST recognitions/:recognition_id/report
mark_as: <string> (required) and one of ["fraud", "not_relevant", "incorrect"]
reason: <text> (required)
Status code: 201 (created)
Status Code: 401 (Unauthorized)
{ 
  "error": {
    code: "invalid_token"
    message: "unauthorized user"
  }
}
Status Code: 403 (forbidden)
{ 
  "error": {
     code: "access_denied"
     message: "Permission required"
  }
}
POST recognitions/:recognition_id/review
is_inappropriate: <bool> (required)
comment: <text> (optional)
Status code: 201 (created)
Status Code: 401 (Unauthorized)
{ 
  "error": {
    code: "invalid_token"
    message: "unauthorized user"
  }
}
Status Code: 403 (forbidden)
{ 
  "error": {
     code: "access_denied"
     message: "Permission required"
  }
}
GET /s3_signed_url
- type (required) (either profile or core_value)
 
Status code: 200 (ok)
{
  data: {
     s3_signed_url: <string>
  }
}
Copyright © Josh Software Pvt. Ltd.