1550 lines
42 KiB
YAML
1550 lines
42 KiB
YAML
swagger: '2.0'
|
|
info:
|
|
description: |
|
|
HRBox mobile app API
|
|
|
|
Since HRBOX is multitenant application you need to find out domain and endpoint to start working with this API
|
|
|
|
(Option 1) QR-code will contain this info - hrbox://bind/?url={url} where {url} will be url to /mobile/bind method. You should make POST request to this URL sending "device" param in body just like described in /mobile/bind method. In the response you will find endpoint
|
|
|
|
(Option 2) Manual bind - user will provice you with {domain} {email} and {password} and you should send this info to https://{domain}/api/v2/mobile/manual-bind like described in /mobile/manual-bind method. In the response you will find endpoint
|
|
|
|
Once you will get endpoint and tenantId, use it in every request you make, using endpoint as base path, and passing tenantId as header "x-hrbox-tenant-id: {tenantId}"
|
|
|
|
To authorize you session, make call to {endpoint}/mobile/auth sending "x-hrbox-tenant-id: {tenantId}" header, and sending body that described in /mobile/auth method
|
|
|
|
To sign your requests with session id, pass folowing headers with each request:
|
|
|
|
x-hrbox-tenant-id: {tenantId}
|
|
x-hrbox-device-id: {deviceId}
|
|
x-hrbox-session-id: {sessionId}
|
|
x-hrbox-session-code: {sessionSecret}
|
|
x-hrbox-embed: true
|
|
|
|
{tenantId} - you will get this form /mobile/auth or /mobile/bind methods
|
|
{sessionId} - you will get this form /mobile/auth method
|
|
{sessionSecret} - you will get this form /mobile/auth method
|
|
the last one (x-hrbox-embed) is for opening web pages in WebView to remove website footer and header
|
|
|
|
version: 2.0.0
|
|
title: HRbox Mobile API
|
|
contact:
|
|
email: yuriy@hrbox.io
|
|
# host: api.hrbox.io
|
|
# basePath: /api/v2
|
|
tags:
|
|
- name: mobile
|
|
description: Binding device and authorizing
|
|
- name: account
|
|
description: Methods for getting current user data (assignments, notifications etc.)
|
|
- name: department
|
|
description: Methods for browsing and searching through Org Structure
|
|
- name: user
|
|
description: Methods for getting user and employment information
|
|
- name: article
|
|
description: Methods News, Categories and Articles
|
|
- name: postcard
|
|
description: Methods for working with postcards
|
|
- name: dashboard
|
|
description: Methods for getting dashboards and widgets data
|
|
# schemes:
|
|
# - http
|
|
paths:
|
|
/mobile/bind/{id}/{token}:
|
|
post:
|
|
tags:
|
|
- mobile
|
|
summary: Bind device by token. This URL will be taken by parsing QR code
|
|
operationId: mobileBind
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
description: ID
|
|
required: true
|
|
type: string
|
|
- name: token
|
|
in: path
|
|
description: ID
|
|
required: true
|
|
type: string
|
|
- in: body
|
|
name: body
|
|
description: Device info
|
|
required: true
|
|
schema:
|
|
type: object
|
|
properties:
|
|
device:
|
|
$ref: '#/definitions/device'
|
|
responses:
|
|
200:
|
|
description: successful operation
|
|
schema:
|
|
type: object
|
|
properties:
|
|
accountSecret:
|
|
$ref: '#/definitions/accountSecret'
|
|
tenantInfo:
|
|
$ref: '#/definitions/tenantInfo'
|
|
400:
|
|
description: Invalid input
|
|
403:
|
|
description: Invalid id or token
|
|
|
|
/mobile/request-two-factor:
|
|
post:
|
|
tags:
|
|
- mobile
|
|
summary: Запросить код двухфакторной аутентификации. Код будет выслан если она включена.
|
|
operationId: mobileRequestTwoFactor
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- in: body
|
|
name: body
|
|
description: Email Password and Device info. Also Code if 2FAuth enabled
|
|
required: true
|
|
schema:
|
|
type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
format: email
|
|
password:
|
|
type: string
|
|
format: password
|
|
responses:
|
|
200:
|
|
description: Если Двухфакторная аутентификация включена и код был выслан то в ответе будет codeRequired = true иначе codeRequired=false
|
|
schema:
|
|
type: object
|
|
properties:
|
|
codeRequired:
|
|
type: boolean
|
|
tenantInfo:
|
|
$ref: '#/definitions/tenantInfo'
|
|
delayTime:
|
|
type: number
|
|
|
|
400:
|
|
description: Invalid input
|
|
403:
|
|
description: Invalid Email or Password
|
|
500:
|
|
description: Server Error
|
|
|
|
/mobile/manual-bind:
|
|
post:
|
|
tags:
|
|
- mobile
|
|
summary: Bind device by user's emial and password
|
|
operationId: mobileManualBind
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- in: body
|
|
name: body
|
|
description: Email Password and Device info. Also Code if 2FAuth enabled
|
|
required: true
|
|
schema:
|
|
type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
format: email
|
|
password:
|
|
type: string
|
|
format: password
|
|
code:
|
|
type: string
|
|
format: password
|
|
description: two-factor authorization code
|
|
device:
|
|
$ref: '#/definitions/device'
|
|
responses:
|
|
200:
|
|
description: successful operation
|
|
schema:
|
|
type: object
|
|
properties:
|
|
accountSecret:
|
|
$ref: '#/definitions/accountSecret'
|
|
tenantInfo:
|
|
$ref: '#/definitions/tenantInfo'
|
|
400:
|
|
description: Invalid input
|
|
403:
|
|
description: Invalid Email or Password
|
|
500:
|
|
description: Server Error
|
|
|
|
|
|
/mobile/auth:
|
|
post:
|
|
tags:
|
|
- mobile
|
|
summary: Authorize user by accountSecret that you got from /mobile/bind or /mobile/manual-bind
|
|
operationId: mobileAuth
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- in: body
|
|
name: body
|
|
description: secret, userId and deviceId
|
|
required: true
|
|
schema:
|
|
type: object
|
|
properties:
|
|
secret:
|
|
type: string
|
|
format: email
|
|
userId:
|
|
type: string
|
|
deviceId:
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: successful authorization
|
|
schema:
|
|
type: object
|
|
properties:
|
|
sessionId:
|
|
type: string
|
|
sessionSecret:
|
|
type: string
|
|
tenantInfo:
|
|
$ref: '#/definitions/tenantInfo'
|
|
400:
|
|
description: Invalid input
|
|
401:
|
|
description: Authorization failed, secret is invalid
|
|
404:
|
|
description: Device not found
|
|
500:
|
|
description: Server Error
|
|
|
|
/mobile/save-push-token:
|
|
post:
|
|
tags:
|
|
- mobile
|
|
summary: Save Firebase push token to server
|
|
operationId: mobileSavePushToken
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- in: body
|
|
name: body
|
|
description: token - the token that you get from Firebase Cloud Messaging. Provider should be "firebase", not other providers supported for now. deviceId - same device id that you used in bind or auth
|
|
required: true
|
|
schema:
|
|
type: object
|
|
properties:
|
|
token:
|
|
type: string
|
|
provider:
|
|
type: string
|
|
default: firebase
|
|
deviceId:
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: push token successfully saved
|
|
schema:
|
|
type: object
|
|
properties:
|
|
sucess:
|
|
type: boolean
|
|
default: true
|
|
400:
|
|
description: Invalid input
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
500:
|
|
description: Server Error
|
|
|
|
/mobile/unbind:
|
|
post:
|
|
tags:
|
|
- mobile
|
|
summary: Unbind device by deviceId
|
|
operationId: mobileUnbind
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- name: deviceId
|
|
in: query
|
|
description: ID
|
|
required: true
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: successful operation
|
|
schema:
|
|
type: object
|
|
properties:
|
|
tenantInfo:
|
|
$ref: '#/definitions/tenantInfo'
|
|
400:
|
|
description: Invalid input
|
|
403:
|
|
description: Invalid Email or Password
|
|
500:
|
|
description: Server Error
|
|
|
|
/user/profile:
|
|
get:
|
|
tags:
|
|
- user
|
|
summary: Get User's profile info
|
|
operationId: userProfile
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- name: id
|
|
in: query
|
|
description: User ID
|
|
required: true
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: User profile data
|
|
schema:
|
|
$ref: '#/definitions/userProfile'
|
|
400:
|
|
description: Invalid input (malformed id)
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
404:
|
|
description: User not found
|
|
500:
|
|
description: Server Error
|
|
|
|
/account/status-text:
|
|
post:
|
|
tags:
|
|
- account
|
|
summary: Set user's status text
|
|
operationId: accountStatusText
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- in: body
|
|
name: body
|
|
description: user's status text
|
|
required: true
|
|
schema:
|
|
type: object
|
|
properties:
|
|
activeTypes:
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: status text saved
|
|
schema:
|
|
type: object
|
|
properties:
|
|
activeTypes:
|
|
type: string
|
|
400:
|
|
description: Invalid input
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
500:
|
|
description: Server Error
|
|
|
|
/account/status-active-types:
|
|
post:
|
|
tags:
|
|
- account
|
|
summary: Set user's active statuses
|
|
operationId: accountStatusActiveTypes
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- in: body
|
|
name: body
|
|
description: user's active statuses
|
|
required: true
|
|
schema:
|
|
type: object
|
|
properties:
|
|
activeTypes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: user's active statuses saved
|
|
schema:
|
|
type: object
|
|
properties:
|
|
statusTypes:
|
|
type: array
|
|
items:
|
|
type: string
|
|
400:
|
|
description: Invalid input
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
500:
|
|
description: Server Error
|
|
|
|
/notifications/pushes:
|
|
get:
|
|
tags:
|
|
- notifications
|
|
summary: Push notifications index. Infinite scroll done by paginating with {page} parameter
|
|
operationId: notificationPushes
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- name: per-page
|
|
in: query
|
|
description: How many items return in one page
|
|
type: integer
|
|
default: 10
|
|
- name: page
|
|
in: query
|
|
description: Current page
|
|
type: integer
|
|
default: 1
|
|
responses:
|
|
200:
|
|
description: Returns array of push notifications and pagination related data
|
|
schema:
|
|
type: object
|
|
properties:
|
|
_meta:
|
|
$ref: '#/definitions/meta'
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/notification'
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
500:
|
|
description: Server Error
|
|
|
|
/notifications/mark-seen:
|
|
post:
|
|
tags:
|
|
- notifications
|
|
summary: Mark notification as seen
|
|
operationId: notificationMarkSeen
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- in: query
|
|
name: notificationId
|
|
description: notificationId
|
|
required: true
|
|
type: string
|
|
format: uuid
|
|
responses:
|
|
200:
|
|
description: Notification marked as seen
|
|
schema:
|
|
type: object
|
|
properties:
|
|
badge:
|
|
type: number
|
|
description: unseen notification count
|
|
date:
|
|
type: string
|
|
format: date
|
|
400:
|
|
description: Invalid input
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
500:
|
|
description: Server Error
|
|
/notifications/mark-seen-all:
|
|
post:
|
|
tags:
|
|
- notifications
|
|
summary: Mark all notifications as seen
|
|
operationId: notificationMarkSeenAll
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: All marked as seen
|
|
schema:
|
|
type: object
|
|
properties:
|
|
badge:
|
|
type: number
|
|
description: unseen notification count
|
|
date:
|
|
type: string
|
|
format: date
|
|
400:
|
|
description: Invalid input
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
500:
|
|
description: Server Error
|
|
|
|
/department/tree-node:
|
|
get:
|
|
tags:
|
|
- department
|
|
summary: Get departments inner struture
|
|
operationId: departmentTreeNode
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- name: id
|
|
in: query
|
|
description: Parent department ID
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: Department children (Departments and Users) type="user" - means user node, type="department" - means department node. [isBoss], [position] are "user" only properties. [employemntsCount], [empty] - are "department" only properties.
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
name:
|
|
type: string
|
|
default: "Department name"
|
|
path:
|
|
type: string
|
|
default: "Department hierarchy path"
|
|
items:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/structureItem'
|
|
400:
|
|
description: Invalid input (malformed id)
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
404:
|
|
description: Department not found
|
|
500:
|
|
description: Server Error
|
|
#["office"]
|
|
/department/search:
|
|
get:
|
|
tags:
|
|
- department
|
|
summary: Search Org Structure for matching users and departments
|
|
operationId: departmentSearch
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- name: q
|
|
in: query
|
|
description: Search query string
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: Search results (Departments and Users) type="user" - means user node, type="department" - means department node. [isBoss], [position] are "user" only properties. [employemntsCount], [empty] - are "department" only properties.
|
|
schema:
|
|
type: object
|
|
properties:
|
|
q:
|
|
type: string
|
|
default: "Search query string"
|
|
items:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/structureItem'
|
|
400:
|
|
description: Invalid input
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
500:
|
|
description: Server Error
|
|
|
|
|
|
/postcard/user-view:
|
|
get:
|
|
tags:
|
|
- postcard
|
|
summary: Details about postcard sent to user
|
|
operationId: postcardUserView
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- name: id
|
|
in: query
|
|
description: UserPostcard item ID
|
|
required: true
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: Postcard details
|
|
schema:
|
|
$ref: '#/definitions/userPostcard'
|
|
400:
|
|
description: Invalid input (malformed id)
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
404:
|
|
description: Postcard not found
|
|
500:
|
|
description: Server Error
|
|
|
|
/article/news:
|
|
get:
|
|
tags:
|
|
- article
|
|
summary: News index. Infinite scroll done by paginating with {page} parameter
|
|
operationId: articleNews
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- name: per-page
|
|
in: query
|
|
description: How many items return in one page
|
|
type: integer
|
|
default: 10
|
|
- name: page
|
|
in: query
|
|
description: Current page
|
|
type: integer
|
|
default: 1
|
|
responses:
|
|
200:
|
|
description: Returns array of news and pagination related data
|
|
schema:
|
|
type: object
|
|
properties:
|
|
_meta:
|
|
$ref: '#/definitions/meta'
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/article'
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
500:
|
|
description: Server Error
|
|
|
|
/article/category:
|
|
get:
|
|
tags:
|
|
- article
|
|
summary: Browse or search catalog categories. Displays catalog items which can be category or article
|
|
operationId: articleCategory
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- name: id
|
|
in: query
|
|
description: ID of category
|
|
type: string
|
|
- name: q
|
|
in: query
|
|
description: Search query string
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: Contents of category or search results (categories and articles). entity="category" - means category node, entity="article" - means article node. Category id can be used in /article/category method to browse its content
|
|
schema:
|
|
type: object
|
|
properties:
|
|
category:
|
|
type: object
|
|
description: Current category
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
title:
|
|
type: string
|
|
default: "Current category name"
|
|
q:
|
|
type: string
|
|
default: "Search query string"
|
|
items:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/catalogItem'
|
|
400:
|
|
description: Invalid input
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
500:
|
|
description: Server Error
|
|
|
|
/dashboard:
|
|
get:
|
|
tags:
|
|
- dashboard
|
|
summary: Get dashboards and widgets by specifying needed widgets through get parameter. Personal user feed widgets starts with "my" prefix. Global company feed widgets starts with "upd" prefix
|
|
operationId: dashboard
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- name: widgets
|
|
in: query
|
|
description: names of required widgets separated with comma. For example - widgets=myLms,mySurvey,myAchievements,myTeam,myFavorites,myPostcards
|
|
type: string
|
|
enum:
|
|
- myLms
|
|
- mySurvey
|
|
- myAchievements
|
|
- myTeam
|
|
- myFavorites
|
|
- myPostcards
|
|
- updNews
|
|
- updVoting
|
|
- updIdeas
|
|
- updAchievements
|
|
- updBirthday
|
|
- updNewbies
|
|
- updBooks
|
|
- name: info
|
|
in: query
|
|
description: names of required info separated with comma. For example - info=profileBrief,notificationsBadge. notificationsBadge - Current notification bell badge value. profileBrief - Current user brief info
|
|
type: string
|
|
enum:
|
|
- profileBrief
|
|
- notificationsBadge
|
|
responses:
|
|
200:
|
|
description: Rreturns all the dashboard data about requested widgets. In responce object only requested info/widgets keys will be presented. If widget is not available for current user, this widget will not exists in responce of will be null
|
|
schema:
|
|
type: object
|
|
properties:
|
|
profileBrief:
|
|
$ref: '#/definitions/profileBrief'
|
|
description: Current user brief info
|
|
notificationsBadge:
|
|
type: integer
|
|
default: 0
|
|
description: Current notification bell badge value
|
|
widgets:
|
|
type: object
|
|
properties:
|
|
myLms:
|
|
description: User feed - Assigned test and courses
|
|
$ref: '#/definitions/dashboardWidget'
|
|
mySurvey:
|
|
description: User feed - Assigned surveys
|
|
$ref: '#/definitions/dashboardWidget'
|
|
myAchievements:
|
|
description: User feed - Assigned achievements
|
|
$ref: '#/definitions/dashboardWidget'
|
|
myTeam:
|
|
description: User feed - Teammates of current user
|
|
$ref: '#/definitions/dashboardWidget'
|
|
myFavorites:
|
|
description: User feed - Favorites (in development, not used)
|
|
$ref: '#/definitions/dashboardWidget'
|
|
myPostcards:
|
|
description: User feed - Recevied postcards
|
|
$ref: '#/definitions/dashboardWidget'
|
|
updNews:
|
|
description: Company feed - New news
|
|
$ref: '#/definitions/dashboardWidget'
|
|
updVoting:
|
|
description: Company feed - New contests
|
|
$ref: '#/definitions/dashboardWidget'
|
|
updIdeas:
|
|
description: Company feed - New ideas
|
|
$ref: '#/definitions/dashboardWidget'
|
|
updAchievements:
|
|
description: Company feed - New achievements achieved by users
|
|
$ref: '#/definitions/dashboardWidget'
|
|
updBirthday:
|
|
description: Company feed - Users that have birthday today
|
|
$ref: '#/definitions/dashboardWidget'
|
|
updNewbies:
|
|
description: Company feed - Recently employed employees
|
|
$ref: '#/definitions/dashboardWidget'
|
|
updBooks:
|
|
description: Company feed - New books in library
|
|
$ref: '#/definitions/dashboardWidget'
|
|
400:
|
|
description: Invalid input
|
|
401:
|
|
description: Unathorized request
|
|
403:
|
|
description: Unathorized request
|
|
500:
|
|
description: Server Error
|
|
|
|
/feedback/add:
|
|
post:
|
|
tags:
|
|
- feedback
|
|
operationId: actionAdd
|
|
summary: Creates a feedback about a department or user.
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
parameters:
|
|
- in: body
|
|
name: body
|
|
description: <b>userId</b> - User ID from which the feedback will be created.<br><b>type</b> - Entity type (department, user).<br><b>id</b> - Entity id.<br><b>score</b> - Feedback score from 1 to 5.<br><b>text</b> - Feedback text.<br><b>isAnonymous</b> - Anonymous feedback.
|
|
required: true
|
|
schema:
|
|
type: object
|
|
properties:
|
|
userId:
|
|
type: string
|
|
description: User ID from which the feedback will be created.
|
|
example: cd1a4391-9fa7-4ae3-80c1-f9b46ad1838d
|
|
required: false
|
|
type:
|
|
type: string
|
|
description: Entity type.
|
|
enum: [ department, user ]
|
|
example: department
|
|
required: true
|
|
id:
|
|
type: string
|
|
description: Entity id.
|
|
example: cd1a4391-9fa7-4ae3-80c1-f9b46ad1838d
|
|
required: true
|
|
score:
|
|
type: number
|
|
description: Feedback score.
|
|
minimum: 1
|
|
maximum: 5
|
|
example: 5
|
|
required: true
|
|
text:
|
|
type: string
|
|
description: Feedback text.
|
|
example: Example text.
|
|
required: true
|
|
isAnonymous:
|
|
type: boolean
|
|
description: Anonymous feedback.
|
|
example: true
|
|
default: false
|
|
required: false
|
|
responses:
|
|
200:
|
|
description: Returns the success status and data of the generated feedback.
|
|
schema:
|
|
type: object
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
feedback:
|
|
type: object
|
|
properties:
|
|
id:
|
|
description: Feedback model ID.
|
|
type: string
|
|
example: 77a14e58-7de2-4f50-bd1c-d2904f2a7b79
|
|
user_id:
|
|
description: User model ID.
|
|
type: string
|
|
example: null
|
|
department_id:
|
|
description: Department model ID.
|
|
type: string
|
|
example: cd1a4391-9fa7-4ae3-80c1-f9b46ad1838d
|
|
score:
|
|
description: Feedback score.
|
|
type: number
|
|
example: 5
|
|
text:
|
|
description: Feedback text.
|
|
type: string
|
|
example: Example text.
|
|
is_anonymous:
|
|
description: Anonymous feedback.
|
|
type: boolean
|
|
example: false
|
|
user_name:
|
|
description: The user name to which the feedback was left.
|
|
type: string
|
|
example: ""
|
|
department_name:
|
|
description: The department name to which the feedback was left.
|
|
type: string
|
|
example: "Fast food department"
|
|
created_user_name:
|
|
description: The user name of the person who left the feedback.
|
|
type: string
|
|
example: "Colonel Sanders"
|
|
400:
|
|
description: Bad Request. Returns a message with the error details.
|
|
401:
|
|
description: Unathorized request.
|
|
403:
|
|
description: Forbidden.
|
|
404:
|
|
description: Not found. Returns a message with the error details.
|
|
500:
|
|
description: Server Error.
|
|
|
|
definitions:
|
|
|
|
accountSecret:
|
|
type: object
|
|
properties:
|
|
userId:
|
|
type: string
|
|
format: uuid
|
|
secret:
|
|
type: string
|
|
format: uuid
|
|
tenantId:
|
|
type: integer
|
|
format: int64
|
|
default: 101
|
|
xml:
|
|
name: accountSecret
|
|
|
|
tenantInfo:
|
|
type: object
|
|
properties:
|
|
endpoint:
|
|
type: string
|
|
default: https://demo.hrbox.io/api/v2
|
|
tenantId:
|
|
type: integer
|
|
format: int64
|
|
default: 101
|
|
tenantName:
|
|
type: string
|
|
default: Demo Company
|
|
domain:
|
|
type: string
|
|
default: demo.hrbox.io
|
|
brandColor:
|
|
type: string
|
|
default: #FF0000
|
|
logoUrl:
|
|
type: string
|
|
default: https://demo.hrbox.io/logo.png
|
|
logoSqUrl:
|
|
type: string
|
|
default: https://demo.hrbox.io/logo-sq.png
|
|
xml:
|
|
name: tenantInfo
|
|
|
|
userProfile:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
name:
|
|
type: string
|
|
default: "Chintan Rana"
|
|
first_name:
|
|
type: string
|
|
default: "Chintan"
|
|
last_name:
|
|
type: string
|
|
default: "Rana"
|
|
middle_name:
|
|
type: string
|
|
default: null
|
|
faceUrl:
|
|
type: string
|
|
default: "https://pentest.hrbox.io/file/user-face/46f838be-1b51-43ea-988e-fce2f73f6302/300.jpg"
|
|
iconUrl:
|
|
type: string
|
|
default: "https://pentest.hrbox.io/file/user-face/46f838be-1b51-43ea-988e-fce2f73f6302/60.jpg"
|
|
reg_status_id:
|
|
type: integer
|
|
default: 3
|
|
gender_id:
|
|
type: integer
|
|
default: 1
|
|
country_id:
|
|
type: string
|
|
default: "ru"
|
|
timezone_id:
|
|
type: string
|
|
default: "Europe/Moscow"
|
|
city_id:
|
|
type: string
|
|
default: "BBDAEADC-FCCA-ABCB-AEFE-FBDCEAFAAEDB"
|
|
isBoss:
|
|
type: boolean
|
|
default: false
|
|
is_external:
|
|
type: boolean
|
|
default: false
|
|
bithdayDate:
|
|
type: string
|
|
default: "29 of May"
|
|
cityName:
|
|
type: string
|
|
default: "Moscow"
|
|
region:
|
|
type: string
|
|
default: "Arizona"
|
|
office:
|
|
type: string
|
|
default: "106a"
|
|
description: Office number
|
|
employment:
|
|
$ref: '#/definitions/employment'
|
|
emails:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/contact'
|
|
phones:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/contact'
|
|
messengers:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/contact'
|
|
achievements:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/achievement'
|
|
userGroupsVisible:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/userGroup'
|
|
|
|
structureItem:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum:
|
|
- department
|
|
- user
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
name:
|
|
type: string
|
|
default: "Name of department or user"
|
|
isBoss:
|
|
type: boolean
|
|
default: false
|
|
description: For user only
|
|
iconUrl:
|
|
type: string
|
|
default: "https://pentest.hrbox.io/file/resize/60x0/299c6542-c541-4296-a528-90f08d835b8b.png"
|
|
description: User's face uamge url
|
|
position:
|
|
type: string
|
|
description: User's employment position
|
|
employmentsCount:
|
|
type: integer
|
|
default: 0
|
|
description: Amount of employees in department
|
|
empty:
|
|
type: boolean
|
|
default: false
|
|
description: If department is empty
|
|
|
|
catalogItem:
|
|
type: object
|
|
properties:
|
|
entity:
|
|
type: string
|
|
description: Tells whether its category or article
|
|
enum:
|
|
- category
|
|
- article
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
title:
|
|
type: string
|
|
url:
|
|
type: string
|
|
description:
|
|
type: string
|
|
thumbUrl:
|
|
type: string
|
|
description: Thumbnail image url
|
|
status_id:
|
|
type: integer
|
|
description: 1 - active, 2 - disabledy, 3 - deleted
|
|
default: 1
|
|
enum:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
thumb_style_id:
|
|
type: integer
|
|
description: Type of thumb 1 - image + picture, 2 - text only, 3 - image only (square image)
|
|
default: 1
|
|
enum:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
tags:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/tag'
|
|
|
|
article:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
title:
|
|
type: string
|
|
url:
|
|
type: string
|
|
imageUrl:
|
|
type: string
|
|
description:
|
|
type: string
|
|
thumb_style_id:
|
|
type: integer
|
|
description: Type of thumb 1 - image + picture, 2 - text only, 3 - image only (square image)
|
|
default: 1
|
|
enum:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
post_type_id:
|
|
type: integer
|
|
description: Post type 2 - only url (redirect to another page), 3 - page with actual content
|
|
default: 2
|
|
enum:
|
|
- 2
|
|
- 3
|
|
created_at:
|
|
type: string
|
|
format: datetime
|
|
publish_at:
|
|
type: string
|
|
format: datetime
|
|
description: Date and time from when article available to view by users
|
|
updated_at:
|
|
type: string
|
|
format: datetime
|
|
status_id:
|
|
type: integer
|
|
description: 1 - active, 2 - disabledy, 3 - deleted
|
|
default: 1
|
|
enum:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
likesCount:
|
|
type: integer
|
|
viewsCount:
|
|
type: integer
|
|
commentsCount:
|
|
type: integer
|
|
tags:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/tag'
|
|
|
|
tag:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
name:
|
|
type: string
|
|
|
|
meta:
|
|
type: object
|
|
properties:
|
|
totalCount:
|
|
type: integer
|
|
default: 0
|
|
description: Total items count in database
|
|
pageCount:
|
|
type: integer
|
|
default: 1
|
|
description: How much pages there are with current perPage value
|
|
currentPage:
|
|
type: integer
|
|
default: 1
|
|
description: Current page number
|
|
perPage:
|
|
type: integer
|
|
default: 10
|
|
description: How much items per page
|
|
|
|
contact:
|
|
type: object
|
|
properties:
|
|
value:
|
|
type: string
|
|
default: "dev@hrbox.io"
|
|
description: Email of phone number
|
|
type:
|
|
type: string
|
|
default: "corporate"
|
|
enum:
|
|
- corporate
|
|
- personal
|
|
readonly:
|
|
type: boolean
|
|
default: true
|
|
|
|
notification:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
subject:
|
|
type: string
|
|
text:
|
|
type: string
|
|
params:
|
|
type: object
|
|
properties:
|
|
url:
|
|
type: string
|
|
default: "Url that should be opened if user taps on Notification, and there are no any other logic exists for this type of notification"
|
|
description: Property os optional. Url that should be opened if user taps on Notification, and there are no any other logic exists for this type of notification
|
|
imageUrl:
|
|
type: string
|
|
default: "Property os optional"
|
|
description: Property is optional
|
|
notificationTypeId:
|
|
type: string
|
|
enum:
|
|
- user-postcard
|
|
- two-factor
|
|
- etc.
|
|
description: Serverside identifier of notification type. Sme logic can depend on it
|
|
created_at:
|
|
type: string
|
|
format: datetime
|
|
seen_at:
|
|
type: string
|
|
format: datetime
|
|
description: if not null - notification was viewed by user
|
|
|
|
userPostcard:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
user_id:
|
|
type: string
|
|
format: uuid
|
|
postcard_id:
|
|
type: string
|
|
format: uuid
|
|
text:
|
|
type: string
|
|
status_id:
|
|
type: integer
|
|
description: 1 - active, 2 - disabled, 3 - deleted
|
|
enum:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
settings:
|
|
type: object
|
|
properties:
|
|
hide_signature:
|
|
type: boolean
|
|
description: Is this postcard anonymous
|
|
status_view_id:
|
|
type: integer
|
|
description: 1 - visible to everyone, 2 - visible only to recipient
|
|
enum:
|
|
- 1
|
|
- 2
|
|
created_at:
|
|
type: string
|
|
format: date
|
|
senderId:
|
|
type: string
|
|
format: uuid?
|
|
senderName:
|
|
type: string
|
|
default: "Alex"
|
|
senderIconUrl:
|
|
type: string
|
|
description: Sender user's face icon
|
|
imageUrl:
|
|
description: Postcard's iamge
|
|
type: string
|
|
is_seen:
|
|
type: boolean
|
|
description: Did user seen this postcard?
|
|
|
|
userGroup:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
name:
|
|
type: string
|
|
default: Managers
|
|
description:
|
|
type: string
|
|
default: "All the managers"
|
|
iconUrl:
|
|
type: string
|
|
default: "https://pentest.hrbox.io/file/resize/60x0/299c6542-c541-4296-a528-90f08d835b8b.png"
|
|
thumbUrl:
|
|
type: string
|
|
default: "https://pentest.hrbox.io/file/resize/400x0/299c6542-c541-4296-a528-90f08d835b8b.png"
|
|
|
|
achievement:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
title:
|
|
type: string
|
|
default: Best sales of Year
|
|
description:
|
|
type: string
|
|
default: One who sold most this year
|
|
imageUrl:
|
|
type: string
|
|
default: "https://pentest.hrbox.io/file/resize/400x0/299c6542-c541-4296-a528-90f08d835b8b.png"
|
|
iconUrl:
|
|
type: string
|
|
default: "https://pentest.hrbox.io/file/resize/60x0/299c6542-c541-4296-a528-90f08d835b8b.png"
|
|
|
|
employment:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
experience:
|
|
type: string
|
|
default: 1 year 2 months
|
|
position:
|
|
type: string
|
|
default: Chief Salesman
|
|
department:
|
|
$ref: '#/definitions/departmentLabel'
|
|
chiefUser:
|
|
$ref: '#/definitions/userLabel'
|
|
|
|
departmentLabel:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
name:
|
|
type: string
|
|
default: Marketing
|
|
departmentPath:
|
|
type: string
|
|
default: "Company / Sales / Marketing"
|
|
|
|
userLabel:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
name:
|
|
type: string
|
|
default: Alex
|
|
faceUrl:
|
|
type: string
|
|
default: "https://pentest.hrbox.io/file/user-face/46f838be-1b51-43ea-988e-fce2f73f6302/300.jpg"
|
|
iconUrl:
|
|
type: string
|
|
default: "https://pentest.hrbox.io/file/user-face/46f838be-1b51-43ea-988e-fce2f73f6302/60.jpg"
|
|
device:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
name:
|
|
type: string
|
|
default: Alex's iPhone
|
|
model:
|
|
type: string
|
|
default: iPhone
|
|
os:
|
|
type: string
|
|
default: iOS
|
|
osVersion:
|
|
type: string
|
|
default: 14.0.1
|
|
xml:
|
|
name: device
|
|
|
|
profileBrief:
|
|
type: object
|
|
properties:
|
|
userId:
|
|
type: string
|
|
format: uuid
|
|
name:
|
|
type: string
|
|
position:
|
|
type: string
|
|
experience:
|
|
type: string
|
|
departmentName:
|
|
type: string
|
|
photoUrl:
|
|
type: string
|
|
faceUrl:
|
|
type: string
|
|
iconUrl:
|
|
type: string
|
|
statusText:
|
|
type: string
|
|
statusTypes:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/profileStatusType'
|
|
xml:
|
|
name: profileBrief
|
|
|
|
profileStatusType:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
label:
|
|
type: string
|
|
enabled:
|
|
type: boolean
|
|
xml:
|
|
name: item
|
|
|
|
dashboardWidget:
|
|
type: object
|
|
properties:
|
|
ref:
|
|
type: string
|
|
label:
|
|
type: string
|
|
url:
|
|
type: string
|
|
totalCount:
|
|
type: integer
|
|
format: int64
|
|
items:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/dashboardWidgetItem'
|
|
xml:
|
|
name: widgetId
|
|
|
|
dashboardWidgetItem:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
format: uuid
|
|
itemTitle:
|
|
type: string
|
|
itemUrl:
|
|
type: string
|
|
itemImageUrl:
|
|
type: string
|
|
itemDate:
|
|
type: string
|
|
format: datetime
|
|
itemTip:
|
|
type: string
|
|
itemEntityId:
|
|
type: integer
|
|
format: int64
|
|
actorId:
|
|
type: string
|
|
format: uuid
|
|
actorName:
|
|
type: string
|
|
actorIconUrl:
|
|
type: string
|
|
actionTitle:
|
|
type: string
|
|
actionStyle:
|
|
type: string
|
|
description: define color
|
|
enum:
|
|
- info
|
|
- success
|
|
- warning
|
|
- danger
|
|
xml:
|
|
name: item
|
|
|
|
# Added by API Auto Mocking Plugin
|
|
# host: api.hrbox.io
|
|
# basePath: /api/v2
|
|
schemes:
|
|
- https
|
|
# Added by API Auto Mocking Plugin
|
|
host: virtserver.swaggerhub.com
|
|
basePath: /hrbox.io/Mobile/2.0.0 |