diff --git a/v2/swagger.yaml b/v2/swagger.yaml
new file mode 100644
index 0000000..05b9044
--- /dev/null
+++ b/v2/swagger.yaml
@@ -0,0 +1,3079 @@
+openapi: 3.0.1
+info:
+ version: 2.0.0
+ title: HRBox Mobile API
+ description: |
+ HRBox mobile app API
+
+ Since HRBOX is multi-tenant 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 provide 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 following 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
+ contact:
+ email: yuriy@hrbox.io
+
+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
+
+paths:
+ /mobile/bind/{id}/{token}:
+ post:
+ tags:
+ - mobile
+ summary: Bind device by token. This URL will be taken by parsing QR code
+ operationId: mobileBind
+ parameters:
+ - name: id
+ in: path
+ description: ID
+ schema:
+ type: string
+ required: true
+ - name: token
+ in: path
+ description: ID
+ schema:
+ type: string
+ required: true
+ requestBody:
+ description: Device info
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ device:
+ $ref: '#/components/schemas/device'
+ responses:
+ 200:
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ accountSecret:
+ $ref: '#/components/schemas/accountSecret'
+ tenantInfo:
+ $ref: '#/components/schemas/tenantInfo'
+ 400:
+ description: Invalid input
+ 403:
+ description: Invalid id or token
+
+ /mobile/request-two-factor:
+ post:
+ tags:
+ - mobile
+ summary: Запросить код двухфакторной аутентификации. Код будет выслан если она включена.
+ operationId: mobileRequestTwoFactor
+ requestBody:
+ description: Email Password and Device info. Also Code if 2FAuth enabled.
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ email:
+ type: string
+ format: email
+ password:
+ type: string
+ format: password
+ responses:
+ 200:
+ description: Если Двухфакторная аутентификация включена и код был выслан то в ответе будет codeRequired = true иначе codeRequired=false
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ codeRequired:
+ type: boolean
+ tenantInfo:
+ $ref: '#/components/schemas/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 email and password
+ operationId: mobileManualBind
+ requestBody:
+ description: Email Password and Device info. Also Code if 2FAuth enabled.
+ required: true
+ content:
+ application/json:
+ 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: '#/components/schemas/device'
+ responses:
+ 200:
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ accountSecret:
+ $ref: '#/components/schemas/accountSecret'
+ tenantInfo:
+ $ref: '#/components/schemas/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
+ requestBody:
+ description: secret, userId and deviceId
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ secret:
+ type: string
+ format: email
+ userId:
+ type: string
+ deviceId:
+ type: string
+ responses:
+ 200:
+ description: successful authorization
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ sessionId:
+ type: string
+ sessionSecret:
+ type: string
+ tenantInfo:
+ $ref: '#/components/schemas/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
+ requestBody:
+ 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
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ token:
+ type: string
+ provider:
+ type: string
+ default: firebase
+ deviceId:
+ type: string
+ responses:
+ 200:
+ description: push token successfully saved
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ success:
+ type: boolean
+ default: true
+ 400:
+ description: Invalid input
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized request
+ 500:
+ description: Server Error
+
+ /mobile/unbind:
+ post:
+ tags:
+ - mobile
+ summary: Unbind device by deviceId
+ operationId: mobileUnbind
+ parameters:
+ - name: deviceId
+ in: query
+ description: ID
+ schema:
+ type: string
+ required: true
+ responses:
+ 200:
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ tenantInfo:
+ $ref: '#/components/schemas/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
+ parameters:
+ - name: id
+ in: query
+ description: User ID
+ schema:
+ type: string
+ required: true
+ responses:
+ 200:
+ description: User profile data
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/userProfile'
+ 400:
+ description: Invalid input (malformed id)
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized request
+ 404:
+ description: User not found
+ 500:
+ description: Server Error
+
+ /user/items:
+ get:
+ tags:
+ - user
+ summary: User items.
+ operationId: /user/items/actionItems
+ parameters:
+ - name: q
+ in: query
+ schema:
+ type: string
+ responses:
+ 200:
+ description: User items.
+ content:
+ application/json:
+ schema:
+ properties:
+ data:
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ type: string
+ format: uuid
+ name:
+ type: string
+ faceUrl:
+ type: string
+ 400:
+ description: Bad Request.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Calendar event not found.
+ 500:
+ description: Server Error.
+
+ /user-group/items:
+ get:
+ tags:
+ - userGroup
+ summary: User group items.
+ operationId: /user-group/items/actionItems
+ parameters:
+ - name: q
+ in: query
+ description: Query string
+ schema:
+ type: string
+ example: Some text
+ - name: only_with_calendar_events
+ in: query
+ description: Only used in calendar event
+ example: 0
+ schema:
+ type: integer
+ enum:
+ - 0
+ - 1
+ responses:
+ 200:
+ description: User group items.
+ content:
+ application/json:
+ schema:
+ properties:
+ data:
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ type: string
+ format: uuid
+ name:
+ type: string
+ faceUrl:
+ type: string
+ 400:
+ description: Bad Request.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Calendar event not found.
+ 500:
+ description: Server Error.
+
+ /meeting-place/items:
+ get:
+ tags:
+ - meetingPlace
+ summary: Meting place items.
+ operationId: actionMeetingPlace
+ parameters:
+ - name: q
+ in: query
+ description: Query string
+ schema:
+ type: string
+ example: Some text
+ responses:
+ 200:
+ description: Meting place items.
+ content:
+ application/json:
+ schema:
+ properties:
+ data:
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ type: string
+ format: uuid
+ name:
+ type: string
+ 400:
+ description: Bad Request.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Calendar event not found.
+ 500:
+ description: Server Error.
+
+ /account/status-text:
+ post:
+ tags:
+ - account
+ summary: Set user's status text
+ operationId: accountStatusText
+ requestBody:
+ description: User's status text
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ activeTypes:
+ type: string
+ responses:
+ 200:
+ description: status text saved
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ activeTypes:
+ type: string
+ 400:
+ description: Invalid input
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized request
+ 500:
+ description: Server Error
+
+ /account/status-active-types:
+ post:
+ tags:
+ - account
+ summary: Set user's active statuses
+ operationId: accountStatusActiveTypes
+ requestBody:
+ description: User's active statuses
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ activeTypes:
+ type: array
+ items:
+ type: string
+ responses:
+ 200:
+ description: user's active statuses saved
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ statusTypes:
+ type: array
+ items:
+ type: string
+ 400:
+ description: Invalid input
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized request
+ 500:
+ description: Server Error
+
+ /notifications/pushes:
+ get:
+ tags:
+ - notifications
+ summary: Push notifications index. Infinite scroll done by paginating with {page} parameter
+ operationId: notificationPushes
+ parameters:
+ - name: per-page
+ in: query
+ description: How many items return in one page (default 10).
+ schema:
+ type: string
+ - name: page
+ in: query
+ description: Current page.
+ schema:
+ type: string
+ responses:
+ 200:
+ description: Returns array of push notifications and pagination related data
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ _meta:
+ $ref: '#/components/schemas/meta'
+ data:
+ type: array
+ items:
+ $ref: '#/components/schemas/notification'
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized request
+ 500:
+ description: Server Error
+
+ /notifications/mark-seen:
+ post:
+ tags:
+ - notifications
+ summary: Mark notification as seen
+ operationId: notificationMarkSeen
+ parameters:
+ - in: query
+ name: notificationId
+ description: notificationId
+ schema:
+ type: string
+ required: true
+ responses:
+ 200:
+ description: Notification marked as seen
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ badge:
+ type: number
+ description: unseen notification count
+ date:
+ type: string
+ format: date
+ 400:
+ description: Invalid input
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized request
+ 500:
+ description: Server Error
+ /notifications/mark-seen-all:
+ post:
+ tags:
+ - notifications
+ summary: Mark all notifications as seen
+ operationId: notificationMarkSeenAll
+ responses:
+ 200:
+ description: All marked as seen
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ badge:
+ type: number
+ description: unseen notification count
+ date:
+ type: string
+ format: date
+ 400:
+ description: Invalid input
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized request
+ 500:
+ description: Server Error
+
+ /department/tree-node:
+ get:
+ tags:
+ - department
+ summary: Get departments inner structure
+ operationId: departmentTreeNode
+ parameters:
+ - name: id
+ in: query
+ description: Parent department ID
+ schema:
+ 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. [employmentsCount], [empty] - are "department" only properties.
+ content:
+ application/json:
+ 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: '#/components/schemas/structureItem'
+ 400:
+ description: Invalid input (malformed id)
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized request
+ 404:
+ description: Department not found
+ 500:
+ description: Server Error
+
+ /department/search:
+ get:
+ tags:
+ - department
+ summary: Search Org Structure for matching users and departments
+ operationId: departmentSearch
+ parameters:
+ - name: q
+ in: query
+ description: Query string
+ schema:
+ 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. [employmentsCount], [empty] - are "department" only properties.
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ q:
+ type: string
+ example: "Search query string"
+ items:
+ type: array
+ items:
+ $ref: '#/components/schemas/structureItem'
+ 400:
+ description: Invalid input
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized request
+ 500:
+ description: Server Error
+
+ /postcard/user-view:
+ get:
+ tags:
+ - postcard
+ summary: Details about postcard sent to user
+ operationId: postcardUserView
+ parameters:
+ - name: id
+ in: query
+ description: UserPostcard item ID
+ schema:
+ type: string
+ required: true
+ responses:
+ 200:
+ description: Postcard details
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/userPostcard'
+ 400:
+ description: Invalid input (malformed id)
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized 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
+ parameters:
+ - name: per-page
+ in: query
+ description: How many items return in one page (default 10).
+ schema:
+ type: string
+ - name: page
+ in: query
+ description: Current page
+ schema:
+ type: string
+ responses:
+ 200:
+ description: Returns array of news and pagination related data
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ _meta:
+ $ref: '#/components/schemas/meta'
+ data:
+ type: array
+ items:
+ $ref: '#/components/schemas/article'
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized 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
+ parameters:
+ - name: id
+ in: query
+ description: ID of category
+ schema:
+ type: string
+ - name: q
+ in: query
+ description: Search query string
+ schema:
+ 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
+ content:
+ application/json:
+ 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: '#/components/schemas/catalogItem'
+ 400:
+ description: Invalid input
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized 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
+ parameters:
+ - name: widgets
+ in: query
+ description: Names of required widgets separated with comma.
+ example: myLms,mySurvey,myAchievements,myTeam,myFavorites,myPostcards
+ schema:
+ 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.
+ * `profileBrief` - Current user brief info
+ * `notificationsBadge` - Current notification bell badge value
+ example: profileBrief,notificationsBadge
+ schema:
+ type: string
+ enum:
+ - profileBrief
+ - notificationsBadge
+ responses:
+ 200:
+ description: Returns all the dashboard data about requested widgets. In response object only requested info/widgets keys will be presented. If widget is not available for current user, this widget will not exists in response of will be null.
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ profileBrief:
+ $ref: '#/components/schemas/profileBrief'
+ notificationsBadge:
+ description: Current notification bell badge value
+ type: integer
+ default: 0
+ widgets:
+ type: object
+ properties:
+ myLms:
+ # description: User feed - Assigned test and courses
+ $ref: '#/components/schemas/dashboardWidget'
+ mySurvey:
+ # description: User feed - Assigned surveys
+ $ref: '#/components/schemas/dashboardWidget'
+ myAchievements:
+ # description: User feed - Assigned achievements
+ $ref: '#/components/schemas/dashboardWidget'
+ myTeam:
+ # description: User feed - Teammates of current user
+ $ref: '#/components/schemas/dashboardWidget'
+ myFavorites:
+ # description: User feed - Favorites (in development, not used)
+ $ref: '#/components/schemas/dashboardWidget'
+ myPostcards:
+ # description: User feed - Received postcards
+ $ref: '#/components/schemas/dashboardWidget'
+ updNews:
+ # description: Company feed - New news
+ $ref: '#/components/schemas/dashboardWidget'
+ updVoting:
+ # description: Company feed - New contests
+ $ref: '#/components/schemas/dashboardWidget'
+ updIdeas:
+ # description: Company feed - New ideas
+ $ref: '#/components/schemas/dashboardWidget'
+ updAchievements:
+ # description: Company feed - New achievements achieved by users
+ $ref: '#/components/schemas/dashboardWidget'
+ updBirthday:
+ # description: Company feed - Users that have birthday today
+ $ref: '#/components/schemas/dashboardWidget'
+ updNewbies:
+ # description: Company feed - Recently employed employees
+ $ref: '#/components/schemas/dashboardWidget'
+ updBooks:
+ # description: Company feed - New books in library
+ $ref: '#/components/schemas/dashboardWidget'
+ 400:
+ description: Invalid input
+ 401:
+ description: Unauthorized request
+ 403:
+ description: Unauthorized request
+ 500:
+ description: Server Error
+
+ /feedback/add:
+ post:
+ tags:
+ - feedback
+ operationId: actionAdd
+ summary: Creates a feedback about a department or user.
+ requestBody:
+ description: userId - User ID from which the feedback will be created.
type - Entity type (department, user).
id - Entity id.
score - Feedback score from 1 to 5.
text - Feedback text.
isAnonymous - Anonymous feedback.
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ userId:
+ description: User ID from which the feedback will be created.
+ type: string
+ example: cd1a4391-9fa7-4ae3-80c1-f9b46ad1838d
+ required: false
+ type:
+ description: Entity type.
+ type: string
+ enum:
+ - department
+ - user
+ example: department
+ required: true
+ id:
+ description: Entity id.
+ type: string
+ example: cd1a4391-9fa7-4ae3-80c1-f9b46ad1838d
+ required: true
+ score:
+ description: Feedback score.
+ type: number
+ minimum: 1
+ maximum: 5
+ example: 5
+ required: true
+ text:
+ description: Feedback text.
+ type: string
+ example: Example text.
+ required: true
+ isAnonymous:
+ description: Anonymous feedback.
+ type: boolean
+ example: true
+ default: false
+ required: false
+ responses:
+ 200:
+ description: Returns the success status and data of the generated feedback.
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ success:
+ type: boolean
+ feedback:
+ $ref: '#/components/schemas/feedback'
+ 400:
+ description: Bad Request. Returns a message with the error details.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Not found. Returns a message with the error details.
+ 500:
+ description: Server Error.
+
+ /feedback/view:
+ get:
+ tags:
+ - feedback
+ summary: Details about feedback.
+ operationId: /feedback/view
+ parameters:
+ - name: id
+ in: query
+ description: Feedback item ID.
+ schema:
+ type: string
+ required: true
+ responses:
+ 200:
+ description: Feedback details.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/feedback'
+ 400:
+ description: Bad Request.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Feedback not found.
+ 500:
+ description: Server Error.
+
+ /calendar-event/view:
+ get:
+ tags:
+ - calendarEvent
+ summary: Details about calendar event.
+ operationId: /calendar-event/view
+ parameters:
+ - name: id
+ in: query
+ description: Calendar event item ID.
+ schema:
+ type: string
+ - name: parent_id
+ in: query
+ description: Calendar event parent item ID.
+ schema:
+ type: string
+ - name: rec_date
+ in: query
+ description: Calendar event recurring date.
+ schema:
+ type: string
+ responses:
+ 200:
+ description: Calendar event details.
+ content:
+ application/json:
+ schema:
+ properties:
+ calendarEvent:
+ $ref: '#/components/schemas/calendarEvent'
+ calendarEventUser:
+ $ref: '#/components/schemas/calendarEventUser'
+ calendarEventBid:
+ $ref: '#/components/schemas/calendarEventBid'
+ hasCalendarEventBid:
+ type: boolean
+ canCreateCalendarEventBid:
+ type: boolean
+ 400:
+ description: Bad Request.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Calendar event not found.
+ 500:
+ description: Server Error.
+
+ /calendar-event:
+ get:
+ tags:
+ - calendarEvent
+ summary: Calendar event index.
+ operationId: /calendar-event/index
+ parameters:
+ - name: title
+ in: query
+ schema:
+ type: string
+ - name: title_exact
+ in: query
+ schema:
+ type: string
+ - name: start_date_time
+ in: query
+ description: Default current month
+ schema:
+ type: string
+ example: '2023-01-01 10:00:00'
+ - name: end_date_time
+ in: query
+ description: Default current month +3 month
+ schema:
+ type: string
+ example: '2023-04-01 10:00:00'
+ - name: calendar_event_type_id
+ in: query
+ description: 1 - CORPORATE, 2 - TRAINING, 3 - MEET, 4 - PUBLIC_HOLIDAY, 5 - EVENT, 6 - WEBINAR
+ schema:
+ type: integer
+ example: 1
+ - name: entity_id
+ in: query
+ description: Communication with entities, for example, is used in meeting places. 1030 - MeetingPlace
+ schema:
+ type: integer
+ - name: calendar_event_entity_item_id
+ in: query
+ schema:
+ type: string
+ - name: user_id
+ in: query
+ schema:
+ type: string
+ - name: visible_to
+ in: query
+ description: Visible to user group
+ schema:
+ type: string
+ example: '9f7063d1-959e-4c32-b186-313576375739,3a7539cb-d85e-4455-af41-fc505d1ce6dd'
+ responses:
+ 200:
+ description: Calendar event index.
+ content:
+ application/json:
+ schema:
+ properties:
+ data:
+ type: array
+ items:
+ $ref: '#/components/schemas/calendarEvent'
+ 400:
+ description: Bad Request.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Calendar event not found.
+ 500:
+ description: Server Error.
+
+ /calendar-event/items:
+ get:
+ tags:
+ - calendarEvent
+ summary: Calendar event items.
+ operationId: actionItems
+ parameters:
+ - name: q
+ in: query
+ schema:
+ type: string
+ - name: calendar_event_type_id
+ in: query
+ description: 1 - CORPORATE, 2 - TRAINING, 3 - MEET, 4 - PUBLIC_HOLIDAY, 5 - EVENT, 6 - WEBINAR
+ schema:
+ type: integer
+ example: 1
+ - name: entity_id
+ in: query
+ description: Communication with entities, for example, is used in meeting places. 1030 - MeetingPlace
+ schema:
+ type: integer
+ example: 1030
+ - name: calendar_event_entity_item_id
+ in: query
+ schema:
+ type: string
+ example: 9f7063d1-959e-4c32-b186-313576375739
+ - name: user_id
+ in: query
+ schema:
+ type: string
+ example: 9f7063d1-959e-4c32-b186-313576375739
+ - name: visible_to
+ in: query
+ description: Visible to user group
+ schema:
+ type: string
+ example: 9f7063d1-959e-4c32-b186-313576375739,3a7539cb-d85e-4455-af41-fc505d1ce6dd
+ responses:
+ 200:
+ description: Calendar event items.
+ content:
+ application/json:
+ schema:
+ properties:
+ data:
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ type: string
+ format: uuid
+ title:
+ type: string
+ 400:
+ description: Bad Request.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Calendar event not found.
+ 500:
+ description: Server Error.
+
+ /calendar-event/my:
+ get:
+ tags:
+ - calendarEvent
+ summary: Calendar event my.
+ operationId: actionMy
+ parameters:
+ - name: title
+ in: query
+ schema:
+ type: string
+ - name: title_exact
+ in: query
+ schema:
+ type: string
+ - name: start_date_time
+ in: query
+ description: Default current month
+ schema:
+ type: string
+ example: '2023-01-01 10:00:00'
+ - name: end_date_time
+ in: query
+ description: Default current month +3 month
+ schema:
+ type: string
+ example: '2023-04-01 10:00:00'
+ - name: calendar_event_type_id
+ in: query
+ description: 1 - CORPORATE, 2 - TRAINING, 3 - MEET, 4 - PUBLIC_HOLIDAY, 5 - EVENT, 6 - WEBINAR
+ schema:
+ type: integer
+ example: 1
+ - name: entity_id
+ in: query
+ example: 1030
+ description: Communication with entities, for example, is used in meeting places. 1030 - MeetingPlace
+ schema:
+ type: integer
+ - name: calendar_event_entity_item_id
+ in: query
+ schema:
+ type: string
+ - name: user_id
+ in: query
+ schema:
+ type: string
+ example: 9f7063d1-959e-4c32-b186-313576375739
+ - name: visible_to
+ in: query
+ description: Visible to user group
+ schema:
+ type: string
+ example: '9f7063d1-959e-4c32-b186-313576375739,3a7539cb-d85e-4455-af41-fc505d1ce6dd'
+ responses:
+ 200:
+ description: Calendar event index.
+ content:
+ application/json:
+ schema:
+ properties:
+ data:
+ type: array
+ items:
+ $ref: '#/components/schemas/calendarEvent'
+ 400:
+ description: Bad Request.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Calendar event not found.
+ 500:
+ description: Server Error.
+
+ /calendar-event-request:
+ post:
+ tags:
+ - calendarEventRequest
+ summary: Calendar event request create.
+ operationId: /calendar-event-request
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ calendar_event_id:
+ type: string
+ format: uuid
+ description: Calendar event ID
+ calendar_event_parent_id:
+ type: string
+ format: uuid
+ description: Calendar event parent ID
+ calendar_event_rec_date:
+ type: string
+ format: date
+ description: Calendar event recurring date
+ responses:
+ 200:
+ description: Returns the calendar event request
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ success:
+ type: boolean
+ message:
+ type: string
+ errors:
+ type: array
+ items:
+ type: string
+ data:
+ $ref: '#/components/schemas/calendarEventBid'
+ 400:
+ description: Bad Request. Returns a message with the error details.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Not found. Returns a message with the error details.
+ 500:
+ description: Server Error.
+
+ /calendar-event-request/cancel:
+ post:
+ tags:
+ - calendarEventRequest
+ summary: Calendar event request cancel.
+ operationId: actionCreate
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ id:
+ type: string
+ format: uuid
+ description: Calendar event request ID
+ responses:
+ 200:
+ description: Returns the calendar event request
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ success:
+ type: boolean
+ message:
+ type: string
+ errors:
+ type: array
+ items:
+ type: string
+ 400:
+ description: Bad Request. Returns a message with the error details.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Not found. Returns a message with the error details.
+ 500:
+ description: Server Error.
+
+ /moderation:
+ get:
+ tags:
+ - moderation
+ summary: Moderation index.
+ operationId: /moderation/index
+ parameters:
+ - name: id
+ in: query
+ description: Moderation ID.
+ schema:
+ type: string
+ required: false
+ example: edee4e11-dab5-4aac-93ac-43c379aab6b2
+ responses:
+ 200:
+ description: Moderation object.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/moderation'
+ 400:
+ description: Bad Request.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Feedback not found.
+ 500:
+ description: Server Error.
+
+ /moderation/accept:
+ post:
+ tags:
+ - moderation
+ summary: Accept moderation.
+ operationId: actionAccept
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/arrayOfIds'
+ responses:
+ 200:
+ description: Text
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ success:
+ type: boolean
+ message:
+ type: string
+ 400:
+ description: Bad Request.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Feedback not found.
+ 500:
+ description: Server Error.
+
+ /moderation/reject:
+ post:
+ tags:
+ - moderation
+ summary: Reject moderation.
+ operationId: actionReject
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/arrayOfIds'
+ responses:
+ 200:
+ description: Text
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ success:
+ type: boolean
+ message:
+ type: string
+ 400:
+ description: Bad Request.
+ 401:
+ description: Unauthorized request.
+ 403:
+ description: Unauthorized request.
+ 404:
+ description: Feedback not found.
+ 500:
+ description: Server Error.
+
+components:
+ schemas:
+ arrayOfIds:
+ type: object
+ properties:
+ id:
+ description: Array of IDs.
+ type: array
+ items:
+ type: string
+ example:
+ - '53f2d03c-303a-4a3c-b57f-f7fb62fee538'
+ - '42862a16-affa-4ba5-86c5-61376f46d695'
+
+ 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
+ birthdayDate:
+ 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: '#/components/schemas/employment'
+ emails:
+ type: array
+ items:
+ $ref: '#/components/schemas/contact'
+ phones:
+ type: array
+ items:
+ $ref: '#/components/schemas/contact'
+ messengers:
+ type: array
+ items:
+ $ref: '#/components/schemas/contact'
+ achievements:
+ type: array
+ items:
+ $ref: '#/components/schemas/achievement'
+ userGroupsVisible:
+ type: array
+ items:
+ $ref: '#/components/schemas/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 image 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 - Disabled, 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: '#/components/schemas/tag'
+
+ calendarEvent:
+ type: object
+ properties:
+ id:
+ type: string
+ format: uuid
+ parent_id:
+ type: string
+ format: uuid
+ title:
+ type: string
+ description:
+ type: string
+ image_id:
+ type: string
+ format: uuid
+ url:
+ type: string
+ entity_id:
+ type: integer
+ reference_id:
+ type: string
+ format: uuid
+ start_date_time:
+ type: string
+ format: 'date-time'
+ end_date_time:
+ type: string
+ format: 'date-time'
+ day_duration:
+ type: integer
+ is_all_day:
+ type: boolean
+ is_recurring:
+ type: boolean
+ freq:
+ type: integer
+ interval:
+ type: integer
+ by_month:
+ type: integer
+ by_monthday:
+ type: array
+ items:
+ type: integer
+ by_day:
+ type: array
+ items:
+ type: integer
+ visible_to:
+ type: array
+ items:
+ type: string
+ format: uuid
+ quantity_place:
+ type: integer
+ created_user_id:
+ type: string
+ format: uuid
+ updated_user_id:
+ type: string
+ format: uuid
+ created_at:
+ type: string
+ format: 'date-time'
+ updated_at:
+ type: string
+ format: 'date-time'
+ calendar_event_type_id:
+ type: integer
+ create_bid_deadline_at:
+ type: string
+ format: 'date-time'
+ start_date:
+ type: string
+ format: date
+ end_date:
+ type: string
+ format: date
+ start_time:
+ type: string
+ end_time:
+ type: string
+ start_date_time_localized:
+ type: string
+ end_date_time_localized:
+ type: string
+ created_at_localized:
+ type: string
+ create_bid_deadline_at_localized:
+ type: string
+ rec_date:
+ type: string
+ format: date
+ rec_date_formatted:
+ type: string
+ send_notification_start:
+ type: boolean
+ send_notification_before_start_minutes:
+ type: array
+ items:
+ type: integer
+ duration_seconds:
+ type: integer
+ duration_seconds_formatted:
+ type: string
+ duration_seconds_formatted_data:
+ type: object
+ properties:
+ hours:
+ type: integer
+ minutes:
+ type: integer
+ rrule_string:
+ type: string
+ type_name:
+ type: string
+ is_started:
+ type: boolean
+ is_ended:
+ type: boolean
+ is_ended_text:
+ type: string
+ is_virtual_recurring:
+ type: boolean
+ is_deadline_create_bid:
+ type: boolean
+ url_view:
+ type: string
+
+ calendarEventUser:
+ type: object
+ properties:
+ id:
+ type: string
+ format: uuid
+ calendar_event_id:
+ type: string
+ format: uuid
+ calendar_event_parent_id:
+ type: string
+ format: uuid
+ user_id:
+ type: string
+ format: uuid
+ status_id:
+ type: integer
+ is_visited:
+ type: boolean
+ where_from_type_id:
+ type: integer
+ calendar_event_rec_date:
+ type: string
+ format: date
+ status_name:
+ type: string
+ is_visited_text:
+ type: string
+ where_from_type_name:
+ type: string
+
+ calendarEventBid:
+ type: object
+ properties:
+ id:
+ type: string
+ format: uuid
+ calendar_event_id:
+ type: string
+ format: uuid
+ calendar_event_parent_id:
+ type: string
+ format: uuid
+ calendar_event_bid_status_id:
+ type: integer
+ calendar_event_rec_date:
+ type: string
+ format: date
+ user_id:
+ type: string
+ format: uuid
+ status_name:
+ type: string
+ user_name:
+ type: string
+
+ 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 - disabled, 3 - deleted
+ default: 1
+ enum:
+ - 1
+ - 2
+ - 3
+ likesCount:
+ type: integer
+ viewsCount:
+ type: integer
+ commentsCount:
+ type: integer
+ tags:
+ type: array
+ items:
+ $ref: '#/components/schemas/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 image
+ 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: '#/components/schemas/departmentLabel'
+ chiefUser:
+ $ref: '#/components/schemas/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: '#/components/schemas/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: '#/components/schemas/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
+
+ feedback:
+ type: object
+ properties:
+ id:
+ description: Feedback model ID.
+ type: string
+ format: uuid
+ user_id:
+ description: User model ID.
+ type: string
+ format: uuid
+ default: null
+ department_id:
+ description: Department model ID.
+ type: string
+ format: uuid
+ default: null
+ score:
+ description: Feedback score.
+ type: integer
+ example: 5
+ text:
+ description: Feedback text.
+ type: string
+ example: Example text.
+ is_anonymous:
+ description: Anonymous feedback.
+ type: boolean
+ example: false
+ default: false
+ user_name:
+ description: The user name to which the feedback was left.
+ type: string
+ default: ""
+ department_name:
+ description: The department name to which the feedback was left.
+ type: string
+ default: ""
+ created_user_name:
+ description: The name of the user who left the feedback if it was not anonymous.
+ type: string
+
+ moderation:
+ type: object
+ properties:
+ id:
+ description: Moderation ID.
+ type: string
+ format: uuid
+ example: edee4e11-dab5-4aac-93ac-43c379aab6b2
+ requested_user_id:
+ description: Requested user ID.
+ type: string
+ format: uuid
+ example: 08d50be6-81ca-436f-9aef-c1a5a74bad36
+ moderated_user_id:
+ description: Moderator user ID.
+ type: string
+ format: uuid
+ default: null
+ example: 1c95f8ec-d971-4554-8b77-d5ab1dd8d650
+ status_id:
+ description: >
+ Moderation status:
+ * `0` - Wait for moderation (NOT_MODERATED)
+ * `1` - Moderation accepted (ACCEPT)
+ * `2` - Moderation rejected (REJECT)
+ type: integer
+ enum:
+ - 0
+ - 1
+ - 2
+ example: 1
+ reference_id:
+ description: Reference model ID.
+ type: string
+ format: uuid
+ example: 660519c7-c8a7-4421-a1e2-4eed4074a868
+ entity_id:
+ description: >
+ Entity ID:
+ * `20` - User
+ * `118` - User postcard
+ * `140` - Comment
+ * `360` - Idea
+ * `152` - Voting nominee
+ type: integer
+ enum:
+ - 20
+ - 118
+ - 140
+ - 360
+ - 152
+ example: 20
+ type_id:
+ description: USER_AVATAR - Change user profile photo
USER_CABINET - Change city, cabinet
USER_POSTCARD - Postcard
COMMENT - Comment
IDEA - Idea
VOTING_NOMINEE - Voting nominee photos
+ type: string
+ enum:
+ - USER_AVATAR
+ - USER_CABINET
+ - USER_POSTCARD
+ - COMMENT
+ - IDEA
+ - VOTING_NOMINEE
+ changes:
+ description: One of moderation types. Values of fields that has been changed.
+ type: object
+ oneOf:
+ - properties:
+ photo_file_id:
+ description: Field "photo_file_id" in User model. File model ID.
+ type: string
+ format: uuid
+ example: 4b7477f9-5000-49f1-9ce1-02cb95c0cac6
+ settings:
+ description: Field "settings" in User model.
+ type: object
+ properties:
+ face_coordinates:
+ description: Face coordinates on the user profile image.
+ type: object
+ properties:
+ h:
+ description: Cut height in percent.
+ type: integer
+ example: 86
+ w:
+ description: Cut width in percent.
+ type: integer
+ example: 57
+ x:
+ description: X-axis offset in percent.
+ type: integer
+ example: 42
+ y:
+ description: Y-axis offset in percent.
+ type: integer
+ example: 10
+ - properties:
+ cabinet:
+ description: User cabinet field.
+ type: string
+ example: 1a
+ - properties:
+ message:
+ description: Field "message" in Comment model. Comment text.
+ type: string
+ example: Comment text.
+ content_json:
+ description: Field "content_json" in Comment model. Array of File models data.
+ type: array
+ items:
+ type: object
+ - properties:
+ idea_purpose_id:
+ description: Field "idea_purpose_id" in Idea model.
+ type: string
+ format: uuid
+ example: 941a3ba1-3a5c-46b4-a83f-3a9f700925f6
+ department_id:
+ description: Department model ID.
+ type: string
+ format: uuid
+ example: e0f5593a-e0c2-44b8-a46e-1b464165f63f
+ title:
+ description: Field "title" in Idea model.
+ type: string
+ example: Idea title example.
+ description:
+ description: Field "description" in Idea model.
+ type: string
+ example: Idea description example.
+ files:
+ description: Field "files" in Idea model. Array of File models data.
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ description: File model ID.
+ type: string
+ format: uuid
+ example: bf052a5e-eb70-4eb9-b3f1-9ea50d751b0e
+ ext:
+ description: File extension.
+ type: string
+ example: jpg
+ fid:
+ description: File model ID with extension.
+ type: string
+ format: uuid
+ example: bf052a5e-eb70-4eb9-b3f1-9ea50d751b0e.jpg
+ meta:
+ description: File meta information.
+ type: object
+ properties:
+ width:
+ description: Image width.
+ type: integer
+ example: 1920
+ height:
+ description: Image height.
+ type: integer
+ example: 1080
+ name:
+ description: File name.
+ type: string
+ example: 2023-01-01 01.01.01.jpg
+ size:
+ description: File size in bytes.
+ type: integer
+ example: 109531
+ fileType:
+ description: File type.
+ type: string
+ enum:
+ - image
+ - video
+ - document
+ - archive
+ - other
+ - encrypted
+ example: image
+ isCommon:
+ description: File is common.
+ type: boolean
+ example: false
+ isPublic:
+ description: File is public.
+ type: boolean
+ example: false
+ mimeType:
+ description: File MIME-Type.
+ type: string
+ example: image/jpeg
+ loadingState:
+ description: File loading state.
+ type: string
+ example: uploaded
+ - properties:
+ file_id:
+ description: File model ID.
+ type: string
+ format: uuid
+ example: 1daf3810-9f65-4855-a352-3e5da566c69e
+ nomination_id:
+ description: VotingNomination model ID.
+ type: string
+ format: uuid
+ default: null
+ example: 0023648a-bf4b-4ab6-8376-4e91357e626a
+ title:
+ description: Field "title" in VotingNominee model.
+ type: string
+ example: Photo title example.
+ description:
+ description: Field "description" in VotingNominee model.
+ type: string
+ example: Photo description example.
+ created_at:
+ description: Text
+ type: string
+ format: date
+ updated_at:
+ description: Text
+ type: string
+ format: date
+ statusName:
+ description: Text
+ type: string
+ typeName:
+ description: Text
+ type: string
+ formatChanges:
+ description: (In OpenAPI 2, "oneOf" didn't exist) One of moderation types. Model fields that can be changed. Data formatted for use in view files.
+ type: object
+ oneOf:
+ - properties:
+ photo_file_id:
+ description: User profile photo.
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: Image
+ value:
+ description: Field value.
+ type: string
+ example: https://demo.hrbox.io/file/open/4b7477f9-5000-49f1-9ce1-02cb95c0cac6.jpg
+ url:
+ type: string
+ default: null
+ settings:
+ description: Face coordinates on the user profile image.
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: Settings
+ value:
+ description: Field value.
+ type: object
+ properties:
+ face_coordinates:
+ description: Face coordinates on the user profile image.
+ type: object
+ properties:
+ h:
+ description: Cut height in percent.
+ type: integer
+ example: 86
+ w:
+ description: Cut width in percent.
+ type: integer
+ example: 57
+ x:
+ description: X-axis offset in percent.
+ type: integer
+ example: 42
+ y:
+ description: Y-axis offset in percent.
+ type: integer
+ example: 10
+ - properties:
+ city_id:
+ description: Field "City".
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: City
+ value:
+ description: Field value.
+ type: string
+ default: null
+ url:
+ type: string
+ cabinet:
+ description: Field "Cabinet".
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: Cabinet
+ value:
+ description: Field value.
+ type: string
+ default: null
+ example: 1a
+ url:
+ type: string
+ - properties:
+ subject:
+ description: Text
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: Subject
+ value:
+ description: Field value.
+ type: string
+ example: News title
+ url:
+ type: string
+ example: https://demo.hrbox.io/read/3379b1ac54/news-title
+ message:
+ description: Text
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: Comment
+ value:
+ description: Field value.
+ type: string
+ example: Comment text.
+ url:
+ type: string
+ content_json:
+ description: Text
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: files
+ label:
+ description: Field label.
+ type: string
+ example: Files
+ value:
+ description: Field value.
+ type: string
+ example: TODO
+ url:
+ type: string
+ - properties:
+ idea_purpose_id:
+ description: Idea purpose.
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: Purpose
+ value:
+ description: Field value.
+ type: string
+ default: null
+ example: Example purpose
+ url:
+ type: string
+ department_id:
+ description: Department.
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: Department
+ value:
+ description: Field value.
+ type: string
+ default: null
+ example: Example department name
+ url:
+ type: string
+ title:
+ description: Idea title.
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: Title
+ value:
+ description: Field value.
+ type: string
+ example: Example idea title
+ url:
+ type: string
+ description:
+ description: Idea description.
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: Description
+ value:
+ description: Field value.
+ type: string
+ example: Example idea description
+ url:
+ type: string
+ files:
+ description: Idea attached files.
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: files
+ label:
+ description: Field label.
+ type: string
+ example: Files
+ value:
+ description: Field value.
+ type: object
+ properties:
+ item:
+ type: object
+ properties:
+ id:
+ description: File model ID.
+ type: string
+ format: uuid
+ example: bf052a5e-eb70-4eb9-b3f1-9ea50d751b0e
+ ext:
+ description: File extension.
+ type: string
+ example: jpg
+ fid:
+ description: File model ID with extension.
+ type: string
+ format: uuid
+ example: bf052a5e-eb70-4eb9-b3f1-9ea50d751b0e.jpg
+ meta:
+ description: File meta information.
+ type: object
+ properties:
+ width:
+ description: Image width.
+ type: integer
+ example: 1920
+ height:
+ description: Image height.
+ type: integer
+ example: 1080
+ name:
+ description: File name.
+ type: string
+ example: 2023-01-01 01.01.01.jpg
+ size:
+ description: File size in bytes.
+ type: integer
+ example: 109531
+ fileType:
+ description: File type.
+ type: string
+ enum:
+ - image
+ - video
+ - document
+ - archive
+ - other
+ - encrypted
+ example: image
+ isCommon:
+ description: File is common.
+ type: boolean
+ example: false
+ isPublic:
+ description: File is public.
+ type: boolean
+ example: false
+ mimeType:
+ description: File MIME-Type.
+ type: string
+ example: image/jpeg
+ loadingState:
+ description: File loading state.
+ type: string
+ example: uploaded
+ url:
+ type: string
+ - properties:
+ file_id:
+ description: URL to file.
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: img
+ label:
+ description: Field label.
+ type: string
+ example: Image
+ value:
+ description: Field value.
+ type: string
+ example: https://demo.hrbox.io/file/resize/0x300/d56554a9-a97d-47d8-bb16-5647166a66de.jpg
+ url:
+ type: string
+ nomination_id:
+ description: Voting nomination.
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: Nomination
+ value:
+ description: Field value.
+ type: string
+ example: Example nomination name
+ url:
+ type: string
+ title:
+ description: Idea title.
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: Title
+ value:
+ description: Field value.
+ type: string
+ example: Example idea title
+ url:
+ type: string
+ description:
+ description: Idea description.
+ type: object
+ properties:
+ type:
+ description: Field value type.
+ type: string
+ enum:
+ - string
+ - img
+ - files
+ - html
+ example: string
+ label:
+ description: Field label.
+ type: string
+ example: Description
+ value:
+ description: Field value.
+ type: string
+ example: Example idea description
+ url:
+ type: string
+ referenceAttributes:
+ description: Text
+ type: object
+ requestedUser:
+ description: Text
+ type: object
+ properties:
+ id:
+ description: Text
+ type: string
+ format: uuid
+ iconUrl:
+ description: Text
+ type: string
+ name:
+ description: Text
+ type: string
+ moderatedUser:
+ description: Text
+ type: object
+ properties:
+ id:
+ description: Text
+ type: string
+ format: uuid
+ iconUrl:
+ description: Text
+ type: string
+ name:
+ description: Text
+ type: string
\ No newline at end of file
diff --git a/v2/swagger.yml b/v2/swagger.yml
deleted file mode 100644
index 593a4d0..0000000
--- a/v2/swagger.yml
+++ /dev/null
@@ -1,2268 +0,0 @@
-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
-
- /user/items:
- get:
- tags:
- - user
- summary: User items.
- operationId: actionItems
- parameters:
- - name: q
- in: query
- type: string
- consumes:
- - application/json
- produces:
- - application/json
- responses:
- 200:
- description: User items.
- schema:
- properties:
- data:
- type: array
- items:
- type: object
- properties:
- id:
- type: string
- format: uuid
- name:
- type: string
- faceUrl:
- type: string
-
- 400:
- description: Bad Request.
- 401:
- description: Unathorized request.
- 403:
- description: Unathorized request.
- 404:
- description: Calendar event not found.
- 500:
- description: Server Error.
-
- /user-group/items:
- get:
- tags:
- - userGroup
- summary: User group items.
- operationId: actionItems
- parameters:
- - name: q
- in: query
- type: string
- - name: only_with_calendar_events
- in: query
- type: integer
- description: Only used in calendar event
- example: '0 or 1'
- consumes:
- - application/json
- produces:
- - application/json
- responses:
- 200:
- description: User group items.
- schema:
- properties:
- data:
- type: array
- items:
- type: object
- properties:
- id:
- type: string
- format: uuid
- name:
- type: string
- faceUrl:
- type: string
-
- 400:
- description: Bad Request.
- 401:
- description: Unathorized request.
- 403:
- description: Unathorized request.
- 404:
- description: Calendar event not found.
- 500:
- description: Server Error.
-
- /meeting-place/items:
- get:
- tags:
- - meetingPlace
- summary: Meting place items.
- operationId: actionMeetingPlace
- parameters:
- - name: q
- in: query
- type: string
- consumes:
- - application/json
- produces:
- - application/json
- responses:
- 200:
- description: Meting place items.
- schema:
- properties:
- data:
- type: array
- items:
- type: object
- properties:
- id:
- type: string
- format: uuid
- name:
- type: string
-
- 400:
- description: Bad Request.
- 401:
- description: Unathorized request.
- 403:
- description: Unathorized request.
- 404:
- description: Calendar event 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: userId - User ID from which the feedback will be created.
type - Entity type (department, user).
id - Entity id.
score - Feedback score from 1 to 5.
text - Feedback text.
isAnonymous - 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
- $ref: '#/definitions/feedback'
- 400:
- description: Bad Request. Returns a message with the error details.
- 401:
- description: Unathorized request.
- 403:
- description: Unathorized request.
- 404:
- description: Not found. Returns a message with the error details.
- 500:
- description: Server Error.
-
- /feedback/view:
- get:
- tags:
- - feedback
- summary: Details about feedback.
- operationId: actionView
- consumes:
- - application/json
- produces:
- - application/json
- parameters:
- - name: id
- in: query
- description: Feedback item ID.
- type: string
- required: true
- responses:
- 200:
- description: Feedback details.
- schema:
- $ref: '#/definitions/feedback'
- 400:
- description: Bad Request.
- 401:
- description: Unathorized request.
- 403:
- description: Unathorized request.
- 404:
- description: Feedback not found.
- 500:
- description: Server Error.
-
- /calendar-event/view:
- get:
- tags:
- - calendarEvent
- summary: Details about calendar event.
- operationId: actionView
- consumes:
- - application/json
- produces:
- - application/json
- parameters:
- - name: id
- in: query
- description: Calendar event item ID.
- type: string
- - name: parent_id
- in: query
- description: Calendar event parent item ID.
- type: string
- - name: rec_date
- in: query
- description: Calendar event recurring date.
- type: string
- format: date
- responses:
- 200:
- description: Calendar event details.
- schema:
- properties:
- calendarEvent:
- $ref: '#/definitions/calendarEvent'
- calendarEventUser:
- $ref: '#/definitions/calendarEventUser'
- calendarEventBid:
- $ref: '#/definitions/calendarEventBid'
- hasCalendarEventBid:
- type: boolean
- canCreateCalendarEventBid:
- type: boolean
- 400:
- description: Bad Request.
- 401:
- description: Unathorized request.
- 403:
- description: Unathorized request.
- 404:
- description: Calendar event not found.
- 500:
- description: Server Error.
-
- /calendar-event:
- get:
- tags:
- - calendarEvent
- summary: Calendar event index.
- operationId: actionIndex
- parameters:
- - name: title
- in: query
- type: string
- - name: title_exact
- in: query
- type: string
- - name: start_date_time
- in: query
- type: string
- format: 'date-time'
- description: Default current month
- example: '2023-01-01 10:00:00'
- - name: end_date_time
- in: query
- type: string
- format: 'date-time'
- description: Default current month +3 month
- example: '2023-04-01 10:00:00'
- - name: calendar_event_type_id
- in: query
- type: string
- enum: [1, 2, 3, 4, 5, 6]
- description: 1 - CORPORATE, 2 - TRAINING, 3 - MEET, 4 - PUBLIC_HOLIDAY, 5 - EVENT, 6 - WEBINAR
- example: '1,2,3 or 1'
- - name: entity_id
- in: query
- type: integer
- enum: [1030]
- description: Communication with entities, for example, is used in meeting places. 1030 - MeetingPlace
- - name: calendar_event_entity_item_id
- in: query
- type: string
- format: uuid
- - name: user_id
- in: query
- type: string
- format: uuid
- - name: visible_to
- in: query
- description: Visible to user group
- type: string
- format: uuid
- example: '9f7063d1-959e-4c32-b186-313576375739,3a7539cb-d85e-4455-af41-fc505d1ce6dd or 3a7539cb-d85e-4455-af41-fc505d1ce6dd'
- consumes:
- - application/json
- produces:
- - application/json
- responses:
- 200:
- description: Calendar event index.
- schema:
- properties:
- data:
- type: array
- items:
- $ref: '#/definitions/calendarEvent'
- 400:
- description: Bad Request.
- 401:
- description: Unathorized request.
- 403:
- description: Unathorized request.
- 404:
- description: Calendar event not found.
- 500:
- description: Server Error.
-
- /calendar-event/items:
- get:
- tags:
- - calendarEvent
- summary: Calendar event items.
- operationId: actionItems
- parameters:
- - name: q
- in: query
- type: string
- - name: calendar_event_type_id
- in: query
- type: string
- enum: [1, 2, 3, 4, 5, 6]
- description: 1 - CORPORATE, 2 - TRAINING, 3 - MEET, 4 - PUBLIC_HOLIDAY, 5 - EVENT, 6 - WEBINAR
- example: '1,2,3 or 1'
- - name: entity_id
- in: query
- type: integer
- enum: [1030]
- description: Communication with entities, for example, is used in meeting places. 1030 - MeetingPlace
- - name: calendar_event_entity_item_id
- in: query
- type: string
- format: uuid
- - name: user_id
- in: query
- type: string
- format: uuid
- - name: visible_to
- in: query
- description: Visible to user group
- type: string
- format: uuid
- example: '9f7063d1-959e-4c32-b186-313576375739,3a7539cb-d85e-4455-af41-fc505d1ce6dd or 3a7539cb-d85e-4455-af41-fc505d1ce6dd'
- consumes:
- - application/json
- produces:
- - application/json
- responses:
- 200:
- description: Calendar event items.
- schema:
- properties:
- data:
- type: array
- items:
- type: object
- properties:
- id:
- type: string
- format: uuid
- title:
- type: string
- 400:
- description: Bad Request.
- 401:
- description: Unathorized request.
- 403:
- description: Unathorized request.
- 404:
- description: Calendar event not found.
- 500:
- description: Server Error.
-
- /calendar-event/my:
- get:
- tags:
- - calendarEvent
- summary: Calendar event my.
- operationId: actionMy
- parameters:
- - name: title
- in: query
- type: string
- - name: title_exact
- in: query
- type: string
- - name: start_date_time
- in: query
- type: string
- format: 'date-time'
- description: Default current month
- example: '2023-01-01 10:00:00'
- - name: end_date_time
- in: query
- type: string
- format: 'date-time'
- description: Default current month +3 month
- example: '2023-04-01 10:00:00'
- - name: calendar_event_type_id
- in: query
- type: string
- enum: [1, 2, 3, 4, 5, 6]
- description: 1 - CORPORATE, 2 - TRAINING, 3 - MEET, 4 - PUBLIC_HOLIDAY, 5 - EVENT, 6 - WEBINAR
- example: '1,2,3 or 1'
- - name: entity_id
- in: query
- type: integer
- enum: [1030]
- description: Communication with entities, for example, is used in meeting places. 1030 - MeetingPlace
- - name: calendar_event_entity_item_id
- in: query
- type: string
- format: uuid
- - name: user_id
- in: query
- type: string
- format: uuid
- - name: visible_to
- in: query
- description: Visible to user group
- type: string
- format: uuid
- example: '9f7063d1-959e-4c32-b186-313576375739,3a7539cb-d85e-4455-af41-fc505d1ce6dd or 3a7539cb-d85e-4455-af41-fc505d1ce6dd'
- consumes:
- - application/json
- produces:
- - application/json
- responses:
- 200:
- description: Calendar event index.
- schema:
- properties:
- data:
- type: array
- items:
- $ref: '#/definitions/calendarEvent'
- 400:
- description: Bad Request.
- 401:
- description: Unathorized request.
- 403:
- description: Unathorized request.
- 404:
- description: Calendar event not found.
- 500:
- description: Server Error.
-
- /calendar-event-request:
- post:
- tags:
- - calendarEventRequest
- summary: Calendar event request create.
- operationId: actionCreate
- parameters:
- - in: body
- name: body
- required: true
- schema:
- type: object
- properties:
- calendar_event_id:
- type: string
- format: uuid
- description: Calendar event ID
- calendar_event_parent_id:
- type: string
- format: uuid
- description: Calendar event parent ID
- calendar_event_rec_date:
- type: string
- format: date
- description: Calendar event recurring date
- responses:
- 200:
- description: Returns the calendar event request
- schema:
- type: object
- properties:
- success:
- type: boolean
- message:
- type: string
- errors:
- type: array
- items:
- type: string
- data:
- type: object
- $ref: '#/definitions/calendarEventBid'
- 400:
- description: Bad Request. Returns a message with the error details.
- 401:
- description: Unathorized request.
- 403:
- description: Unathorized request.
- 404:
- description: Not found. Returns a message with the error details.
- 500:
- description: Server Error.
-
- /calendar-event-request/cancel:
- post:
- tags:
- - calendarEventRequest
- summary: Calendar event request cancel.
- operationId: actionCreate
- parameters:
- - in: body
- name: body
- required: true
- schema:
- type: object
- properties:
- id:
- type: string
- format: uuid
- description: Calendar event request ID
- responses:
- 200:
- description: Returns the calendar event request
- schema:
- type: object
- properties:
- success:
- type: boolean
- message:
- type: string
- errors:
- type: array
- items:
- type: string
- 400:
- description: Bad Request. Returns a message with the error details.
- 401:
- description: Unathorized request.
- 403:
- description: Unathorized request.
- 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'
-
- calendarEvent:
- type: object
- properties:
- id:
- type: string
- format: uuid
- parent_id:
- type: string
- format: uuid
- title:
- type: string
- description:
- type: string
- image_id:
- type: string
- format: uuid
- url:
- type: string
- entity_id:
- type: integer
- reference_id:
- type: string
- format: uuid
- start_date_time:
- type: string
- format: 'date-time'
- end_date_time:
- type: string
- format: 'date-time'
- day_duration:
- type: integer
- is_all_day:
- type: boolean
- is_recurring:
- type: boolean
- freq:
- type: integer
- interval:
- type: integer
- by_month:
- type: integer
- by_monthday:
- type: array
- items:
- type: integer
- by_day:
- type: array
- items:
- type: integer
- visible_to:
- type: array
- items:
- type: string
- format: uuid
- quantity_place:
- type: integer
- created_user_id:
- type: string
- format: uuid
- updated_user_id:
- type: string
- format: uuid
- created_at:
- type: string
- format: 'date-time'
- updated_at:
- type: string
- format: 'date-time'
- calendar_event_type_id:
- type: integer
- create_bid_deadline_at:
- type: string
- format: 'date-time'
- start_date:
- type: string
- format: date
- end_date:
- type: string
- format: date
- start_time:
- type: string
- end_time:
- type: string
- start_date_time_localized:
- type: string
- end_date_time_localized:
- type: string
- created_at_localized:
- type: string
- create_bid_deadline_at_localized:
- type: string
- rec_date:
- type: string
- format: date
- rec_date_formatted:
- type: string
- send_notification_start:
- type: boolean
- send_notification_before_start_minutes:
- type: array
- items:
- type: integer
- duration_seconds:
- type: integer
- duration_seconds_formatted:
- type: string
- duration_seconds_formatted_data:
- type: object
- properties:
- hours:
- type: integer
- minutes:
- type: integer
- rrule_string:
- type: string
- type_name:
- type: string
- is_started:
- type: boolean
- is_ended:
- type: boolean
- is_ended_text:
- type: string
- is_virtual_recurring:
- type: boolean
- is_deadline_create_bid:
- type: boolean
- url_view:
- type: string
-
- calendarEventUser:
- type: object
- properties:
- id:
- type: string
- format: uuid
- calendar_event_id:
- type: string
- format: uuid
- calendar_event_parent_id:
- type: string
- format: uuid
- user_id:
- type: string
- format: uuid
- status_id:
- type: integer
- is_visited:
- type: boolean
- where_from_type_id:
- type: integer
- calendar_event_rec_date:
- type: string
- format: date
- status_name:
- type: string
- is_visited_text:
- type: string
- where_from_type_name:
- type: string
-
- calendarEventBid:
- type: object
- properties:
- id:
- type: string
- format: uuid
- calendar_event_id:
- type: string
- format: uuid
- calendar_event_parent_id:
- type: string
- format: uuid
- calendar_event_bid_status_id:
- type: integer
- calendar_event_rec_date:
- type: string
- format: date
- user_id:
- type: string
- format: uuid
- status_name:
- type: string
- user_name:
- type: string
-
- 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
-
- calendarEventTypeId:
- type: integer
- enum: [1, 2, 3, 4, 5, 6]
- description: 1 - CORPORATE, 2 - TRAINING, 3 - MEET, 4 - PUBLIC_HOLIDAY, 5 - EVENT, 6 - WEBINAR
-
- 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
-
- feedback:
- type: object
- properties:
- id:
- description: Feedback model ID.
- type: string
- format: uuid
- user_id:
- description: User model ID.
- type: string
- format: uuid
- default: null
- department_id:
- description: Department model ID.
- type: string
- format: uuid
- default: null
- score:
- description: Feedback score.
- type: integer
- example: 5
- text:
- description: Feedback text.
- type: string
- example: Example text.
- is_anonymous:
- description: Anonymous feedback.
- type: boolean
- example: false
- default: false
- user_name:
- description: The user name to which the feedback was left.
- type: string
- default: ""
- department_name:
- description: The department name to which the feedback was left.
- type: string
- default: ""
- created_user_name:
- description: The name of the user who left the feedback if it was not anonymous.
- type: string
-
-# 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
\ No newline at end of file