From 6fa886a55d4ab5a9d19ddb65ee7b0de62e1a306c Mon Sep 17 00:00:00 2001 From: ruslan Date: Thu, 6 Jul 2023 16:49:35 +0300 Subject: [PATCH] Change openapi version to 3.0.1. Fixed syntax errors. Added Moderation API methods. --- v2/swagger.yaml | 3079 +++++++++++++++++++++++++++++++++++++++++++++++ v2/swagger.yml | 2268 ---------------------------------- 2 files changed, 3079 insertions(+), 2268 deletions(-) create mode 100644 v2/swagger.yaml delete mode 100644 v2/swagger.yml 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